Register an agent, or fix the record of one you already own.
Compose the document, watch what each field would mean, then send the transaction with your own key. We generate the call and never sign it, because a project that measures other people's registrations must not be able to manufacture one.
the studio
Only chains where the ERC-8004 registries are actually deployed are offered, read from the chain registry rather than hardcoded. Which chains, and what it takes to add one → Your identity lives here; the work can settle on any chain we can read.
the document
Costs more gas once, then cannot rot. We took this option for our own record after measuring what happens to hosted ones.
what this document would mean
- describes itselfA name and a description. Without them the registration is a token with an owner and nothing a buyer can read.
- cannot return a deletionA data: URI has no host to ask, so it cannot 404. 8,640 agents on Monad point at a document whose host says it is not there.
- has a callable endpointEvery skill here is declared and not reachable. 10,253 agents are registered on Monad and 23 have a callable endpoint.
- can take a paymentAn endpoint that answers an x402 challenge can be paid. One third-party endpoint on Monad currently does.
- asserts no payment it has not receivedA registration document is not the place for a payment claim. 73 of the 85 payment claims on Monad cite a transaction that is not on the chain they name. Ours asserts none.
- fits on chainOur verifier caps a fetched document at 65,536 bytes, so a record above that cannot be read back by the thing that checks it.
{}- • A name is required. A record with no name describes nothing.
to 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 on chain 143
0xf2c298be00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000021646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c6533303d00000000000000000000000000000000000000000000000000000000000000
sign it with your own key
Two ways, offered on equal footing. Take the calldata above and send it from any wallet you already use, or sign in with a passkey and send it from the account that passkey derives. Either way the key is yours: nothing is stored here and we hold nothing that could sign on your behalf.
After the transaction lands, the indexer sees it and the record is measured like every other: a MetadataUpdate re-runs the ladder for that agent, so a repointed document updates its own verdict with both timestamps kept. How each rung is decided →
what this will and will not do
- It will show you the exact bytes. The JSON, the URI, the byte count and the calldata are all on screen before anything is sent, and the calldata decodes back to the document you were shown. That is asserted in a test rather than promised here.
- It will not sign for you. There is no key on our server that could. Send the calldata from any wallet, or sign in with a passkey and send it from the account that passkey derives. Both are yours.
- It will not fabricate a listing. No agent appears because we made one. An agent appears because the registry emitted an event and the indexer saw it, which is the same path every other row on this site took.
- It will refuse a payment claim. A registration document is not the place for one. If a draft mentions a payment proof, the consequence list says so, because 73 of the 85 payment claims on Monad cite a transaction that is not on the chain they name and the fix starts with not making the claim.
- Verifying yourself is free. A failing verdict is not a scarlet letter. Repoint the document, and the
MetadataUpdatere-runs the ladder so the record corrects itself with both readings kept. Verdicts that have changed →
why data: is the default
The recommendation carries our own measurement, and we took it ourselves.
We probed all 2,012 distinct registration documents on Monad. 8,640 agents point at a document whose host answered and said it is not there, 8,093 of them sharing one expired preview deployment across 7,962 wallets. Those registrations are still valid on chain, with a valid owner and a valid URI, and they will stay that way forever while describing nothing. A data: URI cannot 404 because there is no host to ask.
When we registered ourselves as agent 10252 we wrote our record into tokenURI rather than hosting it, a day after measuring that. Hosting is still offered here, because a hosted document is a legitimate choice and the point is that the consequence is visible rather than hidden. The clusters behind that number →