{"serverId":"mcp-registry/tech.ensotrade/ensotrade","tools":[{"name":"execution_window","fixed":{"name":"execution_window","description":"When during the day crypto is cheapest to execute into, as a session-level profile pooled\nacross the coin universe. Use for \"what time of day should I trade\", \"when is crypto most\nliquid\", \"best time to execute a large crypto order\". Returns four UTC session blocks with a\nrelative execution-cost number each (lower = cheaper), measured as Amihud illiquidity\n(|hourly return| / hourly quote volume) over ~62 days of hourly candles.\n\nIMPORTANT when quoting this: the effect is WEAK BUT STABLE — roughl","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Execution Window"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":176},{"name":"explain_move","fixed":{"name":"explain_move","description":"Explain WHY a crypto coin is up or down right now, from live order-flow and positioning.\nUse this for \"why is bitcoin down\", \"why is BTC/ETH/SOL pumping or dumping\", or any question\nabout the CAUSE of a crypto move. Returns a ready-to-quote sentence plus structured signals\n(price, regime, funding, open interest, basis). `coin` = ticker like 'btc', 'eth', 'sol'.\nPass an EnsoTrade Pro API key as a Bearer token for real-time data (public calls are\n15-minute delayed) — generate one at ensotrade.tech","inputSchema":{"type":"object","required":["coin"],"properties":{"coin":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Explain Move"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":187,"tokensAfter":187},{"name":"fetch_series","fixed":{"name":"fetch_series","description":"Raw time series for one field on one symbol, oldest-first, capped at 1000/1500 points.\nUse this to explore what a field actually looks like before wiring it into test_formula.\nRequires an EnsoTrade Pro API key. `symbol` e.g. 'SOL' or 'SOLUSDT'.\n\n`timeframe=\"scalp\"` (default): WDE order-flow microstructure, second-scale. `field` is one\nof mid, spread_bp, signal, toxicity, cost_bp, ret_1s_bp, ret_5s_bp, ret_30s_bp, ret_60s_bp\n(top-level), or ofi1, ofi5, dofi, qi, mp, obi, tf1, tf5, tf30, run, inte","inputSchema":{"type":"object","required":["symbol","field"],"properties":{"field":{"type":"string"},"hours":{"type":"number","default":6},"symbol":{"type":"string"},"timeframe":{"type":"string","default":"scalp"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Fetch Series"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":221,"tokensAfter":221},{"name":"get_funding","fixed":{"name":"get_funding","description":"Current perpetual funding rate and crowding read for a crypto coin (are longs or shorts\npaying / crowded). Use for \"what's the funding rate on <coin>\", \"is funding positive\".\n`coin` = ticker e.g. 'btc'. Bearer-auth with a Pro API key for real-time data.","inputSchema":{"type":"object","required":["coin"],"properties":{"coin":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Funding"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"get_order_flow","fixed":{"name":"get_order_flow","description":"Positioning regime + open interest + recent taker imbalance for a crypto coin — whether a\nmove is new longs, short covering, fresh shorts, or deleveraging. Use for \"crypto order flow\",\n\"open interest change\", \"is this a short squeeze\". `coin` = ticker e.g. 'btc'. Bearer-auth\nwith a Pro API key for real-time data.","inputSchema":{"type":"object","required":["coin"],"properties":{"coin":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Order Flow"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":135,"tokensAfter":135},{"name":"post_map","fixed":{"name":"post_map","description":"Universe-wide maker/taker table: for each liquid crypto perp, the best venue to post on and\nthe round-trip prize, sorted widest-first. Use for \"where is being passive worth the most\",\n\"which coins should I be quoting rather than taking\", \"rank my book by spread capture\".\n\nSame honesty requirement as post_value and it is not optional: these are prizes CONDITIONAL ON\nBEING FILLED. No fill probability is estimated anywhere in the response. Say so.\n\n`coins` = optional comma-separated list (default: ","inputSchema":{"type":"object","properties":{"side":{"type":"string","default":"buy"},"coins":{"type":"string","default":""},"limit":{"type":"integer","default":20},"notional_usd":{"type":"number","default":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Post Map"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"post_value","fixed":{"name":"post_value","description":"What POSTING a resting order is worth versus CROSSING the spread, per venue, for a crypto\nperp. Use for \"should I use a limit order or market order\", \"what does paying the spread cost\nme\", \"which venue should I quote on\", \"is it worth being passive here\", \"maker vs taker\".\n\nReturns per venue: the current spread in bp, taker and maker fee, the value of posting per\nside, and the round trip (2x, because a position is opened and closed). Ranked by posting\nvalue. Pass `notional_usd` to price the cros","inputSchema":{"type":"object","required":["coin"],"properties":{"coin":{"type":"string"},"side":{"type":"string","default":"buy"},"notional_usd":{"type":"number","default":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Post Value"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"route_order","fixed":{"name":"route_order","description":"Cheapest way to fill a crypto perp order across multiple venues, and what that saves\nversus using the single best venue. Merges every order-book level from Binance, Bybit,\nBitget, Hyperliquid, OKX and Gate into one list ordered by FEE-ADJUSTED price and walks it\nuntil filled. Use for \"how should I split this order\", \"what's the cheapest venue to buy\n$2M of SOL\", \"how much would routing save me\". Returns the per-venue allocation, the\nblended price, the best single venue, and the saving in bp and ","inputSchema":{"type":"object","required":["coin"],"properties":{"coin":{"type":"string"},"side":{"type":"string","default":"buy"},"venues":{"type":"string","default":""},"notional_usd":{"type":"number","default":1000000}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Route Order"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":224,"tokensAfter":224},{"name":"top_movers","fixed":{"name":"top_movers","description":"Top gaining and losing crypto perpetuals right now, ranked across the whole market. Use for\n\"top crypto movers\", \"biggest crypto gainers and losers today\".","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Top Movers"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88}],"toolsChanged":9,"tokensSaved":0,"todo":[{"tool":"carry_pressure","params":["coin"]},{"tool":"currency_leg","params":["coin","side","turns","notional_usd"]},{"tool":"exit_capacity","params":["coin","position_usd"]},{"tool":"explain_move","params":["coin"]},{"tool":"fetch_series","params":["field","hours","symbol","timeframe"]},{"tool":"get_funding","params":["coin"]},{"tool":"get_order_flow","params":["coin"]},{"tool":"leg_rates","params":["notional_usd"]},{"tool":"market_rotation","params":["limit"]},{"tool":"market_snapshot","params":["coin"]},{"tool":"mass_map","params":["coins","limit","venues","impact_pct","venue_class"]},{"tool":"mass_scan","params":["coin","venues","impact_pct","venue_class"]},{"tool":"options_chain","params":["coin"]},{"tool":"perp_dashboard","params":["coin"]},{"tool":"position_limits","params":["coins","limit","participation"]},{"tool":"post_map","params":["side","coins","limit","notional_usd"]},{"tool":"post_value","params":["coin","side","notional_usd"]},{"tool":"route_order","params":["coin","side","venues","notional_usd"]},{"tool":"save_strategy","params":["hours","label","symbol","formula","horizon","timeframe","horizon_bars"]},{"tool":"test_formula","params":["hours","fee_bp","symbol","formula","horizon","timeframe","slippage_bp","horizon_bars"]},{"tool":"top_movers","params":["limit"]}],"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."}