{"openapi":"3.1.0","info":{"title":"AlgoVoi Agent Trust Bench","description":"Public x402 research endpoints — 187 adversarial and benign payment profiles across 42 threat categories. Free to use, no account required. Machine-readable resource catalog at /discovery/resources.","version":"0.1.0","contact":{"email":"research@algovoi.co.uk"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"x-discovery-url":"https://agent-trust-bench.algovoi.co.uk/discovery/resources","x-well-known-url":"https://agent-trust-bench.algovoi.co.uk/.well-known/x402.json","x-stats-url":"https://agent-trust-bench.algovoi.co.uk/stats.json","x-stats-html-url":"https://agent-trust-bench.algovoi.co.uk/stats"},"servers":[{"url":"https://agent-trust-bench.algovoi.co.uk","description":"Production"}],"paths":{"/{profile_id}":{"get":{"operationId":"get_profile","summary":"Request a bench profile (returns 402 challenge or 200 content)","description":"The primary bench endpoint. Returns a 402 Payment Required with a multi-chain x402 challenge for paying profiles, or 200 for free control profiles. Profile IDs are enumerated in /discovery/resources.","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string"},"description":"Bench profile identifier (e.g. 'cheap', 'injection', 'mismatch')","example":"cheap"}],"responses":{"200":{"description":"Content returned after claimed payment (or for free profiles)","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required — x402 multi-chain challenge","headers":{"Payment-Required":{"description":"Base64-encoded x402 v2 Payment-Required JSON","schema":{"type":"string"}},"X-PAYMENT-REQUIRED":{"description":"Alias for Payment-Required (some clients use this header name)","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer","example":2},"accepts":{"type":"array","items":{"type":"object","properties":{"scheme":{"type":"string","example":"exact"},"network":{"type":"string","example":"eip155:8453"},"asset":{"type":"string"},"payTo":{"type":"string"},"maxAmountRequired":{"type":"string"},"maxTimeoutSeconds":{"type":"integer"},"mimeType":{"type":"string"},"extra":{"type":"object"}}}},"error":{"type":"string"},"paidWith":{"type":"object"}}}}}},"404":{"description":"Unknown profile_id"}},"tags":["profiles"]}},"/discovery/resources":{"get":{"operationId":"list_resources","summary":"Bazaar-format resource catalog","description":"Returns all 160 bench profiles in the Bazaar discovery shape (resource URL, accepts[], metadata). Suitable for autonomous agents and x402 crawlers to enumerate the full surface. Linked from .well-known/x402.json via discovery_url.","parameters":[{"name":"origin","in":"query","required":false,"schema":{"type":"string"},"description":"Optional CORS preflight origin (returned in Access-Control-Allow-Origin)"}],"responses":{"200":{"description":"Resource catalog","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","format":"uri"},"type":{"type":"string","example":"http"},"lastUpdated":{"type":"string","format":"date"},"metadata":{"type":"object"},"accepts":{"type":"array","items":{"type":"object","properties":{"scheme":{"type":"string","example":"exact"},"network":{"type":"string","example":"eip155:8453"},"asset":{"type":"string"},"payTo":{"type":"string"},"maxAmountRequired":{"type":"string"},"maxTimeoutSeconds":{"type":"integer"},"mimeType":{"type":"string"},"extra":{"type":"object"}}}}}}},"count":{"type":"integer"},"description":{"type":"string"}}}}}}},"tags":["discovery"]}},"/.well-known/x402.json":{"get":{"operationId":"well_known_x402","summary":"x402 discovery manifest","description":"Standard x402 well-known document. Points crawlers at /discovery/resources (discovery_url) and the MCP server entry point.","responses":{"200":{"description":"x402 manifest","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["discovery"]}},"/freebie":{"get":{"operationId":"get_freebie","summary":"Always-free control endpoint (no payment required)","description":"Returns 200 with a signed content token without requesting payment. Use as a baseline control to verify your agent correctly distinguishes free and paid endpoints.","responses":{"200":{"description":"Free content","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["profiles"]}},"/stats.json":{"get":{"operationId":"get_stats","summary":"Aggregate bench statistics (JSON)","description":"Returns global counts: total challenges issued, payments claimed, payments verified, and per-profile breakdowns. The HTML dashboard for the same data lives at /stats.","responses":{"200":{"description":"Stats","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["meta"]}},"/openapi.json":{"get":{"operationId":"openapi_schema","summary":"This OpenAPI schema","responses":{"200":{"description":"OpenAPI 3.1.0 schema","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["meta"]}},"/health":{"get":{"operationId":"health","summary":"Health check","responses":{"200":{"description":"Service healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"}}}}}}},"tags":["meta"]}}},"tags":[{"name":"profiles","description":"Payable and free bench profiles"},{"name":"discovery","description":"Resource discovery and manifest endpoints"},{"name":"meta","description":"Service metadata and health"}]}