{"openapi":"3.1.0","info":{"title":"three.ws API","version":"1.0.0","description":"API for 3D avatar management, AI agent identity, and MCP tool access.","contact":{"email":"support@three.ws"},"x-guidance":"Use POST /api/mcp to interact with the MCP server. Send a JSON-RPC 2.0 request body. Authenticate with a Bearer access token obtained via OAuth 2.1 at https://three.ws/oauth/authorize, or use a Bearer API key from the dashboard. Available MCP tools: list_my_avatars, get_avatar, search_public_avatars, render_avatar, delete_avatar, validate_model, inspect_model, optimize_model. Paid REST endpoints under /api/x402/* settle in USDC over x402 (HTTP 402); pay programmatically with @x402/fetch — no API key required. GET /api/v1/x/{provider}/{endpoint} (tag \"Crypto API (aggregator)\" below) bundles CoinGecko, DefiLlama, Jupiter, DexScreener, Solana RPC and more behind one bill — free tier, BYOK, a three.ws plan, or x402, in that order. Storefront: https://three.ws/crypto-api. Discovery: GET /api/v1/x."},"servers":[{"url":"https://three.ws"}],"tags":[{"name":"Crypto API (aggregator)","description":"Third-party crypto/DeFi/on-chain APIs re-offered as one bill under /api/v1/x — rendered live from the provider registry (api/v1/_providers.js). See /crypto-api and docs/api-reference.md § Unified API."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Bearer token in the Authorization header. Obtain one via OAuth 2.1 at https://three.ws/oauth/authorize, use an API key from the dashboard, or exchange a wallet SIWX (CAIP-122) session for an access token."},"apiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Dashboard API key sent as `Authorization: Bearer <key>`. Equivalent to the OAuth bearer token; intended for programmatic agents."}}},"paths":{"/api/v1/x/coingecko/price":{"get":{"operationId":"v1_x_coingecko_price","summary":"CoinGecko: Spot price for one or more coins in any fiat/crypto.","description":"Spot price for one or more coins in any fiat/crypto. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string"},"description":"comma-separated CoinGecko coin ids, e.g. \"solana,bitcoin\" (required)"},{"name":"vs_currencies","in":"query","required":false,"schema":{"type":"string"},"description":"comma-separated quote currencies (default \"usd\")"},{"name":"include_24hr_change","in":"query","required":false,"schema":{"type":"string"},"description":"true to include 24h change"},{"name":"include_market_cap","in":"query","required":false,"schema":{"type":"string"},"description":"true to include market cap"}]}},"/api/v1/x/coingecko/markets":{"get":{"operationId":"v1_x_coingecko_markets","summary":"CoinGecko: Ranked market data (price, market cap, volume, change) per coin.","description":"Ranked market data (price, market cap, volume, change) per coin. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.002 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"vs_currency","in":"query","required":false,"schema":{"type":"string"},"description":"quote currency (default \"usd\")"},{"name":"ids","in":"query","required":false,"schema":{"type":"string"},"description":"comma-separated coin ids to filter (optional)"},{"name":"order","in":"query","required":false,"schema":{"type":"string"},"description":"sort order (default \"market_cap_desc\")"},{"name":"per_page","in":"query","required":false,"schema":{"type":"string"},"description":"number 1–100 (default 20)"},{"name":"page","in":"query","required":false,"schema":{"type":"string"},"description":"page number (default 1)"}]}},"/api/v1/x/coingecko/coin":{"get":{"operationId":"v1_x_coingecko_coin","summary":"CoinGecko: Full market snapshot for one coin — price, ATH/ATL, supply, multi-window change, truncated description.","description":"Full market snapshot for one coin — price, ATH/ATL, supply, multi-window change, truncated description. Billing lanes, in order: free tier (20/min, 1500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 1500/day per IP, no credentials required."},"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"},"description":"CoinGecko coin id, e.g. \"solana\" (required)"}]}},"/api/v1/x/coingecko/trending":{"get":{"operationId":"v1_x_coingecko_trending","summary":"CoinGecko: Top trending searched coins and hot categories right now.","description":"Top trending searched coins and hot categories right now. Billing lanes, in order: free tier (20/min, 1500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 1500/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/coingecko/token-price":{"get":{"operationId":"v1_x_coingecko_token_price","summary":"CoinGecko: Spot price for one or more token contract addresses on a given chain (default Solana).","description":"Spot price for one or more token contract addresses on a given chain (default Solana). Billing lanes, in order: free tier (20/min, 1500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 1500/day per IP, no credentials required."},"parameters":[{"name":"platform","in":"query","required":false,"schema":{"type":"string"},"description":"CoinGecko asset platform id, e.g. \"solana\" or \"ethereum\" (default \"solana\")"},{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"comma-separated contract addresses, e.g. \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"},{"name":"vs_currencies","in":"query","required":false,"schema":{"type":"string"},"description":"comma-separated quote currencies (default \"usd\")"}]}},"/api/v1/x/coingecko/global":{"get":{"operationId":"v1_x_coingecko_global","summary":"CoinGecko: Global crypto market snapshot — total market cap/volume, BTC/ETH dominance, active coin count.","description":"Global crypto market snapshot — total market cap/volume, BTC/ETH dominance, active coin count. Billing lanes, in order: free tier (20/min, 1500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 1500/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/coingecko/ohlc":{"get":{"operationId":"v1_x_coingecko_ohlc","summary":"CoinGecko: OHLC candles for one coin over 1/7/14/30 days.","description":"OHLC candles for one coin over 1/7/14/30 days. Billing lanes, in order: free tier (20/min, 1500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 1500/day per IP, no credentials required."},"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"},"description":"CoinGecko coin id, e.g. \"solana\" (required)"},{"name":"vs_currency","in":"query","required":false,"schema":{"type":"string"},"description":"quote currency (default \"usd\")"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"description":"candle window: 1, 7, 14, or 30 (default 1)"}]}},"/api/v1/x/defillama/protocols":{"get":{"operationId":"v1_x_defillama_protocols","summary":"DefiLlama: All DeFi protocols with current TVL, ranked.","description":"All DeFi protocols with current TVL, ranked. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/defillama/tvl":{"get":{"operationId":"v1_x_defillama_tvl","summary":"DefiLlama: Current total value locked (USD) for a single protocol.","description":"Current total value locked (USD) for a single protocol. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"protocol","in":"query","required":true,"schema":{"type":"string"},"description":"DefiLlama protocol slug, e.g. \"uniswap\" (required)"}]}},"/api/v1/x/defillama/chains":{"get":{"operationId":"v1_x_defillama_chains","summary":"DefiLlama: Every chain DefiLlama tracks, with current TVL, ranked.","description":"Every chain DefiLlama tracks, with current TVL, ranked. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/defillama/protocol":{"get":{"operationId":"v1_x_defillama_protocol","summary":"DefiLlama: One protocol: category, per-chain current TVL, and the last 30 points of its total TVL series.","description":"One protocol: category, per-chain current TVL, and the last 30 points of its total TVL series. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string"},"description":"DefiLlama protocol slug, e.g. \"uniswap\" (required)"}]}},"/api/v1/x/defillama/chain-tvl":{"get":{"operationId":"v1_x_defillama_chain_tvl","summary":"DefiLlama: Last 90 days of historical total TVL for one chain.","description":"Last 90 days of historical total TVL for one chain. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string"},"description":"DefiLlama chain name, e.g. \"Solana\" (required)"}]}},"/api/v1/x/llama-prices/current":{"get":{"operationId":"v1_x_llama_prices_current","summary":"DefiLlama Prices: Current price for one or more chain:address tokens (DefiLlama coin-price oracle — covers tokens CoinGecko/Jupiter don't index).","description":"Current price for one or more chain:address tokens (DefiLlama coin-price oracle — covers tokens CoinGecko/Jupiter don't index). Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"coins","in":"query","required":true,"schema":{"type":"string"},"description":"comma-separated \"chain:address\" pairs, e.g. \"solana:FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"}]}},"/api/v1/x/llama-stablecoins/list":{"get":{"operationId":"v1_x_llama_stablecoins_list","summary":"DefiLlama Stablecoins: Every tracked stablecoin — peg type, price, circulating supply — ranked by circulating USD.","description":"Every tracked stablecoin — peg type, price, circulating supply — ranked by circulating USD. Billing lanes, in order: free tier (30/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 2000/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/jupiter/price":{"get":{"operationId":"v1_x_jupiter_price","summary":"Jupiter: Live USD price for one or more Solana tokens by mint (Jupiter keyless tier).","description":"Live USD price for one or more Solana tokens by mint (Jupiter keyless tier). Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string"},"description":"comma-separated Solana mint addresses, e.g. \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump,So11111111111111111111111111111111111111112\" (required)"}]}},"/api/v1/x/jupiter/quote":{"get":{"operationId":"v1_x_jupiter_quote","summary":"Jupiter: Executable swap quote (true routed price) between two Solana mints (Jupiter keyless tier).","description":"Executable swap quote (true routed price) between two Solana mints (Jupiter keyless tier). Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"inputMint","in":"query","required":true,"schema":{"type":"string"},"description":"input token mint address, e.g. \"So11111111111111111111111111111111111111112\" (required)"},{"name":"outputMint","in":"query","required":true,"schema":{"type":"string"},"description":"output token mint address, e.g. USDC \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\" (required)"},{"name":"amount","in":"query","required":true,"schema":{"type":"string"},"description":"input amount in atomic units (integer string), e.g. \"1000000000\" for 1 SOL (required)"},{"name":"slippageBps","in":"query","required":false,"schema":{"type":"string"},"description":"allowed slippage in basis points (default \"50\" = 0.5%)"}]}},"/api/v1/x/jupiter/token-search":{"get":{"operationId":"v1_x_jupiter_token_search","summary":"Jupiter: Search Solana tokens by name/symbol/mint → address, metadata, tags, 24h volume (Jupiter keyless tier).","description":"Search Solana tokens by name/symbol/mint → address, metadata, tags, 24h volume (Jupiter keyless tier). Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"search text — token name, symbol, or mint address, e.g. \"three.ws\" or a mint (required)"}]}},"/api/v1/x/openai/chat":{"post":{"operationId":"v1_x_openai_chat","summary":"OpenAI-compatible LLM: Chat completions against any OpenAI-compatible model (BYOK supported).","description":"Chat completions against any OpenAI-compatible model (BYOK supported). Billing lanes, in order: x402 pay-per-call ($0.005 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"model: model id (required); messages: array of {role, content} (required); …: any other OpenAI chat-completions parameter is forwarded"}}}}}},"/api/v1/x/dexscreener/token":{"get":{"operationId":"v1_x_dexscreener_token","summary":"DexScreener: Live DEX pairs (price, liquidity, volume, txns) for one or more token addresses, deepest liquidity first.","description":"Live DEX pairs (price, liquidity, volume, txns) for one or more token addresses, deepest liquidity first. Billing lanes, in order: free tier (30/min, 3000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 3000/day per IP, no credentials required."},"parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"},"description":"comma-separated token contract addresses, up to 30, e.g. \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"}]}},"/api/v1/x/dexscreener/search":{"get":{"operationId":"v1_x_dexscreener_search","summary":"DexScreener: Search DEX pairs by token name, symbol, or address, deepest liquidity first.","description":"Search DEX pairs by token name, symbol, or address, deepest liquidity first. Billing lanes, in order: free tier (30/min, 3000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 3000/day per IP, no credentials required."},"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"search text — token name, symbol, or address, e.g. \"three.ws\" or \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"}]}},"/api/v1/x/dexscreener/pair":{"get":{"operationId":"v1_x_dexscreener_pair","summary":"DexScreener: Live pair data for one DexScreener chainId + on-chain pair address.","description":"Live pair data for one DexScreener chainId + on-chain pair address. Billing lanes, in order: free tier (30/min, 3000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 30/min, 3000/day per IP, no credentials required."},"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string"},"description":"DexScreener chainId, e.g. \"solana\" (required)"},{"name":"pair","in":"query","required":true,"schema":{"type":"string"},"description":"on-chain pair/pool address, e.g. the $THREE/SOL pumpswap pair \"5ByL7MZoLABYnwMPZKPKjf4MGkZ7FeBzrAnos19Pre2z\" (required)"}]}},"/api/v1/x/dexscreener/profiles":{"get":{"operationId":"v1_x_dexscreener_profiles","summary":"DexScreener: Latest DexScreener token profiles — freshly listed projects with descriptions and social links.","description":"Latest DexScreener token profiles — freshly listed projects with descriptions and social links. Billing lanes, in order: free tier (10/min, 500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 10/min, 500/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/dexscreener/boosts":{"get":{"operationId":"v1_x_dexscreener_boosts","summary":"DexScreener: Latest DexScreener boosted tokens — paid promotion signal, not an endorsement or ranking by quality.","description":"Latest DexScreener boosted tokens — paid promotion signal, not an endorsement or ranking by quality. Billing lanes, in order: free tier (10/min, 500/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 10/min, 500/day per IP, no credentials required."},"parameters":[]}},"/api/v1/x/solana/balance":{"get":{"operationId":"v1_x_solana_balance","summary":"Solana RPC: Native SOL balance of any wallet address.","description":"Native SOL balance of any wallet address. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string"},"description":"Solana base58 wallet address, e.g. \"11111111111111111111111111111111\" (required)"}]}},"/api/v1/x/solana/token-holdings":{"get":{"operationId":"v1_x_solana_token_holdings","summary":"Solana RPC: SPL token holdings of a wallet (mint, amount, decimals), zero balances filtered, largest first.","description":"SPL token holdings of a wallet (mint, amount, decimals), zero balances filtered, largest first. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"owner","in":"query","required":true,"schema":{"type":"string"},"description":"Solana base58 wallet address, e.g. \"11111111111111111111111111111111\" (required)"}]}},"/api/v1/x/solana/token-supply":{"get":{"operationId":"v1_x_solana_token_supply","summary":"Solana RPC: Total circulating supply of an SPL token mint.","description":"Total circulating supply of an SPL token mint. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string"},"description":"Solana token mint address, e.g. \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"}]}},"/api/v1/x/solana/largest-holders":{"get":{"operationId":"v1_x_solana_largest_holders","summary":"Solana RPC: Top 20 holder token-accounts of an SPL token mint by balance.","description":"Top 20 holder token-accounts of an SPL token mint by balance. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string"},"description":"Solana token mint address, e.g. \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"}]}},"/api/v1/x/solana/transaction":{"get":{"operationId":"v1_x_solana_transaction","summary":"Solana RPC: Confirmed transaction detail by signature — fee, error, signers, log lines, and SPL token balance deltas.","description":"Confirmed transaction detail by signature — fee, error, signers, log lines, and SPL token balance deltas. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"signature","in":"query","required":true,"schema":{"type":"string"},"description":"base58 transaction signature (required)"}]}},"/api/v1/x/solana/account":{"get":{"operationId":"v1_x_solana_account","summary":"Solana RPC: Account info for any address — owning program, lamports, executable flag, parsed data type.","description":"Account info for any address — owning program, lamports, executable flag, parsed data type. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string"},"description":"Solana base58 address, e.g. \"FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump\" (required)"}]}},"/api/v1/x/solana/priority-fees":{"get":{"operationId":"v1_x_solana_priority_fees","summary":"Solana RPC: Recent prioritization fee landscape (p50/p75/p95/max micro-lamports) over the last ~150 slots.","description":"Recent prioritization fee landscape (p50/p75/p95/max micro-lamports) over the last ~150 slots. Billing lanes, in order: free tier (20/min, 2000/day per IP, no credentials) → x402 pay-per-call ($0.001 USDC via HTTP 402, no credentials) — or send your own upstream key via BYOK, or authenticate with a three.ws API key / OAuth session / browser session for the plan lane.","tags":["Crypto API (aggregator)"],"security":[{},{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Normalized upstream response, wrapped as { data, _meta }"},"400":{"description":"Missing or invalid parameter"},"402":{"description":"Payment Required (x402) — no credentials and free quota (if any) exhausted"},"404":{"description":"Unknown provider/endpoint pair"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}],"note":"Free before payment: 20/min, 2000/day per IP, no credentials required."},"parameters":[]}},"/api/mcp":{"post":{"operationId":"mcp_call","summary":"MCP tool call","description":"JSON-RPC 2.0 request to the MCP server. Supports tools for 3D avatar management, model validation, inspection, and optimization.","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"method":{"type":"string","description":"MCP method name, e.g. \"tools/call\" or \"initialize\"."},"params":{"type":"object","description":"Method-specific parameters."}}}}}},"responses":{"200":{"description":"JSON-RPC 2.0 response"},"401":{"description":"Unauthorized — missing or invalid token"},"402":{"description":"Payment Required"},"429":{"description":"Rate limited"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/avatars":{"get":{"operationId":"list_avatars","summary":"List my avatars","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Array of avatar objects"},"401":{"description":"Unauthorized"}}},"post":{"operationId":"create_avatar","summary":"Register an uploaded avatar","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["storage_key","name","content_type"],"properties":{"storage_key":{"type":"string"},"name":{"type":"string","maxLength":100},"description":{"type":"string","maxLength":500},"content_type":{"type":"string","enum":["model/gltf-binary","model/gltf+json"]},"visibility":{"type":"string","enum":["private","unlisted","public"]},"tags":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"201":{"description":"Avatar created"},"401":{"description":"Unauthorized"}}}},"/api/avatars/public":{"get":{"operationId":"browse_public_avatars","summary":"Browse public avatars","security":[],"parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of public avatars"}}}},"/api/agents":{"get":{"operationId":"list_agents","summary":"List my agents","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Array of agent identity objects"},"401":{"description":"Unauthorized"}}}},"/api/healthz":{"get":{"operationId":"healthz","summary":"Service liveness","description":"Lightweight liveness probe with uptime + service version. No auth.","security":[],"responses":{"200":{"description":"Health summary JSON"}}}},"/api/pump/curve":{"get":{"operationId":"pump_curve","summary":"Pump.fun bonding-curve snapshot","description":"Returns raw bonding-curve state, current spot price + market cap, and graduation progress for a Pump.fun token. Public, edge-cached for 10s.","security":[],"parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string"},"description":"Base58 SPL mint address"},{"name":"network","in":"query","schema":{"type":"string","enum":["mainnet","devnet"]}}],"responses":{"200":{"description":"Bonding curve snapshot"},"400":{"description":"Bad mint"},"404":{"description":"No bonding curve for that mint"}}}},"/api/pump/quote-sdk":{"get":{"operationId":"pump_quote_sdk","summary":"Pump.fun buy/sell quote (SDK-precise)","description":"Deterministic buy or sell quote computed via @nirholas/pump-sdk on the live bonding curve. Returns output amount, price impact %, and a market context block.","security":[],"parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string"}},{"name":"side","in":"query","required":true,"schema":{"type":"string","enum":["buy","sell"]}},{"name":"amount","in":"query","required":true,"schema":{"type":"number","minimum":0},"description":"For buy: SOL. For sell: tokens (UI units, 6 decimals)."},{"name":"network","in":"query","schema":{"type":"string","enum":["mainnet","devnet"]}}],"responses":{"200":{"description":"Quote payload with input/output and priceImpactPct"},"400":{"description":"Validation error"},"404":{"description":"No bonding curve for that mint"}}}},"/api/x402/agent-reputation":{"get":{"operationId":"x402_agent_reputation","summary":"Paid: Agent Reputation snapshot","description":"Pay $0.01 USDC to retrieve a three.ws agent's reputation snapshot synthesized from pump_agent_payments, distribute/buyback success history, and signed Solana memo attestations.","parameters":[{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Reputation snapshot JSON"},"400":{"description":"Missing or invalid agent_id"},"402":{"description":"Payment Required (x402)"},"404":{"description":"agent_id not found"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/api/x402/onchain-identity-verify":{"get":{"operationId":"x402_onchain_identity_verify","summary":"Paid: Verify counterparty agent ownership claim","description":"Pay $0.005 USDC to verify whether a three.ws agent_id actually owns/deployed a given contract or mint on a given CAIP-2 chain, using the canonical meta.onchain unified index.","parameters":[{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"chain","in":"query","required":true,"schema":{"type":"string"}},{"name":"contract_or_mint","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verification result JSON"},"400":{"description":"Missing or invalid parameters"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/api/x402/pump-agent-audit":{"get":{"operationId":"x402_pump_agent_audit","summary":"Paid: Operational audit of a pump.fun agent-payments token","description":"Pay $0.02 USDC to retrieve a full operational audit of a pump.fun mint: USDC paid in, distinct payers, distribute/buyback success history, latest error reasons, and derived risk flags.","parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string","minLength":32,"maxLength":44}}],"responses":{"200":{"description":"Audit JSON"},"400":{"description":"Missing or invalid mint"},"402":{"description":"Payment Required (x402)"},"404":{"description":"Mint not indexed"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]}}},"/api/x402/skill-marketplace":{"get":{"operationId":"x402_skill_marketplace","summary":"Paid: Browse the three.ws skill marketplace","description":"Pay $0.001 USDC to list active skill listings with prices across all three.ws agents. Optional skill filter returns the cheapest provider for that capability.","parameters":[{"name":"skill","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Marketplace listings JSON"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/x402/symbol-availability":{"get":{"operationId":"x402_symbol_availability","summary":"Paid: Check pump.fun ticker collisions before launch","description":"Pay $0.001 USDC to check whether a candidate ticker collides with any three.ws-indexed pump.fun mint. Returns exact matches plus trigram-similar tickers and a recommendation.","parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":32}},{"name":"network","in":"query","schema":{"type":"string","enum":["mainnet","devnet"]}}],"responses":{"200":{"description":"Symbol availability JSON"},"400":{"description":"Missing or invalid ticker"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/x402/mint-to-mesh-batch":{"post":{"operationId":"x402_mint_to_mesh_batch","summary":"Paid: Batch 1–10 mints → themed binary glTF cubes","description":"Pay $0.05 USDC to resolve 1–10 Solana SPL mints to themed binary glTF cubes in a single call. Per-mint failures report ok:false instead of failing the whole batch.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["mints"],"properties":{"mints":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":32,"maxLength":44}}}}}}},"responses":{"200":{"description":"Batch mesh JSON"},"400":{"description":"Missing or invalid body"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/x402/model-check":{"get":{"operationId":"x402_model_check","summary":"Paid: glTF/GLB structural stats + optimization recommendations","description":"Pay $0.001 USDC to fetch a glTF/GLB model from a URL and return structural stats (vertex/triangle counts, materials, textures, animations, extensions) plus a prioritized list of optimization recommendations.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri"},"description":"Public HTTPS URL of a glTF/GLB model."}],"responses":{"200":{"description":"Inspection + recommendation JSON"},"400":{"description":"Missing or invalid url"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/x402/mint-to-mesh":{"get":{"operationId":"x402_mint_to_mesh","summary":"Paid: Single Solana mint → themed binary glTF cube","description":"Pay $0.001 USDC to resolve a Solana fungible-token mint to a binary glTF (GLB) cube themed for that token. Color is hashed from the mint; the Metaplex JSON image, when present, is embedded as a baseColor texture.","parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string","minLength":32,"maxLength":44},"description":"Base58 SPL mint address on Solana mainnet."}],"responses":{"200":{"description":"Themed GLB JSON envelope"},"400":{"description":"Missing or invalid mint"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/x402/forge":{"post":{"operationId":"x402_forge_generate","summary":"Paid: text→3D / image→3D generation (returns a job token)","description":"Pay per quality tier in USDC ($0.05 draft / $0.15 standard / $0.50 high) to generate a 3D model. Submit a prompt for text→3D, or up to four public https reference views of one object for image→3D. Runs the FLUX→TRELLIS pipeline. The response returns a job token; poll it for FREE at GET /api/forge?job=<id> to retrieve the finished GLB URL. The 402 challenge quotes the exact price for the requested tier.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":3,"maxLength":1000,"description":"Describe one subject for text→3D. Omit when supplying image_urls."},"image_urls":{"type":"array","items":{"type":"string","format":"uri"},"minItems":1,"maxItems":4,"description":"Up to four public https reference views of one object for image→3D."},"tier":{"type":"string","enum":["draft","standard","high"],"default":"standard"},"aspect_ratio":{"type":"string","enum":["1:1","4:3","3:4","16:9","9:16"],"default":"1:1"}}}}}},"responses":{"200":{"description":"Generation job accepted; poll poll_url for the GLB","content":{"application/json":{"schema":{"type":"object","required":["job_id","status","poll_url"],"properties":{"job_id":{"type":"string"},"status":{"type":"string"},"poll_url":{"type":"string","description":"Free, provider-aware status endpoint."},"mode":{"type":"string","enum":["text_to_3d","image_to_3d"]},"tier":{"type":"string"},"backend":{"type":"string"},"eta_seconds":{"type":"integer"},"price_usdc":{"type":"string"}}}}}},"400":{"description":"Missing or invalid input"},"402":{"description":"Payment Required (x402)"},"503":{"description":"Generation backend not configured"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.15"},"protocols":[{"x402":{}}]}}},"/api/x402/permit2-paid-demo":{"get":{"operationId":"x402_permit2_paid_demo","summary":"Paid: Gasless Permit2 + EIP-2612 settlement demo","description":"Pay $0.001 USDC via the Permit2-only path so a wallet holding USDC but zero ETH can complete the flow. CDP's x402ExactPermit2Proxy submits the EIP-2612 permit + Permit2 transfer atomically; the response surfaces the on-chain tx hash and a Basescan link.","responses":{"200":{"description":"Settlement summary with tx hash"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/x402/three-intel":{"get":{"operationId":"x402_three_intel","summary":"Paid: Live $THREE market intel from the Town Oracle","description":"Pay $0.01 USDC for live $THREE market intel: price, 24 h change, market cap, liquidity, 24 h volume, and a bullish / bearish / neutral signal with a two-sentence rationale. Powered by live DexScreener data — the same oracle behind the paid intel kiosk in the $THREE town on three.ws/play.","responses":{"200":{"description":"$THREE market intel JSON"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/api/x402/dance-tip":{"get":{"operationId":"x402_dance_tip","summary":"Paid: Tip a 3D dancer to perform a routine on the club stage","description":"Pay $0.001 USDC to tip a dancer to perform one routine on the three.ws 3D club stage. Pick a stage slot (1–4) and a style: free-floor (rumba, silly, thriller, capoeira, hiphop) or pole choreography (spin, climb, combo). Returns a performance ticket the /club page consumes to spawn the dancer and play the routine.","parameters":[{"name":"dancer","in":"query","required":true,"schema":{"type":"string","enum":["1","2","3","4"]},"description":"Stage slot — which of the four dancers performs."},{"name":"dance","in":"query","required":true,"schema":{"type":"string","enum":["rumba","silly","thriller","capoeira","hiphop","spin","climb","combo"]},"description":"Performance style. Free-floor styles (rumba, silly, thriller, capoeira, hiphop) play a single looped clip; pole-choreography styles (spin, climb, combo) chain a sequence of clips."}],"responses":{"200":{"description":"Performance ticket JSON"},"400":{"description":"Missing or invalid parameters"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/api/x402/asset-download":{"get":{"operationId":"x402_asset_download","summary":"Paid: Unlock a 3D asset (GLB / avatar / accessory)","description":"Pay in USDC once to unlock a 3D asset hosted on R2. Wallets that already paid can re-download for free by signing in with SIWX (CAIP-122). Each asset has its own price and creator payout address; the response carries a short-lived presigned R2 URL.","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Unique asset slug from the paid_assets catalog."}],"responses":{"200":{"description":"Presigned R2 download URL"},"400":{"description":"Missing or invalid slug"},"402":{"description":"Payment Required (x402)"},"404":{"description":"Asset not found"}},"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"100.00"},"protocols":[{"x402":{}}],"note":"Each asset declares its own USDC price; the live 402 challenge reflects the per-asset row."}}},"/api/x402/pump-launch":{"post":{"operationId":"x402_pump_launch","summary":"Paid: Deploy a new pump.fun token in one call","description":"Pay $5.00 USDC to deploy a brand-new pump.fun token. Supply name + symbol and either a pre-pinned metadataUri or an imageUrl (the server pins the image + descriptor to pump.fun IPFS). The server fronts the SOL deploy cost and signs the create-coin tx, so the buyer needs no SOL and no account. Creator rewards accrue to any Solana wallet you nominate; an optional vanity prefix/suffix grinds a custom mint address. Returns mint + tx signature + pump.fun URL.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","symbol"],"properties":{"name":{"type":"string","maxLength":32},"symbol":{"type":"string","maxLength":10},"metadataUri":{"type":"string","maxLength":2048,"description":"Pre-pinned metadata URI. Provide this or imageUrl."},"imageUrl":{"type":"string","maxLength":2048,"description":"Image URL to pin to pump.fun IPFS. Provide this or metadataUri."},"description":{"type":"string","maxLength":2000},"creator":{"type":"string","minLength":32,"maxLength":44,"description":"Solana wallet that receives creator rewards."},"vanityPrefix":{"type":"string","maxLength":5},"vanitySuffix":{"type":"string","maxLength":5}}}}}},"responses":{"200":{"description":"Deploy result: mint, tx signature, pump.fun URL"},"400":{"description":"Missing or invalid body"},"402":{"description":"Payment Required (x402)"},"503":{"description":"Launcher not configured"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"5.00"},"protocols":[{"x402":{}}]}}},"/api/x402/vanity":{"get":{"operationId":"x402_vanity","summary":"Paid: Grind a vanity Solana keypair","description":"Pay to generate a brand-new Solana keypair whose Base58 address starts with a chosen prefix and/or ends with a chosen suffix. Returns the public address and its secret key (Base58 + 64-byte array) so it imports into any Solana wallet. Ground fresh per request in a Rust/WASM ed25519 engine and never stored. Difficulty-tiered price ($0.01 for 1 char, $0.05 for 2, $0.25 for 3); combined pattern capped at 3 Base58 characters. Settlement runs only after a successful grind, so an exhausted budget costs nothing.","parameters":[{"name":"prefix","in":"query","schema":{"type":"string","maxLength":3},"description":"Base58 characters the address must start with (excludes 0, O, I, l). Combined with suffix, max 3. Provide prefix and/or suffix."},{"name":"suffix","in":"query","schema":{"type":"string","maxLength":3},"description":"Base58 characters the address must end with. Combined with prefix, max 3."},{"name":"ignoreCase","in":"query","schema":{"type":"string","enum":["0","1","true","false"]},"description":"When 1/true, match case-insensitively (faster, less specific)."}],"responses":{"200":{"description":"Keypair JSON: address + secret key"},"400":{"description":"Missing prefix/suffix or pattern too long"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"0.25"},"protocols":[{"x402":{}}]}}},"/api/x402/fact-check":{"post":{"operationId":"x402_fact_check","summary":"Paid: Real-time fact check with sourced verdict","description":"Pay $0.10 USDC to verify a factual claim. The server generates search queries, runs multi-source web search, extracts per-source stance with an LLM, computes a weighted verdict + confidence, and returns the supporting sources plus a SHA-256 attestation of the result.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["claim"],"properties":{"claim":{"type":"string","minLength":5,"maxLength":1000,"description":"The factual claim to verify."},"strictness":{"type":"string","enum":["high","medium","low"],"default":"medium","description":"high: penalizes low-authority sources. medium: default. low: accepts all sources equally."}}}}}},"responses":{"200":{"description":"Verdict JSON: verdict, confidence, claim, strictness, sources, costBreakdown, attestation"},"400":{"description":"Missing or invalid claim"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]}}},"/api/x402/tutor":{"post":{"operationId":"x402_tutor","summary":"Paid: Pay-as-you-learn tutor (one charge per answer)","description":"Pay $0.01 USDC per answered question. Returns a leveled explanation, key points, a worked example, and a follow-up, plus a running session tab so the UI can render a live itemized invoice. Pass a sessionId to accumulate a tab across questions.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"sessionId":{"type":"string","maxLength":100,"description":"Stable session identifier to accumulate a running tab. Omit to start a new session."},"question":{"type":"string","minLength":5,"maxLength":2000,"description":"The question to be explained."},"context":{"type":"string","maxLength":6000,"description":"Optional code or context to ground the explanation."},"level":{"type":"string","enum":["beginner","intermediate","expert"],"default":"intermediate","description":"Target expertise level — controls depth and assumed background."}}}}}},"responses":{"200":{"description":"Answer JSON with running session tab"},"400":{"description":"Missing or invalid question"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/api/x402/skill-call":{"get":{"operationId":"x402_skill_call","summary":"Paid: Invoke a marketplace skill (pay-per-call)","description":"Pay the per-call price of a marketplace skill in USDC (Base or Solana) and receive its executable payload: the tool schema and content the calling agent runs. Payment settles straight to the skill author's wallet. Per-call pricing — every invocation is a fresh payment.","parameters":[{"name":"skill","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Unique skill slug from the marketplace_skills catalog."}],"responses":{"200":{"description":"Skill payload: tool schema + content"},"400":{"description":"Missing or invalid skill slug"},"402":{"description":"Payment Required (x402)"},"404":{"description":"Skill not found"},"409":{"description":"Skill not currently purchasable"}},"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001","max":"10.00"},"protocols":[{"x402":{}}],"note":"Per-call price is set per skill; the live 402 challenge reflects the exact skill price."}},"/api/x402/agent-bouncer":{"get":{"operationId":"x402_agent_bouncer","summary":"Paid: Admit/refuse a counterparty agent at the door","description":"Pay $0.01 USDC to run the Pole Club door check against a three.ws agent's Solana reputation: confirmed on-chain payments, distinct payers, failure rate, distribute/buyback follow-through, signed attestations, and Club ban/tip ledger. Returns an admit/refuse verdict with a door tier (newcomer / regular / trusted / vip). Vet before you pay, hire, or delegate.","parameters":[{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"min_payments","in":"query","required":false,"schema":{"type":"integer"}},{"name":"min_distinct_payers","in":"query","required":false,"schema":{"type":"integer"}},{"name":"max_failure_rate","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Verdict JSON: admitted, tier, reasons, reputation"},"400":{"description":"Missing or invalid agent_id"},"402":{"description":"Payment Required (x402)"},"404":{"description":"agent_id not found"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/api/x402/vanity-verifiable":{"get":{"operationId":"x402_vanity_verifiable","summary":"Paid: Provably-fair Solana vanity keypair + signed receipt","description":"Grind a fresh Solana keypair whose Base58 address matches a chosen prefix/suffix, with a commit–reveal receipt signed by the service key (published at /.well-known/three-vanity.json) so the buyer can prove the key was ground fresh and never kept. Pass sealTo=<X25519 pubkey> to ECIES-seal the secret. Difficulty-tiered $0.02–$0.40; combined pattern ≤3 Base58 chars; settlement runs only after a successful grind.","parameters":[{"name":"prefix","in":"query","required":false,"schema":{"type":"string","maxLength":3},"description":"Base58 prefix the address must start with (excludes 0,O,I,l)."},{"name":"suffix","in":"query","required":false,"schema":{"type":"string","maxLength":3},"description":"Base58 suffix the address must end with. Combined with prefix ≤3."},{"name":"sealTo","in":"query","required":false,"schema":{"type":"string"},"description":"Recommended. Your X25519 public key; when set the secret is sealed to it and omitted from the response."}],"responses":{"200":{"description":"Keypair + signed grind receipt JSON"},"400":{"description":"Missing prefix/suffix or pattern too long"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.02","max":"0.40"},"protocols":[{"x402":{}}],"note":"Difficulty-tiered by pattern length; the live 402 challenge quotes the exact price."}}},"/api/x402/crypto-intel":{"post":{"operationId":"x402_crypto_intel","summary":"Paid: Live crypto market signal (agent-to-agent intel)","description":"Pay $0.01 USDC per call for a live market signal (bullish / bearish / neutral) on a token with current price, 24h change, and a two-sentence rationale. Powered by CoinGecko live prices.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"topic":{"type":"string","default":"sol","description":"Token ticker or CoinGecko id: btc, sol, eth, doge, …"}}}}}},"responses":{"200":{"description":"Signal JSON: signal, price_usd, change_24h, rationale, confidence"},"402":{"description":"Payment Required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/api/x402/cosmetic-purchase":{"get":{"operationId":"x402_cosmetic_purchase","summary":"Paid: Unlock a premium avatar cosmetic","description":"Pay once in USDC to unlock a premium avatar cosmetic (skin or emote) for an account, wearable across /play and /walk. Price varies by rarity ($0.25–$3.00). Wallets that already purchased re-confirm for free via SIWX (CAIP-122).","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"description":"Premium cosmetic id from /api/cosmetics/catalog."},{"name":"account","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":64},"description":"Solana wallet address or guest id (g_…) the cosmetic is granted to."}],"responses":{"200":{"description":"Ownership grant JSON"},"400":{"description":"Missing or invalid id/account"},"402":{"description":"Payment Required (x402)"},"404":{"description":"Cosmetic not found"}},"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.25","max":"3.00"},"protocols":[{"x402":{}}],"note":"Per-rarity pricing; the live 402 challenge quotes the exact price for the cosmetic."}}},"/api/x402/animation-download":{"get":{"operationId":"x402_animation_download","summary":"Paid: Unlock a 3D avatar animation (GLB)","description":"Pay once in USDC to unlock a 3D avatar animation (GLB). Each animation has its own price; the response carries a short-lived presigned URL the client fetches directly. Wallets that already paid re-download for free via SIWX.","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Animation slug or UUID from the animations catalog."}],"responses":{"200":{"description":"Presigned download URL JSON"},"400":{"description":"Missing or invalid id"},"402":{"description":"Payment Required (x402)"},"404":{"description":"Animation not found"}},"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001","max":"10.00"},"protocols":[{"x402":{}}],"note":"Per-animation pricing; the live 402 challenge quotes the exact price."}}},"/api/x402/club-cover":{"get":{"operationId":"x402_club_cover","summary":"Paid: Pole Club cover charge (24h entry token)","description":"Pay $0.01 USDC to access the three.ws Pole Club. Once payment settles the caller receives an entry token granting access to the live club scene for 24 hours.","responses":{"200":{"description":"Entry token JSON with expiry"},"402":{"description":"Payment Required (x402)"},"403":{"description":"Caller is banned from the club"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}}}}}