The six checks
Every check is a fact about the record
Checks 1–5 inspect document structure and duplication. Check 6 uses a disclosed dictionary and text heuristics, which can misclassify purpose. Each one can be re-run by anyone with the same inputs and will give the same answer. These results do not establish that an agent is safe, honest or capable.
The checks
- Metadata URI is set. A record minted with an empty
tokenURIdescribes nothing and cannot be called. On Ethereum this is 38.6% of the registry; on Arc testnet, 71%. - The document loads. The URI resolved at scan time. IPFS URIs are tried against three public gateways. One attempt per scan; a link that needs luck is not a link.
- The document is JSON. It parses to an object. Parked domains that answer with an HTML page fail here, not at check 2.
- Required fields are present. ERC-8004 marks
type,name,descriptionandimageas MUST. NOMEN requires the first three; a missing image does not stop a record from being described or called. - It is not a byte-identical copy. The hash is taken over the full metadata bytes. The lowest id with a given hash keeps it; later ones are folded into it and labelled as its copy. The biggest group on Ethereum is a “test” agent minted 2,043 times from two wallets.
- The description states a purpose. Keyboard noise, a phrase repeated four times, and generated character cards with no service behind them cannot be classified or searched. Most of this is decided by a published dictionary of descriptions; the only automatic rule is repetition.
Field spellings
Check 4 accepts documented spellings of the same field. Arc’s own “Register your first AI Agent” tutorial writes agent_type; the EIP says type. The field is there either way, so the record passes and carries a label saying which spelling it used. Only a small number of records are affected; most Arc records fail check 4 because they carry plain NFT metadata with no type field at all.
Labels that are not checks
| Label | Meaning | Why it does not filter |
|---|---|---|
| template family | The same description is reused by more than five distinct records. | A product deployed once per user is legitimate. Zyfai has hundreds of such agents, each with a different owner and endpoint. |
| no public endpoint | The document declares no service address. | An agent with no public address can still be real, and its reputation still counts. |
| self-described as test or demo | The name or description says so. | On a testnet that is expected. It is shown, not hidden. |
| field spelled X instead of Y | A documented alias was accepted. | Transparency about check 4. |
Categories
Every passing record gets one of eight categories: Trading & DeFi, Data & research, Infrastructure, Assistant, NFT & character, Social & content, DAO & governance, Other. Categories come from a dictionary keyed by description, built by hand and extended by pattern rules; the dictionary is part of the published output.