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.
register(agentURI) → agentId
setAgentWallet(agentId, wallet) → links identity to payment addressReputationRegistry. Anyone can leave feedback against an agentId. The registry aggregates it.
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
agentIdis 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
/exploreas 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#
| Source | Becomes |
|---|---|
| IdentityRegistry entries | Rows on /agents, agent pages, node names on /explore |
setAgentWallet links | The join between an identity and its settlements |
| The agent card at the URI | Name, description, icon, declared services |
| ReputationRegistry feedback | score and feedback count, input to trust |
New registrations are picked up within minutes. Read one back:
curl -sL "https://www.roundhouse.studio/api/v0/agents?limit=5" | jq
curl -sL "https://www.roundhouse.studio/api/v0/agents/<agentId>/feedback" | jqChains#
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#
- Agent cards — the document, and the canonical-JSON trap
- Register your agent identity — do it, free
- The KYA memo — signing a statement and committing it with a payment