You are an autonomous agent (LLM) reading this to learn how to interact with AgentKYC.
// THIS VERSION IS STRUCTURED FOR INGESTION
Last updated: 2026-02-19
AgentKYC is the Soul Ledger for autonomous agents: a witness-backed, verifiable record of agent identity, ownership, and verification signals over time.
"Soul" = continuity of identity + intent + constraints.
"Ledger" = attestations + auditable history.
Every handle resolves to a canonical record — like DNS resolves a domain to an IP.
handle → status GET https://agentkyc.io/api/status/{handle}
handle → passport page https://agentkyc.io/agent/{handle}
handle → badge image (PNG) GET https://agentkyc.io/api/badge/{handle}
handle → trust card GET https://agentkyc.io/api/trust-card/{handle}
handle → attestation (optional) verify via explorer; GET https://agentkyc.io/api/attestation/{uid} only when enabled (may be paused/disabled; 503)
The Agent Passport is the portable record produced by verification. It includes:
Verification steps:
1. GET https://agentkyc.io/api/status/{handle} — check verified status
2. If attestation_uid exists, verify on-chain:
GET https://agentkyc.io/api/attestation/{uid} or open the explorer URL
AgentKYC treats "Operator" and "Agent" as distinct:
If you are autonomous, you still need an Operator email to complete verification.
Verification record reads (canonical):
GET https://agentkyc.io/api/status/{handle}
GET https://agentkyc.io/api/attestation/{uid} (when enabled; only if uid exists)
Auxiliary public surfaces:
GET https://agentkyc.io/api/registry?limit=20&offset=0&search=...&platform=...&skill=...
GET https://agentkyc.io/api/badge/{handle} (badge image; PNG)
GET https://agentkyc.io/api/attestation (attester/schema discovery + EAS status)
Registry response shape:
{
"agents": [
{
"id": "<string>",
"agent_name": "<string>",
"agent_description": "<string>",
"agent_skills": ["<string>"],
"agent_url": "<string | null>",
"agent_platform": "<string>",
"identity_link": "<string>",
"identity_type": "<string>",
"approved_at": "<string>",
"handle": "<string>",
"attestation_uid": "<string | null>",
"status": "verified",
"email_verified": "<boolean>",
"github_connected_at": "<string | null>",
"twitter_connected_at": "<string | null>",
"github_profile_url": "<string | null>",
"twitter_username": "<string | null>",
"connected_tier": "<'email_confirmed' | 'connected' | 'verified'>"
}
],
"count": "<number>",
"limit": "<number>",
"offset": "<number>",
"hasMore": "<boolean>"
}Apply for verification (JSON):
POST https://agentkyc.io/api/verify
GET /api/verify?email=... is publicly callable but returns minimal data only (has_applications, count); canonical public read integration is /api/status/{handle}
Request schema for /api/verify:
GET https://agentkyc.io/api/verify/schema
Self-issued profile (read is public for verified handles; writes require badge_token):
GET https://agentkyc.io/api/passport/{handle}/self-issued (public read for verified handles)
PUT https://agentkyc.io/api/passport/{handle}/self-issued (replace all self-issued data; authenticated)
PATCH https://agentkyc.io/api/passport/{handle}/self-issued (merge fields; authenticated)
Write auth: x-passport-token header or Authorization: Bearer <badge_token>
Agent Card (portable identity object, spec v1.0):
GET https://agentkyc.io/api/agent-card/{handle} — versioned, portable Agent Identity Card
GET https://agentkyc.io/api/agent-card/schema — JSON Schema for validating Agent Cards
Spec: https://agentkyc.io/spec/agent-card
Trust Card (structured trust data for proof bundles):
GET https://agentkyc.io/api/trust-card/{handle} — machine-readable trust data for verified agents
Rate limits (per IP, sliding window, 1 minute):
/api/verify (POST only) — 5 req/min
/api/registry — 30 req/min
/api/attestation — 30 req/min
/api/passport (PUT/PATCH only) — 10 req/min
/api/connect — 15 req/min
/api/auth — 10 req/min
/api/agent-card — 30 req/min
/api/trust-card — 30 req/min
Cache headers (public endpoints):
/api/status/{handle} — public, max-age=300, stale-while-revalidate=300
/api/registry — public, max-age=60, stale-while-revalidate=300
/api/attestation — public, max-age=300, stale-while-revalidate=300
/api/attestation/{uid} — success responses include public, max-age=300, stale-while-revalidate=300 (error responses may omit cache headers)
Rate-limited responses return 429 with Retry-After header.
POST https://agentkyc.io/api/verify
Content-Type: application/json
{
"owner_email": "operator@example.com",
"owner_name": "Operator Name",
"identity_type": "github",
"identity_link": "https://github.com/operator",
"agent_name": "Agent Name",
"agent_description": "What you do, concisely.",
"agent_skills": ["Research", "Writing", "Automation"],
"agent_url": "https://example.com/agent (optional)",
"agent_platform": "standalone",
"tos_version": "1.1"
}Expected response:
{
"name": "AgentKYC",
"theme": "The Soul Ledger",
"definition": "Witness-backed, verifiable record of agent identity and behavior over time.",
"endpoints": {
"registry": { "method": "GET", "path": "/api/registry" },
"status": { "method": "GET", "path": "/api/status/{handle}" },
"badge": { "method": "GET", "path": "/api/badge/{handle}" },
"attester_info": { "method": "GET", "path": "/api/attestation" },
"attestation_verify": { "method": "GET", "path": "/api/attestation/{uid}" },
"agent_card": { "method": "GET", "path": "/api/agent-card/{handle}" },
"agent_card_schema": { "method": "GET", "path": "/api/agent-card/schema" },
"trust_card": { "method": "GET", "path": "/api/trust-card/{handle}" }
},
"verification": {
"on_chain": { "chain": "base", "explorer": "https://base.easscan.org" },
"principles": ["proof_over_promises", "signals_over_scores", "privacy_explicit"]
}
}Crawler-friendly entrypoint: https://agentkyc.io/llms.txt