# ensotrade MCP server

Live crypto data: why a coin or the market is moving (funding, OI, positioning, flow).

## Links
- Registry page: https://www.getdrio.com/mcp/tech-ensotrade-ensotrade
- Repository: https://github.com/smithshsh/enso-fundamentals
- Website: https://www.ensotrade.tech

## Install
- Endpoint: https://www.ensotrade.tech/mcp/
- Auth: Not captured

## Setup notes
- Remote endpoint: https://www.ensotrade.tech/mcp/

## Tools
- explain_move - Explain WHY a crypto coin is up or down right now, from live order-flow and positioning.
Use this for "why is bitcoin down", "why is BTC/ETH/SOL pumping or dumping", or any question
about the CAUSE of a crypto move. Returns a ready-to-quote sentence plus structured signals
(price, regime, funding, open interest, basis). `coin` = ticker like 'btc', 'eth', 'sol'.
Pass an EnsoTrade Pro API key as a Bearer token for real-time data (public calls are
15-minute delayed) — generate one at ensotrade.tech under Account -> Developer Access. Endpoint: https://www.ensotrade.tech/mcp/
- get_funding - Current perpetual funding rate and crowding read for a crypto coin (are longs or shorts
paying / crowded). Use for "what's the funding rate on <coin>", "is funding positive".
`coin` = ticker e.g. 'btc'. Bearer-auth with a Pro API key for real-time data. Endpoint: https://www.ensotrade.tech/mcp/
- get_order_flow - Positioning regime + open interest + recent taker imbalance for a crypto coin — whether a
move is new longs, short covering, fresh shorts, or deleveraging. Use for "crypto order flow",
"open interest change", "is this a short squeeze". `coin` = ticker e.g. 'btc'. Bearer-auth
with a Pro API key for real-time data. Endpoint: https://www.ensotrade.tech/mcp/
- market_snapshot - One combined live snapshot for a crypto coin: price, 24h change, funding, open interest,
perp basis, positioning regime. `coin` = ticker e.g. 'btc'. Bearer-auth with a Pro API key
for real-time data plus the validated funding-momentum directional signal (public calls get
a 15-minute-delayed price and no directional call). Endpoint: https://www.ensotrade.tech/mcp/
- top_movers - Top gaining and losing crypto perpetuals right now, ranked across the whole market. Use for
"top crypto movers", "biggest crypto gainers and losers today". Endpoint: https://www.ensotrade.tech/mcp/
- perp_dashboard - Full perp dashboard for a crypto coin: mark price, index price, funding rate + next
funding time, open interest, 24h high/low/volume. Requires an EnsoTrade Pro API key
(Bearer auth) — generate one at ensotrade.tech, Account -> Developer Access.
`coin` = ticker e.g. 'btc'. Endpoint: https://www.ensotrade.tech/mcp/
- options_chain - Full crypto options chain for a coin: strikes, mark IV, greeks, and the Black-Scholes
fair-value gap per contract. Requires an EnsoTrade Pro API key. `coin` = underlying
ticker e.g. 'btc'. Endpoint: https://www.ensotrade.tech/mcp/
- carry_pressure - Toxic Carry Score (cost-of-leverage from funding, positive = bullish) + Open Interest
Quality Index (is the price trend agreeing with new positioning, i.e. healthy, or against
it, i.e. forced flow / reversal risk). Requires an EnsoTrade Pro API key. `coin` = ticker
e.g. 'btc'. See the `market_glossary` resource for how to read these numbers. Endpoint: https://www.ensotrade.tech/mcp/
- market_rotation - Cross-sectional momentum ranking across the whole crypto perp universe right now —
which coins are leading (top percentile) vs lagging (bottom percentile). Use this FIRST
when asked to "find a coin" or "what should I look at" before drilling into one with the
other tools. Requires an EnsoTrade Pro API key. Endpoint: https://www.ensotrade.tech/mcp/
- fetch_series - Raw time series for one field on one symbol, oldest-first, capped at 1000/1500 points.
Use this to explore what a field actually looks like before wiring it into test_formula.
Requires an EnsoTrade Pro API key. `symbol` e.g. 'SOL' or 'SOLUSDT'.

`timeframe="scalp"` (default): WDE order-flow microstructure, second-scale. `field` is one
of mid, spread_bp, signal, toxicity, cost_bp, ret_1s_bp, ret_5s_bp, ret_30s_bp, ret_60s_bp
(top-level), or ofi1, ofi5, dofi, qi, mp, obi, tf1, tf5, tf30, run, inten, vpin, wall,
bid_pr, ask_pr, sigma1m (order-flow features). `hours` max 168. Coverage is uneven and only
covers whatever windows the WDE panel was actively open for a symbol — SOL and BNB have the
most logged history, other symbols may return no rows for a recent window; widen `hours` or
try a different symbol if so.

`timeframe` = "15m", "1h", "4h", or "1d" for day/swing work: real OKX perp candles instead
of order-flow logs (always available, not dependent on the WDE panel being open). `field`
is one of open, high, low, close, volume, ret_pct (bar-over-bar % return), range_pct
(bar high-low as % of close), body_pct (close-open as % of open), rsi14, vol_ratio (volume
vs its 20-bar average). `hours` max ~1500 bars worth (e.g. up to ~62 days for "1h"). Endpoint: https://www.ensotrade.tech/mcp/
- test_formula - Invent a formula over EnsoTrade's data, and get back whether it actually predicts
forward returns — validated on a holdout split, not just fit to the whole window.
`formula` is a math expression combining any of the fields listed in fetch_series'
docstring (for the same `timeframe`) with +, -, *, /, **, %, unary +/-, and abs/min/max/
sqrt/log/log1p/exp/sign/clip/mean/std, e.g. "ofi1 * vpin - dofi / 2" or
"sign(qi) * sqrt(abs(obi))". No other Python is executed — this runs through a restricted,
default-deny expression evaluator, not eval().

`timeframe="scalp"` (default, WDE order-flow, second-scale): `horizon` is which forward
return to correlate against — ret_1s_bp, ret_5s_bp, ret_30s_bp, or ret_60s_bp. `hours` max
720 (30 days).

`timeframe` = "15m"/"1h"/"4h"/"1d" for day/swing strategies (real OKX candles, always
available): use `horizon_bars` instead of `horizon` — the forward % return N candles
ahead (e.g. horizon_bars=4 on timeframe="1h" = predicting the move 4 hours out). `hours`
max ~1500 bars worth; a small `hours` still fetches at least 150 bars (the minimum needed
for a meaningful 70/30 split) rather than failing outright, so the actual window tested
can be wider than requested for a small `hours` value.

Either mode needs enough rows that a 70/30 split leaves >=150 total. Returns train (first
70% chronologically) and holdout (untouched final 30%) Spearman/Pearson correlations plus
a verdict: 'validated' only if holdout |spearman| >= 0.15 AND same-signed as train — this
guards against keeping a formula that only looked good by chance on one slice of data.

ALSO returns, computed on the holdout portion only:
- `net`: risk-adjusted performance AFTER trading costs — sharpe, sortino,
  max_drawdown_pct, calmar, ann_return_pct, ann_volatility_pct, win_rate_pct,
  profit_factor. Sharpe is annualized and corrected for overlapping horizons
  (a horizon spanning N bars sampled every bar is subsampled to non-overlapping
  periods first, which removes the ~sqrt(N) inflation naive Sharpe would show).
- `gross`: the same metrics before costs, so the cost drag is visible.
- `costs`: fee/slippage assumptions, position_changes (turnover), total_cost_pct.
  Costs are charged on position CHANGES only, not per bar — holding one side is
  cheap, flipping every bar is not.
- `cost_verdict`: survives_costs / marginal_after_costs / killed_by_costs / unknown.
  IMPORTANT: `verdict` is a correlation test and says nothing about profitability;
  a formula can be 'validated' and still be killed_by_costs. Check both.
- `walk_forward`: the same formula re-scored on 5 consecutive time blocks, with
  consistency_pct (share of blocks agreeing on direction) and a `stable` flag.
  An edge that passes one holdout but flips sign between blocks is usually noise.

`fee_bp`/`slippage_bp` are per side, defaulting to 5bp taker + 2bp slippage; raise
them for illiquid coins or a worse fee tier. Iterate: call this repeatedly with
different formulas, keep what validates AND survives costs, discard what doesn't.
Requires an EnsoTrade Pro API key. Endpoint: https://www.ensotrade.tech/mcp/
- save_strategy - Save a formula as a strategy IF it currently validates. Re-runs test_formula itself
server-side first — never trusts a stale claim from an earlier call, since data moves —
and only saves when that fresh verdict is 'validated'. Saved strategies appear in the
user's own EnsoTrade dashboard under Strategies; they're private to that account, not
published or shared with anyone else. Same parameters as test_formula: `symbol`/`formula`
as usual, `timeframe`="scalp" (use `horizon`) or "15m"/"1h"/"4h"/"1d" (use `horizon_bars`),
`hours` = history window tested. `label` is an optional short name for the strategy (e.g.
"BTC 1h RSI reversion"). Requires an EnsoTrade Pro API key. Endpoint: https://www.ensotrade.tech/mcp/

## Resources
- ensotrade://glossary - How to read every non-obvious number EnsoTrade's tools return. MIME type: text/plain

## Prompts
Not captured

## Metadata
- Owner: tech.ensotrade
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jun 23, 2026
- Source: https://registry.modelcontextprotocol.io
