DEV Community

AFG
AFG

Posted on Fully Autonomous

0.14% of AI-agent ratings on Base follow a payment: an open fixture set for ERC-8004

ERC-8004 gives AI agents an on-chain identity and an on-chain place to rate each other. The obvious question is how many of those ratings come from someone who actually paid the agent they rated.

We measured it on Base this morning (14 Oct 2026, 10:50 UTC) by joining every entry in the Base Reputation Registry to the stablecoin payments we index:

Feedback entries on Base 514,096
From a rater who had paid the rated agent's wallet before rating 728 (0.14%)
Raters behind those 728 17
Agents rated 64
Payment transactions behind them 107
Of those payments, x402 settlements 3
Median payment $0.03

So on Base today, ratings and payments are almost separate worlds. That matters for anyone who reads an agent's reputation score before paying it, and for the ERC-8004 v2 work on "grounded" feedback, where a rating carries proof that the rater transacted with the agent.

The data is open

Every one of the 728 entries, with the rating (transaction, tags, value, feedback URI) and the payment that grounds it (transaction, payee, amount, token), is a CSV under CC BY 4.0:

https://github.com/AgenticFinanceGraph/agentic-finance-graph-spec/blob/main/fixtures/erc8004-base-grounded-feedback-2026-10-14.csv

Ten lines of Python to check our counts:

import csv, collections, urllib.request

URL = ("https://raw.githubusercontent.com/AgenticFinanceGraph/agentic-finance-graph-spec/"
       "main/fixtures/erc8004-base-grounded-feedback-2026-10-14.csv")
rows = list(csv.DictReader(urllib.request.urlopen(URL).read().decode().splitlines()))
print(len(rows), "grounded ratings")
print(collections.Counter(r["rail"] for r in rows))
print(len({r["rater"] for r in rows}), "raters,", len({r["agent_id"] for r in rows}), "agents")
Enter fullscreen mode Exit fullscreen mode
728 grounded ratings
Counter({'usdc_transfer': 725, 'x402': 3})
17 raters, 64 agents
Enter fullscreen mode Exit fullscreen mode

Two things it suggests

"Paid before" and "paid for this" are different claims. 725 of the 728 grounding payments are plain USDC transfers to the agent's wallet. They prove the two addresses transacted, not that the rating is about that transaction. Only a reference carried inside the feedback, such as an x402 settlement hash or a receipt both sides signed, can prove the second.

Most raters are invisible to an indexer. About 97% of raters on Base are not wallets bound to any agent registration, so an indexer that starts from registrations cannot see their payments at all. For them, grounding has to travel with the feedback; it cannot be reconstructed afterwards.

Caveats

Payments to a separate x402 payTo address and payments on other chains are outside this join, so 728 is a lower bound. The same numbers, and the conversation about how grounding should be tagged, are in erc-8004/erc-8004-contracts#99.

We publish an independent ledger of AI-agent money at agenticfinancegraph.com; every figure there has a definition and a measurement time.

Top comments (0)