
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 (%).
entryPricenumberexitPricenumberfeeClosePctnumberfeeOpenPctnumbersidestringlong · shortsizenumberworkflow.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).
entryPricenumberleveragenumbermmrnumbersidestringlong · shortworkflow.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.
entryPricenumberfeeClosePctnumberfeeOpenPctnumbersidestringlong · shortsizeBasenumberworkflow.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.
entryPricenumberfeeClosePctnumberfeeOpenPctnumberleveragenumberriskUsdtnumbersidestringlong · shortstopLossnumberworkflow.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.
daysnumberentryPricenumberfundingRatenumbersidestringlong · shortsizeBasenumberprimitive.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.
exchangeCodestringinputobjectsymbolstringworkflow.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.
entryPricenumberfeeClosePctnumberfeeOpenPctnumberleveragenumbersidestringlong · shortsizeBasenumbertargetModestringpnl · roetargetValuenumberworkflow.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 }.
deltasPctarrayentryPricenumberfeeClosePctnumberfeeOpenPctnumbersidestringlong · shortsizenumberworkflow.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.
accountSizenumbermaxDrawdownPctnumbermmrnumbervolatilityPctnumberprimitive.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.
fundingRatePctnumberhedgeRationumberleveragenumberspotSizenumberworkflow.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...
durationDaysnumberintervalHoursnumber8 · 1longFundingRatenumberpositionSizenumbershortFundingRatenumbertransferFeePctnumberworkflow.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.
durationDaysnumberfundingRatePctnumberinitialCapitalnumberintervalHoursnumber8 · 1reinvestPctnumberworkflow.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...
account_balancenumberentry_pricenumberexchangestringfee_close_pctnumberfee_open_pctnumberfunding_ratenumberhold_hoursnumberleveragenumbermmrnumberrisk_pctnumbersidestringlong · shortstop_lossnumbersymbolstringworkflow.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...
account_balancenumberentry_pricenumberfee_close_pctnumberfee_open_pctnumberleveragenumbermmrnumberrisk_pctnumbersidestringlong · shortstop_lossnumbertake_profitnumberworkflow.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...
entriesarrayfee_close_pctnumberfee_open_pctnumbersidestringlong · shortworkflow.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.
entry_pricenumberexitsarrayfee_close_pctnumberfee_open_pctnumbersidestringlong · shorttotal_sizenumberworkflow.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).
funding_rate_longnumberfunding_rate_shortnumberhold_daysnumberinterval_hoursnumber1 · 8notionalnumbertransfer_fee_pctnumberworkflow.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.
entry_pricenumberfee_close_pctnumberfee_open_pctnumberfunding_ratenumberhold_hoursnumbersidestringlong · shortsizenumbersystem.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.
Sponsors
An LLM guesses trading maths. This server computes it: the same inputs always return the same numbers, every result carries a signature you can check, and the core formulas are tested against public vectors (live count in the badge above).
Your question MCP tool call Result
+------------------+ +---------------------------+ +---------------------------+
| "Risk $200 on | ► | workflow.run_forex_ | ► | 0.67 lots, plus an ECDSA |
| EUR/USD with a | | position_size_live | | P-256 signature you can |
| 30 pip stop" | | (deterministic maths) | | verify offline |
+------------------+ +---------------------------+ +---------------------------+
Ask Claude, Cursor or any MCP client trade questions and get exact numbers back, not guesses:
"What should a BTC call at a $90k strike, 30 days out, with 55% implied volatility be worth?" "How many lots of EUR/USD should I trade to risk $200 with a 30-pip stop?" "What's my 95% Value at Risk on this monthly return series?" "What's my PnL if I buy 0.5 BTC at $80k and sell at $95k with 5x leverage?"
| Domain | Examples |
|---|---|
| Options | Black-Scholes price and Greeks (manual, or checked live against a Deribit BTC/ETH option), payoff and breakeven, straddle and strangle, vertical spreads, covered call and protective put, implied volatility |
| Forex | Position size from a risk amount, pip value, margin, swap cost, currency conversion, pair correlation, with live-rate variants for the account currency |
| Risk and statistics | VaR and CVaR, Sharpe with the Lo 2002 correction, Deflated Sharpe, Kelly frontier, GARCH(1,1), risk parity, Hurst exponent, cointegration, portfolio tearsheet, EVT tail risk |
| Prediction markets | Odds and vig, market-implied odds, edge sizing, spread and arbitrage checks across Kalshi, Polymarket, Limitless and Myriad |
| On-chain | Solana token and wallet checks, swap price impact, pump.fun bonding curve, impermanent loss |
| Crypto spot | Profit or loss on a coin bought and sold outright, after both fees |
| Crypto futures | PnL, liquidation price, breakeven, funding cost, position size, risk/reward, linear and coin-margined contracts |
Access via MCP (Claude Desktop, Cursor, VS Code and other clients) or a plain HTTP POST to the MCP endpoint. No signup. The server is remote, so nothing to install beyond a one-line client config; only the Claude Desktop bridge below needs Node.js 18 or newer.
| Surface | URL | Auth |
|---|---|---|
| MCP | https://tradingcalc.io/api/mcp | Bearer optional (free) |
| For agents / setup | https://tradingcalc.io/for-agents | None |
| Full API & MCP reference | https://docs.tradingcalc.io/api | None |
| Verification proof | https://tradingcalc.io/verify | None |
MCP transport: Streamable HTTP (MCP spec 2024-11-05)
One command or one config entry per client. Prerequisites: an MCP client; Node.js 18 or newer only for the Claude Desktop bridge and the skill installer. No account, no API key.
| Client | Install |
|---|---|
| Claude Code | claude mcp add --transport http tradingcalc https://tradingcalc.io/api/mcp |
| Gemini CLI | gemini extensions install https://github.com/SKalinin909/tradingcalc-mcp |
| Coding agents with skills (Claude Code, Cursor, Copilot) | npx skills add SKalinin909/tradingcalc-mcp |
| Claude Desktop, Cursor, VS Code | config entry below |
| Cline | "type": "streamableHttp" config entry, see "Cline" below |
| Any other client | plain HTTP POST, see "Direct HTTP" below |
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"
}
}
Add to cline_mcp_settings.json (MCP Servers, Configure). Set type explicitly: without it Cline reads the URL as the legacy SSE transport.
{
"mcpServers": {
"tradingcalc": {
"type": "streamableHttp",
"url": "https://tradingcalc.io/api/mcp"
}
}
}
No API key and no npx step. Setup notes for agents are in llms-install.md.
For coding agents that support the skills.sh ecosystem (Claude Code, Cursor,
GitHub Copilot, and others) - installs a SKILL.md that teaches the agent when to reach for these
tools instead of estimating trade math itself:
npx skills add SKalinin909/tradingcalc-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:
Options payoff
"What does my BTC call payoff at $90,000? Strike $85,000, premium 0.02 BTC, long 1 contract."
Black-Scholes / IV check
"Is Deribit's BTC-27FEB27-90000-C fairly priced right now?"
Covered call yield
"I hold BTC bought at $80,000. What annualized yield do I get selling a $85,000-strike call for 0.02 BTC, 30 days out?"
Forex pip value
"What's a pip worth on 2 lots of EUR/USD, in my USD account?"
Forex position size
"How many lots should I trade to risk $200 on EUR/USD with a 30-pip stop?"
Forex margin level
"My equity is $5,000 and used margin is $1,800. How close am I to a margin call?"
Value at Risk
"What's my 95% Value at Risk and expected shortfall on this monthly return series? [paste returns]"
Sharpe ratio
"What's the Sharpe ratio of these monthly returns, corrected for autocorrelation?"
Cointegration
"Are these two price series cointegrated? Is there a pairs trade?"
Odds converter
"What odds does a 35% probability work out to?"
Market-implied odds
"What does the market think BTC will be worth by year end?"
Prediction market edge
"I think this event is 60% likely but the market prices it at 40%. Should I bet, and how much with a $10k bankroll?"
Token safety check
"Is this Solana token a rug pull risk? Mint: DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
Swap price impact
"How much slippage will I eat swapping 50,000,000 BONK to USDC?"
Bonding curve
"How many tokens do I get buying with 1 SOL on a pump.fun curve that's already raised 20 SOL?"
Market cap comparison
"If I put $1,000 into BONK and it reaches JUP's market cap, what's it worth?"
Wallet flag check
"Is this wallet address flagged for anything? [address]" (Solana or EVM)
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. All tools are
free via MCP, no signup; 100 calls/day anonymously, 200/day with a free API key.
| Category | Tools |
|---|---|
| Options (Deribit BTC/ETH, coin-settled) | Options payoff & breakeven, Black-Scholes price/Greeks (manual + live), higher-order Greeks (vanna, vomma, charm, veta, speed, zomma, color), straddle/strangle, vertical spread & iron condor, covered call/protective put, implied volatility solver (7) |
| Forex (quote-currency + live account-currency conversion) | Pip value, margin level, breakeven, PnL, risk/reward, scenario, average entry, position size, margin required, currency converter, swap/rollover cost, correlation/hedge ratio: manual + live-FX-rate variants (17) |
| Risk/Stats | VaR/CVaR (+ Modified VaR), Sharpe ratio (Lo 2002 + PSR), Hurst exponent, cointegration, portfolio tearsheet, GARCH(1,1), risk parity, Deflated Sharpe Ratio, Kelly growth-security frontier, return unsmoothing, EVT tail risk, order-book impact (12) |
| Prediction Markets (Kalshi, Polymarket, Limitless, Myriad, ADI Predictstreet crypto categories) | Odds converter, market-implied odds, prediction-market edge, window fair value, cross-venue spread reader, cross-venue arbitrage (6) |
| On-chain (Solana + 5 EVM chains, per tool) | Token risk check, swap price impact, bonding curve, market cap comparison, wallet flag check, impermanent loss (manual + live) (7) |
| Trade Planning | PnL, break-even, exit target, scenario, DCA entry, scale-out, average down (7) |
| Risk & Margin | Liquidation safety, position sizing, max leverage, risk/reward (4) |
| Funding & Carry | Funding cost, funding arbitrage, compound funding, funding break-even, carry trade (5) |
| Market Structure (Market Profile) | Open analysis, session structure, value migration, breakout acceptance (4) |
| Primitives | Average entry, hedge ratio (2) |
| Crypto spot | Crypto profit: profit or loss on a spot trade after both fees (1) |
| Cross-exchange | Price consensus: how far one perpetual futures price sits from 7 reference exchanges (1) |
| Integrated Decision | Pre-trade check (sizing + liquidation + breakeven + funding + go/no-go in one call), portfolio risk review (2) |
| System | system.verify - run the canonical test vectors, get a pass/fail report; system.pubkey - get the public key to verify signed responses offline (2) |
Full tool-by-tool reference (every input/output schema, request/response examples, per-tool descriptions): docs.tradingcalc.io/api
Formulas normalized across 17 exchanges: Binance, OKX, Bybit, Aster, Hyperliquid, MEXC, KuCoin, Gate, Deribit, Kraken, HTX, WOO, Phemex, Blofin, Backpack, dYdX, Polymarket Perps.
| Access | Req/day | Price |
|---|---|---|
| Anonymous | 100 | Free |
| Free API key | 200 | Free |
The Service is free. Need a higher-limit key? Email s@tradingcalc.io.
Pass key as: Authorization: Bearer <your-api-key>
Agents can verify all the canonical test vectors before trusting results:
{
"jsonrpc": "2.0", "id": 1,
"method": "tools/call",
"params": { "name": "system.verify", "arguments": {} }
}
Response: { "status": "pass", "passed": N, "failed": 0, "total": N }, where N is the current number of canonical vectors (live count in the badge at the top).
Live proof: tradingcalc.io/verify
system.verify proves the formulas are correct. It doesn't prove the specific response you got
wasn't altered by a proxy, cache, or MITM in between. Every tools/call result carries a second
content block signed with ECDSA P-256, plus X-TradingCalc-Signature/Kid/Signed-At headers.
Call system.pubkey (or GET /api/mcp/pubkey) for the public key (PEM + JWK) and the canonical
string format needed to verify offline, no callback required.
Once a day the verification state is also signed and its SHA-256 is written to Solana mainnet in a Memo transaction (tcalc1 {date} {hash}), each record carrying the hash of the day before. Read the records at GET https://tradingcalc.io/api/anchors; the latest record and how to verify it yourself are at tradingcalc.io/verification.
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