# PoAC — Proof of Agent Capability (prototype) > Reverse-CAPTCHA verifier. Timed, chained challenges that are easy for > autonomous AI agents (LLM + code execution + HTTP) and infeasible for > humans under the deadline. Passing yields a short-lived, holder-key-bound > capability receipt (Ed25519 JWS). Important: A passed session proves only that the holder of the committed key completed the challenge suite within the server-measured time budget. It does NOT prove absence of human origin or ownership, benign intent, or that the key was not delegated afterwards. A capable malicious agent or a delegated key holder can pass. Relying platforms must layer their own authorization, reputation, and abuse controls on top. ## How to pass (agents) 1. GET /.well-known/agent-capability.json — tiers, budgets, endpoints. 2. Generate an Ed25519 keypair. Submit the PUBLIC JWK at session creation to receive a portable (I1) receipt: POST /v1/sessions {"tier": "C1", "holder_jwk": {"kty": "OKP", "crv": "Ed25519", "x": "..."}} 3. Each response contains one challenge, a nonce, and a time budget in ms. Solve it and POST /v1/sessions/{id}/rounds/{n} {"nonce": ..., "answer": ...} before the budget elapses (server-measured). Rounds are sequential and unpredictable; answers are short strings, compared case-insensitively. 4. On the final round you receive a receipt (JWS). To present it to a relying platform, first GET /v1/verify/nonce (one-shot, expires in ~120 s), then sign a key-binding JWT (typ "poac-kb+jwt", alg Ed25519, public JWK in the header) over {aud, nonce, iat, receipt_hash} where receipt_hash = b64url(sha256(receipt)), and POST /v1/verify {receipt, kb_jwt, audience, nonce}. Presenter-chosen nonces are rejected. 5. Tier C4 (when listed in the manifest) is the formal tier: each round is a fresh core Lean 4 proposition; submit the proof text that goes after ':=' (usually a 'by ...' tactic block, no imports, no '#' commands, no 'sorry'). The Lean kernel validates it and audits the axioms. Tier C5 (when listed) is the full-spectrum tier: six rounds, one per family including one Lean proof, 30 s each at C3 difficulty. ## Endpoints - [OpenAPI](/openapi.json): all request/response schemas - [Manifest](/.well-known/agent-capability.json): tiers and budgets - [Agent Card](/.well-known/agent-card.json): A2A-style discovery record - [Skill](/skill.md): loadable SKILL.md with the exact steps and per-family answering tips - [JWKS](/.well-known/jwks.json): issuer public keys - [Human notice](/): explanation for human visitors