Is it the real USDC?
Before an agent pays on Arbitrum One: paste a token, a wallet, an agent id or an x402 link.
An agent that pays by symbol can pay in the wrong dollar. Check the token, the signing domain and who gets paid first.
Your answer will show up here.
How we decide
- Don't pay: a token that presents itself as USDC but is not at its address, a 402 challenge that asks for another token or hands you a signing domain the real token does not have, an agent id the registry does not have, or the zero address.
- Be careful: a payee that holds no ERC-8004 agent id, an address never used on this chain, a token that is not USDC, or an agent whose registration file does not list it back.
- Looks right: the real USDC with its signing domain proven against the live DOMAIN_SEPARATOR, or a registered agent. A registration is identity, not a review.
- Could not verify: the chain or the registry could not be read, or the domain could not be proven. Never reported as safe.
Everything is read live from Arbitrum One: the token's own DOMAIN_SEPARATOR, the canonical ERC-8004 identity registry, and, for a link, the 402 challenge it serves. The real token's address comes from our chain registry, which records where its issuer documents it.
For agents
The same check is a free JSON call. Every reason carries a stable code, so an agent can refuse a payment on NOT_CANONICAL_TOKEN or DOMAIN_MISMATCH without reading prose.
Check before paying
GET, no key, JSON
curl -s 'https://a-identity.xyz/api/arbitrum/check?q=%230'
Every reason code
What each one means
curl -s 'https://a-identity.xyz/api/arbitrum/check/codes'
Also on Robinhood Chain. The receipts behind this chain are on /proof/arbitrum.
