Supported chain IDs (Agent Kit)
Identity registration uses a numeric EVMchainId in every API and SDK call — not string slugs like sepolia or base.
Contract addresses follow the official ERC-8004 contracts README: mainnet networks share one IdentityRegistry / ReputationRegistry pair; testnet networks share another.
These
chainId values are accepted by POST /agents/:id/identity/prepare, POST /agents/:id/identity/confirm, GET /agents/:id/identity?chainId=…, and SDK registerAgentIdentity / getAgentIdentity. Any other chainId returns a validation error.chainId. Fund the agent EVM address with native gas on the chain you choose before calling prepare/register.
Registry addresses by chainId
Override defaults per chain on your Kit deployment:
More ERC-8004 networks
The ERC-8004 contracts repo lists additional deployments (Optimism, Linea, Scroll, Monad, and others). Abstraxn will add morechainId values to Agent Kit as RPC and registry env support is rolled out.
What is ERC-8004?
ERC-8004 (Trustless Agents) is an Ethereum standard (mainnet-ready as of early 2026) for giving autonomous agents discoverable, composable trust primitives. It defines three registries; Agent Kit focuses on Identity today.Why identity matters for agents
A raw EVM address does not tell a counterparty who operates the agent, which MCP endpoint to use, or whether the agent supports x402. ERC-8004 Identity fixes that by combining:- On-chain record — registration in an IdentityRegistry contract on a chosen chain (e.g. Sepolia, Base).
- Off-chain agent card — JSON at
agentURIwith name, description, service endpoints (including MCP), and x402 support flags. - Global identifier — a CAIP-style global agent id derived from chain, registry, and on-chain
agentIdso the same logical agent can be referenced across tools and explorers.
Registration file (agent card)
Agent Kit serves an EIP-8004 registration-v1 document at a public URL (no API key):register(agentURI) call points the registry at this URL. Wallets and explorers can resolve it without calling your private APIs.
How Abstraxn registers an agent
Prerequisites
- Agent created with
createAgent(or bind) so it has anevmAddress. accessKeystored on your backend for signing.- Native gas on the target chain in that EVM address (registration is a contract call).
- Identity registry configured on Agent Kit for that chain (
IDENTITY_REGISTRY_*env vars on the Kit deployment). Default addresses match the ERC-8004 contracts README; see Supported chain IDs above.
REST API (Agent Kit)
All routes below requireX-API-Key (application API key) except the public registration file.
After confirm, Agent Kit stores records under
agent.metadata.erc8004.registrations[] with:
SDK shortcut
@abstraxn/agent-kit wraps prepare → sign → broadcast → confirm:
createAgent and accessKey storage first.
For external wallet agents (no accessKey), use registerAgentIdentityExternal or manual prepare/confirm with your own signer — see External wallet identity.
Dashboard — Identity & Activity
In Agentic Stack → All agents, open an agent row to see two tabs:Identity tab
Shows ERC-8004 status for operators and support teams:- Registered on-chain banner with global agent identifier (copy-friendly).
- Per-chain registration cards: on-chain agent id, owner, registry address, transaction hash, explorer links.
- Controllers and wallets: EVM/Solana addresses and masked API key reference tied to the agent.
Activity log tab
Lists MCP tool calls for that agent — audit trail for debugging and compliance:
Use Refresh and pagination to load more. Open Details on a row to inspect request/response payloads (redact secrets before sharing externally).
Activity appears after the agent executes MCP tools via your backend or integrations using your application API key with that
agent_id.
Integrate in your app
The sample backend API and sample web app demonstrate the full UX pattern Abstraxn recommends.Sample backend API (NestJS)
Flow inside
AgentsService.registerAgentIdentity:
- Load agent row + decrypt accessKey.
- Pass
chainIdto SDKregisterAgentIdentity(requiresabstxn-dev-agent-kit-sdk@1.0.2+). - SDK signs and submits registration, then confirms with Agent Kit.
- Return tx hash and
chainIdmetadata to the client.
agents.controller.ts, agents.service.ts, identity-chain.config.ts.
Sample web app (Next.js)
RegisterIdentityModal— user picks chain; callsPOST /agents/:id/register-identity.RegisterIdentityFundRequiredModal— prompts funding if balance preflight fails.AgentIdentityDetailson the dashboard — shows global id, on-chain agent id, registry, owner, explorer links after registration.useAgentIdentity— loads identity state from your API.
accessKey; it only triggers your JWT-protected backend route.
Implementation checklist
- Create agent and fund EVM address with gas on target chain.
- Expose
POST /agents/:id/register-identity(or call Kit REST prepare/confirm yourself). - Show registration status in your UI (mirror dashboard Identity fields).
- Set
AGENT_KIT_PUBLIC_URLon Agent Kit soagentURIis reachable on the public internet. - Link users to Activity in dashboard or build your own log viewer using Kit MCP tool log APIs.
Configuration (Agent Kit operators)
Related documentation
- Dashboard setup — All agents, Identity, Activity tabs
- Full-stack app integration — sample API + web app wiring
- Credentials —
accessKeyvs application API key - MCP tools reference — tools that appear in activity logs
- Troubleshooting — auth and signing errors