Crypto funding-rate arbitrage across 50 exchanges, net of fees and order-book slippage. Read-only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. "Bearer <your AfterFees Pro token>" for your own size, every tool and Pro limits. Without it: the anonymous tier.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Spot or perp against a dated future held to delivery, on one exchange or across two (perp on one, future on another), and two same-day futures on different exchanges: net to expiry after fees and slippage at your size, net APR, basis APR, max size, tier and reasons.
Coin (optional)
same exchange or cross-exchange rows only (optional)
Position size per side in USD (default 10000)
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http afterfees https://afterfees.xyz/mcp
Headers
Authorization (optional, not in the config above): Optional. "Bearer <your AfterFees Pro token>" for your own size, every tool and Pro limits. Without it: the anonymous tier.Spot or perp against a dated future held to delivery, on one exchange or across two (perp on one, future on another), and two same-day futures on different exchanges: net to expiry after fees and slippage at your size, net APR, basis APR, max size, tier and reasons.
| Argument | Type | Description |
|---|---|---|
| base | string | Coin (optional) |
| limit | integer | |
| scope | string | same exchange or cross-exchange rows only (optional) |
| notional | number | Position size per side in USD (default 10000) |
| actionable_only | boolean |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Coin (optional)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"scope": {
"enum": [
"same",
"cross"
],
"type": "string",
"description": "same exchange or cross-exchange rows only (optional)"
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"actionable_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}Ranked funding-rate arbitrage pairs (long one market, short another) with the net result after taker fees and order-book slippage at your size, max size, breakeven, settled 7-day replay, tier (actionable / watch) and reasons.
| Argument | Type | Description |
|---|---|---|
| base | string | Only this coin (optional) |
| mode | string | perp = perp vs perp, spot = buy spot + short perp, rev = borrow-and-sell spot + long perp |
| limit | integer | |
| notional | number | Position size per side in USD (default 10000) |
| holding_hours | number | Holding period in hours (default 168 = 7 days) |
| actionable_only | boolean | Only pairs that pass every check right now (live books, positive net, capacity) |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Only this coin (optional)"
},
"mode": {
"enum": [
"all",
"perp",
"spot",
"rev"
],
"type": "string",
"default": "all",
"description": "perp = perp vs perp, spot = buy spot + short perp, rev = borrow-and-sell spot + long perp"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"holding_hours": {
"type": "number",
"default": 168,
"maximum": 2160,
"minimum": 1,
"description": "Holding period in hours (default 168 = 7 days)"
},
"actionable_only": {
"type": "boolean",
"default": true,
"description": "Only pairs that pass every check right now (live books, positive net, capacity)"
}
},
"additionalProperties": false
}Lock funding on Boros against a delivery future of the same maturity: implied APR vs basis APR, net after fees and slippage at your size.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| notional | number | Position size per side in USD (default 10000) |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
}
},
"additionalProperties": false
}Locked net (income) or cost APR on Pendle Boros at an implied APR you give, after the taker and settlement fees and the entry cost, its advantage over a floating APR you expect and the break-even floating rate. Percent inputs.
| Argument | Type | Description |
|---|---|---|
| days* | number | |
| side | string | |
| notional | number | Position size per side in USD (default 10000) |
| rate_pct* | number | |
| entry_usd | number | |
| taker_pct | number | |
| settle_pct | number | |
| floating_pct | number |
{
"type": "object",
"required": [
"rate_pct",
"days"
],
"properties": {
"days": {
"type": "number",
"maximum": 730,
"minimum": 0.1
},
"side": {
"enum": [
"income",
"cost"
],
"type": "string",
"default": "income"
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"rate_pct": {
"type": "number"
},
"entry_usd": {
"type": "number",
"default": 1.5
},
"taker_pct": {
"type": "number",
"default": 0.05
},
"settle_pct": {
"type": "number",
"default": 0.1
},
"floating_pct": {
"type": "number"
}
},
"additionalProperties": false
}Detail of one Boros market (id from fixed_vs_floating): fixed rate at your size net of fees, floating benchmarks, advantage, win rate, capacity, reasons.
| Argument | Type | Description |
|---|---|---|
| side | string | |
| notional | number | Position size per side in USD (default 10000) |
| market_id* | integer |
{
"type": "object",
"required": [
"market_id"
],
"properties": {
"side": {
"enum": [
"short",
"long"
],
"type": "string"
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"market_id": {
"type": "integer"
}
},
"additionalProperties": false
}Margin borrow rates per coin and exchange (VIP0, current and 24 h / 7 d averages, limits, inventory) with the most negative perp funding: the two halves of a reverse spot-perp carry.
| Argument | Type | Description |
|---|---|---|
| base | string | Coin (optional) |
| limit | integer |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Coin (optional)"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}Funding rate of one coin on every exchange (rate, interval, APR, predicted, OI, volume, settled 7-day sum) plus its best pairs, net after fees and slippage at your size.
| Argument | Type | Description |
|---|---|---|
| base* | string | Coin or ticker, e.g. BTC, ETH, SOL |
| notional | number | Position size per side in USD (default 10000) |
{
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"type": "string",
"description": "Coin or ticker, e.g. BTC, ETH, SOL"
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
}
},
"additionalProperties": false
}Coins with a perp on two or more exchanges: exchange count, open interest, highest and lowest funding APR and the best after-fee pair.
| Argument | Type | Description |
|---|---|---|
| group | string | |
| limit | integer |
{
"type": "object",
"required": [],
"properties": {
"group": {
"enum": [
"all",
"crypto",
"equity",
"commodity",
"index",
"fx"
],
"type": "string",
"default": "all"
},
"limit": {
"type": "integer",
"default": 30,
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
}Tokens our exchanges list with a verified contract on Ethereum, BNB Chain, Base, Arbitrum or Solana whose DEX price is more than 1% away: net at $1k / $5k / $10k after aggregator price impact, swap gas, the token transfer gas and the exchange's withdrawal fee, status and reasons. Pro. Needs a Pro API token (Authorization: Bearer arb_…); not available on the anonymous tier.
| Argument | Type | Description |
|---|---|---|
| base | string | Token (optional) |
| limit | integer |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Token (optional)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}One exchange: fees and their source, funding intervals, open interest, volume, highest and lowest funding and its best after-fee pairs.
| Argument | Type | Description |
|---|---|---|
| venue* | string | exchange id, e.g. binance |
{
"type": "object",
"required": [
"venue"
],
"properties": {
"venue": {
"type": "string",
"description": "exchange id, e.g. binance"
}
},
"additionalProperties": false
}Every exchange AfterFees reads: kind, fully calculated or watch-only, status, markets, taker / maker fee, open interest, 24 h volume.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Taker fee + order-book slippage to buy or sell a given USD size of one coin on every exchange (perps and spot), cheapest first.
| Argument | Type | Description |
|---|---|---|
| base* | string | Coin or ticker, e.g. BTC, ETH, SOL |
| size_usd | number |
{
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"type": "string",
"description": "Coin or ticker, e.g. BTC, ETH, SOL"
},
"size_usd": {
"type": "number",
"default": 100000,
"maximum": 50000000,
"minimum": 100
}
},
"additionalProperties": false
}Pendle Boros markets: the fixed funding rate you can lock (net of Boros fees and fill at your size) against the term-matched floating benchmark, advantage, win rate, capacity. side=short locks an income, side=long locks a cost.
| Argument | Type | Description |
|---|---|---|
| base | string | Coin (optional) |
| side | string | |
| limit | integer | |
| notional | number | Position size per side in USD (default 10000) |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Coin (optional)"
},
"side": {
"enum": [
"short",
"long"
],
"type": "string",
"default": "short"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
}
},
"additionalProperties": false
}Current perpetual funding rates (gross, before costs). With base: that coin on every exchange, highest first. Without: the top N markets by absolute APR (OI filter applies).
| Argument | Type | Description |
|---|---|---|
| base | string | Coin (optional) |
| limit | integer | |
| min_oi_usd | number | Skip markets with less open interest (top-N mode only) |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Coin (optional)"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"min_oi_usd": {
"type": "number",
"default": 100000,
"minimum": 0,
"description": "Skip markets with less open interest (top-N mode only)"
}
},
"additionalProperties": false
}Net after fees and slippage of one live pair held 8 h, 1 d, 3 d, 7 d and 30 d, optionally with your own assumed funding rate per leg (percent per funding period, keyed by instrument_id).
| Argument | Type | Description |
|---|---|---|
| notional | number | Position size per side in USD (default 10000) |
| pair_key* | string | |
| assumed_rates_pct | object | {instrument_id: rate per period in %} (optional) |
{
"type": "object",
"required": [
"pair_key"
],
"properties": {
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"pair_key": {
"type": "string"
},
"assumed_rates_pct": {
"type": "object",
"description": "{instrument_id: rate per period in %} (optional)",
"additionalProperties": {
"type": "number"
}
}
},
"additionalProperties": false
}Net, net APR, breakeven and funding-halved case for two legs you describe (no live data): each leg {side: long|short, rate_pct per period, interval_hours, taker_bps, first_in_hours?}.
| Argument | Type | Description |
|---|---|---|
| legs* | array | |
| leverage | number | |
| notional | number | Position size per side in USD (default 10000) |
| slippage_bps | number | |
| holding_hours | number | Holding period in hours (default 168 = 7 days) |
{
"type": "object",
"required": [
"legs"
],
"properties": {
"legs": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 2,
"minItems": 2
},
"leverage": {
"type": "number",
"maximum": 100,
"minimum": 1
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"slippage_bps": {
"type": "number",
"maximum": 500,
"minimum": 0
},
"holding_hours": {
"type": "number",
"default": 168,
"maximum": 2160,
"minimum": 1,
"description": "Holding period in hours (default 168 = 7 days)"
}
},
"additionalProperties": false
}Your positions across the read-only exchange keys connected to your AfterFees account, grouped into hedges: delta drift, distance to liquidation, funding received, issues. Needs a Pro account token; AfterFees only accepts read-only keys. Needs a Pro API token (Authorization: Bearer arb_…); not available on the anonymous tier.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}The two orders to place by hand for one pair: action, exchange, symbol, quantity in the exchange's own unit (contracts where one contract is not one coin), notional, assumed leverage and a link to each contract's trading page (no referral parameters). AfterFees never trades.
| Argument | Type | Description |
|---|---|---|
| notional | number | Position size per side in USD (default 10000) |
| pair_key* | string | pair_key from another tool |
{
"type": "object",
"required": [
"pair_key"
],
"properties": {
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"pair_key": {
"type": "string",
"description": "pair_key from another tool"
}
},
"additionalProperties": false
}Full calculation of one pair: funding per leg and settlement count, taker fees, order-book VWAP and slippage per trade, carry, net, net if rates halve, breakeven, capacity, settled 7/30-day replay. pair_key comes from best_opportunities or coin_overview. Needs a Pro API token (Authorization: Bearer arb_…); not available on the anonymous tier.
| Argument | Type | Description |
|---|---|---|
| notional | number | Position size per side in USD (default 10000) |
| pair_key* | string | pair_key from another tool |
| holding_hours | number | Holding period in hours (default 168 = 7 days) |
{
"type": "object",
"required": [
"pair_key"
],
"properties": {
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"pair_key": {
"type": "string",
"description": "pair_key from another tool"
},
"holding_hours": {
"type": "number",
"default": 168,
"maximum": 2160,
"minimum": 1,
"description": "Holding period in hours (default 168 = 7 days)"
}
},
"additionalProperties": false
}Funding actually settled on both legs over 7 / 30 / 90 / 180 / 365 days, applied to today's orientation at your size: net after the four trading costs, max drawdown, negative days, daily sign flips, how far back each exchange's history reaches. Ranges beyond 7 days need Pro.
| Argument | Type | Description |
|---|---|---|
| range | string | |
| notional | number | Position size per side in USD (default 10000) |
| pair_key* | string | pair_key from another tool |
{
"type": "object",
"required": [
"pair_key"
],
"properties": {
"range": {
"enum": [
"7d",
"30d",
"90d",
"180d",
"365d"
],
"type": "string",
"default": "30d"
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 100000000,
"minimum": 10,
"description": "Position size per side in USD (default 10000)"
},
"pair_key": {
"type": "string",
"description": "pair_key from another tool"
}
},
"additionalProperties": false
}Whether AfterFees data is live right now, which exchange feeds are down, and availability over 1 / 7 / 30 / 90 days.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Candles of (A − B) / B between any two instruments (book mids where stored, else marks). Free: 1 h candles and longer over up to 7 days; Pro: 1 m and up, up to 365 days.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| leg_a* | string | instrument id, e.g. binance:um:BTCUSDT |
| leg_b* | string | instrument id |
| candle | string | |
| executable | boolean |
{
"type": "object",
"required": [
"leg_a",
"leg_b"
],
"properties": {
"days": {
"type": "integer",
"default": 7,
"maximum": 365,
"minimum": 1
},
"leg_a": {
"type": "string",
"description": "instrument id, e.g. binance:um:BTCUSDT"
},
"leg_b": {
"type": "string",
"description": "instrument id"
},
"candle": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"default": "1h"
},
"executable": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}Annualised basis of every delivery future of one coin on every exchange we cover, next to perp funding.
| Argument | Type | Description |
|---|---|---|
| base* | string | Coin or ticker, e.g. BTC, ETH, SOL |
{
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"type": "string",
"description": "Coin or ticker, e.g. BTC, ETH, SOL"
}
},
"additionalProperties": false
}How AfterFees' daily top picks actually did: predicted net vs net realised from settled funding over the hold, hit rate, mean error, latest picks.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Buy on exchange A, withdraw, sell on exchange B at prices you give: real-transfer and prefunded net, break-even premium. Fees in percent, withdrawal fee in coins.
| Argument | Type | Description |
|---|---|---|
| buy* | number | |
| sell* | number | |
| trips | number | |
| amount | number | |
| fee_a_pct | number | |
| fee_b_pct | number | |
| usdt_back | number | |
| withdraw_coin | number |
{
"type": "object",
"required": [
"buy",
"sell"
],
"properties": {
"buy": {
"type": "number"
},
"sell": {
"type": "number"
},
"trips": {
"type": "number",
"default": 1
},
"amount": {
"type": "number",
"default": 10000
},
"fee_a_pct": {
"type": "number",
"default": 0.1
},
"fee_b_pct": {
"type": "number",
"default": 0.1
},
"usdt_back": {
"type": "number",
"default": 1
},
"withdraw_coin": {
"type": "number",
"default": 0
}
},
"additionalProperties": false
}Buy a coin on one exchange, withdraw it on a network both exchanges share (same chain and contract, never matched by ticker), sell on another: real-transfer net after taker fees, order-book slippage and the withdrawal fee at your size, pre-funded net, capacity at net >= 0 / 0.3% / 1%, arrival estimate, hedge cost on a perp, status and reasons. view=traps lists spreads that exist only because deposits or withdrawals are closed.
| Argument | Type | Description |
|---|---|---|
| base | string | Coin (optional) |
| view | string | |
| limit | integer | |
| status | string | |
| notional | number | Size in USD (Pro; free uses 10000) |
| include_hedge | boolean |
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Coin (optional)"
},
"view": {
"enum": [
"routes",
"traps"
],
"type": "string",
"default": "routes"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"status": {
"enum": [
"executable",
"near",
"closed",
"unverified",
"all"
],
"type": "string",
"default": "executable"
},
"notional": {
"type": "number",
"default": 10000,
"maximum": 10000000,
"minimum": 100,
"description": "Size in USD (Pro; free uses 10000)"
},
"include_hedge": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}Taker fee plus order-book slippage to enter $10k / $100k / $1M long and short on one exchange's biggest markets, in basis points.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| venue* | string | exchange id, e.g. binance |
{
"type": "object",
"required": [
"venue"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 60,
"minimum": 1
},
"venue": {
"type": "string",
"description": "exchange id, e.g. binance"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.