ERC-8004 for AgentKit
Use the AgentKit erc8004 plugin when you want your agent to be discoverable, attach structured metadata, and accumulate reputation signals on GOAT Network.
What This Gives You
| Capability | Why it matters for agents |
|---|---|
| On-chain identity | Lets clients and indexers discover a stable agent record |
| Metadata URI | Publishes machine-readable registration JSON over IPFS or HTTPS |
| Agent wallet | Separates the receiving wallet from the owner wallet when needed |
| Reputation registry | Stores client feedback and summary trust signals |
| Cross-protocol composition | Lets you pair identity with x402 payments |
Network-Aware Contract Resolution
AgentKit now resolves ERC-8004 contract addresses from ctx.network at runtime.
| Network | Identity Registry | Reputation Registry | Notes |
|---|---|---|---|
goat-mainnet | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | Canonical CREATE2-style mainnet deployment |
goat-testnet | 0x556089008Fc0a60cD09390Eca93477ca254A5522 | 0xd9140951d8aE6E5F625a02F5908535e16e3af964 | Testnet3 runtime mapping used by the latest AgentKit release |
Registry Identifier
The canonical agentRegistry identifier is:
Examples:
AgentKit Action Map
| Action | Purpose |
|---|---|
erc8004.register_agent | Register an agent and create the base on-chain identity |
erc8004.set_agent_uri | Point the registry entry at your registration JSON |
erc8004.get_metadata | Read metadata fields already stored for an agent |
erc8004.set_metadata | Write additional on-chain metadata fields |
erc8004.get_agent_wallet | Read the payout wallet for an agent |
erc8004.give_feedback | Submit a client feedback record |
erc8004.revoke_feedback | Revoke a feedback record you previously submitted |
erc8004.get_reputation | Query summary reputation signals |
erc8004.get_clients | List clients that have interacted with the agent |
Registration JSON Schema
Your agentURI should resolve to a JSON document with these top-level fields:
| Field | Required | Notes |
|---|---|---|
type | Yes | Use the ERC-8004 registration schema URL |
name | Yes | Human-readable agent name |
description | Yes | Short capability summary |
image | No | Logo or preview image |
services | Yes | Endpoint list for A2A, MCP, x402, or other exposed interfaces |
x402Support | No | Set to true only if the agent actually exposes paid endpoints |
active | Yes | Whether the agent should be considered live |
registrations | Yes | Include the GOAT Network registry identifier and agentId |
supportedTrust | No | Reputation, TEE attestation, or other trust modes |
Minimal Example
If you are registering on goat-testnet, replace the registry identifier with eip155:48816:0x556089008Fc0a60cD09390Eca93477ca254A5522.
Register the Plugin in AgentKit
Registration Flow
Register the agent
Use erc8004.register_agent to create the initial Identity Registry entry.
Publish your registration JSON
Store a machine-readable registration.json file on IPFS or HTTPS. This document should describe the agent, its services, and its trust model.
Attach the metadata URI
Use erc8004.set_agent_uri so indexers and clients can resolve your off-chain metadata.
Set optional metadata and payout wallet
Use erc8004.set_metadata for extra fields and update the receiving wallet when payments should not go to the owner wallet.
Start collecting feedback
Encourage integrators or clients to submit feedback through the Reputation Registry so your agent accumulates usable trust signals.
Reputation Flow
How x402 Fits In
ERC-8004 is not a payment layer. Pair it with x402 Payments when you want:
| Need | Use |
|---|---|
| Agent discovery | ERC-8004 |
| Paid HTTP endpoints | x402 |
| Machine-readable service entry | Add an x402 service object in registration.json |
| Separate payout wallet | agentWallet plus your x402 settlement setup |
Operational Checklist
- Pin
registration.jsonto durable storage such as IPFS when possible. - Keep
servicesaccurate so callers can find MCP, A2A, and x402 endpoints without guessing. - Use
x402Support: trueonly when you actually expose paid routes. - Prefer a dedicated payout wallet if the owner wallet should not receive production payments.
- Re-check the explorer after registration or wallet updates to confirm the state change landed.
- Match the registry address to the execution network because AgentKit now resolves
goat-mainnetandgoat-testnetto different ERC-8004 contracts.