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

TableJSON 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
      +}
  2. Added

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds substantial context beyond that: this 'binds your person', omitting terms_sha results in nothing being booked, a stale offer_id yields 409 offer_changed, and unreachable changes are passed to a human. That is exactly the kind of binding/consequence detail annotations cannot carry.

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

Conciseness3/5

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

Two very long, run-on sentences pack multiple distinct behaviors (binding requirement, terms_sha sequencing, offer_id staleness, passed_on routing) into dense clauses with awkward phrasing ('Accept another time the business proposed'). Front-loaded with purpose, but low scannability and some redundancy with the schema descriptions.

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?

For a 7-parameter mutation with no output schema, the description covers prerequisites, identity binding, error paths, and the outcome ('An accepted quote becomes a confirmed booking or order (linked)'). What is missing is any indication of the success payload shape, though the absence of an output schema lowers that expectation.

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

Parameters3/5

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

Schema description coverage is 86%, so the schema already documents offer_id, terms_sha, key, and pass in detail. The description mostly restates that (terms_sha must come from get_item_status, offer_id invalidated on replacement), adding only mild sequencing emphasis. Baseline 3 is appropriate.

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 a precisely enumerated resource scope: an offer for a booking, a quote, an order change, or a change to a confirmed booking/accepted order. The parenthetical on offer.kind ('the promise moves') clarifies what accepting actually does. It is clearly distinguishable from decline_offer, make_offer, and withdraw_from_contract.

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 concrete precondition ('only after they said yes to offer.human') and the sequencing rule for terms_sha, plus a routing rule for offers that can no longer be changed online (passed_on). It does not explicitly name decline_offer as the alternative path, so it stops short of full when-not guidance.

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.