v0.4.0 · cexagent · MIT open source

Gross spread is a lie.
We show you the NET.

Every other funding scanner hands you a gross spread and calls it done. Reality: $10k on BTC between HL (10.9%/yr) and Paradex (6.3%/yr) held 24h shows +$1.26 gross but costs $19 in fees — NET loss $18. We model round-trip taker fees across 9 venues and tell you the break-even hold time. No one else does.

Install in 30 seconds
stdio MCP · Node 20+ · zero user data
Why it exists

The first funding scanner with a judgment layer.

01
NET, not gross
estimate_full_cost(symbol, size, hold_hours) → gross, round-trip taker fees per venue, NET USD, break-even hours. A 4.6%/yr spread can be a NET loss — and you need to see that BEFORE opening the trade.
02
9 venues, one call
HL + Binance + Bybit + OKX + dYdX + Drift + Vertex + Paradex + Aevo. kukapay covers CEX only. Coinglass is a web dashboard at $29/mo. We're a free MCP call inside your agent.
03
Historical percentile
Is this spread extreme or just normal? historical_spread_context ranks the current spread against 30 days of history (p90, p99). A 5%/yr 99th-percentile spread beats a 20%/yr spread that's been there for weeks.
Venue coverage

9 live, 2 on deck.

Each venue wraps its own rate limit and auth story. We normalize all funding periods to annual %, so 'HL 1h vs Binance 8h' is no longer a trap.

Hyperliquidlive
  • 1h funding
Binance USDT-Mlive
  • 8h funding
Bybit linearlive
  • 8h funding
OKX SWAPlive
  • 8h funding
dYdX v4live
  • 1h funding
Driftlive
  • 1h funding
Vertexlive
  • 1h funding
Paradexlive
  • 8h funding
Aevolive
  • 1h funding
GMX v2soon
  • borrow-style
Lightersoon
  • 1h funding
Tools

7 tools, 4 of them judgment-layer.

T
estimate_full_cost()
THE KEY ONE. Input symbol + size + hold window, get NET PnL after round-trip taker fees per venue. Returns gross, fees, NET USD, and break-even hours. Answers 'will I actually make money on this arb'.
T
detect_funding_anomalies()
Scan 9 venues × 600+ symbols for extremes. Returns single-side extremes (crazy carry on one venue), widest cross-venue spreads, and widest coverage symbols (best arb liquidity).
T
historical_spread_context()
Pull 30d of HL + Binance funding history, percentile-rank the current spread. Tells you if 'today's 4.6%' is 50th or 99th percentile.
T
funding_schedule()
Next funding time on each venue for a symbol. Enter right before a CEX 8h stamp on the receiving side = lump-sum payout in 8h.
T
scan_funding_diff()
Sweep every venue, return every opportunity above a spread threshold. Sorted by annual %.
T
get_pair_funding()
Show all venues' current funding for one symbol. Quick sanity check before you trade.
T
estimate_arb_pnl()
For a symbol + size, estimate GROSS expected PnL at 8h / 24h / 7d / 30d / annual horizons (no fees). Use estimate_full_cost instead for the real answer.
Install

Paste one line. Restart. Done.

Runs locally as a subprocess of your agent. Your requests hit exchange APIs directly — nothing routes through our servers.

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "funding-arb-scanner": {
      "command": "npx",
      "args": ["@cexagent/funding-arb-scanner"]
    }
  }
}
Privacy

Zero backend. Zero data.

privacy_policy.txt

The MCP server is a subprocess of your agent. We don't run a backend. We see zero requests. No accounts, no login, no telemetry, nothing to leak. Source on GitHub, MIT.