Escrow · my x402 kit
My reference implementation, not audited- The money waits in escrow, not with the seller.
- The ruling executes inside the Court’s own transaction.
- The refund happens by itself.
A refused refund can’t happen here.
Devcon 8·Agentic Hub·What ERC-8004 actually means
One x402 call from our main-stage trial on Celo, a Kleros ruling,
and what the review should say after it.
The payment is where the evidence starts.
Fortunato CinquepalmiProduct Lead, Kleros
with Lena Hierzi · Celo Core Co and Harpreet Singh · Namespace
01Pay00:08:27
#10024 → #10025
0.01 USD₮ through x402
02DeliverGot none of the three
Asked for a “Celo market report” with
pricevolumesources
03Dispute00:08:37
Kleros case 329 filed
court 34 · 5 jurors
−10000:08:44
on Provider #10025
“dispute”
written by the agent
04Rulingruled
The jurors: Accept the claim
05Back on ERC-800401:06
UTC · 3 Nov 2026
00:08:27 00:08:37 · 00:08:44 58 min 01:06:26 · 01:06:29Celo mainnet txs 0xede5…01b5a (payment), 0x027a…4cb3, 0x0ae4…a778, 0xbde5…34ed (reviews), read 5 Nov 2026 · Kleros Court V2 case 329, court 34 · github.com/GigaHierz/agent-on-trial
A refused refund can’t happen here.
Then the review depends on the seller (my kit’s scores)
ruling-honoredruling-not-honoredIn escrow, honouring a ruling is automatic. Direct, it’s a choice.
My x402 kit: docs/FEEDBACK.md, github.com/fortuvp/kleros-x402-kit (reference implementation, not audited): on the escrow rail the refund happens inside the Court’s own transaction · Trial: Celo tx 0xede5…01b5a paid the provider directly, read 5 Nov 2026
What happenedToday in my kitWhat it tells a reader
Today, a lost case that was refunded looks like a clean order.
Two questions for the room
for the discussion, not a product or a standardEscrow: it had no choice. Should it be −10?
The escrow paid the refund, not the seller. A loss that fades, back in 6 months.
Direct: it chose to comply. Negative, +50 or +100?
It lost the case, then paid back by itself. Is obeying a ruling worth credit?
My x402 kit: KlerosFeedbackRouter.sol and docs/FEEDBACK.md, github.com/fortuvp/kleros-x402-kit (reference implementation, not audited) · Questions for the discussion; −10, back in 6 months, is the mistake penalty in my licence-points proposal
Feedback, anycheap to fake
Anyone but the owner and its operators can write it.
Feedback with a paymentnever checked by the contract
A proof of payment points to a transaction. Optional.
Collateral: a bond
The agent is backed by a bond, open to challenge. A false claim loses it.
A dispute
Someone objected, with evidence.
A rulinglike case 329: −100 on the provider, +100 on the buyer
A court decided, and the review came back on chain.
What a search can rank it on
Its description only
8004scan’s #1 for “dispute resolution” won on its description. Its file doesn’t load.
How many reviews
Open to sybils.
How many distinct payers
x402 Bazaar: relevance, recent calls, unique payers.
Money at stake
A successful challenge takes the bond.
Open disputes
Who objected, and on what evidence.
Rulings won or honoured
What a court decided, and whether it was honoured.
Each layer is something a search can rank. Without them, it ranks the description.
Illustrative · ERC-8004 spec: no search function; nothing checks the registration file · 8004scan public search, q="dispute resolution", 4 Nov 2026
docs.cdp.coinbase.com/x402/bazaar · Agent Reputation by Kleros: agents backed by a bond, open to challenge · Kleros case 329 reviews on Celo, read 5 Nov 2026
01
The agent goes on a Curate list with a bond, under a published policy: what it claims to do.
bond
02
Anyone who thinks the claim is false brings evidence and puts up a stake: half the bond, plus the court fee. Any time.
stake · ½ bond + fee
03
Claim false: the agent is removed. The challenger takes the bond.
Claim holds: the agent stays. The challenger’s stake is added to its bond.
An honest agent keeps its bond. A false claim pays whoever catches it.
Stake Curate, docs.kleros.io/products/stake-curate: a listing stays open to challenge for as long as it is listed · PermanentGTCR.sol: the challenger stakes half the item’s bond plus the arbitration fee; wins, the item is removed and the challenger gets the bond; loses, its stake is added to the item’s bond · agent-reputation.kleros.io
One way to order it. New ideas welcome.
9 in 10
registered agents: nothing above this rung.
Marker: 8004scan API, mainnets, 4 Nov 2026 20:18 UTC: 1,881,538 agents, 194,236 with a review.
Rungs: ERC-8004 spec (Draft, last change 25 Jan 2026); docs.kleros.io, Agent Reputation.
Points by rung, out of 100
0 + 2 + 40 + 30 + 10 + 18 = 100
Penalties
Two scores · worked examples
A proposal for the discussion, not a product or a standard. Inspired by licence points (art. 126‑bis CdS). 82: bond, court, 500 free reviews, 100 paying clients with records of their own, no rulings. 42: bond, court and free reviews, before any independent paying client.
Three questions for the discussion
Should a seller that complies with a ruling be rewarded, or only forgiven?
Should a refund the escrow enforced look the same as one the seller chose to pay?
What should a search need to see before it ranks an agent?
Points, out of 100
Penalties
Three agents · illustrative
A new ID starts at 42 at most. The rest has to be earned again.
Weights are a proposal for this discussion. Baseline agent: bond, court, 500 free reviews, 100 paying clients with records of their own = 82. Inspired by licence points (art. 126‑bis CdS) and Friedman & Resnick, “The Social Cost of Cheap Pseudonyms” (2001).
Yes, if the provider has an agentId.
The usual direction.
Yes, only if the payer has its own agentId.
x402 gives you a wallet, not an agent.
Nobody reviews themselves: the owner and its operators can't write.
"proofOfPayment": { "fromAddress": "0x…", "toAddress": "0x…", "chainId": "…", "txHash": "0x…" }
Optional. Off-chain.The contract never checks it.
ERC-8478draft, 30 Oct
binds the x402 payee to the agent's wallet
x402 offer-receiptmerged
signed offers and receipts
ERC-8004 spec: giveFeedback, agentWallet, proofOfPayment. Celo: feedback tx 0x3d4a…117a, payment 0x8e6d…4905, 4 Nov 2026 17:57 UTC. ERC-8478: ethereum/ERCs PR #2132 (open). offer-receipt: x402-foundation/x402.
… "services": [ { "name": "A2A", … }, { "name": "MCP", … }, { "name": "web", … } ], "x402Support": true, "active": true
Written by the agent’s owner. Nothing checks it.
Indexers read these files
and rank them.
Its file doesn’t load. No reviews.
It wins on its description.
Ranked on relevance, recent calls and unique payers.
New endpoints rank low until usage accrues.
30 days without a sale: removed.
Whoever ranks the results runs a reputation system.
Names: Harpreet, in this session. Domains: Lena at 12:40.
ERC-8004 spec: no search function; it "cannot cryptographically guarantee that advertised capabilities are functional".
8004scan public search API, q="dispute resolution", 4 Nov 2026 20:34 UTC. Coinbase CDP x402 Bazaar docs, read 4 Nov 2026.
Identity0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
Reputation0x8004BAa17C55a88189AE136b182e5fdA19dE9b63
Identity0x8004A818BFB912233c491871b3d84c89A494BD9e
Reputation0x8004B663056A597Dffe9eCcC1965A193B7388713
Sepolia0x3162df9669affa8b6b6ff2147afa052249f00447
Ethereum0x118155741eea23f56b3bd59b0c1342d5daaa6d07no items yet
Sepolia0xc770c4F43f84c9e010aE0Ade51be914372B7Cc02
getSummary(agentId, [reviewer], "", "")
The reviewer list is required.
erc-8004/erc-8004-contracts README; docs.kleros.io/ai-tools/agent-reputation; checked on chain 4 Nov 2026.
Where the numbers in my part come from. Research read 4 Nov 2026, 20:15–21:00 UTC.
ERC-8004 spec: Draft, last change 25 Jan 2026
eips.ethereum.org/EIPS/eip-8004 · ERCs PR #1458, #1488Reference contracts and registry addresses
github.com/erc-8004/erc-8004-contracts1.88 million registered · 9 in 10 never reviewed
8004scan.io dashboard and API · 4 Nov 2026In July, 2.24% had a working endpoint
8004scan, “Landscape of Onchain Agents” · 22 Jul 2026Agent #9904 · a paid call, then its feedback
Celo mainnet reads · block 81,923,136 · 4 Nov 2026How much the Validation registry is used
erc-8004.quicknode.com/validators · 4 Nov 2026+95 / −95: how the Kleros oracle writes reviews
github.com/kleros/reputation-oracle · Sepolia readsBonds and challenges on Stake Curate
github.com/kleros/pgtcr · PermanentGTCR.solAgent Reputation: a public testnet product
docs.kleros.io · agent-reputation, stake-curateWhat a facilitator sees · signed offers, receipts
x402-foundation/x402 · v2 spec §7, offer-receiptERC-8478: x402 payee verification for agents
ethereum/ERCs PR #2132 · draft, opened 30 Oct 2026Bazaar: its ranking weighs recent calls, unique payers
docs.cdp.coinbase.com/x402 · Bazaar docs, 4 Nov 2026Escrow, signed delivery, 7 testnet disputes
github.com/fortuvp/kleros-x402-kit · not auditedItaly: 20 points, all back after 2 clean years
art. 126-bis, Codice della StradaUK: points leave the record after 4 years
gov.uk/penalty-points-endorsementsUS credit reports: most negatives gone after 7 years
15 U.S.C. §1681c (Fair Credit Reporting Act)eBay: the last 12 months · Uber: the last 500 ratings
eBay profile feedback · Uber, “How ratings work”Cheap identities: newcomers “pay their dues”
Friedman & Resnick · J. Econ. & Mgmt Strategy, 2001