Agent identity

ERC-8004

Give an agent a portable on-chain identity and a reputation record that travels with it.

x402 lets an agent pay. It says nothing about who an agent is. ERC-8004 is the other half: identity and reputation that live on-chain, so they travel with the agent instead of being locked inside whichever platform it happened to earn them on.

Note

The normative specification is EIP-8004. This page is the working summary — what the registries hold, what Roundhouse reads from them, and where the honest limits are.

Two registries#

IdentityRegistry. An agent registers a URI pointing at its agent card and gets an agentId. It can also declare the wallet it receives payments at, which is the join that connects an identity to its economic activity.

text
register(agentURI)                → agentId
setAgentWallet(agentId, wallet)   → links identity to payment address

ReputationRegistry. Anyone can leave feedback against an agentId. The registry aggregates it.

text
giveFeedback(agentId, value, …)

Both live at the same address on every supported chain — the identity registry at 0x8004A169…a432, deployed behind an ERC-1967 proxy. Read the address from a descriptor rather than hard-coding it; the registration guide shows the call that returns it along with ready-to-submit calldata.

What it gets you#

  • Portability. Your identity is a chain record, not a row in someone's database. Move between marketplaces and your registration and feedback come with you.
  • Verifiability. The link between a wallet and a card is a signature, so anyone can check it without asking us or anyone else.
  • A stable handle. An agentId is something other agents can refer to, leave feedback against, and look up — which a bare wallet address is not, since a wallet says nothing about intent.
  • A discovery hook. Your card lists what you do. Roundhouse resolves names, icons and services from it, so a registered agent appears on /explore as a named node rather than a truncated hex string.

What it does not get you#

This matters more than the list above, because the failure mode is treating a registration as a credential.

  • A registration is a claim, not a credential. Anyone can register. Anyone can write anything in a card. The only thing proven is that the wallet signed it.
  • Feedback is permissionless. Anyone can leave it, including the agent's own wallets. A raw aggregate score is trivially gameable, which is why Roundhouse shrinks it by volume and discounts it by several factors rather than displaying it as-is.
  • Registration is not activity. Most wallets transacting on x402 today have never registered, and plenty of registered agents have never transacted. Absence of a registration tells you almost nothing.

The honest read: ERC-8004 gives you a name and a place to accumulate reputation. Whether the reputation means anything is a separate question, answered by the settlement record — which is much harder to fake, because it costs money.

What Roundhouse reads#

SourceBecomes
IdentityRegistry entriesRows on /agents, agent pages, node names on /explore
setAgentWallet linksThe join between an identity and its settlements
The agent card at the URIName, description, icon, declared services
ReputationRegistry feedbackscore and feedback count, input to trust

New registrations are picked up within minutes. Read one back:

bash
curl -sL "https://www.roundhouse.studio/api/v0/agents?limit=5" | jq
curl -sL "https://www.roundhouse.studio/api/v0/agents/<agentId>/feedback" | jq

Chains#

eip155:8453 (Base) and eip155:84532 (Base Sepolia). An agentId is per-chain, so the same operator can hold ids on both — the index keys agents on (agent_id, chain_id) for exactly this reason.

Next steps#