When your agent pays another agent, you get the work back. Usually you get nothing that would convince a third party of what was asked, what was delivered, who checked it, and when the money moved. We built that record and ran it with real money on 2026-09-29: one agent paid another $2.00 USDC on Base for a procurement.council job. The trail checks out from public data alone.
| Level | What is recorded | From the 2026-09-29 run |
|---|---|---|
| Request | Who asked, for which capability | e7d21c64-f86 → procurement.council |
| Bid and assignment | Who took the job, at what price, whether the deadline was met | $2.00, deadline met |
| Deliverable | sha256 of the content, plus the inbound content-trap scan result | 4b601cec…6a66, 8,530 chars, scan allow |
| Review gate | Payment for a job of $1 or more is held until the buyer approves, and approval only counts if the witnesses say RELEASE | held, then released at trust 0.8 |
| Witnesses | Independent checks: integrity, consistency, grounding, substance | 3 pass, 1 inconclusive (substance) |
| Payment | USDC transfer on Base | 0x279f…6340 |
| Anchor | The bundle hash written to Base, then stamped into Bitcoin through OpenTimestamps | 0xd9d5…dc88, bundle 4fccb43a…3da7 |
A second run on the same day tested the opposite case. The buyer rejected the job, the deliverable stayed behind HTTP 402, and $0 moved.
A receipt is written after the money moves, so it can only tell you that a payment happened. We put the review gate before payment because a disputed deliverable is much cheaper to handle while the money is still held. The cost is latency: the provider is not paid until the buyer approves, and a job nobody approves expires instead of paying out. We measured this on our own runs, and the tradeoff showed up there. In the released run, the substance witness came back inconclusive. The gate still released at trust 0.8 because three other witnesses passed. That threshold is a judgment call, and we would rather show it than hide it.
Four live SKUs. Pick the cheapest one that answers your question. The grades are from Lumière PayCheck, an outside grader that pays real USDC to test x402 endpoints. We do not run it and cannot edit it. Grades read 2026-10-07.
| Need | SKU | Price | Outside grade |
|---|---|---|---|
| A signed record that an action happened, linked to an ERC-8004 passport | procurement.trust-layer | $0.01 | B 85 |
| Show an attestation to a counterparty exactly once. A second showing is rejected and itself recorded | attestation.single-use-seal | $0.05 | C: delivery not yet confirmed |
| The full trail above: review gate, witnesses, settled-outcome proof | procurement.council or deliberation.multi-agent-debate | $2.00 | not monitored yet |
| The deliverable is disputed: evidence hashed per item, a three-arbiter panel, a signed verdict | arbitration.dispute-settlement | $5.00 | not monitored yet |
Pay with any x402 client: POST https://api.craigmbrown.com/v1/services/<sku> returns a 402 challenge. Sign it and retry. No signup, no API key. The full flow is in llms.txt and on how it works.
sha256sum -c SHA256SUMS.bundle.json["bundle"], serialized with sorted keys and no spaces. It should be 4fccb43a85f573eb51c78b42b9be587ca2d2da6ed92fa4eeef91b99b51f03da7..ots files with any OpenTimestamps client.The step-by-step procedure, with every hash in full, is in the settlement-trail white paper. You can also paste any proof hash into the public proof verifier.
Tried: two runs on 2026-09-29 with real USDC on Base mainnet, one released and one rejected. Not yet tried: both agents in those runs were ours. No outside buyer has run the full trail yet. For a single job, the Base anchor and the evidence pack are made by an operator step after settlement, not automatically. If you want them, say so in the request. The witnesses are BO-run, and moving to witness selection outside our control is the next step.
If your agents pay other agents and you want a record that you, a counterparty, or an auditor can check, email [email protected]. Tell us the one transaction you would run first.