Connects Claude to 19 crypto futures calculators that return exact numbers instead of LLM estimates. You get PnL, liquidation prices, position sizing, funding costs, and carry trade analysis with formulas verified against 22 test vectors. Ask naturally and it routes to the right tool: "long BTC at $83k with 10x leverage, where's liquidation?" or "size my position for 1% risk with stop at $81k." Runs over streamable HTTP, so no local install needed. Free tier gives you 20 calls per day anonymous, 200 with an API key. Useful when you're building trading bots or agent pipelines where wrong math costs real money.
Public tool metadata for what this MCP can expose to an agent.
workflow.run_pnl_planningCalculate net PnL, ROE, fees and gross profit/loss for a futures trade. Use when user asks "what's my profit/loss on this trade?" Returns: grossPnl, fees, netPnl, netPnlUsdt, roe (%).6 paramsCalculate net PnL, ROE, fees and gross profit/loss for a futures trade. Use when user asks "what's my profit/loss on this trade?" Returns: grossPnl, fees, netPnl, netPnlUsdt, roe (%).
sidestringlong · shortsizenumberexitPricenumberentryPricenumberfeeOpenPctnumberfeeClosePctnumberworkflow.run_liquidation_safetyCalculate the liquidation price for an isolated-margin futures position. Use when user asks "where will I get liquidated?" or "how close is my liq price?". Returns: liquidationPrice, distancePct (how far from entry).4 paramsCalculate the liquidation price for an isolated-margin futures position. Use when user asks "where will I get liquidated?" or "how close is my liq price?". Returns: liquidationPrice, distancePct (how far from entry).
mmrnumbersidestringlong · shortleveragenumberentryPricenumberworkflow.run_breakeven_planningCalculate the break-even exit price that covers all trading fees. Use when user asks "what price do I need to just break even?" Returns: breakevenPrice, totalFees.5 paramsCalculate the break-even exit price that covers all trading fees. Use when user asks "what price do I need to just break even?" Returns: breakevenPrice, totalFees.
sidestringlong · shortsizeBasenumberentryPricenumberfeeOpenPctnumberfeeClosePctnumberworkflow.run_position_sizingCalculate the correct position size given a maximum risk in USDT and a stop-loss price. Use when user asks "how many coins should I buy?" or "size my position so I risk exactly $X". Returns: positionSize (base), positionUsdt, marginRequired.7 paramsCalculate the correct position size given a maximum risk in USDT and a stop-loss price. Use when user asks "how many coins should I buy?" or "size my position so I risk exactly $X". Returns: positionSize (base), positionUsdt, marginRequired.
sidestringlong · shortleveragenumberriskUsdtnumberstopLossnumberentryPricenumberfeeOpenPctnumberfeeClosePctnumberworkflow.run_funding_costCalculate the total funding cost (or income) for holding a perpetual futures position. Use when user asks "how much funding will I pay holding X days?" or "is funding eating my profit?". Returns: totalFundingUsdt (negative = you pay, positive = you receive), perIntervalUsdt.5 paramsCalculate the total funding cost (or income) for holding a perpetual futures position. Use when user asks "how much funding will I pay holding X days?" or "is funding eating my profit?". Returns: totalFundingUsdt (negative = you pay, positive = you receive), perIntervalUsdt.
daysnumbersidestringlong · shortsizeBasenumberentryPricenumberfundingRatenumberprimitive.average_entryCalculate the weighted average entry price from multiple buy/sell fills (DCA). Use when user has filled at multiple prices and asks "what's my average entry?" Returns: averagePrice, totalSize, totalCost.3 paramsCalculate the weighted average entry price from multiple buy/sell fills (DCA). Use when user has filled at multiple prices and asks "what's my average entry?" Returns: averagePrice, totalSize, totalCost.
inputobjectsymbolstringexchangeCodestringworkflow.run_exit_targetCalculate the exact exit price needed to hit a target PnL or ROE percentage. Use when user asks "at what price do I take profit to make $500?" or "where should I set TP for 20% ROE?". Returns: targetExitPrice.8 paramsCalculate the exact exit price needed to hit a target PnL or ROE percentage. Use when user asks "at what price do I take profit to make $500?" or "where should I set TP for 20% ROE?". Returns: targetExitPrice.
sidestringlong · shortleveragenumbersizeBasenumberentryPricenumberfeeOpenPctnumbertargetModestringpnl · roefeeClosePctnumbertargetValuenumberworkflow.run_scenario_planningRun a scenario analysis: compute PnL for multiple price-change percentages at once. Use when user asks "show me my P&L if BTC moves -10%, -5%, +5%, +10%". Returns: array of { deltaPct, exitPrice, netPnl, roe }.6 paramsRun a scenario analysis: compute PnL for multiple price-change percentages at once. Use when user asks "show me my P&L if BTC moves -10%, -5%, +5%, +10%". Returns: array of { deltaPct, exitPrice, netPnl, roe }.
sidestringlong · shortsizenumberdeltasPctarrayentryPricenumberfeeOpenPctnumberfeeClosePctnumberworkflow.run_max_leverageCalculate the maximum safe leverage based on account size, max acceptable drawdown, and asset daily volatility. Use when user asks "what's the max leverage I should use on BTC?" or "how much leverage is safe given 3% daily volatility?". Returns: maxLeverage, marginAtRisk.4 paramsCalculate the maximum safe leverage based on account size, max acceptable drawdown, and asset daily volatility. Use when user asks "what's the max leverage I should use on BTC?" or "how much leverage is safe given 3% daily volatility?". Returns: maxLeverage, marginAtRisk.
mmrnumberaccountSizenumbervolatilityPctnumbermaxDrawdownPctnumberprimitive.hedge_ratioCalculate the short perpetual futures position size needed to hedge a spot holding. Use when user asks "how much should I short to hedge my BTC?" or "what margin do I need for a 100% hedge?". Returns: hedgeNotional, requiredMargin, estimatedFundingCost.4 paramsCalculate the short perpetual futures position size needed to hedge a spot holding. Use when user asks "how much should I short to hedge my BTC?" or "what margin do I need for a 100% hedge?". Returns: hedgeNotional, requiredMargin, estimatedFundingCost.
leveragenumberspotSizenumberhedgeRationumberfundingRatePctnumberworkflow.run_funding_arbitrageCalculate funding rate arbitrage profit: annualized yield, net profit, and breakeven days for a long/short basis trade across two exchanges. Use when user asks "is this funding arb worth it?" or "how many days to break even on transfer fees?". Returns: netProfitUsdt, annualize...6 paramsCalculate funding rate arbitrage profit: annualized yield, net profit, and breakeven days for a long/short basis trade across two exchanges. Use when user asks "is this funding arb worth it?" or "how many days to break even on transfer fees?". Returns: netProfitUsdt, annualize...
durationDaysnumberpositionSizenumberintervalHoursnumber8 · 1transferFeePctnumberlongFundingRatenumbershortFundingRatenumberworkflow.run_compound_fundingProject capital growth from reinvesting perpetual futures funding income (compounding carry). Use when user asks "how much will I make compounding 0.01% funding for 90 days?" or "what's my APY on this carry position?". Returns: finalCapital, totalEarned, apy, growthTable.5 paramsProject capital growth from reinvesting perpetual futures funding income (compounding carry). Use when user asks "how much will I make compounding 0.01% funding for 90 days?" or "what's my APY on this carry position?". Returns: finalCapital, totalEarned, apy, growthTable.
reinvestPctnumberdurationDaysnumberintervalHoursnumber8 · 1fundingRatePctnumberinitialCapitalnumberworkflow.run_pre_trade_checkFull pre-trade decision card: orchestrates position sizing, breakeven, liquidation, and funding cost in one call. Use when user describes a full trade setup and asks "should I take this trade?" or "run the numbers on this setup". Provide exchange+symbol to fetch live funding r...13 paramsFull pre-trade decision card: orchestrates position sizing, breakeven, liquidation, and funding cost in one call. Use when user describes a full trade setup and asks "should I take this trade?" or "run the numbers on this setup". Provide exchange+symbol to fetch live funding r...
mmrnumbersidestringlong · shortsymbolstringexchangestringleveragenumberrisk_pctnumberstop_lossnumberhold_hoursnumberentry_pricenumberfee_open_pctnumberfunding_ratenumberfee_close_pctnumberaccount_balancenumberworkflow.run_risk_rewardFull risk:reward analysis — the single best tool when user describes a trade with entry, stop, and target. Calculates R:R ratio, position size, liquidation price, breakeven, and P&L at both stop and target. Returns a verdict: strong (3:1+) / good (2:1+) / marginal / poor. Use...10 paramsFull risk:reward analysis — the single best tool when user describes a trade with entry, stop, and target. Calculates R:R ratio, position size, liquidation price, breakeven, and P&L at both stop and target. Returns a verdict: strong (3:1+) / good (2:1+) / marginal / poor. Use...
mmrnumbersidestringlong · shortleveragenumberrisk_pctnumberstop_lossnumberentry_pricenumbertake_profitnumberfee_open_pctnumberfee_close_pctnumberaccount_balancenumberworkflow.run_dca_entryDCA entry planner: weighted average entry price, breakeven, and per-level contribution from multiple fill prices and sizes. Use when user bought at several prices and asks "what's my average entry?" or "where is my DCA breakeven?". Returns: averageEntry, breakeven, per-level s...4 paramsDCA entry planner: weighted average entry price, breakeven, and per-level contribution from multiple fill prices and sizes. Use when user bought at several prices and asks "what's my average entry?" or "where is my DCA breakeven?". Returns: averageEntry, breakeven, per-level s...
sidestringlong · shortentriesarrayfee_open_pctnumberfee_close_pctnumberworkflow.run_scale_outScale-out planner: P&L, ROI, and cumulative P&L for each partial exit level. Use when user wants to take profit at multiple targets — "close 30% at $90k, 30% at $95k, 40% at $100k — what's my total P&L?". Returns: per-level pnl, weightedAvgExitPrice, totalRoi.6 paramsScale-out planner: P&L, ROI, and cumulative P&L for each partial exit level. Use when user wants to take profit at multiple targets — "close 30% at $90k, 30% at $95k, 40% at $100k — what's my total P&L?". Returns: per-level pnl, weightedAvgExitPrice, totalRoi.
sidestringlong · shortexitsarraytotal_sizenumberentry_pricenumberfee_open_pctnumberfee_close_pctnumberworkflow.run_carry_tradeDelta-neutral carry trade (funding arbitrage) analysis. Use when user asks "is this carry trade worth it?" — long on exchange A, short on exchange B, collect the funding rate spread. Returns: netYieldPct, grossProfit, netProfit, breakevenDays, verdict (profitable/marginal/loss).6 paramsDelta-neutral carry trade (funding arbitrage) analysis. Use when user asks "is this carry trade worth it?" — long on exchange A, short on exchange B, collect the funding rate spread. Returns: netYieldPct, grossProfit, netProfit, breakevenDays, verdict (profitable/marginal/loss).
notionalnumberhold_daysnumberinterval_hoursnumber1 · 8transfer_fee_pctnumberfunding_rate_longnumberfunding_rate_shortnumberworkflow.run_funding_breakevenPrice move needed to cover funding cost + fees over a holding period. Use when user asks "how much does BTC need to move for me to profit after funding?" or "is funding killing my edge on this trade?". Returns: breakevenWithFunding, breakevenWithoutFunding, requiredMovePct.7 paramsPrice move needed to cover funding cost + fees over a holding period. Use when user asks "how much does BTC need to move for me to profit after funding?" or "is funding killing my edge on this trade?". Returns: breakevenWithFunding, breakevenWithoutFunding, requiredMovePct.
sidestringlong · shortsizenumberhold_hoursnumberentry_pricenumberfee_open_pctnumberfunding_ratenumberfee_close_pctnumbersystem.verifyRun the full regression suite — 22 canonical test vectors across all 12 calculators — and return a pass/fail report with counts and timestamp. Call this before using results in production workflows to confirm the computation layer is operating correctly.Run the full regression suite — 22 canonical test vectors across all 12 calculators — and return a pass/fail report with counts and timestamp. Call this before using results in production workflows to confirm the computation layer is operating correctly.
No parameter schema in public metadata yet.
Ask Claude or Cursor trade questions and get exact numbers back — not AI guesses.
"What's my PnL if I buy 0.5 BTC at $80k and sell at $95k with 5x leverage?" "Size my position: $10k account, 1% risk, long BTC at $83k, stop at $81k." "Is this carry trade worth it? 0.01% funding long, 0.05% short, $50k, 30 days."
19 deterministic tools across trade planning, risk & margin, and funding/carry. Formulas verified against 22 canonical test vectors — same inputs always produce the same outputs.
Two access surfaces: MCP (Claude Desktop / Cursor / VS Code) and REST API (/v1/primitives, /v1/workflows).
| Surface | URL | Auth |
|---|---|---|
| MCP | https://tradingcalc.io/api/mcp | Bearer optional |
| REST primitives | https://tradingcalc.io/v1/primitives/:id | Bearer required |
| REST workflows | https://tradingcalc.io/v1/workflows/:id | Bearer required |
| Discovery | https://tradingcalc.io/v1/primitives | None |
| Docs | https://tradingcalc.io/docs | None |
MCP transport: Streamable HTTP (MCP spec 2024-11-05)
Add to claude_desktop_config.json:
{
"mcpServers": {
"tradingcalc": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://tradingcalc.io/api/mcp"]
}
}
}
{
"tradingcalc": {
"url": "https://tradingcalc.io/api/mcp"
}
}
curl -X POST https://tradingcalc.io/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "workflow.run_liquidation_safety",
"arguments": {
"side": "long",
"entryPrice": 95000,
"leverage": 10
}
}
}'
After connecting, just ask naturally — the AI picks the right tool automatically:
Trade P&L
"I bought 0.5 BTC at $80,000 and want to sell at $95,000 with 5x leverage. What's my net profit after fees?"
Position sizing
"I have a $10,000 account and want to risk 1% going long BTC at $83,000 with a stop at $81,000. How many coins should I buy?"
Liquidation check
"Long ETH at $3,200 with 10x leverage — where do I get liquidated?"
Full pre-trade check
"Analyze this setup: long BTC at $83,000, stop $81,000, target $90,000, $10k account, 1% risk, 5x leverage. Is it worth taking?"
Funding cost
"I'm holding 0.5 BTC long on Bybit at $83,000 with 0.01% funding rate. How much will funding cost me over 3 days?"
Carry trade
"Is this carry trade worth it? Long on Bybit at 0.01% funding, short on Binance at 0.05%, $50k notional, 30 days."
DCA average entry
"I bought BTC at $78k (0.2 BTC), $80k (0.3 BTC), and $82k (0.1 BTC). What's my average entry and breakeven?"
Scale-out plan
"I'm long 1 BTC from $80k. I want to close 30% at $88k, 40% at $92k, 30% at $96k. What's my total P&L?"
Tool naming follows the workflow.run_* / primitive.* / system.* namespace convention.
Old flat names (pnl, liquidation, etc.) are accepted for backward compatibility.
POST /v1/workflows/:id)Trade Planning
| Tool | REST endpoint | Description |
|---|---|---|
workflow.run_pnl_planning | /v1/workflows/pnl-planning | Net PnL, fees and gross profit/loss for a futures trade |
workflow.run_breakeven_planning | /v1/workflows/breakeven-planning | Break-even price accounting for entry/exit fees |
workflow.run_exit_target | /v1/workflows/exit-target | Exit price required to hit a target PnL or ROE |
workflow.run_scenario_planning | /v1/workflows/scenario-planning | Multi-scenario P&L analysis across price targets |
workflow.run_dca_entry | /v1/workflows/dca-entry | DCA across N price levels → avg entry, breakeven, level contribution |
workflow.run_scale_out | /v1/workflows/scale-out | Partial exits at multiple levels → P&L per exit, weighted avg, overall ROI |
Risk & Margin
| Tool | REST endpoint | Description |
|---|---|---|
workflow.run_liquidation_safety | /v1/workflows/liquidation-safety | Liquidation price for long/short isolated margin |
workflow.run_position_sizing | /v1/workflows/position-sizing | Position size based on account size and max risk % |
workflow.run_max_leverage | /v1/workflows/max-leverage | Maximum safe leverage based on drawdown tolerance and volatility |
Funding & Carry
| Tool | REST endpoint | Description |
|---|---|---|
workflow.run_funding_cost | /v1/workflows/funding-cost | Cumulative funding cost over a holding period |
workflow.run_funding_arbitrage | /v1/workflows/funding-arbitrage | Annualized yield from long/short basis trades across two exchanges |
workflow.run_compound_funding | /v1/workflows/compound-funding | Capital growth projection from reinvesting funding income |
workflow.run_funding_breakeven | /v1/workflows/funding-breakeven | Price move needed to cover funding cost + fees over holding period |
| Tool | REST endpoint | Description |
|---|---|---|
workflow.run_risk_reward | /v1/workflows/risk-reward | Full R:R analysis: sizing + liquidation + breakeven + P&L at stop and target |
workflow.run_carry_trade | /v1/workflows/carry-trade | Delta-neutral carry setup: net yield, ROI, breakeven days, verdict |
POST /v1/primitives/:id)| Tool | REST endpoint | Description |
|---|---|---|
primitive.average_entry | /v1/primitives/average_entry | Average entry price after DCA into a position |
primitive.hedge_ratio | /v1/primitives/hedge_ratio | Short perp size and funding cost to hedge a spot position |
| Tool | REST endpoint | Description |
|---|---|---|
workflow.run_pre_trade_check | /v1/workflows/pre-trade-check | Full pre-trade decision: position size, liquidation, breakeven, funding cost, go/no-go signal. Accepts live exchange + symbol. |
| Tool | Description |
|---|---|
system.verify | Run 22 canonical test vectors against all calculators. Returns pass/fail report. |
Formulas normalized across 7 exchanges: Binance, Bybit, OKX, Hyperliquid, Aster, KuCoin, MEXC.
| Plan | Req/day | Credits/mo | Price |
|---|---|---|---|
| Anonymous | 20 | — | Free |
| Free API key | 200 | — | Free |
| Trader | 2,500 | 250 | $19/mo |
| Builder | 50,000 | 5,000 | $79/mo |
| Team | 250,000 | 25,000 | $249/mo |
| Growth | 2,000,000 | 150,000 | $599/mo |
Credits: primitive = 1 cr · standard workflow = 5 cr · advanced workflow = 8 cr · pre-trade-check = 10 cr · verification bundle = +2 cr
Get your API key → email hi@tradingcalc.io or see tradingcalc.io/pricing
Pass key as: Authorization: Bearer <your-api-key>
Agents can verify all 22 canonical test vectors before trusting results:
{
"jsonrpc": "2.0", "id": 1,
"method": "tools/call",
"params": { "name": "system.verify", "arguments": {} }
}
Response: { "status": "pass", "passed": 22, "failed": 0, "total": 22 }
Live proof: tradingcalc.io/verify
LLMs asked directly give plausible but potentially wrong numbers. TradingCalc MCP returns exact calculations — same inputs always produce the same outputs. No hallucination risk for financial data.
examples/risk-agent-wrapper.ts — a drop-in TypeScript wrapper for risk-gated trade execution.
Integrates with any agent framework (ElizaOS, CrewAI, AutoGen, Hummingbot, Freqtrade).
import { RiskAgent, preTradeGate } from './examples/risk-agent-wrapper';
const agent = new RiskAgent({ apiKey: 'tc_your_key', minLiqDistancePct: 3.0 });
const result = await agent.evaluate({
symbol: 'BTCUSDT', exchange: 'bybit',
side: 'long', entry_price: 83000, stop_loss: 81000,
account_balance: 10000, risk_pct: 1, leverage: 5,
funding_rate: 0.0001, hold_hours: 24,
});
if (result.approved) {
// execute trade — result.recommended_size, result.liquidation_price
} else {
console.log('Rejected:', result.rejection_reason);
}
// Binary gate for execution bots
const ok = await agent.isSafe({ symbol: 'ETHUSDT', side: 'short', ... });
// Standalone function (minimal integration)
const { approved, size, liqPrice } = await preTradeGate({ ... }, 'tc_your_key');
For code-first integrations, use tradingcalc-sdk instead of raw JSON-RPC:
npm install tradingcalc-sdk
import { TradingCalcClient } from 'tradingcalc-sdk';
const tc = new TradingCalcClient({ apiKey: 'tc_your_key' });
// Workflows — orchestrated decisions
const check = await tc.workflows.preTradeCheck({ side: 'long', entry_price: 83000, leverage: 5, funding_rate: 0.0001, account_balance: 5000 });
// Primitives — single formula
const avg = await tc.primitives.averageEntry({ symbol: 'BTCUSDT', input: { fills: [{ price: 83000, quantity: 0.1 }] } });
// System
const report = await tc.system.verify();
tc.call() is available for raw MCP access. Full docs: npmjs.com/package/tradingcalc-sdk
io.github.shelvick/shopify-subscription-reconciliation
zleventer/google-ads-mcp
csoai-org/meok-stripe-acp-checkout-mcp
io.github.mharnett/google-ads
csoai-org/stripe-billing-mcp
co.pipeboard/google-ads-mcp