Skip to main content
Glama

Record a delivery claim

record_delivery

Records a buyer-signed delivery claim after an x402 capacity settlement, capturing whether promised GPU-hours, storage, API credits, or bandwidth actually arrived.

Instructions

Record a signed delivery claim after an x402 capacity settlement (gpu-hours, storage, api-credits, or bandwidth). The buyer agent calls this AFTER paying, once it knows whether what was promised actually arrived. The claim's schema and signature (must recover to buyerAddress) are validated before it is written to the append-only ledger. This is a factual receipt, not a reputation score — see get_delivery_history for how other agents read it back. OPTIONAL priorClaimId: set it to the claimId of your (this buyer's) previous claim about the SAME sellerAddress, so your claims about that seller form a chain. It is optional and omitted on your first claim about a seller. Chaining lets a reader later detect a host that hides one of your middle claims; it is signed into the claim so a host cannot strip it. See DECISIONS.md D-006.

Input Schema

NameRequiredDescriptionDefault
claimIdYesContent-addressed id: sha256 of the canonical JSON of this claim's content fields — see computeClaimId()
measuredNoOptional quantitative record of how much was promised and how much was measured. Presence is the version marker; absence is the only encoding of 'not measured'
assetTypeYesWhat kind of capacity this claim is about
deliveredYesWhether what was promised actually arrived
signatureYesBuyer's EIP-191 personal-sign signature over claimId
timestampYesISO-8601 timestamp of when this claim was made
buyerAddressYes0x address of the paying agent — must match the address recovered from `signature`
evidenceHashYessha256 hex digest of evidence for this claim (logs, response payload, etc.) — the evidence itself is not stored here
externalRefsNoOptional, unverified pointers into other agent-economy infrastructure (identity, authority, intent, dispute). Tokenizen never resolves or trusts these — they are citations, not verified facts
priorClaimIdNoOptional chain link: the claimId of this buyer's immediately previous claim about the SAME sellerAddress. Omitted on a buyer's first claim about a seller. Lets a reader detect a host that hides a middle claim — see analyzeCompleteness and DECISIONS.md D-006
promisedSpecYesWhat the seller promised to deliver — free text or a structured object
sellerAddressYes0x address of the agent/service that was paid and was supposed to deliver
settlementRefYesx402 payment reference or on-chain tx hash for the settlement this claim is about
offerReceiptHashNooptional sha256 hex digest (lower-case, no 0x prefix) of the seller-signed x402 offer-receipt this claim answers, taken over the receipt artifact exactly as it was transmitted. The receipt itself is not stored here. Omit it if there is no receipt.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses that schema plus signature are validated and the signature must recover to buyerAddress, that the write goes to an append-only ledger, that priorClaimId is signed into the claim so a host cannot strip it, and that this is a receipt rather than a reputation score. It leaves gaps on idempotency (what happens if the same claimId is submitted twice), error/validation failure behavior, and any auth expectations beyond signing.

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 action, then ordering, then the optional-chaining caveat — the information hierarchy is sound. It loses a little to redundancy ("It is optional and omitted on your first claim" restates the schema) and to a dangling pointer to "DECISIONS.md D-006," which an agent may not be able to read.

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

Completeness5/5

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

For a 14-parameter, deeply nested mutation with no annotations and no output schema, the description supplies the missing behavioral frame: signing/validation, append-only storage, timing relative to settlement, and the optional chaining mechanism. The remaining detail lives in the schema, which is fully documented.

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 description coverage is 100%, so baseline would be 3; the description still adds real value by explaining the purpose and chain-detection rationale of priorClaimId, which the schema only states mechanically. The other high-complexity parameters (measured, externalRefs) get no narrative treatment in the description, leaving it just above baseline.

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 and resource ("Record a signed delivery claim"), pins the triggering context ("after an x402 capacity settlement") and enumerates the asset types covered. It explicitly distinguishes itself from the sibling read path by naming get_delivery_history as the way claims are read back.

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 clear timing and actor: "The buyer agent calls this AFTER paying, once it knows whether what was promised actually arrived," and routes readers to get_delivery_history. It also states the priorClaimId condition (previous claim about the SAME sellerAddress, omitted on first claim). It stops short of stating when NOT to call it — e.g. before settlement closes, or for a dispute already in progress.

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