Experience Bamfield
by experiencebamfield.com · remote · no sign-in to list tools · v2026.10.8 · published by com.experiencebamfield
Plan and price trips to Bamfield, BC, and build the guest's cart link. Read-only; no key to connect.
9 tools: 5 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things5Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http experience-bamfield https://experiencebamfield.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnlist_products
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...e, and its published price. Start here: every other tool takes a product id from this list. A co..."
- Warnbuild_cart_link
The server marks "build_cart_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "build_cart_link" says "link": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
9 tools
Changes things 5Claude Code: ask
build_cart_linkBuilds 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 to…1 finding
Why it is in this group
- The name "build_cart_link" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "build_cart_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "build_cart_link" says "link": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
camping_permitsWhere 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…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
check_availabilityDay 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)…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
price_cottagesEvery cottage's price for a stay, whether it is free, and whether it sleeps the party.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
quote_tripThe whole basket, the way checkout charges it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 4Claude Code: allow
get_productEverything 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.Reads private dataNo findings
Why it is in this group
- The name "get_product" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "table": it reads databases.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_trip_summaryAfter the booking.No findings
Why it is in this group
- The name "get_trip_summary" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_photosPhotographs of a business and its products, each with a description and an address that can be shown to the guest.No findings
Why it is in this group
- The name "list_photos" says "list": a word for reading.
Description, as the server wrote it Photographs of a business and its products, each with a description and an address that can be shown to the guest.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_productsEvery 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.1 finding
Why it is in this group
- The name "list_products" says "list": a word for reading.
Findings
- Warn
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...e, and its published price. Start here: every other tool takes a product id from this list. A co..."
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged untrusted-input or outbound.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 2026.10.8. Values in angle brackets are yours to fill in.
claude mcp add --transport http experience-bamfield https://experiencebamfield.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__experience-bamfield__list_products",
"mcp__experience-bamfield__get_product",
"mcp__experience-bamfield__list_photos",
"mcp__experience-bamfield__get_trip_summary"
],
"ask": [
"mcp__experience-bamfield__check_availability",
"mcp__experience-bamfield__price_cottages",
"mcp__experience-bamfield__quote_trip",
"mcp__experience-bamfield__build_cart_link",
"mcp__experience-bamfield__camping_permits"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as experience-bamfield. Review it before you use it.
Capability tags behind 1 rule
- mcp__experience-bamfield__get_product private-data