{"openapi":"3.1.0","info":{"title":"ERC-8004 Agent Liveness","description":"Checks whether an agent registered in the real ERC-8004 Identity Registry (Base Sepolia testnet) is actually alive right now -- resolves its on-chain registration file and performs a real MCP handshake against its declared endpoint, not just a cached registration check.","version":"1.0.0","contact":{"email":"dasaanrod@gmail.com"}},"paths":{"/verify-registered-agent":{"post":{"summary":"Verify Registered Agent Endpoint","description":"Checks whether an ERC-8004-registered agent (Base Sepolia testnet) is\nactually alive right now.\n\n`verdict` meanings:\n- AGENT_NOT_FOUND: no agent is registered with this agent_id (ownerOf reverted).\n- REGISTRATION_FETCH_FAILED: the agent exists but its registration file\n  (data:/ipfs:/https:) could not be resolved or parsed.\n- REGISTERED_INACTIVE: the registration file itself declares `active: false`.\n- REGISTERED_NO_ENDPOINT_DECLARED: registration resolved but declares no\n  checkable endpoint.\n- REGISTERED_LIVE: a real MCP `initialize` handshake against the\n  declared endpoint succeeded right now.\n- REGISTERED_UNREACHABLE: registered, active, has a declared endpoint --\n  but the live handshake failed. This is the actual gap this asset\n  exists to catch: a real on-chain registration that no longer\n  corresponds to anything running.\n\nPayment (x402, $0.10) settles BEFORE this handler runs, at the ASGI\nmiddleware layer ahead of request validation -- a call is charged even\nif it resolves to AGENT_NOT_FOUND or 422s: the verdict itself (including\na negative one) is the paid product, same convention as every other\npaid asset in this codebase.","operationId":"verify_registered_agent_endpoint_verify_registered_agent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRegisteredAgentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRegisteredAgentResponse"}}}},"422":{"description":"invalid request body (agent_id out of range)"},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"RegistrationInfo":{"properties":{"ok":{"type":"boolean","title":"Ok"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"},"x402_support":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"X402 Support"},"supported_trust":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Supported Trust"}},"type":"object","required":["ok"],"title":"RegistrationInfo"},"ReputationInfo":{"properties":{"available":{"type":"boolean","title":"Available"},"feedback_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feedback Count"},"distinct_clients":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distinct Clients"},"average_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Value"},"value_decimals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value Decimals"}},"type":"object","required":["available"],"title":"ReputationInfo"},"VerifyRegisteredAgentRequest":{"properties":{"agent_id":{"type":"integer","maximum":1.157920892373162e+77,"minimum":0.0,"title":"Agent Id","description":"ERC-8004 IdentityRegistry token ID (agentId) on Base Sepolia testnet."}},"type":"object","required":["agent_id"],"title":"VerifyRegisteredAgentRequest"},"VerifyRegisteredAgentResponse":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"verdict":{"type":"string","enum":["AGENT_NOT_FOUND","REGISTRATION_FETCH_FAILED","REGISTERED_INACTIVE","REGISTERED_NO_ENDPOINT_DECLARED","REGISTERED_LIVE","REGISTERED_UNREACHABLE"],"title":"Verdict"},"owner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner","description":"EVM address currently owning this agent's ERC-721 identity token."},"registration":{"anyOf":[{"$ref":"#/components/schemas/RegistrationInfo"},{"type":"null"}]},"endpoint_checked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint Checked","description":"Endpoint URL the MCP handshake was attempted against, from the registration's own endpoints array."},"mcp_handshake":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Handshake","description":"reachable/server_name/server_version/tool_count, or reachable=false with error_code."},"reputation":{"anyOf":[{"$ref":"#/components/schemas/ReputationInfo"},{"type":"null"}],"description":"Aggregate feedback from the ReputationRegistry, informational only -- never gates verdict. Self-reported: any EVM address can call giveFeedback for any agentId, unverified and un-staked -- treat this as an unverified signal, not a trust score."},"evaluated_at":{"type":"string","title":"Evaluated At"}},"type":"object","required":["agent_id","verdict","evaluated_at"],"title":"VerifyRegisteredAgentResponse"}}}}