Give Your AI Agent a Verified Identity
AI agents are entering the economy โ transacting, communicating, and making decisions autonomously.
Creating agents is effortless โ but there lacks a way to prove information about the human behind the agent.
Self Agent ID lets agents prove they're human-backed, privately and instantly. No personal data shared. Ever.
Each agent maps to one unique verified human identity, so you can ensure 1 agent = 1 human.
The Trust Gap
Self Agent ID makes this impossible. One identity per person. Verified on-chain. Sybil-resistant by design.
How It Works
Two ways to register your agent โ use the guided wizard or integrate directly with the SDK.
Web Registration Wizard
Choose Your Role & Mode
Are you a human registering your own agent, or a bot operator? Pick a security mode: connect a wallet, use a passkey, social login, Ed25519 key, or go fully wallet-free.
Scan Your Passport
Scan the QR code with the Self app and tap your passport. A zero-knowledge proof is generated on your phone โ no personal data leaves your device.
Agent Identity Minted
Your agent receives a soulbound NFT and a verified on-chain identity linked to a real human. You stay completely anonymous.
SDK & CLI Registration
Install the SDK or CLI
Add @selfxyz/agent-sdk to your project, or use the self-agent CLI. Available for TypeScript, Python, and Rust.
Generate Keys & Register
Create an ECDSA or Ed25519 keypair. The SDK builds the registration transaction and triggers the passport scan via QR code or deep link.
Sign & Verify Anywhere
Your agent signs requests with its key. Any service running the SDK verifier can check identity, age, OFAC status, and more โ in one API call.
Either way, services verify instantly
Any service can check your agent's identity with a single API call. No extra setup needed.
Who Is It For
Agent Operators
A guided wizard walks you through registering your agent in minutes. Connect a wallet, use a passkey, social login, or go wallet-free โ multiple options to match your setup. Your agent gets a verified on-chain identity that any service can check instantly.
What Your Agent Can Prove
You decide what your agent can share. Nothing more. Even if your agent is compromised, only the credentials you explicitly granted can ever be accessed.
Backed by a Real Human
Prove your agent is operated by a verified person, not a bot or script.
Age Verified (18 or 21+)
Age-gated services can verify your agent's operator meets their minimum age requirement.
Not on Sanctions Lists
Services can check OFAC compliance without accessing your personal data.
One Human, One Agent
Prevent one person from registering unlimited agents. Sybil resistance built in.
Nationality Verified
Optionally prove your nationality without revealing your name or identity.
Name Verified
Optionally share your verified name when services require it.
All credentials are generated from a zero-knowledge proof. Your identity document data never leaves your phone. Your agent only knows what you allow it to know.
Built for Trust at Scale
Private
Zero-knowledge proofs reveal nothing about your identity. Only a proof of verification is stored.
Sybil-Resistant
Each identity document maps to a unique identifier. One person can't register unlimited agents.
Composable
A single API call integrates into any backend, service, or agent framework.
Open Standard
Built as an extension to ERC-8004, the emerging standard for agent registries.
Integrate in Minutes
Add agent verification to your service with a few lines of code. SDKs available for TypeScript, Python, and Rust. Building with AI agents? Use the MCP server to give your agent identity directly from your IDE.
npm ยท @selfxyz/agent-sdkpip ยท selfxyz-agent-sdkcargo ยท self-agent-sdkmcp ยท @selfxyz/mcp-serverVerify Agents
Add middleware to verify incoming agent requests
1import { SelfAgentVerifier } from "@selfxyz/agent-sdk";23const verifier = SelfAgentVerifier.create()4 .requireAge(18)5 .requireOFAC()6 .build();78// One line of middleware9app.use(verifier.auth());
Sign Requests
Authenticate your agent with any service
1import { SelfAgentClient } from "@selfxyz/agent-sdk";23const agent = new SelfAgentClient({4 privateKey: process.env.AGENT_KEY,5});67// Requests are signed automatically8const res = await agent.fetch(url);
