# Experience Bamfield

> Plan and price trips to Bamfield, BC, and build the guest's cart link. Read-only; no key to connect.

- name: com.experiencebamfield/experience-bamfield
- version: 2026.10.8
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.experiencebamfield%2Fexperience-bamfield
- tools: https://api.protogrid.dev/v1/servers/com.experiencebamfield%2Fexperience-bamfield/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "experience-bamfield": {
      "type": "http",
      "url": "https://experiencebamfield.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-98% +updated-12d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,261 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 2,261 tokens to load them all
- tool set hash: 792b07560a408606293ca8f53f826c0e
- badge: [![protogrid quality](https://protogrid.dev/badge/com.experiencebamfield/experience-bamfield.svg)](https://protogrid.dev/servers/com.experiencebamfield/experience-bamfield)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://experiencebamfield.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9782609)

## Packages

_none_

## Tools (9)

- `build_cart_link`: Builds the one link that puts the chosen lines in the guest's cart on experiencebamfield.com, and checks it: the lines it opens with, any that would be left out and why, and the totals. Give the guest the url. They review the cart and pay by card; the booking is confirmed the moment they pay. A fishing charter is not carried by the link: it is added from its own page.
- `camping_permits`: Where a camping permit is needed (the Deer Group and the Broken Group Islands), who issues it, what it costs, the longest stay, how long it takes, the campsites that can be applied for, and where the guest applies. The permit is not a line in the cart.
- `check_availability`: Day by day, whether a product is open between two dates, and how many are left where it is counted (boats, parking, charters; for moorage, feet free and the longest boat that fits). For a yes or no on exact dates and a number of units, quote_trip is the shorter road.
- `get_product`: Everything published about one product: description, what is included, amenities, rules, check-in and check-out, rate table, deposit, photographs and its page on the site.
- `get_trip_summary`: After the booking. Takes the link a guest made for their assistant on their trip page (or just the key on the end of it) and returns a read-only summary of that one trip: whether it is ready to travel, what needs doing, by what date and who it is waiting on, each booked line with what it came to, and the money — payments received, refunds completed and pending, what is retained, the damage deposit and what is owing. Read it again each time you are asked (freshness.staleAfterSeconds). A fact that is not known is "unknown" and an amount that cannot be stated is null: never read those as yes, no or 0. When money.state is not_reconciled, tell the guest not to pay again on the strength of this and to call the desk. It includes nobody's name or contact details and can change nothing. A link that is wrong, expired or turned off is refused; ask the guest for a new one.
- `list_photos`: Photographs of a business and its products, each with a description and an address that can be shown to the guest.
- `list_products`: Every product on sale — cottages, kayaks and canoes, parking, moorage, fishing charters — with its id, business, what it holds, how many there are, and its published price. Start here: every other tool takes a product id from this list. A cottage's price depends on the dates (price_cottages).
- `price_cottages`: Every cottage's price for a stay, whether it is free, and whether it sleeps the party. The figures are before the cleaning fee and taxes: quote_trip gives the all-in total.
- `quote_trip`: The whole basket, the way checkout charges it. Each line: its price and whether it is free for those dates in that number. The basket: the cleaning fee, each tax, the refundable deposits, and totals.dueAtCheckoutCents — the amount the guest's card is charged. Saves nothing and holds nothing. A fishing charter line takes tripType (half-day or full-day).
