{"openapi":"3.1.0","info":{"title":"booAPI-Tempo","version":"1.0.0","description":"Crypto and web3 ground-truth data for AI agents, read directly from on-chain sources and public market APIs. Token prices, DeFi TVL, yields, stablecoins, gas, ENS, supply, wallet risk, OFAC sanctions, market sentiment, and multi-exchange derivatives funding. Pay-per-call via MPP on Tempo. No API key, no signup.","x-guidance":"booAPI-Tempo provides crypto/web3 ground-truth data for AI agents, paid via MPP on Tempo. Pick the endpoint matching the task: /api/snapshot for a one-call market + supply + safety read on a token; /api/derivatives for multi-exchange perp funding + open interest; /api/price for token price; /api/tvl, /api/yields, /api/stablecoins, /api/chains for DeFi metrics; /api/feargreed for market sentiment; /api/gas, /api/ens, /api/supply for on-chain reads; /api/sanctions and /api/wallet for wallet risk and OFAC screening. Each endpoint is a paid POST; unpaid requests return HTTP 402 with a Tempo payment challenge, pay with mppx and retry. Full agent docs at /llms.txt.","contact":{"name":"booAPI-Tempo","email":"vanlucpdu@gmail.com","url":"https://booapi-tempo.vercel.app"}},"servers":[{"url":"https://booapi-tempo.vercel.app"}],"x-docs":{"llmsTxt":"https://booapi-tempo.vercel.app/llms.txt"},"x-discovery":{"ownershipProofs":["0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"]},"paths":{"/api/price":{"post":{"operationId":"price","summary":"Token Price & Liquidity","description":"Live price, USD liquidity, 24h volume, FDV and market cap for any token, sourced from the deepest DEX pair on DexScreener. Use this when an agent needs the current market value or tradability of a specific token contract before quoting, swapping, or reporting. Fits naturally before a swap, in a portfolio readout, or as the market leg of a token research workflow.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use when you have a token contract address and need its current price, liquidity, and volume. Prefer /api/snapshot if you also need supply and safety in the same call.","input":"POST JSON: { token (contract address), chain? (eth|bnb|base, auto-detected if omitted) }.","output":"priceUsd, priceChange 5m/1h/6h/24h, liquidityUsd, volume 1h/24h, txns24h (buys/sells), pairAgeHours, fdvUsd, marketCapUsd, the DEX and pair used. found=false if no liquid pair exists.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Token contract address (0x...).","examples":["0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82"]},"chain":{"type":"string","description":"Optional chain hint: eth, bnb, base. Auto-detected if omitted.","examples":["bnb"]}},"required":["token"]}}}},"responses":{"200":{"description":"Token Price & Liquidity result.","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether a liquid DEX pair was found."},"symbol":{"type":"string","description":"Token symbol."},"priceUsd":{"type":"number","description":"Current USD price."},"liquidityUsd":{"type":"number","description":"USD liquidity in the deepest pair."},"volume24hUsd":{"type":"number","description":"24h trading volume in USD."},"priceChange1hPct":{"type":"number","description":"1h price change, percent."},"priceChange6hPct":{"type":"number","description":"6h price change, percent."},"txns24h":{"type":"object","description":"24h buy/sell transaction counts."},"pairAgeHours":{"type":"number","description":"Age of the trading pair in hours (newness signal)."},"fdvUsd":{"type":"number","description":"Fully diluted valuation in USD."},"marketCapUsd":{"type":"number","description":"Market cap in USD."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/tvl":{"post":{"operationId":"tvl","summary":"DeFi Protocol TVL","description":"Total value locked for a DeFi protocol, the chains it spans, and 1-day / 7-day change, from DefiLlama. Use when an agent needs to size or compare a protocol's footprint, or detect TVL inflows/outflows, inside a DeFi research or risk workflow.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use when you have a protocol's DefiLlama slug and need its TVL and recent change. For chain-level TVL use /api/chains instead.","input":"POST JSON: { protocol } where protocol is the DefiLlama slug (e.g. 'aave', 'uniswap', 'lido').","output":"tvlUsd, list of chains, change1dPct, change7dPct. found=false for an unknown slug.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"protocol":{"type":"string","description":"DefiLlama protocol slug (lowercase).","examples":["aave","uniswap","lido"]}},"required":["protocol"]}}}},"responses":{"200":{"description":"DeFi Protocol TVL result.","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether the protocol slug was found."},"protocol":{"type":"string","description":"Protocol name."},"tvlUsd":{"type":"number","description":"Total value locked in USD."},"chains":{"type":"array","items":{"type":"string"},"description":"Chains the protocol is deployed on."},"change1dPct":{"type":"number","description":"1-day TVL change, percent."},"change7dPct":{"type":"number","description":"7-day TVL change, percent."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/feargreed":{"post":{"operationId":"feargreed","summary":"Crypto Fear & Greed Index","description":"The current crypto Fear & Greed Index (0 = extreme fear, 100 = extreme greed) with its 1-day change, from alternative.me. Use when an agent needs a quick market-wide sentiment read to frame a recommendation or condition a strategy. No parameters.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use for a fast market-wide sentiment gauge. Takes no input. Pair with /api/derivatives for per-coin positioning sentiment.","input":"POST JSON: {} (no parameters).","output":"value (0-100), classification (e.g. 'Extreme Fear'), previousValue, change1d.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.005","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[]}}}},"responses":{"200":{"description":"Crypto Fear & Greed Index result.","content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Index value 0-100."},"classification":{"type":"string","description":"Text label, e.g. 'Extreme Fear', 'Greed'."},"change1d":{"type":"number","description":"Change vs. previous day."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/yields":{"post":{"operationId":"yields","summary":"DeFi Yield Finder","description":"Top APY yield pools filtered by token symbol and/or chain, from DefiLlama, optionally restricted to lower-risk pools. Use when an agent needs to find where an asset can earn yield, inside a treasury, allocation, or 'where to park stablecoins' workflow.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to find yield opportunities for a token (e.g. best USDC APY) optionally on a specific chain. Set safeOnly=true to bias toward audited/stable pools.","input":"POST JSON: { symbol? (e.g. USDC), chain? (e.g. base), limit? (1-20, default 5), safeOnly? (boolean) }.","output":"pools[] with project, chain, symbol, apy, tvlUsd, sorted by APY.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol to find yields for.","examples":["USDC","ETH"]},"chain":{"type":"string","description":"Optional chain filter.","examples":["base","arbitrum"]},"limit":{"type":"number","description":"Max pools to return, 1-20 (default 5)."},"safeOnly":{"type":"boolean","description":"If true, bias toward lower-risk pools."}},"required":[]}}}},"responses":{"200":{"description":"DeFi Yield Finder result.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of pools returned."},"pools":{"type":"array","items":{"type":"object"},"description":"Pools with project, chain, symbol, apy, tvlUsd."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/stablecoins":{"post":{"operationId":"stablecoins","summary":"Stablecoin Peg Monitor","description":"Circulating supply, current price and peg deviation for a stablecoin (or the top 10), from DefiLlama. Use when an agent needs to verify a stablecoin is holding its peg or size its market, inside a risk-check or treasury workflow before holding/accepting it.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to check a stablecoin's peg health and supply before treating it as safe. Omit symbol to get the top 10 by market cap.","input":"POST JSON: { symbol? (e.g. USDT). Omit for top 10 }.","output":"circulatingUsd, price, pegDeviationPct (distance from $1).","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","description":"Stablecoin symbol. Omit for top 10.","examples":["USDT","DAI"]}},"required":[]}}}},"responses":{"200":{"description":"Stablecoin Peg Monitor result.","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether the symbol was found."},"symbol":{"type":"string","description":"Stablecoin symbol."},"circulatingUsd":{"type":"number","description":"Circulating supply in USD."},"pegDeviationPct":{"type":"number","description":"Deviation from $1.00 peg, percent."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/chains":{"post":{"operationId":"chains","summary":"Chain TVL Overview","description":"Total value locked, rank and dominance for a blockchain (or the top 10), from DefiLlama. Use when an agent needs to compare chains by DeFi size or gauge where activity concentrates, inside a market-structure or chain-selection workflow.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to compare blockchains by DeFi TVL and dominance. Omit chain for the top 10 ranking.","input":"POST JSON: { chain? (e.g. base). Omit for top 10 }.","output":"tvlUsd, rank, dominancePct.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","description":"Chain name. Omit for top 10.","examples":["base","ethereum"]}},"required":[]}}}},"responses":{"200":{"description":"Chain TVL Overview result.","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether the chain was found."},"chain":{"type":"string","description":"Chain name."},"tvlUsd":{"type":"number","description":"Chain TVL in USD."},"rank":{"type":"number","description":"Rank by TVL."},"dominancePct":{"type":"number","description":"Share of total DeFi TVL, percent."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/gas":{"post":{"operationId":"gas","summary":"EVM Gas Oracle","description":"Current gas price in gwei for an EVM chain, read directly on-chain. Use when an agent needs to estimate transaction cost or decide timing before broadcasting a transaction, inside an execution workflow.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to estimate transaction cost or pick a low-gas moment before sending a tx on eth, bnb, or base.","input":"POST JSON: { chain (eth|bnb|base, default base) }.","output":"gasPriceGwei, maxFeePerGasGwei.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.005","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","description":"eth, bnb, or base.","examples":["base","eth"]}},"required":[]}}}},"responses":{"200":{"description":"EVM Gas Oracle result.","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","description":"Chain queried."},"gasPriceGwei":{"type":"number","description":"Current gas price in gwei."},"maxFeePerGasGwei":{"type":"number","description":"Suggested max fee per gas in gwei."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/ens":{"post":{"operationId":"ens","summary":"ENS Name Resolver","description":"Resolve an ENS name to its address, or reverse-resolve an address to its primary ENS name, on Ethereum mainnet. Use when an agent needs to turn a human-readable name into an address (or vice versa) before paying, labeling, or displaying a counterparty.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to convert vitalik.eth <-> 0x address. Accepts either direction in one 'query' field.","input":"POST JSON: { query (ENS name like 'name.eth' OR an address 0x...) }.","output":"name, address, found.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.005","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"ENS name (xxx.eth) or address (0x...).","examples":["vitalik.eth"]}},"required":["query"]}}}},"responses":{"200":{"description":"ENS Name Resolver result.","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether resolution succeeded."},"name":{"type":"string","description":"ENS name."},"address":{"type":"string","description":"Resolved address."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/supply":{"post":{"operationId":"supply","summary":"Token Supply Info","description":"Name, symbol, decimals and total supply for an ERC-20 token, read directly on-chain. Use when an agent needs authoritative token metadata and supply (not market-derived) before calculating amounts, market cap, or verifying a token.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use for on-chain token metadata and exact total supply. For price/liquidity use /api/price; for both plus safety use /api/snapshot.","input":"POST JSON: { token (contract), chain (eth|bnb|base) }.","output":"name, symbol, decimals, totalSupply (raw string).","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Token contract address (0x...).","examples":["0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82"]},"chain":{"type":"string","description":"eth, bnb, base.","examples":["bnb"]}},"required":["token","chain"]}}}},"responses":{"200":{"description":"Token Supply Info result.","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether the token was read."},"symbol":{"type":"string","description":"Token symbol."},"decimals":{"type":"number","description":"Token decimals."},"totalSupply":{"type":"string","description":"Total supply (raw integer string)."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/sanctions":{"post":{"operationId":"sanctions","summary":"Wallet OFAC Sanctions Screen","description":"Screen an EVM wallet against the OFAC SDN crypto address list and return a clear PASS or BLOCK. Use when an agent must run a compliance check before sending funds to, or accepting funds from, a counterparty address. A pure compliance gate.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use as a compliance gate before transacting with an address. For a fuller risk read (activity, whale, contract) use /api/wallet.","input":"POST JSON: { address (0x...) }.","output":"verdict (PASS|BLOCK), sanctioned (boolean).","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM wallet address (0x...).","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"]}},"required":["address"]}}}},"responses":{"200":{"description":"Wallet OFAC Sanctions Screen result.","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Address screened."},"verdict":{"type":"string","enum":["PASS","BLOCK"],"description":"PASS = not sanctioned, BLOCK = on OFAC SDN list."},"sanctioned":{"type":"boolean","description":"True if on the OFAC list."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/snapshot":{"post":{"operationId":"snapshot","summary":"Token Snapshot (price + supply + safety)","description":"One call that combines market data (price, liquidity, volume), on-chain supply, and GoPlus safety flags into a single OK / CAUTION / DANGER read. Use when an agent needs a complete go/no-go picture of a token without chaining three separate calls. The fastest token due-diligence primitive; ideal as the first step of any 'should I touch this token' workflow.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use as the default first call when evaluating an unknown token. Replaces chaining /api/price + /api/supply + a safety check.","input":"POST JSON: { token (contract), chain (eth|bnb|base) }.","output":"safetyVerdict (OK|CAUTION|DANGER|UNKNOWN), riskFlags[], plus market{}, supply{}, safety{} objects.","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.015","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Token contract address (0x...).","examples":["0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82"]},"chain":{"type":"string","description":"eth, bnb, base.","examples":["bnb"]}},"required":["token","chain"]}}}},"responses":{"200":{"description":"Token Snapshot (price + supply + safety) result.","content":{"application/json":{"schema":{"type":"object","properties":{"safetyVerdict":{"type":"string","enum":["OK","CAUTION","DANGER","UNKNOWN"],"description":"Quick go/no-go read."},"riskFlags":{"type":"array","items":{"type":"string"},"description":"Human-readable risk reasons."},"market":{"type":"object","description":"Price, liquidity, volume."},"supply":{"type":"object","description":"On-chain supply and metadata."},"safety":{"type":"object","description":"GoPlus safety detail."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/wallet":{"post":{"operationId":"wallet","summary":"Wallet Risk Profile","description":"A snapshot risk profile of an EVM wallet from direct RPC reads plus OFAC screening: native balance, transaction count and activity level, contract-vs-EOA status, sanctions verdict, whale flag, and a heuristic 0-100 wallet score. Use when an agent needs to assess a counterparty wallet before transacting. Snapshot only: wallet age and DeFi/bridge/NFT history require an indexer and are not included.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to assess a counterparty wallet (is it active, a whale, a contract, sanctioned). For a pure compliance pass/block use /api/sanctions.","input":"POST JSON: { wallet (0x...), chain (eth|bnb|base) }.","output":"walletScore (0-100), isWhale, sanctioned, txCount, activityLevel, flags[].","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"type":"string","description":"EVM wallet address (0x...).","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"]},"chain":{"type":"string","description":"eth, bnb, base.","examples":["eth"]}},"required":["wallet","chain"]}}}},"responses":{"200":{"description":"Wallet Risk Profile result.","content":{"application/json":{"schema":{"type":"object","properties":{"walletScore":{"type":"number","description":"Heuristic risk/quality score 0-100."},"isWhale":{"type":"boolean","description":"Large native balance."},"sanctioned":{"type":"boolean","description":"On OFAC list."},"txCount":{"type":"number","description":"Transaction count (nonce)."},"activityLevel":{"type":"string","description":"e.g. dormant, low, active, high."},"flags":{"type":"array","items":{"type":"string"},"description":"Risk/quality flags."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}},"/api/derivatives":{"post":{"operationId":"derivatives","summary":"Multi-Exchange Perp Funding & Open Interest","description":"Perpetual funding rate and open interest for a coin across Binance, Bybit, OKX and Hyperliquid in a single call, with funding normalized to annualized APR for fair cross-venue comparison, the funding spread between venues (a funding-arbitrage / divergence signal), total open interest in USD, and a funding-based sentiment read (crowded long / short). Use when an agent needs derivatives positioning to gauge market sentiment, detect crowding, or spot a cross-venue funding edge before taking or sizing a position. Public exchange data; signals are heuristic, not financial advice.","tags":["data","crypto","web3"],"x-agent-guidance":{"whenToUse":"Use to read perp positioning for a coin: is funding crowded long/short, and is there a fundable spread between exchanges. Pair with /api/feargreed for market-wide sentiment.","input":"POST JSON: { symbol (e.g. BTC, ETH, SOL) }.","output":"venues[] (per-exchange funding APR, OI, 24h volume, mark price, basis %, next funding time), aggregate (avg funding APR, total OI, total 24h volume, sentiment), retailPositioning (Binance long/short account ratio), fundingSpread (high vs low venue), signals[].","paymentFlow":"First call returns HTTP 402 with a Tempo MPP challenge. Pay with mppx (USDC.e on Tempo), then retry the same request to get 200."},"x-payment-info":{"price":{"mode":"fixed","amount":"0.01","currency":"USD"},"protocols":[{"mpp":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","description":"Coin symbol (base asset, no USDT suffix).","examples":["BTC","ETH","SOL"]}},"required":["symbol"]}}}},"responses":{"200":{"description":"Multi-Exchange Perp Funding & Open Interest result.","content":{"application/json":{"schema":{"type":"object","properties":{"venues":{"type":"array","description":"Per-exchange funding APR, interval, and open interest in USD."},"aggregate":{"type":"object","description":"venuesReporting, avgFundingAprPct, totalOpenInterestUsd, sentiment."},"retailPositioning":{"type":"object","description":"Binance global long/short account ratio: longShortRatio, longAccountPct, shortAccountPct."},"fundingSpread":{"type":"object","description":"Highest vs lowest funding venue and the spread in APR percent."},"signals":{"type":"array","items":{"type":"string"},"description":"Heuristic flags (funding crowding, large spread, retail long/short, funding-vs-retail divergence)."}}}}}},"400":{"description":"Bad Request - missing/invalid input."},"402":{"description":"Payment Required"}}}}}}