{"info":{"contact":{"email":"hello@botx402.io","name":"botx402","url":"https://botx402.io/agents"},"description":"botx402 sells paid lookups and one-shot reports to AI agents and the people they work for, with no account or API key. Each catalog resource (a path with an x-payment-info price) is paid per call over x402 v2 (USDC on Base) or, where listed, MPP (tempo charge, USDC.e on Tempo). GET /api/v1/agent/bots lists the bots on offer (the list can be empty); each bot is paid per run over x402 v2, or by card through the MCP server at /mcp.","license":{"name":"Proprietary"},"title":"botx402","version":"0.1.0","x-category":"Data","x-guidance":"Catalog resources (each path below with an x-payment-info price) are paid per call: the first request returns 402 with an x402 v2 PAYMENT-REQUIRED header (USDC on Base) and, where listed, an MPP WWW-Authenticate: Payment challenge (tempo charge, USDC.e on Tempo); pay either and retry with PAYMENT-SIGNATURE or Authorization: Payment. Bots: POST https://api.botx402.io/api/v1/agent/<slug>/run with {\"inputs\": {...}} (each bot's schema is in its requestBody). The first call returns 402 with a PAYMENT-REQUIRED header (x402 v2, USDC on Base); sign an EIP-3009 authorization for accepts[0] and retry with PAYMENT-SIGNATURE. The 200 response has receipt_id and access_token; poll /api/v1/agent/runs/<receipt_id> with X-Access-Token until completed. Assistants can use the MCP server at https://api.botx402.io/mcp instead (card checkout a person pays).","x-logo":{"altText":"botx402","url":"https://botx402.io/icon-512.png"}},"openapi":"3.1.0","paths":{"/.well-known/x402":{"get":{"operationId":"x402Manifest","responses":{"200":{"content":{"application/json":{}},"description":"Per-bot x402 v2 PaymentRequired: resource, accepts (CAIP-2 network, amount, payTo, EIP-712 domain) and the Bazaar extension"}},"security":[],"summary":"x402 v2 manifest (full)"}},"/api/v1/agent/bots":{"get":{"operationId":"listBots","responses":{"200":{"content":{"application/json":{}},"description":"Array of bot summaries (slug, price, input schema, run URL)"}},"security":[],"summary":"List active bots with input schemas"}},"/base-address-balance":{"post":{"description":"Returns the native ETH balance and ERC-20 token balances of one Base wallet address, read live from Base mainnet at the latest block: USDC, WETH and the rest of the top 200 Base tokens by market cap, plus up to 50 token contract addresses named in the request. Each row carries the token symbol, name, decimals, raw amount and human-readable amount. Suited to checking a wallet's current holdings before a payment, transfer or swap; returns no labels, identities, USD values or portfolio valuation.","operationId":"base_address_balance","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"One Base wallet address, and optionally ERC-20 token contract addresses to read beyond the fixed list. The request shape of Nansen's profiler/address/current-balance.","properties":{"address":{"description":"The Base wallet address (0x and 40 hex characters) whose token balances are read.","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"},"chain":{"description":"The chain to read. Only \"base\" is served; any other value returns 400.","type":"string"},"filters":{"description":"Accepted only when empty.","maxProperties":0,"type":"object"},"hide_spam_token":{"description":"Accepted for compatibility. Holdings come from a fixed list of tokens, so there is no spam to hide.","type":"boolean"},"order_by":{"description":"Accepted only when empty. Rows come native token first, then by the token list's rank.","maxItems":0,"type":"array"},"pagination":{"additionalProperties":false,"properties":{"page":{"minimum":1,"type":"integer"},"per_page":{"maximum":250,"minimum":1,"type":"integer"}},"type":"object"},"token_addresses":{"description":"ERC-20 token contract addresses to read beyond the fixed list of the top 200 Base tokens.","items":{"pattern":"^0x[0-9a-fA-F]{40}$","type":"string"},"maxItems":50,"type":"array","uniqueItems":true}},"required":["chain","address"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"block_number":{"description":"The Base block every balance was read at.","type":"integer"},"data":{"description":"Non-zero balances: native ETH first (token_address is the zero address), then tokens by the list's rank, then caller-supplied tokens.","items":{"properties":{"address":{"type":"string"},"chain":{"type":"string"},"token_address":{"type":"string"},"token_amount":{"type":"number"},"token_amount_raw":{"description":"The exact balance in the token's smallest unit.","type":"string"},"token_decimals":{"type":"integer"},"token_name":{"type":"string"},"token_symbol":{"type":"string"}},"required":["chain","address","token_address","token_symbol","token_amount","token_amount_raw"],"type":"object"},"type":"array"},"pagination":{"properties":{"is_last_page":{"type":"boolean"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"required":["page","per_page","is_last_page"],"type":"object"}},"required":["block_number","pagination","data"],"type":"object"}}},"description":"The answer."},"400":{"description":"The input doesn't match the schema. Nothing is charged."},"402":{"description":"Payment required: x402 v2 in PAYMENT-REQUIRED and, where offered, MPP in WWW-Authenticate: Payment.","headers":{"PAYMENT-REQUIRED":{"description":"base64(JSON x402 v2 PaymentRequired)","schema":{"type":"string"}},"WWW-Authenticate":{"description":"An MPP challenge: Payment id, realm, method, intent, request, expires","schema":{"type":"string"}}}}},"summary":"Base wallet balances","x-payment-info":{"offers":[{"amount":"10000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Returns the native ETH balance and ERC-20 token balances of one Base wallet address, read live from Base mainnet at the latest block: USDC, WETH and the rest of the top 200 Base tokens by market cap, plus up to 50 token contract addresses named in the request. Each row carries the token symbol, name, decimals, raw amount and human-readable amount. Suited to checking a wallet's current holdings before a payment, transfer or swap; returns no labels, identities, USD values or portfolio valuation.","intent":"charge","method":"tempo"}],"price":{"amount":"0.010000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}},{"mpp":{"currency":"0x20c000000000000000000000b9537d11c60e8b50","intent":"charge","method":"tempo"}}]}}}},"servers":[{"url":"https://botx402.io"}],"tags":[{"description":"One-shot reports, paid per run.","name":"reports"}]}