Caller-observed delivery proof for paid x402 endpoints
Registries count settlements. Monitors probe the paywall. Nobody checks what a paying caller actually receives, because checking costs money. Delivered pays as a real buyer, then holds the response against the contract the seller itself published. Every verdict below ships with the challenge, the response, and the on-chain settlement that proves it.
POST /api/v1/x402/is-prime api.delx.ai answers with its price and, in the same breath, its promise: "outputSchema": { "schema": { "type": "string" }, "n": { "type": "integer" }, "is_prime": { "type": "boolean" } } "amount": "1000" $0.001 USDC
transferWithAuthorization {
value: 1000,
to: seller,
nonce: 0x1f92…c4
}
signed, submitted by facilitator,
settled on-chain. Real money,
delivered before the goods.
{
"tool_name": "util_is_prime",
"result": {
"schema": "delx/is-prime/v1",
"n": 97,
"is_prime": true
}
}
A caller reading the contract gets response.is_prime → undefined. HTTP 200, money settled, no error anywhere. Cost to find: $0.001.
| 46paid attempts | 33delivered (HTTP 200) | 29checkable vs contract | 19conforms · 65.5% | 10violations · 34.5% | $1.292925settled, on-chain |
Base mainnet, 2026-08-26, 40 distinct hosts drawn from Coinbase's x402 discovery registry. Spend measured from the USDC Transfer log, never from quotes.
The ledger
Each row expands to the seller's declared contract, what came back, what was quoted against what actually settled, and the settlement transaction on Basescan. Verdicts follow one rule: only an HTTP 200 can be judged against a contract; a payment our client could not complete is our failure and is never counted against a seller.
What the money found
The promised fields exist, nested under a wrapper envelope like {tool_name, result}.
A caller reading the declared path gets undefined while correct data sits one level
down. A contract violation, not fraud, and invisible to every tool that stops at the paywall.
One took $0.100 with a settlement receipt, then answered HTTP 422. Another settled $0.001 and answered HTTP 500. The money moved; nothing came back; x402 has no recovery path. Other sellers hit with the same bad input refused without charging, so the correct behaviour exists. It is not universal.
The official x402-fetch cannot pay v2 sellers at all. A v2 payload under the legacy
X-PAYMENT header is rejected by 13 of 46. Sending both header names reaches all but
one. Three runs, three interop states, each discovered with real money and reproduced in the
measurement log.
Settled amounts drift from listed prices; some sellers deliver and charge nothing; a caller-side ledger built from quoted prices misses reality badly. Delivered records quoted, live, and settled amounts as three separate fields and trusts only the transfer log.
No exceptions
Orion Agents runs an x402 reputation gateway with a discount for attested agents
(X-ORION-ATTESTATION, $0.05 standard, $0.02 attested). Delivered probed it the way it
probes everyone, on 2026-08-26:
AgentBound contract, so the
discounted rate was unobtainable by any caller that day.A contract violation is a mismatch, never an accusation. Full evidence in evidence/orion-gateway-2026-08-26.json.
Trust nothing here
The prober, the conformance checker, and the reconciliation are open source. The unpaid tier runs from a fresh clone with no wallet and no money at risk.
git clone https://github.com/sneg55/delivered && cd delivered npm install npm test # 46 tests, no wallet, no network node src/fetch-registry.mjs # pull the live x402 registry (~15k listings) node src/build-targets.mjs 24 node src/probe.mjs targets.json --no-pay # read live 402 challenges, spend nothing
The paid tier needs a funded throwaway wallet and enforces hard spend caps in code
before any signature: $0.15 per call, $5 per run, price read from the live challenge and never from
the listing. Every figure on this page regenerates from evidence/results.json in the repo.