{"openapi":"3.1.0","info":{"title":"Crypto Data & Market Analysis Agent (CryptoMacro) — x402 API","version":"1.0.0","description":"Pay-per-call crypto & macro market data for AI agents: real-time Bitcoin (BTC), Ethereum (ETH) and altcoin prices, funding rates, open interest, Fear & Greed index, market dominance, macro indicators (Fed, CPI, dollar), DeFi TVL, whale flows, on-chain stats, crypto news — plus AI-synthesized structured market analysis with trading signals. Payments via the x402 protocol (USDC on Base). Docs: https://asistent-crypto.vercel.app/a2a"},"servers":[{"url":"https://asistent-crypto.vercel.app"}],"paths":{"/api/x402/data/funding-oi":{"post":{"summary":"Perpetual funding rate and open interest for up to 10 coins in a single call, across Binance, Bybit, OKX and Hyperliquid","description":"Perpetual funding rate and open interest for up to 10 coins in a single call, across Binance, Bybit, OKX and Hyperliquid. Answers 'where is the leverage right now?' for a whole watchlist at once instead of one symbol at a time. Thin venues are excluded: averaging every venue that publishes a rate overstates BTC funding by ~30x, because a near-empty book printing 9% per 8h counts the same as a deep one. Funding comes both per 8h and annualized, so 0.0067% reads as 7.3% a year — directly comparable to any other yield. Open interest in USD.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"coins":["BTC","ETH","SOL"]}}}},"responses":{"200":{"description":"get_derivatives_aggregate result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_derivatives_aggregate"},"data":{"type":"object","properties":{"coins":{"type":"array","items":{"type":"object","properties":{"coin":{"type":"string"},"avgFundingRate":{"type":["number","null"],"description":"Percent per 8 hours. 0.0067 means 0.0067%, not 0.67%."},"avgFundingAnnualizedPct":{"type":["number","null"],"description":"The same funding as a yearly percentage, comparable to any other yield."},"totalOpenInterestUsd":{"type":["number","null"],"description":"Summed across the major venues."},"fundingSpread":{"type":["number","null"],"description":"Highest minus lowest venue funding. A wide spread marks localised positioning."},"exchangeCount":{"type":"number","description":"How many major venues backed the numbers."}},"required":["coin","exchangeCount"]}},"unavailable":{"type":"array","items":{"type":"string"},"description":"Requested coins with no major-venue perpetual. Never silently dropped."}},"required":["coins","unavailable"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/funding-by-venue":{"post":{"summary":"Funding rate and open interest for one coin, broken down venue by venue across Binance, Bybit, OKX and Hyperliquid, using each venue's largest-open-interest perpetual","description":"Funding rate and open interest for one coin, broken down venue by venue across Binance, Bybit, OKX and Hyperliquid, using each venue's largest-open-interest perpetual. Use it when venue divergence matters: one venue far more positive or negative than the rest is localised positioning, not market consensus — the setup that precedes a squeeze on that venue alone. Returns per-venue rows plus average funding, total open interest and the spread.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"symbol":"BTC"}}}},"responses":{"200":{"description":"get_derivatives result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_derivatives"},"data":{"type":"object","properties":{"coin":{"type":"string"},"avgFundingRate":{"type":["number","null"],"description":"Percent per 8 hours. 0.0067 means 0.0067%, not 0.67%."},"avgFundingAnnualizedPct":{"type":["number","null"],"description":"The same funding as a yearly percentage, comparable to any other yield."},"totalOpenInterestUsd":{"type":["number","null"],"description":"Summed across the major venues."},"fundingSpread":{"type":["number","null"],"description":"Highest minus lowest venue funding. A wide spread marks localised positioning."},"exchangeCount":{"type":"number","description":"How many major venues backed the numbers."},"perExchange":{"type":"array","description":"Per-venue breakdown, from each venue's largest-open-interest perpetual.","items":{"type":"object","properties":{"exchange":{"type":"string","enum":["Binance","Bybit","OKX","Hyperliquid"],"description":"Venue name. Hyperliquid is the only DEX in the set; its native hourly funding is already converted to the same percent-per-8h unit as the others."},"fundingRate":{"type":["number","null"],"description":"Percent per 8 hours."},"openInterestUsd":{"type":["number","null"]}},"required":["exchange"]}}},"required":["coin","perExchange","exchangeCount"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/brief":{"post":{"summary":"The answer, not the inputs","description":"The answer, not the inputs. One call returns a stance for the coin — risk-on, risk-off, fragile or neutral — built from funding and open interest percentiles, sentiment, options implied volatility, the macro regime and what it actually costs to execute at your size. Every driver comes back with its number and its reading, plus the concrete conditions that would invalidate the call, so it can be audited rather than believed. The rules are deterministic: the same market gives the same verdict, every time.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"coin":"BTC"}}}},"responses":{"200":{"description":"get_market_brief result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_market_brief"},"data":{"type":"object","properties":{"coin":{"type":"string"},"asOf":{"type":"string","description":"ISO timestamp the brief was computed at."},"stance":{"type":"string","enum":["risk-on","risk-off","fragile","neutral"],"description":"fragile is a state, not a direction: crowded positioning together with cheap implied volatility."},"confidence":{"type":"string","enum":["low","medium","high"]},"verdict":{"type":"string","description":"The read in one or two sentences."},"drivers":{"type":"array","description":"Every signal that fed the verdict, so it can be argued with instead of taken on faith.","items":{"type":"object","properties":{"signal":{"type":"string"},"value":{"type":"string"},"reading":{"type":"string"},"direction":{"type":"number","description":"-1 toward risk, +1 toward support, 0 relevant but neutral."}},"required":["signal","value","reading","direction"]}},"invalidation":{"type":"array","items":{"type":"string"},"description":"Concrete, numeric conditions that would make this verdict wrong."},"tradeable":{"type":["object","null"],"description":"null when no venue could be read.","properties":{"sizeUsd":{"type":"number"},"costBps":{"type":"number"},"venue":{"type":"string"}}},"missing":{"type":"array","items":{"type":"string"},"description":"Sources that did not answer. A missing signal is never counted as a neutral one."}},"required":["coin","asOf","stance","confidence","verdict","drivers","invalidation","missing"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/orderbook-depth":{"post":{"summary":"What a trade actually costs before it is placed: live order book depth on Bybit and OKX, walked at your size","description":"What a trade actually costs before it is placed: live order book depth on Bybit and OKX, walked at your size. Give it a notional in dollars and it returns the average fill price, slippage against mid in basis points and in dollars, the spread, the depth resting within 1% of mid, and which of the two venues is cheaper for that exact size — separately for buying and selling. A size the book cannot absorb is reported as unfilled rather than priced by extrapolation. Position sizing and entry levels are guesses without this number.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"coin":"BTC","sizesUsd":[10000,100000]}}}},"responses":{"200":{"description":"get_execution_cost result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_execution_cost"},"data":{"type":"object","properties":{"coin":{"type":"string"},"sizesUsd":{"type":"array","items":{"type":"number"}},"bandPct":{"type":"number","description":"Half-width of the depth band around mid, in percent."},"venues":{"type":"array","items":{"type":"object","properties":{"venue":{"type":"string","enum":["Bybit","OKX"]},"symbol":{"type":"string"},"bestBid":{"type":"number"},"bestAsk":{"type":"number"},"mid":{"type":"number"},"spreadBps":{"type":"number","description":"Quoted spread in basis points. Half of it is the floor for any slippage."},"bidDepthUsd":{"type":"number","description":"Notional resting within bandPct of mid on the bid side, in USD."},"askDepthUsd":{"type":"number"},"levels":{"type":"object","properties":{"bids":{"type":"number"},"asks":{"type":"number"}}},"buy":{"type":"array","items":{"type":"object","properties":{"notionalUsd":{"type":"number"},"filledUsd":{"type":"number","description":"How much of the size the book could actually absorb. Equals notionalUsd only when filled is true."},"avgPrice":{"type":"number","description":"Volume-weighted price the order would actually get."},"slippageBps":{"type":"number","description":"Cost against mid in basis points. Always positive, for buys and sells alike."},"costUsd":{"type":"number","description":"The same cost in dollars."},"filled":{"type":"boolean","description":"false means the book ran out before the requested size; the price is NOT extrapolated."}},"required":["notionalUsd","filledUsd","avgPrice","slippageBps","costUsd","filled"]}},"sell":{"type":"array","items":{"type":"object","properties":{"notionalUsd":{"type":"number"},"filledUsd":{"type":"number","description":"How much of the size the book could actually absorb. Equals notionalUsd only when filled is true."},"avgPrice":{"type":"number","description":"Volume-weighted price the order would actually get."},"slippageBps":{"type":"number","description":"Cost against mid in basis points. Always positive, for buys and sells alike."},"costUsd":{"type":"number","description":"The same cost in dollars."},"filled":{"type":"boolean","description":"false means the book ran out before the requested size; the price is NOT extrapolated."}},"required":["notionalUsd","filledUsd","avgPrice","slippageBps","costUsd","filled"]}}},"required":["venue","symbol","mid","spreadBps","buy","sell"]}},"unavailable":{"type":"array","items":{"type":"string"},"description":"Venues with no usable book for this coin. Never dropped silently."},"unavailableDetail":{"type":"array","description":"The same venues with the reason each one failed, so a missing venue is diagnosable.","items":{"type":"object","properties":{"venue":{"type":"string"},"reason":{"type":"string"}},"required":["venue","reason"]}},"cheapest":{"type":"array","description":"Per requested size, the venue with the lowest slippage among those that can fill it.","items":{"type":"object","properties":{"notionalUsd":{"type":"number"},"buyVenue":{"type":["string","null"]},"buySlippageBps":{"type":["number","null"]},"sellVenue":{"type":["string","null"]},"sellSlippageBps":{"type":["number","null"]}},"required":["notionalUsd","buyVenue","sellVenue"]}}},"required":["coin","sizesUsd","venues","unavailable","cheapest"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/implied-volatility":{"post":{"summary":"What the options market expects price to do, not what leverage is doing: the 30-day implied volatility index for BTC and ETH, with its percentile over the last month and the expected move in percent over 1, 7 and 30 days","description":"What the options market expects price to do, not what leverage is doing: the 30-day implied volatility index for BTC and ETH, with its percentile over the last month and the expected move in percent over 1, 7 and 30 days. Funding tells you who is crowded; this tells you how much movement is already priced in — and whether hedging is cheap or expensive relative to where it has been.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"coins":["BTC","ETH"]}}}},"responses":{"200":{"description":"get_implied_volatility result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_implied_volatility"},"data":{"type":"object","properties":{"windowDays":{"type":"number"},"coins":{"type":"array","items":{"type":"object","properties":{"coin":{"type":"string"},"current":{"type":"number","description":"30-day implied volatility, annualized, in percent. 34.95 means 34.95%, not 0.3495."},"min":{"type":"number"},"median":{"type":"number"},"max":{"type":"number"},"percentile":{"type":"number","description":"0-100. Where `current` sits in its own distribution over the window."},"samples":{"type":"number","description":"Measurements backing the distribution."},"expectedMove1d":{"type":"number","description":"Expected move over 1 day, plus or minus percent. Scales with sqrt(time)."},"expectedMove7d":{"type":"number"},"expectedMove30d":{"type":"number"}},"required":["coin","current","percentile","samples"]}},"unavailable":{"type":"array","items":{"type":"string"},"description":"Requested coins with no published volatility index. Never silently dropped."}},"required":["windowDays","coins","unavailable"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/market-history":{"post":{"summary":"Whether the current reading is actually high or low, from a series captured every ~10 minutes: funding, open interest, Fear & Greed and BTC dominance, each as current, median, min, max and percentile over the window","description":"Whether the current reading is actually high or low, from a series captured every ~10 minutes: funding, open interest, Fear & Greed and BTC dominance, each as current, median, min, max and percentile over the window. A funding rate of 0.006% means nothing on its own; at the 89th percentile of the last 24 hours it means something. This is the question a snapshot endpoint cannot answer, whoever you buy it from.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"hours":24}}}},"responses":{"200":{"description":"get_market_history result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_market_history"},"data":{"type":"object","properties":{"windowHours":{"type":"number"},"samples":{"type":"number","description":"Snapshots in the window, captured every ~10 minutes."},"from":{"type":"string"},"to":{"type":"string"},"funding":{"type":"object","description":"Current reading placed in its own distribution over the window.","properties":{"current":{"type":["number","null"]},"median":{"type":["number","null"]},"min":{"type":["number","null"]},"max":{"type":["number","null"]},"percentile":{"type":["number","null"],"description":"0-100. Where `current` sits among the samples."},"samples":{"type":"number","description":"How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."}},"required":["current","median","min","max","percentile"]},"openInterestUsd":{"type":"object","description":"Current reading placed in its own distribution over the window.","properties":{"current":{"type":["number","null"]},"median":{"type":["number","null"]},"min":{"type":["number","null"]},"max":{"type":["number","null"]},"percentile":{"type":["number","null"],"description":"0-100. Where `current` sits among the samples."},"samples":{"type":"number","description":"How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."}},"required":["current","median","min","max","percentile"]},"fearGreed":{"type":"object","description":"Current reading placed in its own distribution over the window.","properties":{"current":{"type":["number","null"]},"median":{"type":["number","null"]},"min":{"type":["number","null"]},"max":{"type":["number","null"]},"percentile":{"type":["number","null"],"description":"0-100. Where `current` sits among the samples."},"samples":{"type":"number","description":"How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."}},"required":["current","median","min","max","percentile"]},"btcDominance":{"type":"object","description":"Current reading placed in its own distribution over the window.","properties":{"current":{"type":["number","null"]},"median":{"type":["number","null"]},"min":{"type":["number","null"]},"max":{"type":["number","null"]},"percentile":{"type":["number","null"],"description":"0-100. Where `current` sits among the samples."},"samples":{"type":"number","description":"How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."}},"required":["current","median","min","max","percentile"]}},"required":["windowHours","samples","from","to"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/fear-greed":{"post":{"summary":"Crypto Fear & Greed Index: current and previous value with classification, plus recent history","description":"Crypto Fear & Greed Index: current and previous value with classification, plus recent history. A contrarian input — extreme fear has historically marked accumulation zones and extreme greed distribution zones — but it is a filter, never a trigger on its own. Pair it with funding to separate real capitulation from a crowded short.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_fear_greed result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_fear_greed"},"data":{"type":"object","properties":{"value":{"type":"number","description":"0-100. Low is fear, high is greed."},"classification":{"type":"string"},"previousValue":{"type":["number","null"]},"previousClassification":{"type":["string","null"]},"history":{"type":"array","items":{"type":"object","properties":{"time":{"type":"number"},"value":{"type":"number"}},"required":["time","value"]}}},"required":["value","classification","history"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/dominance":{"post":{"summary":"BTC, ETH and USDT dominance as a share of total crypto market cap — the regime filter to check before sizing any altcoin position","description":"BTC, ETH and USDT dominance as a share of total crypto market cap — the regime filter to check before sizing any altcoin position. Rising BTC dominance means capital rotating to relative safety; rising USDT dominance means capital leaving for stablecoins, a broader risk-off. Falling BTC dominance with rising ETH dominance is the classic rotation signal.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_market_dominance result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_market_dominance"},"data":{"type":"object","description":"Share of total crypto market cap, in percent.","properties":{"btcDominance":{"type":["number","null"]},"ethDominance":{"type":["number","null"]},"usdtDominance":{"type":["number","null"]}}}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/whale-flows":{"post":{"summary":"Large ETH transfers (>100 ETH) to and from known exchange wallets in the last 2 hours","description":"Large ETH transfers (>100 ETH) to and from known exchange wallets in the last 2 hours. Inflows to exchanges are potential distribution pressure, outflows suggest accumulation or a move to cold storage — but read them as context, not instruction: a single large transfer is often internal rotation between wallets of the same desk.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_eth_whale_flows result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_eth_whale_flows"},"data":{"type":"object","properties":{"flows":{"type":"array","description":"Large ETH transfers to and from known exchange wallets, largest first.","items":{"type":"object","properties":{"exchange":{"type":"string"},"counterparty":{"type":"string","description":"The non-exchange side of the transfer."},"valueEth":{"type":"number"},"direction":{"type":"string","enum":["in","out"],"description":"`in` is flow toward the exchange (distribution pressure), `out` is away."},"timestamp":{"type":"number","description":"Unix seconds."},"hash":{"type":"string"}},"required":["exchange","valueEth","direction","timestamp","hash"]}},"windowMinutes":{"type":"number","description":"The window asked for, in minutes."},"coverage":{"type":"array","description":"How much of that window each wallet could actually be read back over. A busy wallet can exhaust one page before reaching the far end.","items":{"type":"object","properties":{"exchange":{"type":"string"},"minutesCovered":{"type":"number"},"truncated":{"type":"boolean","description":"true means the wallet is too busy for a single page, so older transfers in the window were not seen."}},"required":["exchange","minutesCovered","truncated"]}},"unavailable":{"type":"array","items":{"type":"string"},"description":"Exchange wallets that could not be read. An empty flows list with entries here means nothing was read, not that nothing moved."}},"required":["flows","windowMinutes","coverage","unavailable"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/macro-rates":{"post":{"summary":"The macro regime that drives crypto, delivered as signals rather than raw levels: the 2s10s yield curve spread with its direction and an inverted flag, Fed funds, 2Y and 10Y yields, CPI year-over-year, the broad dollar index, VIX and M2 — each with its previous reading, so direction comes free","description":"The macro regime that drives crypto, delivered as signals rather than raw levels: the 2s10s yield curve spread with its direction and an inverted flag, Fed funds, 2Y and 10Y yields, CPI year-over-year, the broad dollar index, VIX and M2 — each with its previous reading, so direction comes free. The slope of the curve, not the level of any single yield, is the liquidity signal: inversion has preceded every US recession, and re-steepening out of one usually marks the start of easing, which is the moment risk assets price first.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_macro_rates result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_macro_rates"},"data":{"type":"object","properties":{"fedFunds":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"ust2y":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"ust10y":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"cpiYoY":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"dollarIndex":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"vix":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"m2":{"type":["object","null"],"properties":{"value":{"type":"number"},"date":{"type":"string","description":"ISO date of the observation."},"previous":{"type":["number","null"],"description":"Prior observation, for direction."}},"required":["value","date"]},"yieldCurve2s10s":{"type":["object","null"],"description":"10Y minus 2Y. Inversion has preceded every recent US recession.","properties":{"value":{"type":"number"},"previous":{"type":["number","null"]},"direction":{"type":["string","null"],"enum":["steepening","flattening","flat",null]},"inverted":{"type":"boolean"}},"required":["value","inverted"]}}}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/economic-calendar":{"post":{"summary":"Scheduled macro catalysts ahead — FOMC, CPI, PCE, Non-Farm Payrolls, GDP, Retail Sales — from the official US release calendar","description":"Scheduled macro catalysts ahead — FOMC, CPI, PCE, Non-Farm Payrolls, GDP, Retail Sales — from the official US release calendar. The dates that decide whether a position should be sized down before the print. Returns the scheduled release, not analyst consensus.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"days":14}}}},"responses":{"200":{"description":"get_economic_calendar result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_economic_calendar"},"data":{"type":"array","description":"Scheduled macro releases ahead, soonest first.","items":{"type":"object","properties":{"event":{"type":"string"},"country":{"type":"string"},"time":{"type":"string"},"impact":{"type":"string"},"estimate":{"type":["number","null"]},"previous":{"type":["number","null"]},"actual":{"type":["number","null"],"description":"Null until the release lands."}},"required":["event","country","time","impact"]}}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/prices":{"post":{"summary":"Spot price, market cap, 24h volume and 24h change for any coins by id (bitcoin, ethereum, solana and thousands more), in any quote currency","description":"Spot price, market cap, 24h volume and 24h change for any coins by id (bitcoin, ethereum, solana and thousands more), in any quote currency. The reference leg for every other signal here: funding and open interest only mean something next to what price did.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"ids":["bitcoin","ethereum"]}}}},"responses":{"200":{"description":"get_crypto_market result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_crypto_market"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Coin id, e.g. `bitcoin`."},"symbol":{"type":"string"},"name":{"type":"string"},"price":{"type":"number"},"change24h":{"type":["number","null"],"description":"Percent."},"change7d":{"type":["number","null"],"description":"Percent."},"marketCap":{"type":["number","null"]},"volume24h":{"type":["number","null"]}},"required":["id","symbol","name","price"]}}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/defi-tvl":{"post":{"summary":"Total value locked across DeFi, the top chains by TVL, and aggregate stablecoin market cap","description":"Total value locked across DeFi, the top chains by TVL, and aggregate stablecoin market cap. Stablecoin supply is the dry powder of the whole market: rising supply with rising TVL is risk appetite expanding, falling supply is capital genuinely leaving crypto rather than rotating inside it.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_defi_overview result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_defi_overview"},"data":{"type":"object","properties":{"totalTvl":{"type":"number","description":"Total value locked across DeFi, in USD."},"topChains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tvl":{"type":"number"}},"required":["name","tvl"]}},"stablecoinMarketCap":{"type":["number","null"],"description":"Dry powder waiting on the sidelines."}},"required":["totalTvl","topChains"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/btc-network":{"post":{"summary":"Bitcoin network health: hashrate, difficulty, transaction count, estimated volume, miner revenue and the largest recent mempool transactions","description":"Bitcoin network health: hashrate, difficulty, transaction count, estimated volume, miner revenue and the largest recent mempool transactions. A congested mempool carrying large transfers can front-run an exchange flow you will only see in price an hour later.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_btc_network result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_btc_network"},"data":{"type":"object","properties":{"marketPrice":{"type":"number"},"hashRate":{"type":"number"},"difficulty":{"type":"number"},"txCount24h":{"type":"number"},"estimatedTxVolumeUsd":{"type":"number"},"minersRevenueUsd":{"type":["number","null"],"description":"null when the source does not publish it. Never 0 - miner revenue cannot be zero while blocks are produced."},"tradeVolumeUsd":{"type":"number"},"btcLargeMempool":{"type":"array","description":"Largest transactions currently waiting in the mempool.","items":{"type":"object","properties":{"txHash":{"type":"string"},"totalBtc":{"type":"number"},"timestamp":{"type":"number"}},"required":["txHash","totalBtc","timestamp"]}}}}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/tradfi-quotes":{"post":{"summary":"S&P 500, gold and Nasdaq 100 quotes as the traditional-market leg of a crypto read","description":"S&P 500, gold and Nasdaq 100 quotes as the traditional-market leg of a crypto read. BTC trades as a high-beta risk asset far more often than as digital gold, so equities direction is usually the better correlation to check before blaming a crypto-native cause. Priced as ETFs, so use direction and percent change, not the absolute level.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_market_quotes result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_market_quotes"},"data":{"type":"object","properties":{"quotes":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"price":{"type":["number","null"]},"change":{"type":["number","null"]},"changePercent":{"type":["number","null"]},"previousClose":{"type":["number","null"]},"time":{"type":["number","null"],"description":"Unix seconds."}},"required":["symbol","name","price"]}}},"required":["quotes"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/address":{"post":{"summary":"Ethereum address activity: ETH balance plus recent large transfers in and out","description":"Ethereum address activity: ETH balance plus recent large transfers in and out. Point it at an exchange wallet, a treasury or a wallet a headline just named, and get the movement behind the story rather than the story.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{"address":"0x28C6c06298d514Db089934071355E5743bf21d60"}}}},"responses":{"200":{"description":"get_eth_address result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_eth_address"},"data":{"type":"object","properties":{"address":{"type":"string"},"balanceEth":{"type":"number"},"recentLargeTransfers":{"type":"array","description":"Transfers above 1 ETH, newest first.","items":{"type":"object","properties":{"hash":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"valueEth":{"type":"number"},"timestamp":{"type":"number","description":"Unix seconds."},"direction":{"type":"string","enum":["in","out"]}},"required":["hash","from","to","valueEth","timestamp","direction"]}}},"required":["address","balanceEth","recentLargeTransfers"]}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/data/news":{"post":{"summary":"Recent crypto headlines for narrative context and catalysts — the qualitative layer that explains why funding moved when no macro print did","description":"Recent crypto headlines for narrative context and catalysts — the qualitative layer that explains why funding moved when no macro print did. Returns headlines with attribution for summarisation, not article text.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"get_crypto_news result","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"tool":{"type":"string","const":"get_crypto_news"},"data":{"type":"array","description":"Recent headlines, newest first. Summaries are our own words, not article text.","items":{"type":"object","properties":{"title":{"type":"string"},"source":{"type":"string"},"url":{"type":"string"},"publishedAt":{"type":"string"},"summary":{"type":"string"}},"required":["title","source","url","publishedAt"]}}},"required":["ok","tool","data"]}}}},"402":{"description":"Payment required (x402)"},"502":{"description":"Upstream data source unavailable"}}}},"/api/x402/query":{"post":{"summary":"Execute one market-data tool directly (no LLM)","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["get_crypto_market","get_fear_greed","get_derivatives","get_derivatives_aggregate","get_macro_rates","get_market_quotes","get_economic_calendar","get_crypto_news","get_defi_overview","get_btc_network","get_eth_address","get_eth_whale_flows","get_market_dominance","get_market_history","get_implied_volatility","get_execution_cost","get_market_brief"]},"input":{"type":"object"}},"required":["tool"]}}}},"responses":{"200":{"description":"Tool result: { ok, tool, data }"},"400":{"description":"Unknown tool or invalid body (not charged)"},"402":{"description":"Payment Required (x402)"},"502":{"description":"Upstream data source failed (not charged)"}}}},"/api/x402/analyze":{"post":{"summary":"LLM-synthesized market analysis → structured JSON verdict","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.25"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string"},"context":{"type":"string"},"language":{"type":"string"}},"required":["question"]}}}},"responses":{"200":{"description":"Analysis: { ok, analysis, tools_called }"},"400":{"description":"Missing question (not charged)"},"402":{"description":"Payment Required (x402)"},"502":{"description":"Synthesis failed to parse (not charged)"}}}}}}