Skip to main content
Glama

Surfing Dog Inbox

Accept what the business proposed

accept_offer
Idempotent

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.

Input Schema

NameRequiredDescriptionDefault
keyNoThe 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.
passNoThe 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_idYes
offer_idNoThe 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_shaNoThe 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_tokenNoCapability secret returned when the item was created without an account.
idempotency_keyNoSame key + same request = same answer. Required for agents. Make it a fresh random UUID per request: a retry of a create with a random key gets its access token again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Same key + same request = same answer. Required for agents."New value: +"Same key + same request = same answer. Required for agents. Make it a fresh random UUID per request: a retry of a create with a random key gets its access token again."
  2. Changed1 schema field changed
    • addedInput schema / properties / offer_id
      Added value: +{
      +  "description": "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).",
      +  "maxLength": 64,
      +  "minLength": 1,
      +  "type": "string"
      +}
  3. Added

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-destructive and idempotent, so the description focuses on what those hints cannot convey: this is a binding commitment on the person, a stale offer_id returns 409 offer_changed with the current offer, and an unfulfillable change is routed to a human (passed_on) with the agreed terms standing. That is meaningful consequence disclosure beyond the structured fields, though the retry/idempotency nuance is left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the four accepted offer types before any preconditions, which is the right ordering. The second sentence is heavily nested (consent, terms_sha source, offer_id, stale-offer behavior) and takes real effort to unpack, costing a point, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a binding mutation over 7 parameters, the description covers the outcomes an agent most needs: nothing booked without terms_sha, 409 on a replaced offer, passed_on for unfulfillable changes, and the linked confirmed booking/order result. It does not describe what the returned terms look like or the shape of a successful response, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 86%, so the baseline is 3, but the description adds real sequencing semantics the schema does not: terms_sha must come from get_item_status and must only be sent after explicit consent to offer.human, and offer_id ties the answer to a specific offer version. It also names what happens without terms_sha, which is behavior the parameter docs alone do not state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (accept) and enumerates exactly what kind of offer is being accepted: a proposed time, a quote, changes to an order, or a change to a confirmed booking/order. It also flags the special case (offer.kind change) so the agent knows the promise is being moved, not a new promise created. Clearly distinct from decline_offer and make_offer in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a strong conditional: send terms_sha only after the person said yes to offer.human, and states that sending nothing returns the terms to show them. It also explains the fallback path when a change can no longer be made online (passed_on). It never explicitly names decline_offer or cancel_item as the alternative action, so guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.