{"openapi": "3.1.0", "info": {"title": "Crypto Resources Agent Intelligence", "version": "0.2.0", "description": "Structured live state for one USDT perpetual on Binance or Bybit — not a heatmap scrape. Start free: validate the symbol, read a 15-minute OI/price/CVD/RSI slice. When the user needs full context, unlock every Trap Radar Pro window in one JSON dump. Recommended flow: 1) get_supported_symbols — confirm the ticker exists. 2) get_market_metrics — free 15m pulse on that symbol. 3) get_instrument_state — only if the user asks for depth; expect HTTP 402, get approval, sign x402, retry. Full JSON examples: https://crypto-resources.com/agents/v0/examples.json. Market-state evidence, not investment advice.", "x-recommended-workflow": "1) get_supported_symbols — confirm the ticker exists. 2) get_market_metrics — free 15m pulse on that symbol. 3) get_instrument_state — only if the user asks for depth; expect HTTP 402, get approval, sign x402, retry.", "x-data-freshness": "Live data (`data_mode: live`). Trust `updated_at` and `is_closed` on each metric to know which 1-minute bar was measured. Check `has_data` and `ready_count` before citing values. Some indicators include updated_at and is_closed. updated_at is the open time of the 1-minute candle included in that measurement. is_closed true means that 1-minute candle was already closed when the value was measured. Example: updated_at 2026-09-08T14:52:00Z with is_closed true means the last closed candle in this report is the 14:52 bar; freshness is 14:53:00 UTC. This is the candle clock, not delayed data.", "x-agent-payment-policy": "Do not spend USDC automatically. Require explicit user approval before signing any TransferWithAuthorization or retrying a paid call. Respect wallet spend limits, confirmation prompts, and your host application's payment policy. A 402 response is a quote, not permission to pay.", "x-api-key-policy": "Optional header X-CR-Api-Key (or X-Api-Key / Authorization: Bearer). Today the key is accepted but does not skip USDC — unpaid get_instrument_state still returns HTTP 402. Planned: an active Crypto Resources subscription will unlock the paid dump without on-chain payment. Always call unpaid first: HTTP 200 means no USDC needed; HTTP 402 means follow x402."}, "servers": [{"url": "https://crypto-resources.com/agents"}], "paths": {"/v0/tools/get_supported_symbols": {"get": {"operationId": "get_supported_symbols", "summary": "List live USDT perpetual tickers. Free — start here.", "parameters": [{"name": "exchange", "in": "query", "schema": {"type": "string", "enum": ["binance", "bybit"]}, "description": "Omit to receive both Binance and Bybit."}], "responses": {"200": {"description": "Ticker catalog", "content": {"application/json": {"example": {"market": "futures", "exchange": "binance", "count": 420, "symbols": ["BTCUSDT", "ETHUSDT"], "has_data": true, "data_mode": "live"}}}}, "429": {"description": "Rate limited", "content": {"application/json": {"example": {"error": "rate_limited", "message": "Too many requests"}}}}}}}, "/v0/tools/get_market_metrics": {"get": {"operationId": "get_market_metrics", "summary": "15m OI/price/CVD/RSI plus 30m VWAP deviation. Free — quick read on one ticker.", "description": "Live data (`data_mode: live`). Trust `updated_at` and `is_closed` on each metric to know which 1-minute bar was measured. Check `has_data` and `ready_count` before citing values. Some indicators include updated_at and is_closed. updated_at is the open time of the 1-minute candle included in that measurement. is_closed true means that 1-minute candle was already closed when the value was measured. Example: updated_at 2026-09-08T14:52:00Z with is_closed true means the last closed candle in this report is the 14:52 bar; freshness is 14:53:00 UTC. This is the candle clock, not delayed data.", "parameters": [{"name": "symbol", "in": "query", "required": true, "schema": {"type": "string", "example": "BTCUSDT"}}, {"name": "exchange", "in": "query", "schema": {"type": "string", "enum": ["binance", "bybit"], "default": "binance"}}], "responses": {"200": {"description": "15m metrics slice", "content": {"application/json": {"example": {"exchange": "binance", "market": "futures", "symbol": "BTCUSDT", "note": "vwap_dev is percent deviation from VWAP on the 30m window. Other fields are the 15m window. Some indicators include updated_at and is_closed. updated_at is the open time of the 1-minute candle included in that measurement. is_closed true means that 1-minute candle was already closed when the value was measured. Example: updated_at 2026-09-08T14:52:00Z with is_closed true means the last closed candle in this report is the 14:52 bar; freshness is 14:53:00 UTC. This is the candle clock, not delayed data.", "metrics": {"price_delta": {"value": 0.42, "is_ready": true, "unit": "%", "window": "15m", "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}, "oi_delta": {"value": -0.18, "is_ready": true, "unit": "%", "window": "15m", "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}, "cvd_delta": {"value": 1.05, "is_ready": true, "unit": "%", "window": "15m", "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}, "rsi": {"value": 54.2, "is_ready": true, "unit": "", "timeframe": "15m", "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}, "vwap_dev": {"value": -0.12, "is_ready": true, "unit": "%", "window": "30m", "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}}, "has_data": true, "data_mode": "live"}}}}, "404": {"description": "Unknown symbol", "content": {"application/json": {"example": {"error": "unknown_symbol", "message": "Unknown symbol for binance: FOOBAR"}}}}, "429": {"description": "Rate limited", "content": {"application/json": {"example": {"error": "rate_limited", "message": "Too many requests"}}}}}}}, "/v0/tools/get_instrument_state": {"post": {"operationId": "get_instrument_state", "summary": "Full Trap Radar Pro state for one ticker. Paid: 0.05 USDC on Base.", "description": "Use this tool to read live Binance/Bybit USDT perpetual instrument state from Trap Radar Pro: open interest, price delta, CVD, RSI, VWAP deviation, liquidations and volume spike across every available window. Market-state evidence only, not investment advice.\n\nDo not spend USDC automatically. Require explicit user approval before signing any TransferWithAuthorization or retrying a paid call. Respect wallet spend limits, confirmation prompts, and your host application's payment policy. A 402 response is a quote, not permission to pay.\n\nWallet: EVM address on Base with USDC. Same address in JSON `wallet` and header `X-Agent-Wallet`. EIP-3009 signer must match.\n\nOptional header X-CR-Api-Key (or X-Api-Key / Authorization: Bearer). Today the key is accepted but does not skip USDC — unpaid get_instrument_state still returns HTTP 402. Planned: an active Crypto Resources subscription will unlock the paid dump without on-chain payment. Always call unpaid first: HTTP 200 means no USDC needed; HTTP 402 means follow x402.", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["symbol"], "properties": {"symbol": {"type": "string", "example": "BTCUSDT"}, "exchange": {"type": "string", "enum": ["binance", "bybit"], "default": "binance"}, "wallet": {"type": "string", "description": "0x payer address (Base). Required for 402 quote; must match payment signature."}}}, "example": {"exchange": "binance", "symbol": "BTCUSDT", "wallet": "0xYOUR_PAYER_ADDRESS"}}}}, "responses": {"402": {"description": "Payment quote (x402). Sign accepts[0], retry with X-Payment.", "content": {"application/json": {"example": {"x402Version": 1, "error": "PAYMENT_REQUIRED", "accepts": [{"scheme": "exact", "network": "base", "maxAmountRequired": "50000", "resource": "https://crypto-resources.com/agents/v0/tools/get_instrument_state", "description": "Full Trap Radar Pro instrument state for one perpetual. Market-state evidence, not investment advice.", "mimeType": "application/json", "payTo": "0x2BC6Fc80C7F6b27C3C83228d2031D78E73b4362e", "maxTimeoutSeconds": 60, "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "extra": {"name": "USD Coin", "version": "2", "cohort": "B", "price_usd": "0.05", "facilitator": "https://facilitator.payai.network"}}], "real": {"instruction": "Sign accepts[0] as EIP-712 TransferWithAuthorization on network Base, USDC contract in accepts[0].asset, domain name/version from accepts[0].extra. Retry the same HTTP request with X-Payment containing the signed x402 payload.", "retry_headers": {"X-Agent-Wallet": "0xYOUR_PAYER_ADDRESS"}}}}}}, "200": {"description": "Filter row plus every indicator window/timeframe.", "content": {"application/json": {"example": {"exchange": "binance", "market": "futures", "symbol": "BTCUSDT", "note": "Some indicators include updated_at and is_closed. updated_at is the open time of the 1-minute candle included in that measurement. is_closed true means that 1-minute candle was already closed when the value was measured. Example: updated_at 2026-09-08T14:52:00Z with is_closed true means the last closed candle in this report is the 14:52 bar; freshness is 14:53:00 UTC. This is the candle clock, not delayed data.", "filter": {"symbol": "BTCUSDT", "exchange": "binance", "last_price": 64250.5, "volume_24h_usd": 1500000000, "funding_rate": 0.0001, "age_days": 1200.5}, "indicators": {"rsi_15m": {"rule": "rsi_15m", "indicator": "rsi", "window": "15m", "unit": "", "value": 54.2, "is_ready": true, "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}, "oi_15m_delta_pct": {"rule": "oi_15m_delta_pct", "indicator": "oi", "window": "15m", "unit": "%", "value": -0.18, "is_ready": true, "updated_at": "2026-09-08T14:52:00Z", "is_closed": true}, "volume_spike_120m_ratio": {"rule": "volume_spike_120m_ratio", "indicator": "volume_spike", "window": "120m", "unit": "x", "value": null, "is_ready": false, "updated_at": null, "is_closed": false}}, "indicator_count": 130, "ready_count": 98, "has_data": true, "data_mode": "live", "payment": {"mode": "x402", "rail": "x402", "price_usd": "0.05", "wallet": "0xYOUR_PAYER_ADDRESS", "transaction": "0x…", "network": "base"}}}}}, "429": {"description": "Rate limited", "content": {"application/json": {"example": {"error": "rate_limited", "message": "Too many requests"}}}}}}}, "/v0/examples.json": {"get": {"operationId": "examples", "summary": "Full JSON examples: responses, x402 payment, errors."}}, "/mcp": {"post": {"operationId": "mcp", "summary": "MCP JSON-RPC: tools/list, tools/call — same three tools."}}}, "externalDocs": {"description": "x402 payment protocol", "url": "https://www.x402.org/"}}