Trusted Identity for AI Agents

Give Your AI Agent a Verified Identity

Your agents book travel, manage finances, and negotiate on your behalf.

But how does anyone know there's a real person behind them?

Self Agent ID lets agents prove they're human-backed, privately and instantly. No personal data shared. Ever.

Self

The Trust Gap

Gal Nagli

Gal Nagli

@galnagli

The number of registered AI agents is also fake, there is no rate limiting on account creation, my @openclaw agent just registered 500,000 users on @moltbook - don't trust all the media hype 🙂
Moltbook showing 634,737 AI agents registered
3688305.4K1.1K

Self Agent ID makes this impossible. One identity per person. Verified on-chain. Sybil-resistant by design.

How It Works

Scan an Identity Document

Open the Self app and scan the QR code. A cryptographic proof is generated on your phone. No personal data leaves your device.

Your Agent Gets an Identity

A verified identity is created that links your agent to a real human. You stay completely anonymous. You choose exactly which credentials your agent can carry.

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

Register your AI agent with a passport scan. Choose from four modes — wallet-based, agent keypair, wallet-free, or passkey smart wallet. Your agent gets a soulbound NFT and an A2A-compatible identity card that any service can verify instantly.

Service Developers

Add one line of middleware to verify agents are human-backed. The SDK recovers the signer from ECDSA signatures and checks the on-chain registry — with configurable sybil limits, credential checks, and reputation-based access control.

AI Coding Assistants

Use the MCP server or Claude Code plugin to manage agent identity directly from your IDE. Register, sign requests, verify agents, and query credentials — 10 tools that work in any MCP-compatible IDE (Claude Code, Cursor, Windsurf, Copilot, and more).

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.

Operator is Over 18

Age-gated services can verify your agent's operator meets the 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.

npm · @selfxyz/agent-sdkpip · selfxyz-agent-sdkcargo · self-agent-sdkmcp · @selfxyz/mcp-server

Verify Agents

Add middleware to verify incoming agent requests

import { SelfAgentVerifier } from
  "@selfxyz/agent-sdk";

const verifier = new SelfAgentVerifier({
  rpcUrl: "https://forno.celo.org",
});

// One line of middleware
app.use(verifier.auth());

Sign Requests

Authenticate your agent with any service

import { SelfAgentClient } from
  "@selfxyz/agent-sdk";

const agent = new SelfAgentClient({
  privateKey: process.env.AGENT_KEY,
});

// Requests are signed automatically
const res = await agent.fetch(url);

Ready to Give Your Agent an Identity?

Register your first agent in minutes. No personal data required.