AfterFees MCP
A read-only MCP server that ranks crypto funding-rate arbitrage opportunities by net USD return after taker fees, order-book slippage, and borrow interest. It provides data on 50 exchanges and 1186 coins, allowing agents to analyze profitable pairs at specific trade sizes without holding funds or executing trades.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://afterfees.xyz/mcpWhat you can do with it
- Rank long/short pairs by net profit after fees and slippage
- Compare funding rates for a specific coin across all exchanges
- Calculate execution costs and breakeven times for trades
- Analyze fixed vs floating funding rates on Pendle Boros
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- afterfees 0.18.9
- MCP protocol
- 2025-06-18
- Tools
- 27 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
27 advertised
best_opportunities — Best funding-rate arbitrage opportunities
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.
{
"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
}{
"title": "Best funding-rate arbitrage opportunities",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}coin_overview — One coin across exchanges
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.
{
"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
}{
"title": "One coin across exchanges",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}pair_breakdown — Every number of one pair
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.
{
"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
}{
"title": "Every number of one pair",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}funding_rates — Funding rates
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).
{
"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
}{
"title": "Funding rates",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}borrow_rates — Margin borrow rates
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.
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Coin (optional)"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}{
"title": "Margin borrow rates",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fixed_vs_floating — Fixed vs floating funding (Pendle Boros)
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.
{
"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
}{
"title": "Fixed vs floating funding (Pendle Boros)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}execution_cost — Execution cost to enter a position
Taker fee + order-book slippage to buy or sell a given USD size of one coin on every exchange (perps and spot), cheapest first.
{
"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
}{
"title": "Execution cost to enter a position",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}basis_trades — Basis trades against delivery futures
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.
{
"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
}{
"title": "Basis trades against delivery futures",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}transfer_routes — Cross-exchange transfer (spot) arbitrage routes
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.
{
"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
}{
"title": "Cross-exchange transfer (spot) arbitrage routes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}pair_history — Settled-rate replay of one pair (7 to 365 days)
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.
{
"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
}{
"title": "Settled-rate replay of one pair (7 to 365 days)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}term_structure — Futures term structure of one coin
Annualised basis of every delivery future of one coin on every exchange we cover, next to perp funding.
{
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"type": "string",
"description": "Coin or ticker, e.g. BTC, ETH, SOL"
}
},
"additionalProperties": false
}{
"title": "Futures term structure of one coin",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}venue_execution_cost — Execution cost on one exchange
Taker fee plus order-book slippage to enter $10k / $100k / $1M long and short on one exchange's biggest markets, in basis points.
{
"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
}{
"title": "Execution cost on one exchange",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}service_status — Service status
Whether AfterFees data is live right now, which exchange feeds are down, and availability over 1 / 7 / 30 / 90 days.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"title": "Service status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}order_checklist — Order checklist for one pair
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.
{
"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
}{
"title": "Order checklist for one pair",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}holding_scenarios — One pair over different holding periods
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).
{
"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
}{
"title": "One pair over different holding periods",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}manual_calculator — Funding arbitrage calculator (typed-in legs)
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?}.
{
"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
}{
"title": "Funding arbitrage calculator (typed-in legs)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}boros_lock_calculator — Boros fixed-rate lock calculator
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.
{
"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
}{
"title": "Boros fixed-rate lock calculator",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}transfer_calculator — Cross-exchange transfer calculator
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.
{
"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
}{
"title": "Cross-exchange transfer calculator",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}boros_market — One Pendle Boros market
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.
{
"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
}{
"title": "One Pendle Boros market",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}boros_futures_basis — Boros implied rate vs futures basis
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.
{
"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
}{
"title": "Boros implied rate vs futures basis",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}exchanges — Exchanges covered
Every exchange AfterFees reads: kind, fully calculated or watch-only, status, markets, taker / maker fee, open interest, 24 h volume.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"title": "Exchanges covered",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}exchange_overview — One exchange
One exchange: fees and their source, funding intervals, open interest, volume, highest and lowest funding and its best after-fee pairs.
{
"type": "object",
"required": [
"venue"
],
"properties": {
"venue": {
"type": "string",
"description": "exchange id, e.g. binance"
}
},
"additionalProperties": false
}{
"title": "One exchange",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}coins — Coins covered
Coins with a perp on two or more exchanges: exchange count, open interest, highest and lowest funding APR and the best after-fee pair.
{
"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
}{
"title": "Coins covered",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}track_record — Public track record
How AfterFees' daily top picks actually did: predicted net vs net realised from settled funding over the hold, hit rate, mean error, latest picks.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"title": "Public track record",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}dex_scan — CEX ↔ DEX arbitrage scan
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.
{
"type": "object",
"required": [],
"properties": {
"base": {
"type": "string",
"description": "Token (optional)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}{
"title": "CEX ↔ DEX arbitrage scan",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}spread_chart — Price spread of two legs
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.
{
"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
}{
"title": "Price spread of two legs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}my_positions — My hedged positions (read-only keys)
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.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"title": "My hedged positions (read-only keys)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1950 ms
- 95th percentile latency
- 1950 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1950 ms · metadata changed · 27 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http afterfees-mcp https://afterfees.xyz/mcpCodex
codex mcp add afterfees-mcp --url https://afterfees.xyz/mcpCursor
{
"mcpServers": {
"afterfees-mcp": {
"url": "https://afterfees.xyz/mcp"
}
}
}Cline
{
"mcpServers": {
"afterfees-mcp": {
"type": "streamableHttp",
"url": "https://afterfees.xyz/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"afterfees-mcp": {
"type": "http",
"url": "https://afterfees.xyz/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http afterfees-mcp https://afterfees.xyz/mcpClaude Desktop
{
"mcpServers": {
"afterfees-mcp": {
"url": "https://afterfees.xyz/mcp"
}
}
}Windsurf
{
"mcpServers": {
"afterfees-mcp": {
"serverUrl": "https://afterfees.xyz/mcp"
}
}
}Let your agent find its tools
Find servers like AfterFees MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.