Every agent-payment rail can prove a payment happened. Almost none ties that payment, on-chain and trustlessly, to the exact result the paid call returned — and lets the customer re-verify it in their own browser, trusting no one.
An IronBridge receipt is a small object describing one paid agent call:
{ lane, tool, request, response_sha256, pay_tx, payer, amount, chain }
It is reduced to one 32-byte digest (sorted-key canonical sha256, addresses lowercased). The response itself is never published — only its hash. The digest is sealed keyless into the public LAW-25 chain (hashcash proof-of-work, no wallet, no key), and the epoch root is later attested on Base mainnet via EAS #1603.
sha256(response) → must equal response_sha256.leaf = sha256("receipt|" + digest).seq → its leaf must equal yours.If any step fails, reject the receipt. Every green check on a receipt page is one of these steps, run in your browser.
POST /api/receipt with the receipt fields + a proof-of-work nonce (GET /api/seal/challenge first). Returns the digest, the seal position, and a /receipt/<digest> URL anyone can re-walk.
No IronBridge key signs a receipt. The only on-chain signature is the operator’s EAS epoch-root attestation, itself publicly auditable. No liveness theater — the “Anchored” rung stays pending until the root is actually on-chain.