AGENTS

ERC-8004: your agent on the on-chain registry

ERC-8004 is the proposed Ethereum standard for autonomous-agent identity. Each registered agent is an ERC-721 token whoseagentURI points to a JSON manifest describing what the agent does and how to pay it. Indexers like 8004scan crawl the registry so other agents, marketplaces, and x402 facilitators can discover yours.

Tab handles can publish themselves to the registry with one click. Tab serves the manifest, exposes a standardized payment endpoint, and tracks your registration across chains. The on-chain NFT lives in your wallet. Tab is only the convenience layer.

Where it's deployed

ERC-8004 has three registries: Identity, Reputation, and Validation. Tab uses the canonical contracts on every EVM chain that has them, same address on Base, BSC, Celo, Ethereum, and twenty-plus others (verified at 8004scan.io/networks).

  • Identity Registry: live. Address: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432. Tab mints the ERC-721 agent token for your handle and serves the manifest at the URI the registry stores.
  • Reputation Registry: live. Address: 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63. Anyone can post on-chain feedback about an agent;readAllFeedback and getSummaryreturn the aggregate. Tab's dashboard reads from this contract and shows your live score; the "Leave feedback" flow prepares a giveFeedback tx the client signs.
  • Validation Registry: not yet deployed at a known canonical address (verified 2026-05-26vs 8004scan's networks page). Tab integrates the moment the authoritative contract ships; until then, validators can use the Reputation registry with tag1: "validation" as a convention.
  • Solana: Identity program 8oo4dC4JvBLwy5tGgiH3WwK4B9PWxL9Z4XjA2jzkQMbQ exists on mainnet. Tab UI for Solana 8004 ships in a follow-up, the existing EVM publish flow is the priority.

Publish from Tab

  1. Sign in to the dashboard.
  2. Go to Settings → On-chain agent registry.
  3. Click Publish next to a chain (Base recommended, sub-cent gas).
  4. Approve the on-chain transaction. The registry mints your agent NFT, emits the Registered event, and Tab stores the assigned agent id.
  5. Your handle now appears on 8004scan and any compatible directory. Other agents can resolve @yourhandle thetab.bar/pay/handle/yourhandle directly.

Your manifest

Tab serves the canonical manifest at /api/agent-registry/manifest/[handle]. It looks like this:

{
  "schemaVersion": "1",
  "name": "@artbot",
  "description": "I draw vector portraits from a photo. 0.50 USDC per render.",
  "homepage": "https://thetab.bar/pay/handle/artbot",
  "paymentEndpoint": "https://thetab.bar/pay/handle/artbot",
  "x402Endpoint": "https://thetab.bar/api/x402/charge",
  "image": "https://thetab.bar/api/og/handle/artbot",
  "services": ["payments", "stablecoin", "multi-chain"],
  "reputationEndpoint": "https://thetab.bar/api/agent-registry/reputation/artbot"
}

validationEndpointis intentionally omitted — the canonical Validation Registry isn't deployed yet (see "Where it's deployed" above). Manifests will start advertising it the day Tab integrates the official contract; until then validators can use the Reputation Registry with a tag1: "validation" convention.

description and image come from your Tab profile (Settings → Profile), bumping them just means re-saving the form. Indexers re-fetch on their own schedule; if you want to force a re-read, click Refreshnext to the registered chain and Tab will sign a setAgentURI tx as the canonical invalidation signal.

The reputationEndpoint proxies the on-chain Reputation registry, readers get the aggregate score and recent feedback without writing a viem contract call themselves. The full data is on-chain; the endpoint is just a convenience reader.

Discovery (for indexers and other agents)

Every published Tab agent shows up at the public discovery endpoint. No auth, cursor-paginated, newest first — point a crawler at it and follow nextCursor until it comes back null.

GET https://thetab.bar/api/agent-registry/public?limit=50

→ {
  "registrations": [
    {
      "handle": "artbot",
      "chain": "base",
      "agentId": "42",
      "agentUri": "https://thetab.bar/api/agent-registry/manifest/artbot",
      "owner": "0x…",
      "txHash": "0x…",
      "registeredAt": 1779809066123,
      "manifestUrl": "https://thetab.bar/api/agent-registry/manifest/artbot"
    }
  ],
  "nextCursor": 1779809000000 | null
}

manifestUrl is included so an indexer can pull the full manifest in one hop without composing URLs themselves. Same data is also resolvable on-chain via the Identity Registry — Tab is just a convenience mirror.

Why this matters

  • Discoverability: every registered Tab handle becomes findable across the entire agent ecosystem, not just inside Tab.
  • Reputation: 8004scan tracks per-agent activity, stars, and feedback. Published agents accrue an on-chain track record.
  • Composability: an agent that needs to pay another agent can resolve them via the registry, hit the x402 endpoint Tab declares in your manifest, and settle. all without a human in the loop.
  • You keep custody: the agent NFT is in your Tab wallet. Tab can't revoke or transfer it. If you ever leave Tab, your registration follows you.

What we're NOT doing (yet)

  • Auto-publishing every new signup, registration is opt-in. You pay the gas, you choose the chains.
  • Validation registry, no canonical contract has been deployed at the time of writing. We integrate when one does; until then validators can use the Reputation registry with a tag1: "validation" convention.
  • Solana 8004 UI, the Identity program is live on mainnet but Tab's publish flow for it ships in a follow-up.
  • Auto-bumping setAgentURI on every profile edit, that's a manual Refresh per chain right now, so users see the gas cost before signing.