TradingCalc MCP: Crypto Trading, Options, On-Chain & Prediction Markets
REMOTE · TRADINGCALC.IO · SCANNED SEP 22
Deterministic crypto futures, options, on-chain, prediction-market math. 40 tools. Not AI estimates.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 11675 tokens (~248/item across 47 items; 47 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage96
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 88% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 47 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 48 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities20
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
How do I install the TradingCalc MCP: Crypto Trading, Options, On-Chain… server?
TradingCalc MCP: Crypto Trading, Options, On-Chain… is a hosted endpoint at https://tradingcalc.io/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · tradingcalc.io
claude mcp add --transport http skalinin909-tradingcalc 'https://tradingcalc.io/api/mcp'
{
"mcpServers": {
"skalinin909-tradingcalc": {
"url": "https://tradingcalc.io/api/mcp"
}
}
} {
"servers": {
"skalinin909-tradingcalc": {
"type": "http",
"url": "https://tradingcalc.io/api/mcp"
}
}
} [mcp_servers.skalinin909-tradingcalc] url = "https://tradingcalc.io/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"skalinin909-tradingcalc": {
"type": "remote",
"url": "https://tradingcalc.io/api/mcp",
"enabled": true
}
}
} openclaw mcp add skalinin909-tradingcalc --url 'https://tradingcalc.io/api/mcp' --transport streamable-http
mcp_servers:
skalinin909-tradingcalc:
url: "https://tradingcalc.io/api/mcp" {
"McpServers": {
"skalinin909-tradingcalc": {
"Transport": "http",
"Url": "https://tradingcalc.io/api/mcp"
}
}
} assistant mcp add skalinin909-tradingcalc -t streamable-http -u 'https://tradingcalc.io/api/mcp'
{
"mcpServers": {
"skalinin909-tradingcalc": {
"type": "http",
"url": "https://tradingcalc.io/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Sept 26 −1
- Schema quality: 10505 → 11675 ▼ functional
- New tool “workflow.run_forex_average_entry” functional
- New tool “workflow.run_forex_breakeven” functional
- New tool “workflow.run_forex_margin_level” functional
- New tool “workflow.run_forex_pip_value” functional
- New tool “workflow.run_forex_pnl” functional
- New tool “workflow.run_forex_risk_reward” functional
- New tool “workflow.run_forex_scenario” functional
- 21 Sept 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “primitive.average_entry” rewrote its description, which is the text the model reads security
- Tool “system.verify” rewrote its description, which is the text the model reads security
- Tool “workflow.run_black_scholes” rewrote its description, which is the text the model reads security
- Tool “workflow.run_black_scholes_live” rewrote its description, which is the text the model reads security
- Tool “workflow.run_bonding_curve” rewrote its description, which is the text the model reads security
- Tool “workflow.run_breakeven_planning” rewrote its description, which is the text the model reads security
- Tool “workflow.run_breakout_acceptance” rewrote its description, which is the text the model reads security
- Tool “workflow.run_carry_trade” rewrote its description, which is the text the model reads security
- Tool “workflow.run_covered_call_protective_put” rewrote its description, which is the text the model reads security
- Tool “workflow.run_funding_arbitrage” rewrote its description, which is the text the model reads security
- Tool “workflow.run_market_cap_comparison” rewrote its description, which is the text the model reads security
- Tool “workflow.run_market_implied_odds” rewrote its description, which is the text the model reads security
- Tool “workflow.run_open_analysis” rewrote its description, which is the text the model reads security
- Tool “workflow.run_options_payoff” rewrote its description, which is the text the model reads security
- Tool “workflow.run_pre_trade_check” rewrote its description, which is the text the model reads security
- Tool “workflow.run_prediction_market_edge” rewrote its description, which is the text the model reads security
- Tool “workflow.run_risk_reward” rewrote its description, which is the text the model reads security
- Tool “workflow.run_scale_out” rewrote its description, which is the text the model reads security
- Tool “workflow.run_session_structure” rewrote its description, which is the text the model reads security
- Tool “workflow.run_spread_reader” rewrote its description, which is the text the model reads security
- Tool “workflow.run_straddle_strangle” rewrote its description, which is the text the model reads security
- Tool “workflow.run_swap_price_impact” rewrote its description, which is the text the model reads security
- Tool “workflow.run_token_risk_check” rewrote its description, which is the text the model reads security
- Tool “workflow.run_value_migration” rewrote its description, which is the text the model reads security
- Tool “workflow.run_wallet_flag_check” rewrote its description, which is the text the model reads security
- Tool “workflow.run_window_fair_value” rewrote its description, which is the text the model reads security
- Tool “workflow.run_odds_converter” rewrote its description, which is the text the model reads security
- Schema quality: 7710 → 10505 ▼ functional
- Schema quality: 7710 → 10512 ▼ functional
- Schema quality: good → excellent functional
- Server version: 1.6.0 → 1.9.0 functional
- New tool “workflow.run_black_scholes” functional
- New tool “workflow.run_black_scholes_live” functional
- New tool “workflow.run_covered_call_protective_put” functional
- New tool “workflow.run_implied_volatility” functional
- New tool “workflow.run_options_payoff” functional
- New tool “workflow.run_spread_reader” functional
- New tool “workflow.run_straddle_strangle” functional
- New tool “workflow.run_window_fair_value” functional
- “workflow.run_odds_converter” added an optional parameter “adiSymbol” cosmetic
- “workflow.run_odds_converter” added an optional parameter “polymarketSlug” cosmetic
- “workflow.run_black_scholes” reworded the description of “riskFreeRatePct” cosmetic
- “workflow.run_black_scholes_live” reworded the description of “instrumentName” cosmetic
- “workflow.run_black_scholes_live” reworded the description of “riskFreeRatePct” cosmetic
- “workflow.run_breakeven_planning” reworded the description of “sizeBase” cosmetic
- “workflow.run_breakout_acceptance” reworded the description of “candles” cosmetic
- “workflow.run_covered_call_protective_put” reworded the description of “daysToExpiry” cosmetic
- “workflow.run_covered_call_protective_put” reworded the description of “spotEntry” cosmetic
- “workflow.run_implied_volatility” reworded the description of “riskFreeRatePct” cosmetic
- “workflow.run_market_implied_odds” reworded the description of “thresholdUsd” cosmetic
- “workflow.run_odds_converter” reworded the description of “adiSymbol” cosmetic
- “workflow.run_open_analysis” reworded the description of “candles” cosmetic
- “workflow.run_options_payoff” reworded the description of “premiumCoin” cosmetic
- “workflow.run_pnl_planning” reworded the description of “size” cosmetic
- “workflow.run_session_structure” reworded the description of “candles” cosmetic
- “workflow.run_spread_reader” reworded the description of “quotes” cosmetic
- “workflow.run_value_migration” reworded the description of “candles” cosmetic
- “workflow.run_window_fair_value” reworded the description of “riskFreeRatePct” cosmetic
- “workflow.run_window_fair_value” reworded the description of “volatilityPct” cosmetic
- “workflow.run_odds_converter” reworded the description of “kalshiTicker” cosmetic
- “workflow.run_odds_converter” reworded the description of “probability” cosmetic
- 19 Sept 26 −1
- Schema quality: excellent → good functional
- New tool “system.pubkey” functional
- “workflow.run_dca_entry” added an optional parameter “contractType” cosmetic
- “workflow.run_funding_breakeven” added an optional parameter “contractType” cosmetic
- “workflow.run_pre_trade_check” added an optional parameter “contractType” cosmetic
- “workflow.run_risk_reward” added an optional parameter “contractType” cosmetic
- “workflow.run_scale_out” added an optional parameter “contractType” cosmetic
- 18 Sept 26 +7
- Authorization: unverified → partial ▲ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “primitive.average_entry” rewrote its description, which is the text the model reads security
- Tool “workflow.run_breakeven_planning” rewrote its description, which is the text the model reads security
- Tool “workflow.run_breakout_acceptance” rewrote its description, which is the text the model reads security
- Tool “workflow.run_carry_trade” rewrote its description, which is the text the model reads security
- Tool “workflow.run_dca_entry” rewrote its description, which is the text the model reads security
- Tool “workflow.run_funding_arbitrage” rewrote its description, which is the text the model reads security
- Tool “workflow.run_open_analysis” rewrote its description, which is the text the model reads security
- Tool “workflow.run_pre_trade_check” rewrote its description, which is the text the model reads security
- Tool “workflow.run_risk_reward” rewrote its description, which is the text the model reads security
- Tool “workflow.run_session_structure” rewrote its description, which is the text the model reads security
- Tool “workflow.run_value_migration” rewrote its description, which is the text the model reads security
- Schema quality: 212 → 236 ▼ functional
- Schema quality: 5320 → 6939 ▼ functional
- Schema quality: good → excellent functional
- Server version: 1.5.2 → 1.6.0 functional
- New tool “workflow.run_bonding_curve” functional
- New tool “workflow.run_market_cap_comparison” functional
- New tool “workflow.run_market_implied_odds” functional
- New tool “workflow.run_odds_converter” functional
- New tool “workflow.run_prediction_market_edge” functional
- New tool “workflow.run_wallet_flag_check” functional
- 17 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: 4832 → 5320 ▼ functional
- New tool “workflow.run_swap_price_impact” functional
- New tool “workflow.run_token_risk_check” functional
- 9 Sept 26 0
- Tool “system.verify” rewrote its description, which is the text the model reads security
- “primitive.average_entry” added an optional parameter “contractType” cosmetic
- “workflow.run_breakeven_planning” added an optional parameter “contractType” cosmetic
- “workflow.run_exit_target” added an optional parameter “contractType” cosmetic
- “workflow.run_funding_cost” added an optional parameter “contractType” cosmetic
- “workflow.run_liquidation_safety” added an optional parameter “contractType” cosmetic
- “workflow.run_pnl_planning” added an optional parameter “contractType” cosmetic
- “workflow.run_position_sizing” added an optional parameter “contractType” cosmetic
- “workflow.run_scenario_planning” added an optional parameter “contractType” cosmetic
- “workflow.run_breakeven_planning” reworded the description of “sizeBase” cosmetic
- “workflow.run_exit_target” reworded the description of “targetValue” cosmetic
- “workflow.run_pnl_planning” reworded the description of “size” cosmetic
- 8 Sept 26 0
- Tool “system.verify” rewrote its description, which is the text the model reads security
- 6 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 22 Sept 2026 · Probed https://tradingcalc.io/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=tradingcalc.io | CN=YR2,O=Let's Encrypt,C=US | 9 Sept 2026 | 8 Dec 2026 | RSA 2048 | SHA256-RSA | 6110672d65675ecc16175860dd25e139c65 |
| SANs: tradingcalc.io | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of tradingcalc.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| tradingcalc.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://tradingcalc.io/api/mcp | Verified | 200 | |
| http (plaintext) | http://tradingcalc.io/api/mcp | HTTPS enforced | 308 | https://tradingcalc.io/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
primitive.average_entry ~166
Calculate the weighted average entry price from multiple buy/sell fills (DCA): the bare number only, no breakeven or per-fill breakdown. Use when user asks only "what's my average entry?" and wants just that figure. For breakeven and a per-level summary too, use workflow.run_dca_entry instead. Returns: averagePrice, totalSize, totalCost.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined, average is the arithmetic mean (default). inverse = coin-margined, average is the harmonic mean (fill quantity is USD notional). |
| exchangeCode | string | – | Exchange identifier (optional) |
| input | object | yes | – |
| symbol | string | yes | Trading pair symbol, e.g. BTCUSDT |
No output schema declared.
No examples provided.
primitive.hedge_ratio ~159
Calculate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| fundingRatePct | number | – | Current 8h funding rate as percentage, e.g. 0.01. Used for cost estimate. |
| hedgeRatio | number | – | Percentage of spot to hedge, e.g. 100 for full hedge, 50 for half. Default 100. |
| leverage | number | – | Leverage on the perp short. Default 1. |
| spotSize | number | yes | Spot position value in USDT |
No output schema declared.
No examples provided.
system.pubkey ~76
Return the ECDSA P-256 public key (PEM + JWK) and canonical signing format used to sign tool responses, so results can be verified offline without calling back to TradingCalc. Every tools/call result includes a signed second content block when signing is configured; also available at GET /api/mcp/pubkey.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
system.verify ~64
Run the full regression suite: 35 canonical test vectors (linear and inverse/coin-margined) 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
workflow.run_black_scholes ~311
Theoretical European option price and Greeks (delta, gamma, theta, vega, rho) from Black-Scholes, given manual spot/strike/days-to-expiry/volatility/risk-free-rate inputs: no live data fetch. Prefer workflow.run_black_scholes_live instead when checking a real Deribit BTC/ETH instrument, since that variant also reports how far the instrument's actual quoted price sits from what this formula implies. Prices are USD-denominated (the universal convention); callPriceCoin/putPriceCoin additionally divide by spot to match Deribit's own coin-settled quoting convention. Use when user asks "what should this option be worth at X% IV?" or wants raw Greeks for a hypothetical. Returns: callPriceUsd/putPriceUsd, callPriceCoin/putPriceCoin, deltaCall/deltaPut, gamma, vegaPerPct (per 1 vol point), thetaCallPerDay/thetaPutPerDay, rhoCallPerPct/rhoPutPerPct (per 1 rate point).
| Name | Type | Req | Description |
|---|---|---|---|
| daysToExpiry | number | yes | Calendar days until expiry (can be fractional) |
| riskFreeRatePct | number | – | Risk-free rate in percentage points. Default 0: standard crypto-options convention. |
| spot | number | yes | Underlying spot price, USD |
| strike | number | yes | Strike price, USD |
| volatilityPct | number | yes | Annualized implied volatility in percentage points, e.g. 60 for 60% |
No output schema declared.
No examples provided.
workflow.run_black_scholes_live ~283
Black-Scholes theoretical price and Greeks for a REAL, live Deribit BTC/ETH option instrument: pulls that instrument's own spot, strike, days to expiry, and implied volatility from Deribit, then reports how far Deribit's actual quoted mark price sits from what Black-Scholes implies at that IV (priceDiscrepancyPct). This is the trust-check tool: "is this exchange's quoted price consistent with its own volatility assumption?", not an estimate, a live formula cross-check. Use when user gives a specific instrument name (e.g. "BTC-27FEB27-90000-C") and asks "is this option fairly priced?" or "what are the Greeks on this contract?". Returns everything workflow.run_black_scholes does, plus instrumentName, currency, optionType, deribitMarkPriceCoin, deribitMarkIvPct, bsPriceCoin, priceDiscrepancyPct, available (false + error if the instrument name doesn't resolve).
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentName | string | yes | Exact Deribit instrument name, e.g. BTC-27FEB27-90000-C. Get one from Deribit's options chain; this tool does not browse the chain, it prices one named instrument. |
| riskFreeRatePct | number | – | Risk-free rate in percentage points. Default 0: standard crypto-options convention. |
No output schema declared.
No examples provided.
workflow.run_bonding_curve ~174
Pump.fun-style bonding curve calculator: exact tokens received for a buy, price impact, and graduation progress. Pure constant-product math (Uniswap V2 style) using pump.fun's official virtual-reserve constants: no live lookup needed, works for any token still on the curve (not yet graduated to a real AMM pool). Use when user asks "how many tokens do I get buying X SOL on this curve?" or "will this buy graduate the token?". Returns: tokensOut, priceImpactPct, progressPctBefore/After, willGraduate, partialFill (true if the buy exceeds remaining curve capacity).
| Name | Type | Req | Description |
|---|---|---|---|
| solRaisedSoFar | number | yes | SOL already raised on the curve so far (0 for a brand-new token) |
| solToSpend | number | yes | SOL amount for this buy |
No output schema declared.
No examples provided.
workflow.run_breakeven_planning ~219
Calculate the break-even exit price that covers all trading fees: this alone, nothing else. Use when user asks only "what price do I need to just break even?" and nothing more. If the user also gave a stop/target or wants a full trade-safety check, use workflow.run_risk_reward or workflow.run_pre_trade_check instead; both already include this breakeven figure plus more. Returns: breakevenPrice, totalFees.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. For inverse, totalFees is returned in the base coin. |
| entryPrice | number | yes | Entry price (positive) |
| feeClosePct | number | – | Closing fee fraction, default 0.0005 |
| feeOpenPct | number | – | Opening fee fraction, default 0.0002 |
| side | string | yes | – |
| sizeBase | number | yes | Position size: base asset qty for linear, USD contracts for inverse |
No output schema declared.
No examples provided.
workflow.run_breakout_acceptance ~243
Market Profile breakout acceptance: did price accept (hold) beyond the value area / range, or reject back inside (fakeout)? Optional buy/sell delta. Use for "did the break above VAH get accepted?". Returns: state, accepted (boolean), direction, confidence, key_levels (VAH/VAL/VPOC), scenario_framing, invalidation level.
| Name | Type | Req | Description |
|---|---|---|---|
| candles | array | – | Optional OHLCV for the session; omit to fetch from venue (reproducible + 0 COGS when supplied) |
| include_delta | boolean | – | Include buy/sell delta analysis (default true) |
| instrument | string | yes | Symbol, e.g. BTCUSDT |
| prev_candles | array | – | Optional OHLCV for the previous session |
| session_date | string | yes | Session date YYYY-MM-DD (UTC) |
| timeframe | string | – | Candle timeframe (default 15m) |
| value_area_rule | number | – | Value-area fraction 0.5–0.9 (default 0.70) |
| venue | string | yes | Exchange to fetch candles from when candles[] not supplied |
No output schema declared.
No examples provided.
workflow.run_carry_trade ~226
Delta-neutral carry trade (funding arbitrage) analysis, with a profitable/marginal/loss verdict on top of the same math primitive.funding_arb uses. Prefer this over primitive.funding_arb whenever a plain-English verdict is wanted, not just the raw numbers. 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).
| Name | Type | Req | Description |
|---|---|---|---|
| funding_rate_long | number | yes | Funding rate on long exchange per interval (decimal) |
| funding_rate_short | number | yes | Funding rate on short exchange per interval (decimal) |
| hold_days | number | yes | Hold duration in days |
| interval_hours | number | – | Funding interval: 1 or 8 hours (default 8) |
| notional | number | yes | Position notional in USDT |
| transfer_fee_pct | number | – | One-way transfer fee % (default 0.1) |
No output schema declared.
No examples provided.
workflow.run_compound_funding ~190
Project 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.
| Name | Type | Req | Description |
|---|---|---|---|
| durationDays | number | yes | Number of days to project |
| fundingRatePct | number | yes | Funding rate per interval as percentage, e.g. 0.01 for 0.01% |
| initialCapital | number | yes | Starting capital in USDT |
| intervalHours | number | – | Funding interval: 8 (standard) or 1 (Hyperliquid) |
| reinvestPct | number | – | Percentage of earnings reinvested each interval. 100 = full compounding, 0 = no reinvestment. Default 100. |
No output schema declared.
No examples provided.
workflow.run_covered_call_protective_put ~400
Covered call (long the coin + short a call against it, for yield) or protective put (long the coin + long a put, for downside insurance) on a Deribit BTC/ETH position. Returns the standard annualized-yield metric (premium ÷ 1 coin, annualized by 365/daysToExpiry) up front: that number doesn't depend on any price scenario. Also returns the USD value of the combined position at a given scenario price: covered call caps upside at strike + premium×scenarioPrice (the premium's own coin-denominated value still scales with price, unlike a textbook USD-settled cap); protective put floors value at strike×(1−premium), which is the true minimum across every possible settlement price, not just an approximation. Use when user asks "what annualized yield do I get selling covered calls on my BTC?" or "how much does insuring my BTC with a put cost me?". Returns: staticYieldPct, annualizedYieldPct, valueAtScenarioUsd, breakevenPrice (covered_call only), floorValueUsd (protective_put only), vsHoldingUsd (vs. just holding the coin).
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | Underlying coin. Default BTC. |
| daysToExpiry | number | yes | Calendar days until expiry; used to annualize the yield/cost |
| premiumCoin | number | yes | Premium received (covered_call) or paid (protective_put) per contract, in the base coin |
| quantity | number | yes | Coin units held / contracts (1:1 covered) |
| scenarioPrice | number | yes | Underlying price in USD to evaluate the combined position's value at |
| spotEntry | number | yes | Price you acquired/value the underlying coin at, USD; used for the covered-call breakeven vs. cost basis |
| strategy | string | yes | – |
| strike | number | yes | Option strike, USD |
No output schema declared.
No examples provided.
workflow.run_dca_entry ~207
DCA entry planner: weighted average entry price, breakeven, and per-level contribution from multiple fill prices and sizes. Prefer this over primitive.average_entry whenever breakeven or the per-level breakdown is also wanted, not just the bare average. 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 summary.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. Each fill's size is USD notional (contracts) for inverse; averageEntry is then the harmonic mean of fill prices, not the arithmetic mean. |
| entries | array | yes | – |
| fee_close_pct | number | – | Close fee rate (default 0.0005) |
| fee_open_pct | number | – | Open fee rate (default 0.0002) |
| side | string | yes | – |
No output schema declared.
No examples provided.
workflow.run_exit_target ~227
Calculate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. For inverse, pnl-mode targetValue and outputs are in the base coin. |
| entryPrice | number | yes | Entry price |
| feeClosePct | number | – | Closing fee fraction, default 0.0005 |
| feeOpenPct | number | – | Opening fee fraction, default 0.0002 |
| leverage | number | yes | Leverage multiplier |
| side | string | yes | – |
| sizeBase | number | yes | Position size in base asset |
| targetMode | string | yes | "pnl" = target in USDT, "roe" = target in % |
| targetValue | number | yes | Target value (USDT/coin for pnl mode, or %) |
No output schema declared.
No examples provided.
workflow.run_forex_average_entry ~120
Size-weighted average entry price across multiple forex fills: plain arithmetic mean, since forex has no coin-margined analog requiring the harmonic mean the crypto average_entry tool uses for inverse contracts. Use when user asks "what's my average entry after these fills?". Returns: totalUnits, totalCost, avgEntry.
| Name | Type | Req | Description |
|---|---|---|---|
| fills | array | yes | Fills to average, each with a price and a size in base-currency units |
| pair | string | yes | Currency pair in BASE/QUOTE format, e.g. "EUR/USD" |
No output schema declared.
No examples provided.
workflow.run_forex_breakeven ~207
Breakeven price for a forex position accounting for spread and round-trip commission, in pips and in price. Commission is quoted per standard lot (100,000 units) and expressed in the pair's own quote currency; because both commission and pip value scale with lot size, the commission-in-pips figure is independent of position size by construction. Use when user asks "where's my true breakeven after spread and commission?". Returns: pipSize, commissionPips, totalCostPips, breakevenPrice.
| Name | Type | Req | Description |
|---|---|---|---|
| commissionPerLotRoundTrip | number | – | Round-trip commission per standard lot, in the pair's own quote currency. Default 0 (pure-spread broker model). |
| entryPrice | number | yes | – |
| pair | string | yes | Currency pair in BASE/QUOTE format, e.g. "EUR/USD" |
| side | string | yes | – |
| spreadPips | number | yes | Spread at entry, in pips |
No output schema declared.
No examples provided.
workflow.run_forex_margin_level ~127
Free margin and margin level % from account equity and used margin: equity/usedMargin*100, the same stop-out proximity metric every forex platform shows. Returns null (not Infinity) when usedMargin is 0, meaning no open position. Use when user asks "how close am I to a margin call?" or "what's my free margin?". Returns: freeMargin, marginLevelPct.
| Name | Type | Req | Description |
|---|---|---|---|
| equity | number | yes | Account equity (balance + floating P&L) |
| usedMargin | number | yes | Margin currently locked by open positions. 0 if none. |
No output schema declared.
No examples provided.
workflow.run_forex_pip_value ~230
Value of 1 pip for a given forex pair and position size, in that pair's own quote currency (e.g. EUR/USD's pip value comes back in USD, USD/JPY's in JPY): no live FX rate needed, since a pair's pip value is naturally denominated in its own quote currency. Pip size is 0.0001 for non-JPY pairs, 0.01 for JPY-quoted pairs, a universal market convention verified against real broker documentation, not broker-specific. Converting this into a different account currency needs a live FX rate and is not yet implemented. Use when user asks "what's 1 pip worth on X lots of EUR/USD?". Returns: pipSize, pipValueQuote, base, quote.
| Name | Type | Req | Description |
|---|---|---|---|
| pair | string | yes | Currency pair in BASE/QUOTE format, e.g. "EUR/USD" |
| units | number | yes | Position size in base-currency units (1 standard lot = 100,000, mini = 10,000, micro = 1,000, nano = 100) |
No output schema declared.
No examples provided.
workflow.run_forex_pnl ~141
Profit or loss for a closed or hypothetical forex trade, in pips and in the pair's own quote currency, long or short. Use when user asks "what did I make/lose on this trade?" or "what would X pips be worth on Y lots?". Returns: pips (signed, positive favors the position taken), pnlQuote.
| Name | Type | Req | Description |
|---|---|---|---|
| entryPrice | number | yes | – |
| exitPrice | number | yes | – |
| pair | string | yes | Currency pair in BASE/QUOTE format, e.g. "EUR/USD" |
| side | string | yes | – |
| units | number | yes | Position size in base-currency units |
No output schema declared.
No examples provided.
workflow.run_forex_risk_reward ~183
Risk and reward distance in pips from entry/stop/target, and the resulting ratio (reward/risk): a raw number, not a verdict. ratio is null when the stop sits exactly at entry (no risk distance), and also when validSetup is false (stop/target on the wrong side of entry for the given side, e.g. a long with its stop above entry) - check validSetup before trusting the ratio. Use when user asks "what's my risk/reward on this setup?". Returns: riskPips, rewardPips, validSetup, ratio.
| Name | Type | Req | Description |
|---|---|---|---|
| entryPrice | number | yes | – |
| pair | string | yes | Currency pair in BASE/QUOTE format, e.g. "EUR/USD" |
| side | string | yes | – |
| stopPrice | number | yes | – |
| targetPrice | number | yes | – |
No output schema declared.
No examples provided.
workflow.run_forex_scenario ~162
PnL across a range of hypothetical price moves (in pips, signed by actual price direction, not pre-adjusted for side), for a single forex position size, long or short. Use when user asks "what if price moves X pips in either direction?". Returns: scenarios[] (deltaPips, exitPrice, pnlQuote).
| Name | Type | Req | Description |
|---|---|---|---|
| deltasPips | array | yes | Hypothetical price moves in pips, e.g. [-50, 0, 50] |
| entryPrice | number | yes | – |
| pair | string | yes | Currency pair in BASE/QUOTE format, e.g. "EUR/USD" |
| side | string | yes | – |
| units | number | yes | Position size in base-currency units |
No output schema declared.
No examples provided.
workflow.run_funding_arbitrage ~237
Calculate funding rate arbitrage profit: annualized yield, net profit, and breakeven days for a long/short basis trade across two exchanges: the bare numbers only, no plain-English verdict. For the same math plus a profitable/marginal/loss verdict, use workflow.run_carry_trade instead. Use when user asks "is this funding arb worth it?" or "how many days to break even on transfer fees?". Returns: netProfitUsdt, annualizedYieldPct, breakevenDays.
| Name | Type | Req | Description |
|---|---|---|---|
| durationDays | number | yes | Holding period in days |
| intervalHours | number | – | Funding interval: 8 (standard) or 1 (Hyperliquid) |
| longFundingRate | number | yes | Funding rate on long side (% per interval, positive = you pay) |
| positionSize | number | yes | Position size in USDT |
| shortFundingRate | number | yes | Funding rate on short side (% per interval, positive = you receive) |
| transferFeePct | number | – | One-time transfer/setup fee as percentage, e.g. 0.1 for 0.1% |
No output schema declared.
No examples provided.
workflow.run_funding_breakeven ~238
Price 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.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. size is USD notional (contracts) for inverse; notional/funding_cost/fee_total/total_carry_cost come back denominated in the base coin. |
| entry_price | number | yes | Entry price |
| fee_close_pct | number | – | Close fee rate (default 0.0005) |
| fee_open_pct | number | – | Open fee rate (default 0.0002) |
| funding_rate | number | yes | Funding rate per 8h period (decimal, e.g. 0.0001) |
| hold_hours | number | yes | Hold duration in hours |
| side | string | yes | – |
| size | number | yes | Position size in base currency |
No output schema declared.
No examples provided.
workflow.run_funding_cost ~182
Calculate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. For inverse, sizeBase is USD contracts and cost figures come out in the base coin. |
| days | number | yes | Number of days to hold |
| entryPrice | number | yes | Entry price |
| fundingRate | number | yes | Funding rate per 8h period as fraction, e.g. 0.0001 |
| side | string | yes | – |
| sizeBase | number | yes | Position size in base asset |
No output schema declared.
No examples provided.
workflow.run_implied_volatility ~258
Solves for the volatility that makes Black-Scholes reproduce an observed option price (Newton-Raphson with a bisection fallback for cases where vega is too flat to converge, e.g. deep ITM/OTM or very short-dated). Checks the price against its no-arbitrage bounds first and refuses to solve (converged: false + error) rather than return a garbage number when the price is impossible for the given spot/strike/rate. Use when user asks "what IV does this option price imply?" or gives a market price and wants the volatility, not the reverse. Returns: impliedVolatilityPct, iterations, method (newton-raphson/bisection), converged, priceAtSolution.
| Name | Type | Req | Description |
|---|---|---|---|
| daysToExpiry | number | yes | Calendar days until expiry (can be fractional) |
| optionType | string | yes | – |
| riskFreeRatePct | number | – | Risk-free rate in percentage points. Default 0: standard crypto-options convention. |
| spot | number | yes | Underlying spot price, USD |
| strike | number | yes | Strike price, USD |
| targetPriceUsd | number | yes | The observed option price, USD, to solve the implied volatility from |
No output schema declared.
No examples provided.
workflow.run_liquidation_safety ~161
Calculate 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).
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined (e.g. Deribit/Bybit/MEXC BTC-settled perps). |
| entryPrice | number | yes | Entry price (positive) |
| leverage | number | yes | Leverage multiplier, e.g. 10 for 10x |
| mmr | number | – | Maintenance margin rate, default 0.005 (0.5%) |
| side | string | yes | – |
No output schema declared.
No examples provided.
workflow.run_market_cap_comparison ~256
Compares two tokens' live market caps (Solana or any of 5 EVM chains; the two tokens can be on different chains) and projects what an investment would be worth if the first token's market cap matched the second's. Narrative-agnostic ("if X reaches Y's market cap"): works for any token pair, not tied to one hype cycle or one chain. A snapshot ratio, not a forecast: assumes fixed supply on both sides. Use when user asks "what if this token reaches [other token]'s market cap?". Returns: multiplier, projectedValueUsd, projectedPriceUsd, profitUsd, comparable (false + error if either market cap can't be resolved).
| Name | Type | Req | Description |
|---|---|---|---|
| compareToChain | string | – | Chain of the comparison token. Default solana. Can differ from tokenChain. |
| compareToMint | string | yes | Address of the token whose market cap to compare against |
| investmentUsd | number | yes | Investment amount in USD |
| tokenChain | string | – | Chain of the token you hold. Default solana. |
| tokenMint | string | yes | Address of the token you hold or are evaluating (base58 for Solana, 0x... for EVM chains) |
No output schema declared.
No examples provided.
workflow.run_market_implied_odds ~258
Reads Kalshi's full live BTC or ETH year-end price ladder (a set of mutually-exclusive prediction markets covering the whole price range) and reports what the market itself implies: the median (50th-percentile) price bucket, the single most-likely (mode) bucket, and the probability of ending the year at or above any real bucket boundary. Deliberately does not compute an expected value or interpolate inside a bucket: the top/bottom buckets are open-ended, so any point estimate there would need an invented assumption; every number this tool returns traces back to one live, sourced price. Use when user asks "what does the market think BTC will be worth by year end?" or "what are the odds ETH ends the year above $X?". Returns: buckets[] (label, floor, cap, probabilityPct), medianBucketLabel, modeBucketLabel, vigPct, probabilityAtOrAbovePct + snappedThresholdUsd (only when thresholdUsd is supplied).
| Name | Type | Req | Description |
|---|---|---|---|
| coin | string | – | Which coin's year-end ladder to read. Default BTC. |
| thresholdUsd | number | – | Optional price threshold: returns the probability of ending the year at or above the nearest real bucket boundary at or below this value. |
No output schema declared.
No examples provided.
workflow.run_max_leverage ~154
Calculate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| accountSize | number | yes | Total account size in USDT |
| maxDrawdownPct | number | yes | Maximum acceptable drawdown as percentage, e.g. 10 for 10% |
| mmr | number | – | Maintenance margin rate, default 0.005 (0.5%) |
| volatilityPct | number | yes | Expected daily price volatility as percentage, e.g. 3 for 3% |
No output schema declared.
No examples provided.
workflow.run_odds_converter ~413
Converts a probability into decimal odds, American odds, and breakeven win rate: either from a manually supplied probability, or fetched live from Kalshi, Polymarket, or ADI Predictstreet (three independent crypto-price prediction market venues, all public keyless market data). When a Kalshi or Polymarket source is supplied, also returns the vig (the exchange's built-in edge), computed from the market's own YES+NO prices, not estimated; ADI Predictstreet's crypto contracts currently have no live trading volume on any venue, so this returns available:false with an explanation rather than a fake price (use workflow.run_window_fair_value for a theoretical price on those instead). Use when user asks "what odds does a 35% probability work out to?" or "what's the vig on this Kalshi/Polymarket market?". Provide exactly one of probability/kalshiTicker/polymarketSlug/adiSymbol. Returns: probability, decimalOdds, americanOdds, breakevenWinRatePct, vigPct (null unless a live two-sided source was used), source (manual/kalshi/polymarket/adi), identifier, label.
| Name | Type | Req | Description |
|---|---|---|---|
| adiSymbol | string | – | An ADI Predictstreet market symbol (e.g. BTC1D-20260920T0000). Currently always returns available:false; these contracts have no live trading volume yet. |
| kalshiTicker | string | – | A Kalshi market ticker (e.g. KXBTCY-27JAN0100-T149999.99) to fetch a live price from. |
| polymarketSlug | string | – | A Polymarket market slug, from the market URL (e.g. will-bitcoin-reach-100k-in-september-2026), to fetch a live price from. |
| probability | number | – | Probability as a decimal 0-1 (e.g. 0.35). Use this OR one of the live sources below, not both. |
No output schema declared.
No examples provided.
workflow.run_open_analysis ~241
Market Profile open analysis: where and how price opened vs the prior session value area. Use for "how did BTC open today?" / "what does the open imply for the session?". Returns: open_location, open_type (OD/OTD/ORR/OAIR) with description/implication, confidence, key_levels (VAH/VAL/VPOC/IB), scenario_framing (bullish/bearish/neutral), invalidation level.
| Name | Type | Req | Description |
|---|---|---|---|
| candles | array | – | Optional OHLCV for the session; omit to fetch from venue (reproducible + 0 COGS when supplied) |
| instrument | string | yes | Symbol, e.g. BTCUSDT |
| prev_candles | array | – | Optional OHLCV for the previous session |
| session_date | string | yes | Session date YYYY-MM-DD (UTC) |
| timeframe | string | – | Candle timeframe (default 15m) |
| value_area_rule | number | – | Value-area fraction 0.5–0.9 (default 0.70) |
| venue | string | yes | Exchange to fetch candles from when candles[] not supplied |
No output schema declared.
No examples provided.
workflow.run_options_payoff ~371
Payoff, P&L, and breakeven price for a single-leg Deribit BTC/ETH option (long or short call/put) at a given scenario price at expiry. Deribit BTC/ETH options are coin-settled: premium, P&L, and the max profit/loss caps come back denominated in the base coin (BTC/ETH), not USD; a scenarioPnlUsd convenience field converts the coin P&L back to USD at the scenario price. Coin settlement means a long call's upside is capped (max profit = 1 − premium per unit, not unlimited) while a long put's upside is technically unbounded as price falls toward zero, the mirror image of a USD-settled option's payoff shape, not a bug. Use when user asks "what does my BTC call/put pay off at price X?" or "where's my breakeven on this option?". Returns: intrinsicPerUnitCoin, scenarioPnlCoin, scenarioPnlUsd, breakevenPrice, maxLossCoin/maxProfitCoin (null = unbounded), isProfitable.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | Underlying coin. Default BTC. |
| optionType | string | yes | – |
| position | string | yes | – |
| premiumCoin | number | yes | Premium paid/received per contract, in the base coin (matches Deribit's own quoted price, e.g. 0.02 BTC); must be < 1 for a call |
| quantity | number | yes | Number of contracts (Deribit BTC/ETH options have contract_size 1.0, so this is coin-denominated size) |
| scenarioPrice | number | yes | Underlying price in USD to evaluate the payoff at |
| strike | number | yes | Strike price in USD |
No output schema declared.
No examples provided.
workflow.run_pnl_planning ~202
Calculate 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 (%).
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. For inverse, pnl/fees are returned in the base coin, not USDT. |
| entryPrice | number | yes | Entry price (positive) |
| exitPrice | number | yes | Exit price (positive) |
| feeClosePct | number | – | Closing fee as fraction |
| feeOpenPct | number | – | Opening fee as fraction, e.g. 0.0002 = 0.02% |
| side | string | yes | Trade direction |
| size | number | yes | Position size: base asset qty for linear, USD contracts for inverse |
No output schema declared.
No examples provided.
workflow.run_position_sizing ~202
Calculate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. For inverse, sizeQuote is USD contracts and margin is returned in the base coin. |
| entryPrice | number | yes | Entry price |
| feeClosePct | number | – | Closing fee fraction, default 0.0005 |
| feeOpenPct | number | – | Opening fee fraction, default 0.0002 |
| leverage | number | – | Leverage, default 1 |
| riskUsdt | number | yes | Maximum acceptable loss in USDT |
| side | string | yes | – |
| stopLoss | number | yes | Stop-loss price |
No output schema declared.
No examples provided.
workflow.run_pre_trade_check ~448
Full pre-trade decision card: orchestrates position sizing, breakeven, liquidation, and funding cost in one call: the preferred tool whenever a full setup check is wanted, not just one metric. 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 rate automatically. If the user specifically gave an entry/stop/target and wants an R:R-graded verdict, use workflow.run_risk_reward instead. Returns: positionSize, breakeven, liquidationPrice, fundingCost, overnightBreakevenShift, verdict.
| Name | Type | Req | Description |
|---|---|---|---|
| account_balance | number | yes | Total account balance in USDT |
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined (e.g. Bybit BTCUSD). All returned figures (notional, margin, risk_amount, funding_cost_*) stay USD-denominated either way; recommended_size i… |
| entry_price | number | yes | Entry price (positive) |
| exchange | string | – | Exchange code, e.g. "binance" or "bybit". Used to fetch live funding rate if funding_rate is omitted. |
| fee_close_pct | number | – | Closing fee fraction, default 0.0005 |
| fee_open_pct | number | – | Opening fee fraction, default 0.0002 |
| funding_rate | number | – | Funding rate per 8h as decimal, e.g. 0.0001. If omitted, fetched live from exchange. |
| hold_hours | number | – | Expected hold time in hours for overnight shift calc. Default 8. |
| leverage | number | yes | Leverage multiplier |
| mmr | number | – | Maintenance margin rate, default 0.005 |
| risk_pct | number | yes | Risk as % of balance, e.g. 1.0 = 1% |
| side | string | yes | – |
| stop_loss | number | yes | Stop-loss price (positive) |
| symbol | string | – | Perpetual symbol, e.g. "BTCUSDT". |
No output schema declared.
No examples provided.
workflow.run_prediction_market_edge ~288
Compares your own probability estimate for an event against a prediction market's price (manual entry or a live Kalshi ticker) and sizes a bet using fractional Kelly criterion bet sizing (default: quarter-Kelly, a standard conservative haircut on full Kelly, stated explicitly as a convention). Returns zero recommended stake whenever your probability doesn't exceed the market's price: no edge, no bet. Use when user asks "does this bet have edge?" or "how much should I stake given my probability estimate vs the market's?". Returns: edgePct, evPerDollarStaked, fullKellyFraction, cappedKellyFraction, recommendedStakeUsd, verdict (skip_this_one/think_twice/worth_the_risk/take_it).
| Name | Type | Req | Description |
|---|---|---|---|
| bankrollUsd | number | yes | Bankroll available for this bet, in USD |
| kalshiTicker | string | – | A Kalshi market ticker to fetch the market probability from live instead of supplying it manually. |
| kellyFractionCap | number | – | Fraction of full Kelly to actually stake, 0.01-1. Default 0.25 (quarter-Kelly). |
| marketProbabilityPct | number | – | The market's probability (price), 0.01-99.99. Use this OR kalshiTicker, not both. |
| yourProbabilityPct | number | yes | Your own probability estimate, 0.01-99.99 |
No output schema declared.
No examples provided.
workflow.run_risk_reward ~349
Full risk:reward analysis: the single best tool when user describes a trade with entry, stop, AND target (all three). 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, specifically graded on the R:R ratio. If the user instead wants a full setup check tied to a live exchange/symbol (including funding cost), use workflow.run_pre_trade_check instead; its verdict covers overall setup safety, not just R:R. Use when user asks "is this trade worth taking?" or "what's my risk reward on this setup?".
| Name | Type | Req | Description |
|---|---|---|---|
| account_balance | number | yes | Account balance in USDT |
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined (e.g. Bybit BTCUSD). position_size/notional are USD notional (contracts) for inverse; pnl_at_stop/pnl_at_target come back denominated in the… |
| entry_price | number | yes | Entry price |
| fee_close_pct | number | – | Close fee rate (default 0.0005) |
| fee_open_pct | number | – | Open fee rate (default 0.0002) |
| leverage | number | yes | Leverage multiplier |
| mmr | number | – | Maintenance margin rate (default 0.005) |
| risk_pct | number | yes | Max risk as % of account |
| side | string | yes | – |
| stop_loss | number | yes | Stop-loss price |
| take_profit | number | yes | Take-profit price |
No output schema declared.
No examples provided.
workflow.run_scale_out ~215
Scale-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.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. total_size is USD notional (contracts) for inverse, and per-level pnl comes back denominated in the base coin. |
| entry_price | number | yes | Entry price |
| exits | array | yes | – |
| fee_close_pct | number | – | Close fee rate (default 0.0005) |
| fee_open_pct | number | – | Open fee rate (default 0.0002) |
| side | string | yes | – |
| total_size | number | yes | Total position size in base currency |
No output schema declared.
No examples provided.
workflow.run_scenario_planning ~201
Run 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 }.
| Name | Type | Req | Description |
|---|---|---|---|
| contractType | string | – | linear = USDT-margined (default), inverse = coin-margined. For inverse, size is USD contracts and pnl/fees come out in the base coin. |
| deltasPct | array | yes | List of price change percentages, e.g. [-10, -5, 0, 5, 10] |
| entryPrice | number | yes | Entry price |
| feeClosePct | number | – | Closing fee fraction |
| feeOpenPct | number | – | Opening fee fraction |
| side | string | yes | – |
| size | number | yes | Position size in base asset |
No output schema declared.
No examples provided.
workflow.run_session_structure ~235
Market Profile day-type classifier: trend / balance / neutral_trend / normal / normal_var, from TPO, initial balance, range extension and value migration. Use for "is this a trend day or a balance day?". Returns: structure (the day-type label), description, bias, key_signals, key_levels (VAH/VAL/VPOC/IB/session high-low), scenario_framing, invalidation level.
| Name | Type | Req | Description |
|---|---|---|---|
| candles | array | – | Optional OHLCV for the session; omit to fetch from venue (reproducible + 0 COGS when supplied) |
| instrument | string | yes | Symbol, e.g. BTCUSDT |
| prev_candles | array | – | Optional OHLCV for the previous session |
| session_date | string | yes | Session date YYYY-MM-DD (UTC) |
| timeframe | string | – | Candle timeframe (default 15m) |
| value_area_rule | number | – | Value-area fraction 0.5–0.9 (default 0.70) |
| venue | string | yes | Exchange to fetch candles from when candles[] not supplied |
No output schema declared.
No examples provided.
workflow.run_spread_reader ~206
Reads the same real-world bet's live price from 2-4 prediction-market venues at once (Kalshi, Polymarket, ADI Predictstreet) and reports the spread between the cheapest and most expensive. The caller supplies each venue's own identifier for what they've confirmed is the same underlying bet; this tool never auto-matches events across venues, only reads and compares prices for identifiers you provide. Use when user asks "is this bet priced differently on Kalshi vs Polymarket?" or "which venue has the best price on this?". Returns: quotes[] (venue, identifier, label, probabilityPct, available, error), availableCount, cheapestVenue, mostExpensiveVenue, spreadPct (percentage points, null if fewer than 2 quotes resolved).
| Name | Type | Req | Description |
|---|---|---|---|
| quotes | array | yes | One entry per venue you want to compare: 2 to 4 total. Each must genuinely be the same real-world bet; this tool does not verify that for you. |
No output schema declared.
No examples provided.
workflow.run_straddle_strangle ~383
Payoff, P&L, and both breakeven prices for a long or short straddle/strangle (a call + a put on the same Deribit BTC/ETH underlying, both legs the same direction) at a scenario price. A straddle is callStrike === putStrike; any callStrike > putStrike makes it a strangle, same formula either way. Coin-settled like workflow.run_options_payoff: a long position's max loss is the flat total premium paid (between the strikes, both legs worthless); max profit is technically unbounded, dominated by the put leg's payoff as price falls toward zero. Use when user asks about a straddle or strangle, e.g. "what does a BTC straddle pay off if price barely moves?" or "where are my breakevens on this strangle?". Returns: combinedIntrinsicCoin, scenarioPnlCoin, scenarioPnlUsd, upperBreakevenPrice, lowerBreakevenPrice, maxLossCoin/maxProfitCoin (null = unbounded), isStraddle, isProfitable.
| Name | Type | Req | Description |
|---|---|---|---|
| callPremiumCoin | number | yes | Call leg premium per contract, in the base coin (e.g. 0.02 BTC) |
| callStrike | number | yes | Call leg strike, USD. Equal to putStrike for a straddle, higher for a strangle. |
| currency | string | – | Underlying coin. Default BTC. |
| position | string | yes | – |
| putPremiumCoin | number | yes | Put leg premium per contract, in the base coin |
| putStrike | number | yes | Put leg strike, USD. Must be <= callStrike. |
| quantity | number | yes | Number of straddle/strangle units (both legs sized equally) |
| scenarioPrice | number | yes | Underlying price in USD to evaluate the payoff at |
No output schema declared.
No examples provided.
workflow.run_swap_price_impact ~167
Live price-impact quote for a Solana token swap: routed through Jupiter (the same aggregator real swaps use) across every pool it knows about, not a single-pool estimate. Use when user asks "how much slippage will I eat swapping X tokens?" or "what will I actually get if I sell N tokens?". Returns: outputAmount, priceImpactPct, effectivePrice, marketPriceUsd, liquidityUsd, routable (false + error if the size can't be routed at all).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Amount of the token to swap, in human units (not raw base units) |
| mint | string | yes | Solana mint address of the token being sold (base58) |
| outputAsset | string | – | Asset to receive. Default USDC. |
No output schema declared.
No examples provided.
workflow.run_token_risk_check ~224
Token rug-pull MECHANISM check for a Solana token (mint address): can the deployer still mint supply, freeze wallets, pull liquidity, swap metadata, or has RugCheck flagged a known scam pattern (e.g. copycat token)? Fetches live facts from RugCheck (GoPlus as fallback) and returns a transparently-weighted composite score. Deliberately does NOT score holder concentration or "whale dump" impact: those are properties of any liquid market (a legit protocol's top holders are routinely treasury/vesting/exchange wallets), not rug signals; they are returned separately as informational market_context. Use when user asks "is this token a rug pull?" or "is [token] safe to buy?". This is a sourced, timestamped read of public facts, not a safety guarantee. Returns: score (0-100), verdict (clean/caution/high_risk/red_flags), verdict_summary, components breakdown, facts, market_context, sources.
| Name | Type | Req | Description |
|---|---|---|---|
| mint | string | yes | Solana token mint address (base58) |
No output schema declared.
No examples provided.
workflow.run_value_migration ~239
Market Profile value-area migration across sessions: is value migrating up, down, or overlapping (directional conviction vs balance)? Use for "is value moving higher day over day?". Returns: state, direction, migration_pct, key_levels (current vs. prior session VAH/VAL/VPOC), scenario_framing, invalidation level.
| Name | Type | Req | Description |
|---|---|---|---|
| candles | array | – | Optional OHLCV for the session; omit to fetch from venue (reproducible + 0 COGS when supplied) |
| instrument | string | yes | Symbol, e.g. BTCUSDT |
| lookback_sessions | number | – | Sessions to compare, 1–5 (default 1) |
| prev_candles | array | – | Optional OHLCV for the previous session |
| session_date | string | yes | Session date YYYY-MM-DD (UTC) |
| timeframe | string | – | Candle timeframe (default 15m) |
| value_area_rule | number | – | Value-area fraction 0.5–0.9 (default 0.70) |
| venue | string | yes | Exchange to fetch candles from when candles[] not supplied |
No output schema declared.
No examples provided.
workflow.run_wallet_flag_check ~237
Checks a wallet address (Solana or any of 5 EVM chains) against independent flag databases: GoPlus (malicious-address categories, all chains), Webacy (address analysis + sanctions check, all chains), and ScamSniffer (public phishing/drainer blacklist, EVM chains only), and returns each source's own facts separately, never merged into one invented score. Use when user asks "is this wallet address flagged?" or "is it safe to send to this address?". A clean result means "nothing found in these databases," not a certified-safe verdict. Returns: goplus (flags[], categoriesChecked), webacyGeneral (overallRisk, dprk/hack/ofacSanctioned, exchangeLabel), webacySanctions (status), scamSniffer (flagged; not applicable on Solana). Each source has an `available` flag: false + error if that source failed independently.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | Chain of the wallet address. Default solana. |
| walletAddress | string | yes | Wallet address (base58 for Solana, 0x... for EVM chains) |
No output schema declared.
No examples provided.
workflow.run_window_fair_value ~340
Theoretical fair value for a time-windowed crypto up/down contract (the shape ADI Predictstreet and Kalshi-style daily crypto markets use: pays out based on whether the settlement price finishes at/above or below a reference price pinned at window open, by a fixed close time): a cash-or-nothing digital option, priced with the standard N(d2) formula. Use this when there's no live market price to read (e.g. a venue's contract has real terms but zero trading volume) instead of a live-market odds tool. Volatility is a required manual input; there is no live implied-vol market on these contracts to pull it from. Use when user asks "what should this up/down contract be worth?" or "what's the fair probability BTC finishes above $X in N minutes?". Returns: d1, d2, probAbovePct, probBelowPct, fairPriceAboveCents, fairPriceBelowCents (cents convention, directly comparable to how these venues quote a contract).
| Name | Type | Req | Description |
|---|---|---|---|
| currentPrice | number | yes | Current spot price of the coin, in USD. |
| minutesToClose | number | yes | Minutes remaining until the window closes/settles. |
| referencePrice | number | yes | The reference/pinned price the contract resolves against (the window's open price, or a stated strike). |
| riskFreeRatePct | number | – | Risk-free rate in percentage points. Default 0: negligible for these short windows. |
| volatilityPct | number | yes | Annualized volatility, in percentage points (e.g. 50 for 50%). Required; no live source for this on these contracts. |
No output schema declared.
No examples provided.
What is the TradingCalc MCP: Crypto Trading, Options, On-Chain… server?
TradingCalc MCP: Crypto Trading, Options, On-Chain… is listed in the public MCP registry as io.github.SKalinin909/tradingcalc. Deterministic crypto futures, options, on-chain, prediction-market math. 40 tools. Not AI estimates. This page covers its hosted endpoint (https://tradingcalc.io/api/mcp).
Is the TradingCalc MCP: Crypto Trading, Options, On-Chain… server safe to use?
TradingCalc MCP: Crypto Trading, Options, On-Chain… scores 81 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the TradingCalc MCP: Crypto Trading, Options, On-Chain… server expose?
TradingCalc MCP: Crypto Trading, Options, On-Chain… exposes 47 tools: workflow.run_pnl_planning, workflow.run_liquidation_safety, workflow.run_breakeven_planning, workflow.run_position_sizing, workflow.run_funding_cost, and 42 more. Their descriptions and schemas cost roughly 10,820 tokens of context every time the server is loaded.
Does the TradingCalc MCP: Crypto Trading, Options, On-Chain… server require authentication?
No. We connected to TradingCalc MCP: Crypto Trading, Options, On-Chain… without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the TradingCalc MCP: Crypto Trading, Options, On-Chain… server still maintained?
TradingCalc MCP: Crypto Trading, Options, On-Chain… is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.