{"serverId":"mcp-registry/app.liquidvision/derivatives","tools":[{"name":"create_alert","fixed":{"name":"create_alert","description":"Subscribe an HTTPS URL to push alerts instead of polling (Pro: 3, Bot: 20 subscriptions).\n    type='cascade': a liquidation cascade just ended, over min_usd and x_normal times the coin's\n    normal minute. type='hl_near_liq': a Hyperliquid whale position over min_usd within\n    max_dist_pct of its liquidation price. type='cluster_sweep': price reached one of the 10\n    largest modeled liquidation-map clusters (size over min_usd; no symbol = BTC, ETH, SOL), sent\n    3 min later with modeled vs ac","inputSchema":{"type":"object","title":"create_alertArguments","required":["type","url"],"properties":{"url":{"type":"string","title":"Url"},"type":{"type":"string","title":"Type"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","default":null},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":null},"min_usd":{"type":"number","title":"Min Usd","default":1000000},"x_normal":{"type":"number","title":"X Normal","default":8},"max_dist_pct":{"type":"number","title":"Max Dist Pct","default":3}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":305,"tokensAfter":305},{"name":"delete_alert","fixed":{"name":"delete_alert","description":"Permanently delete one webhook alert subscription. DESTRUCTIVE and not reversible:\n    deliveries to its URL stop at once and its signing secret is discarded (create_alert\n    issues a new one). Only a subscription owned by the caller's API key can be deleted;\n    an id belonging to another key returns {\"deleted\": false} and changes nothing. id: the\n    number returned by create_alert or list_alerts. Needs a Pro or Bot key (X-API-Key header\n    of the MCP connection, or api_key).","inputSchema":{"type":"object","title":"delete_alertArguments","required":["id"],"properties":{"id":{"type":"integer","title":"Id"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":null}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":210,"tokensAfter":210},{"name":"explain_market","fixed":{"name":"explain_market","description":"AI risk-intelligence answer: ask e.g. 'Why did BTC drop 4%?' and get a\n    concise grounded explanation (liquidation cascades, funding extremes, where\n    the positions sit, next risk zone) computed from live derivatives data\n    across 13 venues (CEXs, Hyperliquid and GMX).","inputSchema":{"type":"object","title":"explain_marketArguments","required":["question"],"properties":{"symbol":{"type":"string","title":"Symbol","default":"BTCUSDT"},"question":{"type":"string","title":"Question"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"get_accuracy","fixed":{"name":"get_accuracy","description":"[measured] The public accuracy audit: our open interest and funding vs Binance, Bybit, OKX and\n    Hyperliquid's own endpoints, sampled every 10 min (diff %, snapshot age, 24h mean/max), plus how\n    the modeled liquidation map scored against realized liquidations. Read this before trusting\n    any number here with money.","inputSchema":{"type":"object","title":"get_accuracyArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"get_api_key","fixed":{"name":"get_api_key","description":"Get a free LiquidVision API key for this agent's owner, by email, without a browser.\n    Works for a NEW email only (an existing account's key is never returned; its owner sees it\n    at liquidvision.app/data). Use the key as X-API-Key on REST or on this MCP endpoint: 120 req/min\n    instead of the shared anonymous budget, plus 100 metered calls a day (history, positions:\n    get_funding_history, get_open_interest_history, get_funding_settlements, get_hl_whales, get_history...),\n    and to upgra","inputSchema":{"type":"object","title":"get_api_keyArguments","required":["email"],"properties":{"email":{"type":"string","title":"Email"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":191,"tokensAfter":191},{"name":"get_arbitrum_perps","fixed":{"name":"get_arbitrum_perps","description":"Arbitrum perps board: GMX v2 open interest per coin and its share of every\n    tracked venue, GMX funding next to the CEX median (8h basis), on-chain\n    liquidations over 24h. Ask this for 'how is Arbitrum positioned vs CEXs'.","inputSchema":{"type":"object","title":"get_arbitrum_perpsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"get_cash_flows","fixed":{"name":"get_cash_flows","description":"Derivatives cash flow per exchange: net USD into/out of open interest\n    over 1h/4h/24h windows, per core symbol. Positive = money flowing in.","inputSchema":{"type":"object","title":"get_cash_flowsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"get_cvd","fixed":{"name":"get_cvd","description":"Cumulative volume delta split by trade size (retail <$10K, mid <$100K,\n    large <$1M, whale >$1M). Whale-vs-retail divergence is the usual smart-money reading; buckets\n    are per published row and only Binance aggregates taker orders, so compare buckets within one\n    exchange (exchange=binance) rather than across venues.","inputSchema":{"type":"object","title":"get_cvdArguments","properties":{"symbol":{"type":"string","title":"Symbol","default":"BTCUSDT"},"minutes":{"type":"integer","title":"Minutes","default":240}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":157,"tokensAfter":157},{"name":"get_footprint","fixed":{"name":"get_footprint","description":"[measured] Footprint chart data: for each candle, taker BUY and taker SELL volume in\n    USD and the trade count at each of 30 price levels, from the archived trade streams of\n    Binance, Bybit, OKX, Bitget and Gate. Use it to see at which prices aggressive buyers\n    or sellers were absorbed; for the net flow over time by trade size use get_cvd. symbol:\n    BTCUSDT, ETHUSDT or SOLUSDT only. minutes: look-back window, 15 to 10080. step: candle\n    size in minutes, 1 to 240.","inputSchema":{"type":"object","title":"get_footprintArguments","properties":{"step":{"type":"integer","title":"Step","default":15},"symbol":{"type":"string","title":"Symbol","default":"BTCUSDT"},"minutes":{"type":"integer","title":"Minutes","default":240}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":218,"tokensAfter":218},{"name":"get_funding_arbitrage","fixed":{"name":"get_funding_arbitrage","description":"[measured] Funding carry screener on REALIZED numbers: for each coin, the venue pair a desk\n    would put on (short where funding is richest, long where it is cheapest) and what that pair\n    actually earned from funding over the last 7 and 30 days from our hourly archive, annualized;\n    positive_share_7d = share of the week's hours the pair was net positive (0.5 is a coin flip);\n    current_spread_apr = the same pair right now; mark_gap_bps = short-venue mark over long-venue\n    mark (positive","inputSchema":{"type":"object","title":"get_funding_arbitrageArguments","properties":{"limit":{"type":"integer","title":"Limit","default":40},"min_venues":{"type":"integer","title":"Min Venues","default":3}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"get_funding_dispersion","fixed":{"name":"get_funding_dispersion","description":"Coins ranked by how far funding disagrees ACROSS exchanges.\n\n    For each coin: the spread in APR points between the venue charging the most\n    and the one paying the most, plus which venue to hold the long on and which\n    to hold the short on. Every leg is annualized with its own settlement cycle\n    (1h / 4h / 8h), and the ranking uses the median rate over `window` minutes\n    rather than the latest print, which is noisy for hourly contracts.\n    ","inputSchema":{"type":"object","title":"get_funding_dispersionArguments","properties":{"limit":{"type":"integer","title":"Limit","default":40},"window":{"type":"integer","title":"Window","default":60},"min_venues":{"type":"integer","title":"Min Venues","default":6}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"get_funding_history","fixed":{"name":"get_funding_history","description":"[measured] Funding rate over time for one contract, one row per venue per time bucket:\n    ts (ms), exchange, funding_rate (per settlement interval, a fraction), mark_price and\n    funding_hours (that contract's interval: 1, 4 or 8). Annualize as rate * 8760 / funding_hours.\n    This is the LIVE predicted rate sampled over time; for the rates actually paid at each\n    settlement (2 years back) use get_funding_settlements. symbol: BASEUSDT. minutes: 5 to 20160.","inputSchema":{"type":"object","title":"get_funding_historyArguments","required":["symbol"],"properties":{"symbol":{"type":"string","title":"Symbol"},"minutes":{"type":"integer","title":"Minutes","default":1440}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"get_funding_rates","fixed":{"name":"get_funding_rates","description":"Latest perpetual funding rates and mark prices for every tracked\n    exchange/symbol pair. Positive rate = longs pay shorts.","inputSchema":{"type":"object","title":"get_funding_ratesArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":71,"tokensAfter":71},{"name":"get_funding_settlements","fixed":{"name":"get_funding_settlements","description":"Settled funding rates, one row per settlement, from Binance and Bybit\n    history — up to 730 days for any pool coin (e.g. BTCUSDT). The backtest\n    series; get_funding_history is the live 10-second archive since July 2026.","inputSchema":{"type":"object","title":"get_funding_settlementsArguments","required":["symbol"],"properties":{"days":{"type":"integer","title":"Days","default":365},"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange","default":"all"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"get_history","fixed":{"name":"get_history","description":"[measured] Historical rows as CSV, for backtests. dataset: liquidations | funding_settlements\n    (since 2024-09) | funding_hourly | open_interest_hourly | hl_positions (Hyperliquid whale\n    positions with liquidation prices). start/end are ISO dates (UTC). Without a key or on the free\n    tier only the last 24 hours are available; Pro: any 31-day window; Bot: full history. The key\n    is read from the MCP connection's X-API-Key header, or pass api_key. limit caps rows here\n    (max 5000); for ","inputSchema":{"type":"object","title":"get_historyArguments","required":["dataset"],"properties":{"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End","default":null},"limit":{"type":"integer","title":"Limit","default":500},"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start","default":null},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","default":null},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":null},"dataset":{"type":"string","title":"Dataset"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":329,"tokensAfter":329},{"name":"get_hl_account","fixed":{"name":"get_hl_account","description":"[measured] One Hyperliquid account by address: live positions (size, entry, mark,\n    liquidation price, distance to liquidation, leverage, unrealized PnL), account value, and\n    its archived position snapshots. History depth: 24 h free, 31 days Pro, everything since\n    2026-09-27 on Bot (key from the MCP connection's X-API-Key header, or api_key).","inputSchema":{"type":"object","title":"get_hl_accountArguments","required":["address"],"properties":{"address":{"type":"string","title":"Address"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":177,"tokensAfter":177},{"name":"get_hl_builder_markets","fixed":{"name":"get_hl_builder_markets","description":"[measured] Perp markets deployed on Hyperliquid by third parties (HIP-3 builder dexs):\n    equity indices, single stocks, commodities and pre-IPO names such as xyz:SP500 or xyz:GOLD.\n    For each dex: its markets (coin named dex:COIN), open interest in USD (one side), 24h\n    volume, mark price, hourly funding and its APR. These are NOT in get_open_interest or\n    get_funding_rates, which cover Hyperliquid's own crypto listing. Live from Hyperliquid,\n    cached 2 minutes. No arguments.","inputSchema":{"type":"object","title":"get_hl_builder_marketsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":177,"tokensAfter":177},{"name":"get_hl_liquidation_map","fixed":{"name":"get_hl_liquidation_map","description":"[measured, RISK AHEAD, Hyperliquid] REAL open positions on Hyperliquid binned by the\n    liquidation price the exchange itself reports: the 10,000 largest accounts plus every account\n    that traded since the reader started (~10,000 accounts, ~40-45% of venue open interest, stated\n    in covered_long_pct/covered_short_pct). Not a model. Use this for Hyperliquid; use\n    get_lighter_liquidation_map for Lighter and get_liquidation_map (modeled) for the CEXs.\n    Returns long/short notional per bin","inputSchema":{"type":"object","title":"get_hl_liquidation_mapArguments","required":["symbol"],"properties":{"range":{"type":"string","title":"Range","default":"1d"},"symbol":{"type":"string","title":"Symbol"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"get_hl_whales","fixed":{"name":"get_hl_whales","description":"[measured] Leveraged positions of the 10,000 largest Hyperliquid accounts with the\n    exchange-reported liquidation price, closest to liquidation first (sort='value' = largest\n    first). Filters: coin (BTC), side (long|short), min_usd, max_dist_pct. Each row carries the\n    account address; pass it to get_hl_account. Snapshot age is in age_s.","inputSchema":{"type":"object","title":"get_hl_whalesArguments","properties":{"coin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coin","default":null},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side","default":null},"sort":{"type":"string","title":"Sort","default":"distance"},"limit":{"type":"integer","title":"Limit","default":50},"min_usd":{"type":"number","title":"Min Usd","default":100000},"max_dist_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Dist Pct","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":255,"tokensAfter":255},{"name":"get_lighter_liquidation_map","fixed":{"name":"get_lighter_liquidation_map","description":"[measured, RISK AHEAD, Lighter] REAL open positions on Lighter (zk perp DEX; crypto plus\n    equity indices, stocks, forex, commodities) binned by Lighter's own liquidation price. Not a\n    model. Use this for Lighter; get_hl_liquidation_map for Hyperliquid; get_liquidation_map\n    (modeled) for the CEXs. Accounts are discovered from the public trade stream, so coverage\n    (covered_long_pct/covered_short_pct of venue open interest) grows with time. Returns long/short\n    notional per bin, cumul","inputSchema":{"type":"object","title":"get_lighter_liquidation_mapArguments","required":["symbol"],"properties":{"range":{"type":"string","title":"Range","default":"1d"},"symbol":{"type":"string","title":"Symbol"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"get_lighter_whales","fixed":{"name":"get_lighter_whales","description":"[measured] Leveraged positions on Lighter with the exchange-reported liquidation price,\n    closest to liquidation first (sort='value' = largest first). Filters: coin (BTC), side\n    (long|short), min_usd, max_dist_pct. address is the Lighter account index, l1_address the\n    wallet. Snapshot age is in age_s.","inputSchema":{"type":"object","title":"get_lighter_whalesArguments","properties":{"coin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coin","default":null},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side","default":null},"sort":{"type":"string","title":"Sort","default":"distance"},"limit":{"type":"integer","title":"Limit","default":50},"min_usd":{"type":"number","title":"Min Usd","default":100000},"max_dist_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Dist Pct","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":247,"tokensAfter":247},{"name":"get_liquidation_cascades","fixed":{"name":"get_liquidation_cascades","description":"[measured, PAST] Liquidation CASCADES as discrete events: bursts of liquidations detected\n    against each coin's own 7-day normal minute. Use it for \"when did forced selling snowball and\n    what did price do\"; not for totals (get_liquidations_summary), raw orders (get_liquidations)\n    or open positions at risk (*_liquidation_map). Each event: coin, which side broke, start, how\n    long it ran, total and peak-minute USD, multiple of the coin's normal minute, the mark-price\n    move during it a","inputSchema":{"type":"object","title":"get_liquidation_cascadesArguments","properties":{"hours":{"type":"integer","title":"Hours","default":168},"limit":{"type":"integer","title":"Limit","default":40}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"get_liquidation_heatmap","fixed":{"name":"get_liquidation_heatmap","description":"[modeled, RISK AHEAD, CEX, over time] The same estimated CEX map as get_liquidation_map but\n    as a time series: grid[t][b] is the estimated USD of leveraged positions with their\n    liquidation price in price bin b at time cols[t] (ms), bins[b] the bin's centre price (240\n    bins fitted to the traded range), price[t] the close. A level disappears once price trades\n    through it. Call this only to see WHEN a cluster formed and whether it survived; for the\n    current picture call get_liquidat","inputSchema":{"type":"object","title":"get_liquidation_heatmapArguments","required":["symbol"],"properties":{"range":{"type":"string","title":"Range","default":"1d"},"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange","default":"all"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"get_liquidation_map","fixed":{"name":"get_liquidation_map","description":"[modeled, RISK AHEAD, CEX, now] ESTIMATED open leveraged positions on Binance/Bybit/OKX per\n    price bin at their liquidation price, from candles and open-interest deltas (the CEXs do not\n    publish positions). Current snapshot only; for its evolution over time use\n    get_liquidation_heatmap; for REAL positions use get_hl_liquidation_map (Hyperliquid) or\n    get_lighter_liquidation_map (Lighter); for what already got liquidated use the PAST tools.\n    Returns notional per bin split by leverag","inputSchema":{"type":"object","title":"get_liquidation_mapArguments","required":["symbol"],"properties":{"range":{"type":"string","title":"Range","default":"1d"},"symbol":{"type":"string","title":"Symbol"},"exchange":{"type":"string","title":"Exchange","default":"all"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"get_liquidations","fixed":{"name":"get_liquidations","description":"[measured, PAST] Individual liquidation ORDERS that already happened (side, price, qty),\n    newest first, at most `limit` rows (max 2000). This is the raw feed: use it when you need the\n    orders themselves. For totals use get_liquidations_summary; for cascades as events use\n    get_liquidation_cascades; for where OPEN positions would be liquidated use a *_liquidation_map\n    tool. Market-wide, 500 rows is only a few minutes of a busy hour: pass `symbol` (BTCUSDT)\n    and/or `min_usd` to look ","inputSchema":{"type":"object","title":"get_liquidationsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":500},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","default":null},"min_usd":{"type":"number","title":"Min Usd","default":0},"minutes":{"type":"integer","title":"Minutes","default":60}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":249,"tokensAfter":249},{"name":"get_liquidations_summary","fixed":{"name":"get_liquidations_summary","description":"[measured, PAST] TOTALS of liquidations that already happened: rekt (USD liquidated in the\n    last 1h/4h/12h/24h, split long/short), by_symbol and by_exchange over the last `minutes`, and\n    series (30-minute buckets). The one to call for \"how much was liquidated\"; it does not return\n    individual orders (get_liquidations) or events (get_liquidation_cascades), and says nothing\n    about open positions (the *_liquidation_map tools). Totals are a floor: Binance and Bitget\n    throttle their fee","inputSchema":{"type":"object","title":"get_liquidations_summaryArguments","properties":{"minutes":{"type":"integer","title":"Minutes","default":1440}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"get_long_short_ratio","fixed":{"name":"get_long_short_ratio","description":"Latest global long/short account ratio per exchange/symbol.","inputSchema":{"type":"object","title":"get_long_short_ratioArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"get_market_brief","fixed":{"name":"get_market_brief","description":"Deterministic market brief for a perp symbol: 24h liquidations (totals,\n    by exchange), current funding + 24h extremes per venue, OI by venue with\n    1h/4h/24h changes, net position flows, modeled liquidation risk zones\n    above/below price, and top-trader positioning. Free, no LLM involved —\n    ideal input for your own reasoning.","inputSchema":{"type":"object","title":"get_market_briefArguments","properties":{"symbol":{"type":"string","title":"Symbol","default":"BTCUSDT"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"get_microstructure","fixed":{"name":"get_microstructure","description":"Cross-venue order book microstructure for BTC, ETH and SOL.\n\n    Per venue: spread in bps, immediately-executable depth in USD and the bid\n    share of it, measured over a band narrow enough that every venue's stream\n    captured it, each venue around its own mid. Also the basis - how far apart\n    venues price the same asset - plus a per-minute spread history.\n\n    Does NOT answer \"what moves price 0.5%\": the streams only carry the\n    innermost levels, so that would be extrapolation, not measu","inputSchema":{"type":"object","title":"get_microstructureArguments","properties":{"minutes":{"type":"integer","title":"Minutes","default":240}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"get_oi_board","fixed":{"name":"get_oi_board","description":"Per-venue open-interest ranking for a perp symbol (e.g. BTCUSDT): OI in\n    coins and USD, market share %, 1h/4h/24h OI change % and USD flow, and\n    OI / 24h-volume ratio per exchange, plus market totals.","inputSchema":{"type":"object","title":"get_oi_boardArguments","required":["symbol"],"properties":{"symbol":{"type":"string","title":"Symbol"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"get_open_interest","fixed":{"name":"get_open_interest","description":"Latest open interest (contracts and USD) per exchange/symbol.","inputSchema":{"type":"object","title":"get_open_interestArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":54,"tokensAfter":54},{"name":"get_open_interest_history","fixed":{"name":"get_open_interest_history","description":"[measured] Open interest over time for one contract, one row per venue per time\n    bucket: ts (ms), exchange, oi (coins, one side), oi_usd. Use it to see how positioning\n    built up or unwound; for the current snapshot with shares and 1h/4h/24h changes use\n    get_oi_board, for every contract at once get_open_interest. symbol: BASEUSDT (BTCUSDT).\n    minutes: look-back window, 5 to 20160 (14 days); snapped to a fixed set of windows.","inputSchema":{"type":"object","title":"get_open_interest_historyArguments","required":["symbol"],"properties":{"symbol":{"type":"string","title":"Symbol"},"minutes":{"type":"integer","title":"Minutes","default":240}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":199,"tokensAfter":199},{"name":"get_orderbook_heatmap","fixed":{"name":"get_orderbook_heatmap","description":"[measured] Resting limit orders over time on ONE exchange: cells of (time bucket, price\n    bucket, quantity in coins) from archived order-book snapshots, with price_min, price_max,\n    price_step and time_step (seconds) describing the grid. Shows where bid and ask walls\n    stood and when they were pulled; not liquidations (see get_liquidation_heatmap for\n    those) and not trades (get_footprint). exchange: binance | bybit | okx. symbol: BTCUSDT,\n    ETHUSDT or SOLUSDT only. minutes: 1 to 1440.","inputSchema":{"type":"object","title":"get_orderbook_heatmapArguments","required":["exchange","symbol"],"properties":{"symbol":{"type":"string","title":"Symbol"},"minutes":{"type":"integer","title":"Minutes","default":30},"exchange":{"type":"string","title":"Exchange"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"get_positioning_regime","fixed":{"name":"get_positioning_regime","description":"Per-coin positioning regime from price direction crossed with open interest.\n\n    price up + OI up = new longs; price up + OI down = short covering (a rally\n    with no new buyers); price down + OI up = new shorts; price down + OI down =\n    long flush. Returns a market summary (coins and net OI per regime) plus per\n    coin the price change, OI change and current OI over the window.\n    ","inputSchema":{"type":"object","title":"get_positioning_regimeArguments","properties":{"minutes":{"type":"integer","title":"Minutes","default":240}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"get_spoofing","fixed":{"name":"get_spoofing","description":"Order-book wall lifecycle heuristic: large levels classified as\n    active_wall / absorbed / pulled_wall / suspected_spoof based on whether\n    trades executed into them before they vanished.","inputSchema":{"type":"object","title":"get_spoofingArguments","properties":{"symbol":{"type":"string","title":"Symbol","default":"BTCUSDT"},"minutes":{"type":"integer","title":"Minutes","default":60},"exchange":{"type":"string","title":"Exchange","default":"binance"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"get_stocks","fixed":{"name":"get_stocks","description":"Crypto-related equities (COIN, MSTR, miners) and spot BTC/ETH ETF quotes:\n    price, day change %, range, volume. ~15-min delayed.","inputSchema":{"type":"object","title":"get_stocksArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":69,"tokensAfter":69},{"name":"get_token_unlocks","fixed":{"name":"get_token_unlocks","description":"Upcoming token unlock events for pool coins, nearest first: next unlock\n    timestamp and token amount per public vesting schedule.","inputSchema":{"type":"object","title":"get_token_unlocksArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":73,"tokensAfter":73},{"name":"get_tokenized_stocks","fixed":{"name":"get_tokenized_stocks","description":"[measured] Tokenized stocks, indices, ETFs, commodities, FX, rates and pre-IPO names traded as\n    PERPS on DEXs (Lighter and Hyperliquid builder markets): one row per underlying (NVDA, TSLA,\n    S&P 500, Gold, EUR/USD, Anthropic...) with every venue's mark, open interest, 24 h volume,\n    funding APR and the price gap between venues in bps. asset_class filters: equity |\n    crypto_equity | etf | index | commodity | fx | rates | preipo. Use get_hl_builder_markets for\n    the raw Hyperliquid HIP-","inputSchema":{"type":"object","title":"get_tokenized_stocksArguments","properties":{"asset_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Class","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"get_top_traders","fixed":{"name":"get_top_traders","description":"Top lead traders (OKX copy trading, public data): total PnL, win rate,\n    AUM, copiers, live open positions (pair, side, leverage, entry, uPnL) and\n    recently closed trades with realized PnL.","inputSchema":{"type":"object","title":"get_top_tradersArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"list_alerts","fixed":{"name":"list_alerts","description":"The webhook alert subscriptions that belong to the caller's API key (read-only): id,\n    type, url, filters (symbol, min_usd, x_normal, max_dist_pct) and delivery health:\n    last_status (HTTP code or error of the last delivery), fails (consecutive failures; a\n    subscription pauses itself at 20) and active. Call it to find the id for delete_alert or\n    to check why alerts stopped arriving. Needs a Pro or Bot key, from the MCP connection's\n    X-API-Key header or the api_key argument; without ","inputSchema":{"type":"object","title":"list_alertsArguments","properties":{"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"list_history_packages","fixed":{"name":"list_history_packages","description":"[measured] Monthly Parquet history packages for backtests: liquidations (11 venues), funding hourly and\n    settlements, open interest hourly, Hyperliquid and Lighter positions with liquidation prices — one file per\n    dataset per month since 2026-07 with rows, bytes and sha256. Each entry has `url` (download with the API key\n    in X-API-Key) and `available` for the caller's tier: Pro = this month and the previous one, Bot = all,\n    free = none (use get_history for the last 24 h).","inputSchema":{"type":"object","title":"list_history_packagesArguments","properties":{"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":200,"tokensAfter":200},{"name":"list_markets","fixed":{"name":"list_markets","description":"[measured] What exists: every venue we track and, for each, the contracts with live open\n    interest right now (BASEUSDT symbols), plus the top-100 coin pool. Call this first when unsure\n    which symbol or exchange string another tool accepts.","inputSchema":{"type":"object","title":"list_marketsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102}],"toolsChanged":42,"tokensSaved":0,"todo":[{"tool":"create_alert","params":["url","type","symbol","api_key","min_usd","x_normal","max_dist_pct"]},{"tool":"delete_alert","params":["id","api_key"]},{"tool":"explain_market","params":["symbol","question"]},{"tool":"get_api_key","params":["email"]},{"tool":"get_cvd","params":["symbol","minutes"]},{"tool":"get_footprint","params":["step","symbol","minutes"]},{"tool":"get_funding_arbitrage","params":["limit","min_venues"]},{"tool":"get_funding_dispersion","params":["limit","window","min_venues"]},{"tool":"get_funding_history","params":["symbol","minutes"]},{"tool":"get_funding_settlements","params":["days","symbol","exchange"]},{"tool":"get_history","params":["end","limit","start","symbol","api_key","dataset","exchange"]},{"tool":"get_hl_account","params":["address","api_key"]},{"tool":"get_hl_liquidation_map","params":["range","symbol"]},{"tool":"get_hl_whales","params":["coin","side","sort","limit","min_usd","max_dist_pct"]},{"tool":"get_lighter_liquidation_map","params":["range","symbol"]},{"tool":"get_lighter_whales","params":["coin","side","sort","limit","min_usd","max_dist_pct"]},{"tool":"get_liquidation_cascades","params":["hours","limit"]},{"tool":"get_liquidation_heatmap","params":["range","symbol","exchange"]},{"tool":"get_liquidation_map","params":["range","symbol","exchange"]},{"tool":"get_liquidations","params":["limit","symbol","min_usd","minutes"]},{"tool":"get_liquidations_summary","params":["minutes"]},{"tool":"get_market_brief","params":["symbol"]},{"tool":"get_microstructure","params":["minutes"]},{"tool":"get_oi_board","params":["symbol"]},{"tool":"get_open_interest_history","params":["symbol","minutes"]},{"tool":"get_orderbook_heatmap","params":["symbol","minutes","exchange"]},{"tool":"get_positioning_regime","params":["minutes"]},{"tool":"get_spoofing","params":["symbol","minutes","exchange"]},{"tool":"get_tokenized_stocks","params":["asset_class"]},{"tool":"list_alerts","params":["api_key"]},{"tool":"list_history_packages","params":["api_key"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}