Surfing Dog Inbox
ai.surfingdog/inboxVersion 0.2.0Message, ask for a quote or book a call with Surfing Dog, through its open-source inbox.
Status
Responds208 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:33 UTC
- Latency
- 208 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://inbox.surfingdog.ai/mcpResponds208 msNo sign-in
Claude Code
claude mcp add --transport http inbox https://inbox.surfingdog.ai/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: inbox
Remote MCP server URL: https://inbox.surfingdog.ai/mcpCursor
{
"mcpServers": {
"inbox": {
"url": "https://inbox.surfingdog.ai/mcp"
}
}
}VS Code
code --add-mcp '{"name":"inbox","type":"http","url":"https://inbox.surfingdog.ai/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
20 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
accept_offerAccept another time the business proposed for a booking, its quote, its changes to an order, or a change it asks for to a confirmed booking or an accepted order (offer.kind change: the promise moves). This binds your person, so send terms_sha — offer.terms_sha from get_item_status — only after they said yes to offer.human, and offer_id (offer.id) so an answer to an offer since replaced does nothing. Without terms_sha nothing is booked: you get the terms to show them. An accepted quote becomes a confirmed booking or order (linked). A yes to a change that can no longer be made online goes to a person there instead (passed_on), and what was agreed stands. | No | No | Yes | Not declared |
acknowledge_receiptCounter-sign a receipt this item earned, so both sides hold it: a promise, a change both sides agreed to it (kind amended), how it ended, or a refund's. Read the item to find its receipts; then send a compact JWS signed with your own Ed25519 key — header {alg:'EdDSA', typ:'sdi-receipt-ack+jws', jwk:<your public jwk>}, payload {rcp:<receipt id>, sha:<base64url(SHA-256(receipt jws))>, iat:<unix seconds>}. The instance verifies it against the key you carry and keeps it. Acknowledging twice is harmless. | No | No | Yes | Not declared |
cancel_itemCancel an item you created. After the business's cancellation window, a confirmed booking is cancelled late where the business records late cancellations (it may count against the customer), and refused where it does not. A confirmed stay answers first with the fee under its policy and what is owed back (confirm): send its fee_sha once your person said yes. | Yes | No | Yes | Not declared |
check_availabilityFree start times for a service between two instants (at most 14 days). A time that has started, or that starts within the business's minimum notice, is not offered. | Not declared | Yes | Yes | Not declared |
create_bookingRequest a service at a time. Check availability first. endTime and reservationFor.name may be left out: they follow from the service (its length, its name). A fixed-price service costs the business's price from list_services; a different totalPrice you send is only noted for the business. A priced booking binds your person only once they confirmed it: without terms_sha nothing is sent, and you get the summary to show them (confirm.summary, confirm.terms_sha); call again with that terms_sha on their clear yes. Returns the item and, if you have no account, an access_token. | No | No | Yes | Not declared |
create_orderOrder products. Prices are in minor units. A line naming a product (productId or sku) costs the business's price from list_products, and the total follows; a different price you send is only noted for the business. A line naming no product waits for the business to price it. A priced order binds your person only once they confirmed it: without terms_sha nothing is sent, and you get the summary to show them (confirm.summary, confirm.terms_sha); call again with that terms_sha on their clear yes. | No | No | Yes | Not declared |
decline_offerSay no to another time or to changes the business proposed (the booking request or the order is closed) or to its quote. To a change it asks for to a confirmed booking or an accepted order, no keeps what was agreed; on a change your person asked for (requested_change), it takes that back. Add reason (and reason_code) for anything your person wants the business to know. | Yes | No | Yes | Not declared |
get_business_profileName, time zone, currency, languages and the item types this business accepts, and where it takes any other kind instead (doors_elsewhere: each with its URL, and the platform it is on when there is one). | Not declared | Yes | Yes | Not declared |
get_item_statusThe current state of an item you created, in the business's words: what it proposed and waits for your person to answer (offer, with its terms_sha), who it waits on, what they can do next, and the conversation so far (thread: the business's replies and your person's messages). | Not declared | Yes | Yes | Not declared |
list_productsOrderable products with prices in minor units, each with its barcode (gtin, 14 digits) where it has one and whether it can be had (never a count). A variant names its group and options; price_model says how a price is meant (only fixed is ordered at it: from, range and quote go to the business to price); an age-restricted product carries the label to show (ID checked at handover: 18+). ids: read the live price of products a network showed you, before your person agrees; gtin: the products with that barcode, in any of its lengths. The price here is the one that counts. | Not declared | Yes | Yes | Not declared |
list_servicesBookable services with duration and price. A price per person (price.per = person) is for each person in the booking: send partySize, and the total is the price times it. | Not declared | Yes | Yes | Not declared |
make_offerAnswer what the business proposed with only what your person would change: another start_time (a booking: one of the free times check_availability lists; a quote request: the time it is for), other quantities for the lines of changes it suggested to an order (by index in offer.terms.lines; 0 drops one), another delivery_when, or how many (quantity) for a quote request. It goes back to the business as their request. On a confirmed booking or an accepted order it asks for a change to what was agreed (lines by index in the order's orderedItem), which stands until the business says yes. A price of their own is their answer only where get_business_profile says price_negotiable: total_price for a time it proposed (start_time optional), unit_price on lines of changes to an order; it goes back to the business, which takes it or answers. Otherwise — a price where the business sets its prices, on a quote, on something it does not haggle, or asked too often — it goes to a person there as their message, as do a note alone and a suggestion after a few rounds (passed_on): never refused, and what the business proposed, or what was agreed, still stands. | No | No | Yes | Not declared |
provide_detailsAnswer what the business asked about an item (get_item_status says it needs a detail). The item moves on; on any other item your details are kept as a message for the business. | No | No | Yes | Not declared |
quote_shippingWhat shipping a basket to a place costs, by the business's own rate tables (a read, never an order): for each shipping profile its products ship under, the zone the place is in and each service with its fee in minor units (null with why: id_check, currency, weight_missing, too_heavy, over_bands). Products that do not ship, or whose price is not fixed, are listed in unquoted. An age-restricted product goes only by a service whose carrier checks ID at handover. The fee is still the business's to confirm on the order. | Not declared | Yes | Yes | Not declared |
request_quoteAsk for a price on something custom. Creates a quote_request item. | No | No | Yes | Not declared |
request_returnOnce an order's goods reached your person: ask to send them back. reason faulty, not_as_described or wrong_item (the legal guarantee: it costs them nothing), or changed_mind (a withdrawal while a period to withdraw runs, agreed at once; otherwise a return the business answers under its own policy). lines: which, by index in orderedItem, and how many; all when left out. The return comes back as linked; get_item_status lists it under refunds. | No | No | Yes | Not declared |
send_messageStart a conversation, or reply on an item you own. | No | No | Yes | Not declared |
suggest_timeInstead of the time the business proposed, ask for another: start_time must be one of the free times check_availability lists (the end follows the service's length). The business confirms it or proposes again. On a confirmed booking it asks the business to move it (the end keeps the booking's length), and the booking stays as agreed until the business says yes. After a few rounds, or past the changes a booking may have, a person there answers it instead (passed_on). | No | No | Yes | Not declared |
verify_customerWhen a result says identity.recognised is weak, the person gave the email of a customer the business knows. Call this with item_id and access_token to email them six digits; ask the person for the code and call it again with code. Then the business recognises them. | No | No | No | Not declared |
withdraw_from_contractYour person withdraws from their booking (one they paid for) or order, within the period the business states (withdrawal on get_item_status). Two steps: without confirm_withdrawal nothing is sent and you get the statement to show them (confirm.statement); send confirm_withdrawal: true on their yes. Before the goods went out the order ends and what was paid is refunded; once they reached your person, the goods come back (lines: only some of them) and are refunded. The business emails a copy. Never refused: past the period, where no right of withdrawal is claimed, or for something that cannot be returned, it goes to a person there instead (passed_on), or becomes a return under the business's own policy. | Yes | No | Yes | Not declared |
Details
- Registry status
- Active
- Published
- Oct 31, 2026
- Updated
- Oct 31, 2026
- Categories (suggested)
- CommunicationE-commerceSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared