Skip to main content
Glama

Surfing Dog Inbox

Acknowledge a receipt

acknowledge_receipt
Idempotent

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:}, payload {rcp:, sha:<base64url(SHA-256(receipt jws))>, iat:}. The instance verifies it against the key you carry and keeps it. Acknowledging twice is harmless.

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
receiptNoThe receipt JWS being acknowledged, if you want the instance to check it is the one it holds.
receipt_idNoThe 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_tokenNoCapability secret returned when the item was created without an account.
counter_signatureNoA 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the description reinforces this with 'Acknowledging twice is harmless.' Beyond that it discloses non-obvious behavior: the instance verifies the counter-signature against the carried key and persists it, and the cryptographic contract (header/payload shape, SHA-256 of the receipt JWS). It does not describe failure modes or what verification rejection looks like.

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?

The key action and effect are front-loaded in the first clause, followed by the eligible receipt kinds and then the protocol mechanics. It is dense and packed into essentially one long sentence chain, but every clause carries information; little is wasted.

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 crypto-heavy, 7-parameter, no-output-schema tool, the description supplies the signing recipe, the verification/storage behavior, and an idempotency guarantee. Missing only error/failure handling and guidance on which credential parameter to prefer, which is a minor gap given the rich schema descriptions.

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 coverage is 86%, so the 7 parameters are largely self-documenting, and the description restates the counter_signature contract rather than extending it. It adds minimal semantic detail beyond the schema (no guidance on choosing key vs. pass vs. access_token), so baseline 3 applies.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Counter-sign a receipt this item earned,' and enumerates the four kinds of receipt (promise, amended agreement, ending, refund) so the scope is unambiguous. It is not a tautology of the name/title, though it does not explicitly name a sibling tool it replaces.

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?

It gives a clear operational sequence ('Read the item to find its receipts; then send a compact JWS...') plus a prerequisite (the instance verifies it against the key you carry), and reassures that 'Acknowledging twice is harmless.' It stops short of stating when to withhold acknowledgement or naming an alternative tool.

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.