Koskamo

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.

AfterFees MCP logo, by AfterFeesCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by AfterFees
MCP endpoint (Streamable HTTP)
https://afterfees.xyz/mcp
Vendor documentation

What 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

Community listingRegistry 0.18.9
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
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

AfterFees: read-only funding-rate arbitrage analytics across crypto exchanges. Net figures are after taker fees and carry at the stated size per side; net_basis says how slippage is counted: exact = walked on the live order books, reference = estimated from the top of the book (no live depth for that pair), before_slippage = no order book at all. Many watch-tier rows are not exact; say so when you quote them. Funding counts the less favourable of today's rates and the pair's own 7-day settled average (funding_basis says which). Projected figures are projections, not realised returns; say so when you quote them, and quote calc_version and as_of. Prefer tier / watch_reasons over your own judgement of whether a pair is actionable. Nothing here can trade: never claim to place orders. Not investment advice. You are on the anonymous tier (no token): the same data as an anonymous visitor of the site, at $10,000 per side held 168 h (size and holding arguments are fixed to that), 60 requests per minute per address; tools that say they need a token answer with an error. A Pro token (Authorization: Bearer arb_…, from /developers) unlocks every tool and your own size.

Tools

27 advertised

best_opportunities — Best funding-rate arbitrage opportunities
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

best_opportunities input schema
{
  "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
}
best_opportunities annotations
{
  "title": "Best funding-rate arbitrage opportunities",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
coin_overview — One coin across exchanges
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

coin_overview input schema
{
  "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
}
coin_overview annotations
{
  "title": "One coin across exchanges",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
pair_breakdown — Every number of one pair
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

pair_breakdown input schema
{
  "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
}
pair_breakdown annotations
{
  "title": "Every number of one pair",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
funding_rates — Funding rates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

funding_rates input schema
{
  "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
}
funding_rates annotations
{
  "title": "Funding rates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
borrow_rates — Margin borrow rates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

borrow_rates input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "base": {
      "type": "string",
      "description": "Coin (optional)"
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
borrow_rates annotations
{
  "title": "Margin borrow rates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fixed_vs_floating — Fixed vs floating funding (Pendle Boros)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

fixed_vs_floating input schema
{
  "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
}
fixed_vs_floating annotations
{
  "title": "Fixed vs floating funding (Pendle Boros)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
execution_cost — Execution cost to enter a position
Advertised by the server during the last successful anonymous check.
Advertised read-only

Taker fee + order-book slippage to buy or sell a given USD size of one coin on every exchange (perps and spot), cheapest first.

execution_cost input schema
{
  "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
}
execution_cost annotations
{
  "title": "Execution cost to enter a position",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
basis_trades — Basis trades against delivery futures
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

basis_trades input schema
{
  "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
}
basis_trades annotations
{
  "title": "Basis trades against delivery futures",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
transfer_routes — Cross-exchange transfer (spot) arbitrage routes
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

transfer_routes input schema
{
  "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
}
transfer_routes annotations
{
  "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)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

pair_history input schema
{
  "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
}
pair_history annotations
{
  "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
Advertised by the server during the last successful anonymous check.
Advertised read-only

Annualised basis of every delivery future of one coin on every exchange we cover, next to perp funding.

term_structure input schema
{
  "type": "object",
  "required": [
    "base"
  ],
  "properties": {
    "base": {
      "type": "string",
      "description": "Coin or ticker, e.g. BTC, ETH, SOL"
    }
  },
  "additionalProperties": false
}
term_structure annotations
{
  "title": "Futures term structure of one coin",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
venue_execution_cost — Execution cost on one exchange
Advertised by the server during the last successful anonymous check.
Advertised read-only

Taker fee plus order-book slippage to enter $10k / $100k / $1M long and short on one exchange's biggest markets, in basis points.

venue_execution_cost input schema
{
  "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
}
venue_execution_cost annotations
{
  "title": "Execution cost on one exchange",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
service_status — Service status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Whether AfterFees data is live right now, which exchange feeds are down, and availability over 1 / 7 / 30 / 90 days.

service_status input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
service_status annotations
{
  "title": "Service status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
order_checklist — Order checklist for one pair
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

order_checklist input schema
{
  "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
}
order_checklist annotations
{
  "title": "Order checklist for one pair",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
holding_scenarios — One pair over different holding periods
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

holding_scenarios input schema
{
  "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
}
holding_scenarios annotations
{
  "title": "One pair over different holding periods",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
manual_calculator — Funding arbitrage calculator (typed-in legs)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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?}.

manual_calculator input schema
{
  "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
}
manual_calculator annotations
{
  "title": "Funding arbitrage calculator (typed-in legs)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
boros_lock_calculator — Boros fixed-rate lock calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

boros_lock_calculator input schema
{
  "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
}
boros_lock_calculator annotations
{
  "title": "Boros fixed-rate lock calculator",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
transfer_calculator — Cross-exchange transfer calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

transfer_calculator input schema
{
  "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
}
transfer_calculator annotations
{
  "title": "Cross-exchange transfer calculator",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
boros_market — One Pendle Boros market
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

boros_market input schema
{
  "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
}
boros_market annotations
{
  "title": "One Pendle Boros market",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
boros_futures_basis — Boros implied rate vs futures basis
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

boros_futures_basis input schema
{
  "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
}
boros_futures_basis annotations
{
  "title": "Boros implied rate vs futures basis",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
exchanges — Exchanges covered
Advertised by the server during the last successful anonymous check.
Advertised read-only

Every exchange AfterFees reads: kind, fully calculated or watch-only, status, markets, taker / maker fee, open interest, 24 h volume.

exchanges input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
exchanges annotations
{
  "title": "Exchanges covered",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
exchange_overview — One exchange
Advertised by the server during the last successful anonymous check.
Advertised read-only

One exchange: fees and their source, funding intervals, open interest, volume, highest and lowest funding and its best after-fee pairs.

exchange_overview input schema
{
  "type": "object",
  "required": [
    "venue"
  ],
  "properties": {
    "venue": {
      "type": "string",
      "description": "exchange id, e.g. binance"
    }
  },
  "additionalProperties": false
}
exchange_overview annotations
{
  "title": "One exchange",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
coins — Coins covered
Advertised by the server during the last successful anonymous check.
Advertised read-only

Coins with a perp on two or more exchanges: exchange count, open interest, highest and lowest funding APR and the best after-fee pair.

coins input schema
{
  "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
}
coins annotations
{
  "title": "Coins covered",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
track_record — Public track record
Advertised by the server during the last successful anonymous check.
Advertised read-only

How AfterFees' daily top picks actually did: predicted net vs net realised from settled funding over the hold, hit rate, mean error, latest picks.

track_record input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
track_record annotations
{
  "title": "Public track record",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
dex_scan — CEX ↔ DEX arbitrage scan
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

dex_scan input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "base": {
      "type": "string",
      "description": "Token (optional)"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
dex_scan annotations
{
  "title": "CEX ↔ DEX arbitrage scan",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
spread_chart — Price spread of two legs
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

spread_chart input schema
{
  "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
}
spread_chart annotations
{
  "title": "Price spread of two legs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_positions — My hedged positions (read-only keys)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

my_positions input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
my_positions annotations
{
  "title": "My hedged positions (read-only keys)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http afterfees-mcp https://afterfees.xyz/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add afterfees-mcp --url https://afterfees.xyz/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable afterfees-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "afterfees-mcp": {
      "url": "https://afterfees.xyz/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "afterfees-mcp": {
      "type": "streamableHttp",
      "url": "https://afterfees.xyz/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start afterfees-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "afterfees-mcp": {
      "type": "http",
      "url": "https://afterfees.xyz/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http afterfees-mcp https://afterfees.xyz/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "afterfees-mcp": {
      "url": "https://afterfees.xyz/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.