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