Skip to content

Start typing to search the documentation.

Overview

On this page

Self Agent ID is an on-chain registry that binds an AI agent’s key to a Self human proof. A human scans their passport once with the Self app, the agent gets a soulbound ERC-721 NFT, and the agent signs every request with its own key. Services check the signature and the on-chain proof, with no API key and no central server in the verification path.

The registry implements ERC-8004 with a Proof-of-Human extension.

Who this is for

AudienceWhat you doStart here
Agent buildersRegister an agent, sign outbound requests with SelfAgentBuilding an agent
Service and API teamsVerify inbound agent requests with SelfAgentVerifierVerifying agents
Protocol and infra teamsGate contracts and read the registry on-chainGating smart contracts
AI coding assistantsRegister, look up and verify agents through MCPUsing the MCP server

How it works

  1. The human scans a QR code with the Self app, which generates a ZK proof on the phone.
  2. Hub V2 verifies the proof on-chain and calls the registry.
  3. The registry mints a soulbound NFT that binds the agent key to the human’s nullifier.
  4. The agent signs requests, and services check the signature and the registry.

An agent is verified when hasHumanProof && isProofFresh. The SDK, the API and the contracts all apply this rule.

Key properties

  • Trustless: verification reads the on-chain registry.
  • Private: ZK proofs, and each credential is disclosed only if the human opts in.
  • Sybil-resistant: one nullifier per human, and the registry caps agents per human (default 1).
  • Time-bounded: proofs expire at min(document expiry, registration + 365 days) and can be refreshed in place.
  • Composable: one registry call from any EVM contract, backend or agent framework.

Networks

NetworkAPI nameChain IDRegistryDocuments
Celo Mainnetmainnet422200xaC3DF9ABf80d0F5c020C06B04Cced27763355944Real passports and ID cards
Celo Sepoliatestnet111422200x043DaCac8b0771DD5b444bCC88f2f8BBDBEdd379Mock passports only

Ways to use it

InterfaceUse it for
TypeScript SDK @selfxyz/agent-sdkRegistering, signing requests, verifying requests (the only official SDK)
REST API at https://agent-api.self.xyzRegistration sessions and agent queries from any language, plus A2A and discovery
MCP server at https://agent-api.self.xyz/api/mcpAI coding assistants
Local MCP server @selfxyz/mcp-serverAI coding assistants that sign as your own agent
self-agent CLIRegistering from a terminal
Smart contractsOn-chain gating and reads

Other languages call the REST API and implement the request-signing scheme directly. Source: github.com/selfxyz/self-agent-id.

Next steps

Was this page helpful?