v0.2.0 — 3 FREE TOOLS — BINANCE ONLY

The Carry Trade Lifecycle
for AI Agents

MCP server covering a Binance Portfolio Margin carry trade end to end — long spot, short UM or CM perpetual. Public market data only — no execution, no custody, no account access.

terminal
scan_carry_opportunities --top-n 20 --windows 7,14 --rank trimmed_mean_daily_pct
# candidates[0] — values recorded from Binance on 2026-09-06T19:42:24Z
{
  "market": { "perp_kind": "um", "spot_symbol": "BTCUSDT", "perp_symbol": "BTCUSDT" },
  "current_funding": {
    "funding_rate_pct": "0.006506", "interval_hours": 8, "interval_source": "funding_info",
    "daily_equivalent_rate_pct": "0.019518", "is_estimate": true
  },
  "history_windows": [ { "window_days": 7, }, { "window_days": 14, } ],
  "liquidity_24h": { "spot": { }, "perp": { } }
}

A funding rate is an estimate until it settles. Past statistics are observations, not a forecast.

A Model Context Protocol server that measures one specific trade: buy spot on Binance, short the matching perpetual in a Portfolio Margin account, and hold to collect funding. It reports what the market and your own ledger actually say — the decision stays with you.

Discovery Without a Watchlist

Rank by real 24h spot volume instead of naming symbols yourself. UM and CM count separately, and a listing too new to cover the window is excluded — never padded to fill the sample.

Decimal-Exact, No Floats

40-digit decimals, HALF_EVEN rounding, Binance strings never parsed into doubles. Inverse CM contracts use a reciprocal-weighted average price — an arithmetic mean of fill prices is simply wrong there.

Stateless by Design

No keys, no account connection, nothing stored between calls. You send the actual balances, remaining contracts, capital contributed and settled cashflows; it values them and quotes the exit.

01
scan_carry_opportunities Free

Find candidates in a universe you declare. Returns the current funding estimate, daily funding statistics over every window you ask for, and 24h liquidity for both legs.

02
evaluate_carry_entry Free

Walk both order books at your actual size. Returns fees at your declared rates, the base you would really end up holding, and conditional daily carry at current or historical rates.

03
evaluate_carry_position Free

Value the snapshot you send, quote the exit leg by leg, and reconcile the final result — including the coin balance a CM settlement leaves behind after the short is closed.

Input and output JSON Schemas are published through MCP tools/list. Errors return isError with a machine-readable code — missing or malformed data fails loudly instead of defaulting.

1
Discover — declare the universe, contract kinds, history windows and ranking, then scan.
2
Evaluate the entry — pick the exact market and both leg sizes, declare your four open/close fee rates and daily financing cost.
3
You execute — the server places nothing. Partial fills are normal and expected.
4
Monitor — send a full snapshot after every fill or settlement, bump the revision, and discard responses that answer a stale one.
5
Exit and reconcile — keep reporting balances and settlement completeness until the contract is flat and nothing is left unaccounted.
Why your actual state, not an opened_at timestamp

A carry trade rarely matches its plan. One leg fills partially, a CM funding settlement pays in coin, fees come out of a third asset. Reconstructing that from an entry price and a date silently invents numbers.

So the position call takes the balances you really hold, the contracts really left, the capital really contributed and the cashflows really settled. P&L then comes from an asset identity rather than a guess:

trade_value = Σ(net asset × price) + unrealized perp P&L
trade_pnl   = trade_value − net_contributed_value
Cashflow categories explain the change. They are never added on top of it.
What it covers
+
Binance, same venue — both legs on one exchange, one Portfolio Margin unified account
+
Long spot + short UM perp — linear contract, settled in the quote asset
+
Long spot + short CM perp — inverse contract, settled in the base coin
+
Public REST market data — spot, UM and CM, with the source route and observed time on every value
What it deliberately does not do
No orders, no keys, no custody — it cannot reach your account even if asked
No cross-exchange, no other venues — a spread between two exchanges is a different trade with different risks
No thresholds, scores or advice — it will not tell you that something is "worth entering"
No forecast — historical funding is an observation; nothing here promises it continues

The split is intentional. Measurement — multi-window statistics, trimmed means, whether mean and median even agree on the sign — belongs in the interface, because it costs nothing extra and hides no assumption. Entry rules, position sizing and hysteresis are yours: they encode risk tolerance a data server has no business guessing.

Remote

Connect any MCP client to the hosted endpoint. No setup needed.

https://mcp.0xcarry.com

Claude Desktop Config

{
  "mcpServers": {
    "0xcarry": {
      "url": "https://mcp.0xcarry.com"
    }
  }
}

Allow at least 120 seconds for a tool call. A scan has an 80 second deadline and each evaluation 30 seconds; a client timeout or a dropped connection cancels the upstream work rather than leaving it running.