Agentic Finance Graph

Home/Research/ERC-8004

Identity · Reputation · Validation

ERC-8004 gave agents a passport. Not a pulse.

The “Trustless Agents” standard is minting hundreds of thousands of identities. Almost none of them answer when called. Here is the standard, the counts, and the funnel — with methodology you can reproduce.

Agentic Finance Graph · Published 2026-09-04 · Registries live since 2026-01-29

Direct answer ERC-8004 gives an AI agent a portable on-chain passport: an ERC-721 identity whose agentURI points to a registration file (services, endpoints, wallet), plus a reputation registry for signed feedback and a validation registry for checked work. It is not a payment standard — it answers who an agent is, what counterparties said, and whether anyone verified the work.

Three registries, one ID

Each agent is an NFT: agentId = tokenId, with an owner, an agentURI pointing at an off-chain JSON registration file, and key/value metadata that commonly includes agentWallet. The global ID form:

{namespace}:{chainId}:{identityRegistry}:{agentId}
eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432:2106
CREATE2 registry addresses — verify per chain before indexing
RegistryAddressJob
Identity0x8004A169…a432ERC-721 passport + URIStorage + metadata
Reputation0x8004BAa1…9b63Signed feedback, tags, withdrawals — a signal format, not a score product
Validationper chainRequest → validator responds 0–100 with a proof URI (re-execution, zkML, TEE)

One transfer rule matters for indexers: moving the NFT to a new owner breaks the old payment-wallet binding — index it as an edge break, never a merge.

The counts — and why they disagree

CutCountDateCaveat
8004scan network analytics492,792 agents · 27 chains2026-09-02+1,560 agents/24h; protocol tags 82.2% unknown
8004scan + Token Dispatch385,998 · 29 chainsJul 20262.24% with a working service; 89.2% no standard call method
Cambrian Q2 2026220k+ · 22 networksmid-2026registration ≠ useful agent
QuickNode explorer, 30d125,587 regs · 30,127 feedbacksresearch window7 validation requests. Seven.
Chain mix (top)BNB 302k · Base 63k · ETH 31k2026-09BNB is the mint capital and the spam capital

Quality warning: the standard is being farmed. Empty NFTs, sports-bot clones, and serial “Trading Agent #N” spam are visible on every explorer. Rank raw agent counts and you are publishing a casino leaderboard.

The reproducible Base crawl — copy this methodology

Universe: the complete Registered log on Base from deployment (2026-02-03) through 2026-08-16 — 63,832 registrations. Even sample of 1,204, public RPC only (repo: maxguryanov/agent-registry-research):

Stagen% of sample
Registered1,204100.0
Non-empty current URI76063.1
URI resolves64653.7
Valid JSON60049.8
Matches 8004 schema34128.3
Declares services21517.9
Endpoint responds (strict)826.8 95% CI 5.5–8.4%

The multi-chain academic crawl (arXiv 2606.26028) lands in the same neighborhood: a valid file plus at least one live endpoint on ~3% of Ethereum, ~4% of BSC, ~15% of Base registrations. Always probe the current URI, not the mint URI — many agents update or blank the pointer.

Indexer footguns: public RPCs lie

  • Some endpoints return HTTP 200 and an empty array for historical eth_getLogs.
  • Some return truncated log sets and still call it success — one Celo public RPC dropped ~19.6% of agents in a test.
  • Scan in ~10,000-block windows even when a vendor advertises 200k, and dual-source at least Ethereum and Base.

Any 8004 census must ship a coverage verifier — on-chain census vs stored Registered count, per chain, per day. If they disagree, the dashboard is fiction. Ours ships with the graph; the rules live on the methodology page.

Reputation hygiene

  • Never show a raw average score as trust.
  • Require feedback tied to a checkable job ID (ERC-8183 escrow or x402 receipt) before it weights rank.
  • Ban self-review and obvious review farms; separate “has reviews” from “has validations.”
  • An 80+ average on a chain with 300k empty mints is a spam signal, not a quality signal.

What we index from day one

identity.Registered · identity.MetadataSet · identity.URIUpdated
identity.Transfer            → break wallet binding
reputation.Feedback / revoke
validation.Request / Response

Then the off-chain join that explorers stop short of: fetch current URI → parse services → probe MCP / A2A / web / x402 endpoints → bind agentWallet → join to balances, x402 payer role, vault deposits, and EIP-7702 code state. NFT → wallet → money. That join is the product.