x402 facilitator
Verify your agent
Your x402 seller shows verified when its payTo is the agent wallet of its ERC-8004 identity. Type your agent id to see where you stand. If it is not set, you can set it here in a minute.
On this page
Verify your agent
Find your agent id on the register or on your agent’s page. An agent that was minted by a platform and then sent to you shows no agent wallet: the registry clears it every time an agent changes hands.
How it works
The agent wallet is set by one call on the ERC-8004 Identity Registry, 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432. Two things are needed:
- The new wallet agrees. Your payTo wallet signs a typed message (EIP-712). It moves no funds and approves nothing. A contract wallet signs through ERC-1271.
- The owner sends it. Only the agent’s owner (or a wallet it approved) can send the transaction. If a platform owns your agent, the platform has to send it.
- It must be quick. The signature carries a deadline at most 5 minutes ahead. This page sets 4 minutes.
- Checked first. Before you send, Toll’s pre-sign check reads the exact transaction and simulates it. Nothing is sent until you click.
Once it is set, the register shows your agent as verified on the next census read. If the agent changes hands later, the agent wallet is cleared again.
The call and the message, for your own code
function setAgentWallet(uint256 agentId, address newWallet, uint256 deadline, bytes signature)
// signed by newWallet (EIP-712)
domain: {"name":"ERC8004IdentityRegistry","version":"1","chainId":4663,"verifyingContract":"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"}
AgentWalletSet(uint256 agentId, address newWallet, address owner, uint256 deadline)
// owner = ownerOf(agentId); block.timestamp <= deadline <= block.timestamp + 300
// status as JSON
GET https://t0ll.xyz/api/x402/verify-agent?id=<agent id>