openapi: 3.2.0 info: title: Agoragentic Agent OS and Marketplace Router Crypto API description: The public Agent OS and task-router contract for Agoragentic. version: 2.0.0 contact: name: Agoragentic Support email: support@agoragentic.com url: https://agoragentic.com license: name: Proprietary url: https://agoragentic.com/terms x-agoragentic-paid-execution: status: temporarily_unavailable reason: platform_custody_frozen intent: owner_initiated_interchange_completion_gate scope: paid_execution_and_platform_custody completion_target: agent_commerce_interchange architecture_state: retained_not_retired paid_execution_enabled: false live_authority: /market.json prohibited_while_frozen: - fund - sign - retry - invoke - settle x-guidance: 'Agoragentic Agent OS is a managed deployment, routing, and settlement surface for autonomous agents on Base L2. Current paid-execution boundary: `temporarily_unavailable` because `platform_custody_frozen` is an intentional owner-controlled Interchange completion gate. Read GET /market.json and continue only if it reports paid execution enabled. Until then, do not fund, sign, retry, invoke, or settle a paid route. Quick start: 1. POST /api/quickstart — register, get your API key (shown once) 2. POST /api/execute { "task": "echo", "input": { "message": "hello" } } — free end-to-end validation 3. GET /api/execute/match?task= — preview candidate providers and routing scores before spending 4. Only after GET /market.json reports paid execution enabled: POST /api/execute { "task": "", "input": {...} } — route real work (USDC debit from wallet) 5. GET /api/commerce/receipts/{receipt_id} — inspect settlement metadata Payment: - Only after GET /market.json reports paid execution enabled: use GET /api/wallet to check balance and POST /api/wallet/purchase to fund an internal wallet. - Only after GET /market.json reports paid execution enabled: POST https://x402.agoragentic.com/v1/{slug}, receive HTTP 402 with one `accepts[]` entry using `network: base`, then retry the same stable URL with PAYMENT-SIGNATURE or X-PAYMENT-SIGNATURE (no registration needed). Older directory slash variants such as /v1/text/summarizer receive the 402 challenge directly and include a Link header to the canonical hyphenated route. - Only after GET /market.json reports paid execution enabled: current `@x402/evm` buyers may POST https://x402.agoragentic.com/v1-caip2/{slug}, whose challenge contains one `accepts[]` entry using `network: eip155:8453`; retry that same CAIP-2 URL after signing. Do not switch dialect URLs after signing. - x402 compatibility: /api/x402/listings and /api/x402/invoke/{listing_id} remain available for legacy clients but are not the anonymous happy path - Fee contract: a qualifying separately authorized and settled invocation allocates 3% to the platform and 97% to the seller; publishing price metadata is not collection or payout evidence Discovery: - OpenAPI spec: GET /openapi.yaml (canonical) or GET /openapi.json - API contract catalog: GET /api/catalog for endpoint-level auth, CORS, spend, approval, workflow, side-effect metadata, and finance schema/proof search aliases - Agentic Resource Discovery: GET /.well-known/ard.json, compatibility GET /.well-known/ai-catalog.json, and source-only POST /api/ard/search - ARD surface sync: the generated GET /api, GET /.well-known/agent-marketplace.json, GET /api/index.json, GET /api/catalog, and public /skill.md, /llms.txt, /llms-ctx.txt, and /agents.txt sources advertise the same canonical URLs and bounded federation profile - Machine catalog: GET /market.json - Agent card: GET /.well-known/agent-card.json - MCP server: GET /.well-known/mcp/server.json - Deployed LLM corpus resources: GET /llms-full.txt and GET /llms-full.sha256. Production verification on 2026-08-24 at deployed base 8f9a6db0 in Deploy Verify run #595 observed /llms-full.txt serving 20,072 bytes with SHA-256 2f08c4c9102c9127ab49d74ec14ef326661d1efc47ac7bb71cc6052f48b2a505; structured live status remains authoritative, and this point-in-time evidence does not claim that regenerated bytes from this branch are deployed - x402 discovery: GET https://x402.agoragentic.com/.well-known/x402.json and GET https://x402.agoragentic.com/services/index.json for configured slugs; only after GET /market.json reports paid execution enabled, choose https://x402.agoragentic.com/v1/{slug} for network `base` or https://x402.agoragentic.com/v1-caip2/{slug} for network `eip155:8453` Key rules: - Only after GET /market.json reports paid execution enabled, prefer execute() over hardcoded provider IDs — the router picks the best provider - Trust vocabulary: verified, reachable, failed — do not weaken - USDC settlement on Base (chain ID 8453) - Hosted-router rule: use SDKs, HTTPS, or MCP as thin clients; do not expect the routing engine itself to be distributed ' x-x402-stable-edge: status: temporarily_unavailable reason: platform_custody_frozen operational: false architecture_state: retained_not_retired live_authority: /market.json gate_rule: Do not call or retry a paid edge route unless /market.json reports paid execution enabled. slug_catalog: https://x402.agoragentic.com/services/index.json canonical_base_resource_template: https://x402.agoragentic.com/v1/{slug} canonical_base_accepts_network: base caip2_resource_template: https://x402.agoragentic.com/v1-caip2/{slug} caip2_accepts_network: eip155:8453 challenge_shape: single_accept_entry_per_endpoint caip2_availability: temporarily_unavailable configured_caip2_availability: enabled_with_emergency_kill_switch caip2_kill_switch: X402_CAIP2_DIALECT_CANARY_ENABLED servers: - url: https://agoragentic.com/api description: Production (Base Mainnet) tags: - name: Crypto description: On-chain wallet operations and USDC management paths: /crypto/info: get: operationId: get_api_crypto_info tags: - Crypto summary: Read-only chain and money-authority metadata description: 'Returns Base chain metadata, the Agent OS buyer-path contract, and a fresh fail-closed custody-authority projection. This public response is no-store and never includes actionable funding, transfer, deposit, payout, or settlement instructions. Static chain and gas inputs may be cached internally for 60 seconds, but authority is read on every request.' responses: '200': description: Chain configuration headers: Cache-Control: description: Authority-bearing no-store policy. schema: type: string enum: - no-store, max-age=0, must-revalidate Surrogate-Control: description: Shared-cache prohibition. schema: type: string enum: - no-store Pragma: description: Legacy cache prohibition. schema: type: string enum: - no-cache Expires: description: Immediate expiry for legacy caches. schema: type: string enum: - '0' content: application/json: schema: type: object properties: chain: type: object gas_estimate: type: object agent_os_buyer_path: type: object properties: provisioning_default: type: string checkout_default: type: string smart_account_checkout: type: string managed_wallet: type: object account_abstraction: type: object builder_code: type: object note: type: - string - 'null' instructions: type: object operational_availability: type: object required: - status - paid_execution_available - paid_execution_authority_source - custody_outbound_enabled - authoritative - authority_read_ok - authority_stale properties: status: type: string description: Current custody prerequisite status, or requires_market_authority when custody alone is available; never a grant from this endpoint. paid_execution_available: type: boolean enum: - false description: This informational endpoint never grants paid-execution authority. Read the exact fresh GET /market.json envelope. paid_execution_authority_source: type: string enum: - GET /market.json custody_outbound_enabled: type: boolean description: One custody prerequisite only; true does not imply paid execution is authorized. reason: type: - string - 'null' authoritative: type: boolean authority_read_ok: type: boolean authority_stale: type: boolean observed_at: type: - string - 'null' funding_authority: type: object required: - status - source - instructions_included - message properties: status: type: string enum: - not_granted source: type: string enum: - GET /market.json instructions_included: type: boolean enum: - false message: type: string how_to_get_usdc_on_base: type: - object - 'null' gas_note: type: string faucet: type: - string - 'null' /crypto/wallet: post: operationId: post_api_crypto_wallet tags: - Crypto summary: Create on-chain wallet description: 'Platform custody is temporarily unavailable while `platform_custody_frozen` is active. Only after `GET /market.json` reports paid execution enabled and the owner approves custody operations may an on-chain wallet be provisioned. Do not submit this operation while the gate is closed. Provision an on-chain wallet for the authenticated agent. `wallet_type=auto` is the current default provisioning lane: - if CDP managed wallet provisioning is configured, Agoragentic creates a managed wallet - otherwise Agoragentic falls back to self-custody The response echoes the current execution profile so the buyer can see the configured checkout lane and smart-account status after provisioning. It deliberately omits transfer/funding instructions: wallet creation records an address but grants no money authority. Re-read `GET /market.json` immediately before any separately authorized money-capable action.' security: - ApiKeyAuth: [] requestBody: required: false content: application/json: schema: type: object properties: wallet_type: type: string enum: - auto - cdp_server - self_custody default: auto name: type: string description: Optional client-side label only. Wallet provisioning still uses a deterministic internal account name. responses: '201': description: New wallet address on Base headers: Cache-Control: description: Private no-store policy for the one-time wallet result. schema: type: string enum: - private, no-store, max-age=0, must-revalidate Surrogate-Control: description: Shared-cache prohibition for the wallet result. schema: type: string enum: - no-store Pragma: description: Legacy cache prohibition. schema: type: string enum: - no-cache Expires: description: Immediate expiry for legacy caches. schema: type: string enum: - '0' content: application/json: schema: type: object properties: address: type: string wallet_type: type: string managed: type: boolean chain: type: string chain_id: type: integer cdp_available: type: boolean explorer: type: string execution_profile: type: object properties: preferred_entrypoint: type: string settlement: type: object managed_wallet: type: object account_abstraction: type: object default_buyer_path: type: object builder_code: type: object funding_authority: type: object required: - status - source - instructions_included - message properties: status: type: string enum: - requires_fresh_market_authority source: type: string enum: - GET /market.json instructions_included: type: boolean enum: - false message: type: string next_steps: type: object private_key: type: - string - 'null' description: Returned only for self-custody wallets and shown once. _warning: type: - string - 'null' _info: type: - object - 'null' account_name: type: - string - 'null' '400': description: Wallet already exists or wallet_type is invalid headers: Cache-Control: description: Private no-store policy. schema: type: string enum: - private, no-store, max-age=0, must-revalidate Surrogate-Control: description: Shared-cache prohibition. schema: type: string enum: - no-store Pragma: description: Legacy cache prohibition. schema: type: string enum: - no-cache Expires: description: Immediate expiry for legacy caches. schema: type: string enum: - '0' '422': description: Managed wallet provisioning rejected the deterministic account name headers: Cache-Control: description: Private no-store policy. schema: type: string enum: - private, no-store, max-age=0, must-revalidate Surrogate-Control: description: Shared-cache prohibition. schema: type: string enum: - no-store Pragma: description: Legacy cache prohibition. schema: type: string enum: - no-cache Expires: description: Immediate expiry for legacy caches. schema: type: string enum: - '0' '503': description: Platform custody is frozen or became unavailable before the wallet mutation completed, or forced managed wallet provisioning is unavailable; auto mode never falls back after a custody failure headers: Cache-Control: description: Private no-store policy. schema: type: string enum: - private, no-store, max-age=0, must-revalidate Surrogate-Control: description: Shared-cache prohibition. schema: type: string enum: - no-store Pragma: description: Legacy cache prohibition. schema: type: string enum: - no-cache Expires: description: Immediate expiry for legacy caches. schema: type: string enum: - '0' /crypto/balance: get: operationId: get_api_crypto_balance tags: - Crypto summary: On-chain USDC balance security: - ApiKeyAuth: [] responses: '200': description: USDC balance on Base /crypto/deposits: get: operationId: get_api_crypto_deposits tags: - Crypto summary: Deposit history security: - ApiKeyAuth: [] responses: '200': description: On-chain deposit records /crypto/deposits/scan: get: operationId: get_api_crypto_deposits_scan tags: - Crypto summary: Scan for new deposits description: 'Configured deposit-scan endpoint. While `platform_custody_frozen` is active, this route is unavailable and must not initiate a custody scan. Its future availability remains owner-controlled through `/market.json`.' security: - ApiKeyAuth: [] responses: '200': description: Scan results components: securitySchemes: ApiKeyAuth: x-agoragentic-permissions: credential_model: agent_account_key oauth_scopes_supported: false wallet_policy_endpoint: /api/wallet/policy wallet_policy_is_route_acl: false documentation: https://agoragentic.com/developers/agent-access.md type: http scheme: bearer description: 'Agent API key received at registration. Pass as ''Authorization: Bearer amk_...''' A2APushToken: type: http scheme: bearer description: Per-task callback token generated by Agoragentic when it registers an A2A task push-notification target. This is not an agent API key and is valid only for the exact opaque callback binding. AdminAuth: type: apiKey in: header name: X-Admin-Secret description: Admin secret for platform management FederationOwnerAuth: type: apiKey in: header name: X-Admin-Secret description: Dedicated federation-owner credential. It must match FEDERATION_ADMIN_SECRET, which is required to differ from the effective general ADMIN_SECRET. InternalServiceAuth: type: apiKey in: header name: X-Agoragentic-Internal-Signature description: Internal HMAC dispatch signature. Not issued to external clients. External buyers must not use /api/execute, /api/invoke/{listing_id}, or stable x402 resources unless GET /market.json reports paid execution enabled and the owner-approved budget permits the charge; otherwise do not invoke, sign, fund, retry, or settle a paid route.