accueil / serveurs / Géo & Temps / ai.surfingdog/inbox
ai.surfingdog/inbox
serveur MCP (Model Context Protocol) · Surfing Dog 0.1.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que ai.surfingdog/inbox est sûr ?
Au dernier audit MCP Hub, le serveur MCP « ai.surfingdog/inbox » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 19 outils
- accept_offer≈ 581 tokens
Accept 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.
Paramètres, retour & exemple (7)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.item_id· string · requisoffer_id· string · optionnel
The offer you answer: offer.id from get_item_status. If the business has replaced it since, nothing is done (409 offer_changed, with the current one).terms_sha· string · optionnel
The fingerprint of the terms your person said yes to: offer.terms_sha from get_item_status. Leave it out to be told the terms first; nothing is booked without it.access_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "accept_offer", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - acknowledge_receipt≈ 607 tokens
Counter-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.
Paramètres, retour & exemple (7)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.item_id· string · requisreceipt· string · optionnel
The receipt JWS being acknowledged, if you want the instance to check it is the one it holds.receipt_id· string · optionnel
The receipt to acknowledge, for an agent that signs this request (sdi-agent/1) with a key delegated to the pass reference it sends: the inbox forwards the signature to the network (ADR-017 §3.4). Send this or counter_signature.access_token· string · optionnel
Capability secret returned when the item was created without an account.counter_signature· string · optionnel
A compact JWS by the customer's agent, EdDSA, header carrying its Ed25519 public `jwk`, payload `{"rcp": "<receipt id>", "sha": "<base64url(SHA-256(receipt JWS))>", "iat": <unix seconds>}`. Or, for an agent that signs its requests instead (sdi-agent/1) and carries a pass reference, `receipt_id` alone.
Exemple d'appel{"name": "acknowledge_receipt", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cancel_item≈ 356 tokens
Cancel 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.
Paramètres, retour & exemple (6)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.reason· string · optionnelitem_id· string · requisaccess_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "cancel_item", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_availability≈ 360 tokens
Free 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.
Paramètres, retour & exemple (4)
Paramètresto· string · requis
End of the window, at most 14 days after from.from· string · requis
Start of the window to search, ISO 8601.party_size· integer · optionnelservice_id· string · requis
Exemple d'appel{"name": "check_availability", "arguments": {"to": "texte", "from": "texte", "service_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_booking≈ 975 tokens
Request a service at a time. Check availability first. 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.
Paramètres, retour & exemple (7)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.contact· object · optionnelmessage· string · optionnelpayload· object · requisterms_sha· string · optionnel
The fingerprint of the terms your person confirmed (details.terms_sha of the 409 confirm_terms a priced request without it gets). Nothing is sent to the business without it when the request carries a price.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "create_booking", "arguments": {"payload": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_order≈ 1230 tokens
Order 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.
Paramètres, retour & exemple (7)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.contact· object · optionnelmessage· string · optionnelpayload· object · requisterms_sha· string · optionnel
The fingerprint of the terms your person confirmed (details.terms_sha of the 409 confirm_terms a priced request without it gets). Nothing is sent to the business without it when the request carries a price.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "create_order", "arguments": {"payload": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - decline_offer≈ 536 tokens
Say 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.
Paramètres, retour & exemple (8)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.reason· string · optionnel
Anything your person wants the business to know.item_id· string · requisoffer_id· string · optionnel
The offer you answer: offer.id from get_item_status. If the business has replaced it since, nothing is done (409 offer_changed, with the current one).reason_code· string · optionnel · price_sensitivity | timing_deferred | quantity | delivery | returns_policy | other
Why: price_sensitivity, timing_deferred, quantity, delivery, returns_policy or other.access_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "decline_offer", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_business_profile≈ 98 tokens
Name, time zone, currency, languages and the item types this business accepts, and where it takes any other kind instead (doors_elsewhere).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_business_profile", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_item_status≈ 316 tokens
The 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).
Paramètres, retour & exemple (4)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.item_id· string · requisaccess_token· string · optionnel
Capability secret returned when the item was created without an account.
Exemple d'appel{"name": "get_item_status", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_products≈ 112 tokens
Orderable products with prices in minor units.
Paramètres, retour & exemple (3)
Paramètresq· string · optionnellimit· integer · optionnelcursor· string · optionnel
Exemple d'appel{"name": "list_products", "arguments": {"q": "texte", "limit": 1, "cursor": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_services≈ 133 tokens
Bookable 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.
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnelcursor· string · optionnel
Exemple d'appel{"name": "list_services", "arguments": {"limit": 1, "cursor": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - make_offer≈ 1352 tokens
Answer 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.
Paramètres, retour & exemple (9)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.note· string · optionnel
Anything your person wants the business to know.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.terms· object · requis
Only what your person would change.item_id· string · requisoffer_id· string · optionnel
The offer you answer: offer.id from get_item_status. If the business has replaced it since, nothing is done (409 offer_changed, with the current one).reason_code· string · optionnel · price_sensitivity | timing_deferred | quantity | delivery | returns_policy | other
Why: price_sensitivity, timing_deferred, quantity, delivery, returns_policy or other.access_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "make_offer", "arguments": {"terms": {}, "item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - provide_details≈ 370 tokens
Answer 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.
Paramètres, retour & exemple (6)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.details· string · requis
The answer to what the business asked.item_id· string · requisaccess_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "provide_details", "arguments": {"details": "texte", "item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - request_quote≈ 713 tokens
Ask for a price on something custom. Creates a quote_request item.
Paramètres, retour & exemple (6)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.contact· object · optionnelmessage· string · optionnelpayload· object · requisidempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "request_quote", "arguments": {"payload": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - request_return≈ 593 tokens
Once 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 the period runs, agreed at once; after it, 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.
Paramètres, retour & exemple (9)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.note· string · optionnelpass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.lines· array · optionnel
Which lines of the order (by index in orderedItem), and how many of each; all of them when left out.wants· string · optionnel · refund | exchange | credit
What your person would like: a refund, an exchange, or credit.reason· string · requis · changed_mind | faulty | wrong_item | not_as_described | other
Why: changed_mind, faulty, wrong_item, not_as_described or other.item_id· string · requisaccess_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "request_return", "arguments": {"reason": "changed_mind", "item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - send_message≈ 456 tokens
Start a conversation, or reply on an item you own.
Paramètres, retour & exemple (9)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.body· string · requispass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.contact· object · optionnelitem_id· string · optionnel
Reply on an existing item; omit to start a new conversation.subject· string · optionnelmessage_id· string · optionnelaccess_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "send_message", "arguments": {"body": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - suggest_time≈ 556 tokens
Instead 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).
Paramètres, retour & exemple (7)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.note· string · optionnelpass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.item_id· string · requisstart_time· string · requis
The start your person would like instead: one of the free times check_availability lists. The end follows the service's length.access_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.
Exemple d'appel{"name": "suggest_time", "arguments": {"item_id": "texte", "start_time": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - verify_customer≈ 228 tokens
When 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.
Paramètres, retour & exemple (3)
Paramètrescode· string · optionnel
The six digits the customer received. Omit to have them sent.item_id· string · requisaccess_token· string · optionnel
Capability secret returned when the item was created without an account.
Exemple d'appel{"name": "verify_customer", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - withdraw_from_contract≈ 630 tokens
Your 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, 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.
Paramètres, retour & exemple (8)
Paramètreskey· string · optionnel
The person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.note· string · optionnel
Anything your person wants to tell the business.pass· string · optionnel
The person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.lines· array · optionnel
Once the goods reached them: only these lines (by index in the order's orderedItem), and how many of each.item_id· string · requisaccess_token· string · optionnel
Capability secret returned when the item was created without an account.idempotency_key· string · optionnel
Same key + same request = same answer. Required for agents.confirm_withdrawal· boolean · optionnel
true once your person confirmed the statement you were shown. Left out, nothing is sent: you get the statement.
Exemple d'appel{"name": "withdraw_from_contract", "arguments": {"item_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».