TradingCalc MCP: Options, Forex, Risk Stats, Prediction Markets, On-Chain & Crypto Futures
by SKalinin909 · remote · no sign-in to list tools · v2.14.0 · published by GitHub user SKalinin909
Deterministic options, forex, risk, on-chain & futures math. 75 tools. Not AI estimates.
77 tools: 1 do something that can't be undone, 75 change things and 1 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things75Claude Code: ask: see these tools
- Only reads1Claude Code: allow: see these tools
75 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http tradingcalc https://tradingcalc.io/api/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "workflow.run_pnl_planning" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_pnl_planning" says "run": a word for a change.
The server marks "workflow.run_liquidation_safety" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_liquidation_safety" says "run": a word for a change.
The server marks "workflow.run_breakeven_planning" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_breakeven_planning" says "run": a word for a change.
The server marks "workflow.run_position_sizing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_position_sizing" says "run": a word for a change.
The server marks "workflow.run_funding_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_funding_cost" says "run": a word for a change.
The server marks "workflow.run_exit_target" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_exit_target" says "run": a word for a change.
Show 69 more findingsShow fewer
The server marks "workflow.run_scenario_planning" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_scenario_planning" says "run": a word for a change.
The server marks "workflow.run_max_leverage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_max_leverage" says "run": a word for a change.
The server marks "workflow.run_funding_arbitrage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_funding_arbitrage" says "run": a word for a change.
The server marks "workflow.run_compound_funding" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_compound_funding" says "run": a word for a change.
The server marks "workflow.run_pre_trade_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_pre_trade_check" says "run": a word for a change.
The server marks "workflow.run_risk_reward" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_risk_reward" says "run": a word for a change.
The server marks "workflow.run_portfolio_risk" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_portfolio_risk" says "run": a word for a change.
The server marks "workflow.run_dca_entry" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_dca_entry" says "run": a word for a change.
The server marks "workflow.run_average_down" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_average_down" says "run": a word for a change.
The server marks "workflow.run_scale_out" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_scale_out" says "run": a word for a change.
The server marks "workflow.run_carry_trade" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_carry_trade" says "run": a word for a change.
The server marks "workflow.run_funding_breakeven" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_funding_breakeven" says "run": a word for a change.
The server marks "workflow.run_crypto_profit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_crypto_profit" says "run": a word for a change.
The server marks "workflow.run_bonding_curve" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_bonding_curve" says "run": a word for a change.
The server marks "workflow.run_impermanent_loss" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_impermanent_loss" says "run": a word for a change.
The server marks "workflow.run_options_payoff" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_options_payoff" says "run": a word for a change.
The server marks "workflow.run_black_scholes" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_black_scholes" says "run": a word for a change.
The server marks "workflow.run_straddle_strangle" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_straddle_strangle" says "run": a word for a change.
The server marks "workflow.run_covered_call_protective_put" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_covered_call_protective_put" says "run": a word for a change.
The server marks "workflow.run_spread_payoff" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_spread_payoff" says "run": a word for a change.
The server marks "workflow.run_implied_volatility" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_implied_volatility" says "run": a word for a change.
The server marks "workflow.run_window_fair_value" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_window_fair_value" says "run": a word for a change.
The server marks "workflow.run_forex_pip_value" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_pip_value" says "run": a word for a change.
The server marks "workflow.run_forex_margin_level" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_margin_level" says "run": a word for a change.
The server marks "workflow.run_forex_breakeven" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_breakeven" says "run": a word for a change.
The server marks "workflow.run_forex_pnl" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_pnl" says "run": a word for a change.
The server marks "workflow.run_forex_risk_reward" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_risk_reward" says "run": a word for a change.
The server marks "workflow.run_forex_scenario" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_scenario" says "run": a word for a change.
The description names a tool "average_entry" that this server does not list.
What this check looks forMatched text
description: "...requiring the harmonic mean the crypto average_entry tool uses for inverse contracts. Use when us..."
The server marks "workflow.run_forex_average_entry" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_average_entry" says "run": a word for a change.
The server marks "workflow.run_forex_margin_required" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_margin_required" says "run": a word for a change.
The server marks "workflow.run_forex_currency_converter" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_currency_converter" says "run": a word for a change.
The server marks "workflow.run_forex_swap_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_swap_cost" says "run": a word for a change.
The server marks "workflow.run_forex_correlation" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_correlation" says "run": a word for a change.
The server marks "workflow.run_var_cvar" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_var_cvar" says "run": a word for a change.
The server marks "workflow.run_sharpe_stats" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_sharpe_stats" says "run": a word for a change.
The server marks "workflow.run_hurst_exponent" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_hurst_exponent" says "run": a word for a change.
The server marks "workflow.run_cointegration" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_cointegration" says "run": a word for a change.
The server marks "workflow.run_portfolio_tearsheet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_portfolio_tearsheet" says "run": a word for a change.
The server marks "workflow.run_garch" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_garch" says "run": a word for a change.
The server marks "workflow.run_risk_parity" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_risk_parity" says "run": a word for a change.
- Warnworkflow.run_dsr
The server marks "workflow.run_dsr" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_dsr" says "run": a word for a change.
The server marks "workflow.run_kelly_frontier" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_kelly_frontier" says "run": a word for a change.
The server marks "workflow.run_unsmoothing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_unsmoothing" says "run": a word for a change.
The server marks "workflow.run_evt_tail_risk" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_evt_tail_risk" says "run": a word for a change.
The server marks "workflow.run_orderbook_impact" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_orderbook_impact" says "run": a word for a change.
The server marks "workflow.run_open_analysis" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_open_analysis" says "run": a word for a change.
The server marks "workflow.run_session_structure" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_session_structure" says "run": a word for a change.
The server marks "workflow.run_value_migration" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_value_migration" says "run": a word for a change.
The server marks "workflow.run_breakout_acceptance" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_breakout_acceptance" says "run": a word for a change.
The server marks "workflow.run_token_risk_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_token_risk_check" says "run": a word for a change.
The server marks "workflow.run_swap_price_impact" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_swap_price_impact" says "run": a word for a change.
The server marks "workflow.run_market_cap_comparison" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_market_cap_comparison" says "run": a word for a change.
The server marks "workflow.run_impermanent_loss_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_impermanent_loss_live" says "run": a word for a change.
The server marks "workflow.run_wallet_flag_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_wallet_flag_check" says "run": a word for a change.
The server marks "workflow.run_odds_converter" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_odds_converter" says "run": a word for a change.
The server marks "workflow.run_spread_reader" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_spread_reader" says "run": a word for a change.
The server marks "workflow.run_cross_venue_arbitrage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_cross_venue_arbitrage" says "run": a word for a change.
The server marks "workflow.run_market_implied_odds" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_market_implied_odds" says "run": a word for a change.
The server marks "workflow.run_black_scholes_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_black_scholes_live" says "run": a word for a change.
The server marks "workflow.run_forex_pip_value_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_pip_value_live" says "run": a word for a change.
The server marks "workflow.run_forex_margin_required_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_margin_required_live" says "run": a word for a change.
The server marks "workflow.run_forex_position_size_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_position_size_live" says "run": a word for a change.
The server marks "workflow.run_forex_currency_converter_live" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_currency_converter_live" says "run": a word for a change.
The server marks "workflow.run_forex_swap_cost_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_swap_cost_live" says "run": a word for a change.
The server marks "workflow.run_forex_correlation_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_correlation_live" says "run": a word for a change.
The server marks "workflow.run_price_consensus" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_price_consensus" says "run": a word for a change.
The server marks "workflow.run_prediction_market_edge" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_prediction_market_edge" says "run": a word for a change.
- Warnsystem.verify
The server marks "system.verify" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
77 tools
Can't be undone 1Claude Code: ask
workflow.run_forex_currency_converter_liveConverts an amount between currencies using a live FX rate: TrueFX for its 10 quoted majors (genuinely live tick data), frankfurter.app daily ECB reference rate as the fallback for…1 finding
Why it is in this group
- The name "workflow.run_forex_currency_converter_live" says "run": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_currency_converter_live" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_currency_converter_live" says "run": a word for a change.
Description, as the server wrote it Converts an amount between currencies using a live FX rate: TrueFX for its 10 quoted majors (genuinely live tick data), frankfurter.app daily ECB reference rate as the fallback for every other currency pair (30 total). Use when user asks "what's $X worth in EUR?" or any currency conversion where the rate itself isn't already known. Returns: converted, rate, source (truefx/frankfurter/identity), asOf, available (false + error if no rate could be found for that pair).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Forex Currency Converter (Live)
Changes things 75Claude Code: ask
primitive.average_entryCalculate the weighted average entry price from multiple buy/sell fills (DCA): the bare number only, no breakeven or per-fill breakdown.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Average Entry Price
primitive.hedge_ratioCalculate the short perpetual futures position size needed to hedge a spot holding.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Hedge Ratio
system.verifyRun the full regression suite: 43 canonical test vectors (linear and inverse/coin-margined) across all 12 calculators, and return a pass/fail report with counts and timestamp.1 finding
Why it is in this group
- The description's first verb is "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "system.verify" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Description, as the server wrote it Run the full regression suite: 43 canonical test vectors (linear and inverse/coin-margined) across all 12 calculators, and return a pass/fail report with counts and timestamp. Useful as a health check before relying on results in production workflows.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Verify Calculations
workflow.run_average_downShould-I-average-down check: for an already-open position, compares adding more at a worse price against the always-available alternative of buying the same final total size fresh …1 finding
Why it is in this group
- The name "workflow.run_average_down" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_average_down" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_average_down" says "run": a word for a change.
Description, as the server wrote it Should-I-average-down check: for an already-open position, compares adding more at a worse price against the always-available alternative of buying the same final total size fresh at today's price. Returns the new blended average entry, liquidation price and breakeven (before vs. after), margin_added (the actual cash/margin required for the add at this leverage, not the full notional), and three risk figures at your stop-loss: existing_risk (what you already risk, before adding), pyramid_risk (what you'd risk after adding), and clean_entry_risk (what a fresh entry at add_price for the same total size would risk). risk_penalty_pct is how much MORE than that fresh-entry alternative you're risking - for any genuine average-down (add_price worse than existing_entry_price) pyramid_risk is provably always greater than clean_entry_risk. liquidation_before_stop is true when the new liquidation price sits at or beyond your own stop-loss, meaning the exchange would force-close the position before the stop-loss ever triggers. Use when user asks "should I add to this losing position?" or "what does averaging down actually cost me here?".
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Average Down
workflow.run_black_scholesTheoretical 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 …1 finding
Why it is in this group
- The name "workflow.run_black_scholes" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_black_scholes" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_black_scholes" says "run": a word for a change.
Description, as the server wrote it 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. The live variant is workflow.run_black_scholes_live, which applies 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Black-Scholes Option Price and Greeks
workflow.run_black_scholes_liveBlack-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…1 finding
Why it is in this group
- The name "workflow.run_black_scholes_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_black_scholes_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_black_scholes_live" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Black-Scholes Option Price and Greeks (Live)
workflow.run_bonding_curvePump.fun-style bonding curve calculator: exact tokens received for a buy, price impact, and graduation progress.1 finding
Why it is in this group
- The name "workflow.run_bonding_curve" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_bonding_curve" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_bonding_curve" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Bonding Curve
workflow.run_breakeven_planningCalculate the break-even exit price that covers all trading fees: this alone, nothing else.1 finding
Why it is in this group
- The name "workflow.run_breakeven_planning" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_breakeven_planning" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_breakeven_planning" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Breakeven Planning
workflow.run_breakout_acceptanceMarket Profile breakout acceptance: did price accept (hold) beyond the value area / range, or reject back inside (fakeout)?1 finding
Why it is in this group
- The name "workflow.run_breakout_acceptance" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_breakout_acceptance" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_breakout_acceptance" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Market Profile: Breakout Acceptance
workflow.run_carry_tradeDelta-neutral carry trade (funding arbitrage) analysis, with a profitable/marginal/loss verdict on top of the same math primitive.funding_arb uses.1 finding
Why it is in this group
- The name "workflow.run_carry_trade" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_carry_trade" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_carry_trade" says "run": a word for a change.
Description, as the server wrote it Delta-neutral carry trade (funding arbitrage) analysis, with a profitable/marginal/loss verdict on top of the same math primitive.funding_arb uses. Compared with primitive.funding_arb, this one adds output for the case where 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Carry Trade
workflow.run_cointegrationEngle-Granger two-step cointegration test for a pair of price series: do they share a long-run equilibrium relationship (their spread is stationary/mean-reverting)?1 finding
Why it is in this group
- The name "workflow.run_cointegration" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_cointegration" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_cointegration" says "run": a word for a change.
Description, as the server wrote it Engle-Granger two-step cointegration test for a pair of price series: do they share a long-run equilibrium relationship (their spread is stationary/mean-reverting)? The standard pairs-trading signal test. Returns the cointegrating regression's hedge ratio (beta) and an ADF t-statistic on the residuals, compared against 1%/5%/10% critical values. Use when user asks "are these two assets cointegrated?" or "is this a valid pairs trade?". Returns: alpha, beta (hedge ratio), t_stat, critical_values, cointegrated (booleans at each significance level).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Cointegration Test
workflow.run_compound_fundingProject capital growth from reinvesting perpetual futures funding income (compounding carry).1 finding
Why it is in this group
- The name "workflow.run_compound_funding" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_compound_funding" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_compound_funding" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Compound Funding
workflow.run_covered_call_protective_putCovered 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.1 finding
Why it is in this group
- The name "workflow.run_covered_call_protective_put" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_covered_call_protective_put" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_covered_call_protective_put" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Covered Call and Protective Put
workflow.run_cross_venue_arbitrageChecks 2-5 quotes for the SAME real-world binary bet across venues (or manually-supplied probabilities) for a guaranteed, direction-independent arbitrage: buy "Yes" at whichever ve…1 finding
Why it is in this group
- The name "workflow.run_cross_venue_arbitrage" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_cross_venue_arbitrage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_cross_venue_arbitrage" says "run": a word for a change.
Description, as the server wrote it Checks 2-5 quotes for the SAME real-world binary bet across venues (or manually-supplied probabilities) for a guaranteed, direction-independent arbitrage: buy "Yes" at whichever venue quotes it cheapest, buy "No" at whichever venue quotes "Yes" most expensively (its own "No" price is assumed to be 1 minus its own "Yes" price, the standard complementary-binary convention). Reports isArbitrage, the cost to lock in $1 of guaranteed payout, guaranteed profit and ROI for a given stake, and which side to buy where. feePctPerLeg is an optional per-leg trading-fee rate that can and does erase a real-looking spread - reported honestly via isArbitrage rather than always showing a positive number. Use when user asks "can I arbitrage this bet across venues?" or "is there a risk-free profit here?". The caller asserts the venues quote the same bet; this tool does not verify that.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Cross Venue Arbitrage
workflow.run_crypto_profitProfit or loss on a spot crypto trade (coins bought and sold outright, no leverage, no funding) after both fees.1 finding
Why it is in this group
- The name "workflow.run_crypto_profit" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_crypto_profit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_crypto_profit" says "run": a word for a change.
Description, as the server wrote it Profit or loss on a spot crypto trade (coins bought and sold outright, no leverage, no funding) after both fees. Give exactly one of investment (total cash spent, buy fee included) or quantity (coins bought). Each fee is a fraction of that fill's trade value (0.001 = 0.1%): the buy fee is paid on top of the coins' cost, the sell fee comes out of the sale value. For a leveraged perpetual futures position see workflow.run_pnl_planning. Use when user asks "I bought BTC at $X, what is my profit if I sell at $Y?" or "what price do I need to sell at to break even after fees?". Returns: quantity, totalCost, proceeds, totalFees, profit, roiPct and priceChangePct (fractions), priceMultiple, breakevenSellPrice, annualizedReturnPct (a fraction, only when holdingDays is given and is at least 30, null otherwise: annualizing a shorter hold gives meaningless figures).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Crypto Profit
workflow.run_dca_entryDCA entry planner: weighted average entry price, breakeven, and per-level contribution from multiple fill prices and sizes.1 finding
Why it is in this group
- The name "workflow.run_dca_entry" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_dca_entry" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_dca_entry" says "run": a word for a change.
Description, as the server wrote it DCA entry planner: weighted average entry price, breakeven, and per-level contribution from multiple fill prices and sizes. Compared with primitive.average_entry, this one adds output for the case where 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: DCA Entry
workflow.run_dsrDeflated Sharpe Ratio (Bailey & Lopez de Prado): given how many strategy variants you tried (and how correlated they are), what Sharpe ratio would the *best of N* clear by luck alo…1 finding
Why it is in this group
- The name "workflow.run_dsr" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_dsr" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_dsr" says "run": a word for a change.
Description, as the server wrote it Deflated Sharpe Ratio (Bailey & Lopez de Prado): given how many strategy variants you tried (and how correlated they are), what Sharpe ratio would the *best of N* clear by luck alone, and does your actual strategy still clear that higher bar? Use when user asks "is my backtested Sharpe ratio real, or did I get lucky trying many variants?" or "how many independent trials does this really represent?". Provide either trial_sharpes[] (the N trials' own observed Sharpe ratios, most rigorous) or n_trials (+ optional avg_correlation to correct for correlated trials via Kish's design effect). Returns: expected_max_sharpe (the luck-alone threshold), dsr (probability your strategy's true Sharpe exceeds it, 0-1), n_trials_effective.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Deflated Sharpe Ratio
workflow.run_evt_tail_riskExtreme Value Theory tail risk (Peaks-Over-Threshold): fits a Generalized Pareto Distribution to the losses beyond a high threshold via Grimshaw's (1993) profile-likelihood MLE, th…1 finding
Why it is in this group
- The name "workflow.run_evt_tail_risk" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_evt_tail_risk" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_evt_tail_risk" says "run": a word for a change.
Description, as the server wrote it Extreme Value Theory tail risk (Peaks-Over-Threshold): fits a Generalized Pareto Distribution to the losses beyond a high threshold via Grimshaw's (1993) profile-likelihood MLE, then extrapolates VaR/Expected Shortfall at the requested confidence, without assuming a normal distribution. Use when user asks "what's my tail VaR without assuming normality?" or "how fat is my loss tail, really?". Complements workflow.run_var_cvar (parametric, normal-distribution VaR/CVaR) for exactly the fat-tailed-return case that assumption understates. threshold_percentile (default 90) sets which percentile of the loss distribution (losses = -returns) becomes the threshold u; confidence must be deep enough into the fitted tail (1-confidence < the threshold's own exceedance rate) or the call throws. Returns: threshold, n_exceedances, exceedance_rate, xi (GPD shape: 0=exponential tail, >0=heavy/fat tail, <0=bounded tail; values <= -1 are excluded from the fit domain as a known non-regular/unbounded-likelihood case, Smith 1985), beta (GPD scale), xi_asymptotically_normal (false when xi<=-0.5: the fit is still valid but the usual MLE confidence-interval theory doesn't apply, per that same Smith 1985 result), var, es (null when xi>=1, where Expected Shortfall is mathematically undefined).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: EVT Tail Risk
workflow.run_exit_targetCalculate the exact exit price needed to hit a target PnL or ROE percentage.1 finding
Why it is in this group
- The name "workflow.run_exit_target" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_exit_target" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_exit_target" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Exit Target
workflow.run_forex_average_entrySize-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 t…2 findings
Why it is in this group
- The name "workflow.run_forex_average_entry" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The description names a tool "average_entry" that this server does not list.
What this check looks forMatched text
description: "...requiring the harmonic mean the crypto average_entry tool uses for inverse contracts. Use when us..."
- Warn
The server marks "workflow.run_forex_average_entry" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_average_entry" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Average Entry
workflow.run_forex_breakevenBreakeven price for a forex position accounting for spread and round-trip commission, in pips and in price.1 finding
Why it is in this group
- The name "workflow.run_forex_breakeven" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_breakeven" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_breakeven" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Breakeven
workflow.run_forex_correlationCorrelation coefficient and minimum-variance hedge ratio between two price series of matching length, computed on daily % returns (not raw price levels, which would give spuriously…1 finding
Why it is in this group
- The name "workflow.run_forex_correlation" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_correlation" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_correlation" says "run": a word for a change.
Description, as the server wrote it Correlation coefficient and minimum-variance hedge ratio between two price series of matching length, computed on daily % returns (not raw price levels, which would give spuriously high correlation between two unrelated but both-trending series). hedgeRatio follows Hull's standard futures-hedging formula: cov(returns1,returns2)/var(returns2), "how many units of series 2 per unit of series 1 minimizes the combined position's variance." No live data fetch: supply the two price series directly. The live variant is workflow.run_forex_correlation_live, which has both series fetched automatically for two named pairs. Use when user already has two price series and wants their statistical relationship. Returns: n, correlation (-1 to 1), hedgeRatio.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Correlation
workflow.run_forex_correlation_liveCorrelation coefficient and minimum-variance hedge ratio between two forex pairs, fetched live: historical daily rates for both pairs over the given lookback window (frankfurter.ap…1 finding
Why it is in this group
- The name "workflow.run_forex_correlation_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_correlation_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_correlation_live" says "run": a word for a change.
Description, as the server wrote it Correlation coefficient and minimum-variance hedge ratio between two forex pairs, fetched live: historical daily rates for both pairs over the given lookback window (frankfurter.app's daily ECB reference time series, business days only), aligned by matching date, computed on daily % returns. hedgeRatio follows Hull's standard futures-hedging formula: "how many units of pair2 per unit of pair1 minimizes the combined position's variance." Use when user asks "how correlated are EUR/USD and GBP/USD?" or "what hedge ratio should I use between these two pairs?". Returns: n (overlapping trading days used), correlation (-1 to 1), hedgeRatio, available (false + error if either pair has no data, or too few dates overlap).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Forex Correlation (Live)
workflow.run_forex_currency_converterConverts an amount between currencies using a manually supplied rate: no live data fetch.1 finding
Why it is in this group
- The name "workflow.run_forex_currency_converter" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_currency_converter" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_currency_converter" says "run": a word for a change.
Description, as the server wrote it Converts an amount between currencies using a manually supplied rate: no live data fetch. The live variant is workflow.run_forex_currency_converter_live, which has the rate fetched automatically. Use when user already knows the exact rate they want applied. Returns: converted.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Currency Converter
workflow.run_forex_margin_levelFree margin and margin level % from account equity and used margin: equity/usedMargin*100, the same stop-out proximity metric every forex platform shows.1 finding
Why it is in this group
- The name "workflow.run_forex_margin_level" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_margin_level" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_margin_level" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Margin Level
workflow.run_forex_margin_requiredNotional and margin required for a forex position, in the pair's own quote currency: no live FX rate needed.1 finding
Why it is in this group
- The name "workflow.run_forex_margin_required" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_margin_required" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_margin_required" says "run": a word for a change.
Description, as the server wrote it Notional and margin required for a forex position, in the pair's own quote currency: no live FX rate needed. Never built for Phase 1 of this domain since a margin figure has no natural currency-neutral form the way pip value does. The live variant is workflow.run_forex_margin_required_live, which applies when the account currency differs from the pair's quote currency. Use when user asks "how much margin do I need for X lots of EUR/USD at 50:1?". Returns: notionalQuote, marginQuote, base, quote.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Margin Required
workflow.run_forex_margin_required_liveNotional and margin required for a forex position, converted to a given account currency via a live FX rate (same TrueFX/frankfurter.app source as workflow.run_forex_pip_value_live…1 finding
Why it is in this group
- The name "workflow.run_forex_margin_required_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_margin_required_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_margin_required_live" says "run": a word for a change.
Description, as the server wrote it Notional and margin required for a forex position, converted to a given account currency via a live FX rate (same TrueFX/frankfurter.app source as workflow.run_forex_pip_value_live). Use when user asks "how much margin do I need in my account currency?" and the account currency differs from the pair's own quote currency. Returns everything workflow.run_forex_margin_required does, plus accountCurrency, notionalAccount, marginAccount, fxRate, fxSource, available (false + error if no rate could be found).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Forex Margin Required (Live)
workflow.run_forex_pip_valueValue of 1 pip for a given forex pair and position size, in that pair's own quote currency (e.g.1 finding
Why it is in this group
- The name "workflow.run_forex_pip_value" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_pip_value" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_pip_value" says "run": a word for a change.
Description, as the server wrote it 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. The live variant is workflow.run_forex_pip_value_live, which applies when the account currency differs from the pair's quote currency. Use when user asks "what's 1 pip worth on X lots of EUR/USD?". Returns: pipSize, pipValueQuote, base, quote.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Pip Value
workflow.run_forex_pip_value_liveValue of 1 pip for a forex pair and position size, converted to a given account currency via a live FX rate: TrueFX for its 10 quoted majors (genuinely live tick data), frankfurter…1 finding
Why it is in this group
- The name "workflow.run_forex_pip_value_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_pip_value_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_pip_value_live" says "run": a word for a change.
Description, as the server wrote it Value of 1 pip for a forex pair and position size, converted to a given account currency via a live FX rate: TrueFX for its 10 quoted majors (genuinely live tick data), frankfurter.app daily ECB reference rate as the fallback for every other currency (30 total). Use when user asks "what's 1 pip worth in my account currency?" and the account currency differs from the pair's own quote currency (if it matches, workflow.run_forex_pip_value alone is enough, no live fetch needed). Returns everything workflow.run_forex_pip_value does, plus accountCurrency, pipValueAccount, fxRate, fxSource (truefx/frankfurter/identity), available (false + error if no rate could be found for that currency).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Forex Pip Value (Live)
workflow.run_forex_pnlProfit or loss for a closed or hypothetical forex trade, in pips and in the pair's own quote currency, long or short.1 finding
Why it is in this group
- The name "workflow.run_forex_pnl" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_pnl" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_pnl" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex PnL
workflow.run_forex_position_size_livePosition size (units and standard lots) from a risk amount and stop distance, in a given account currency, via a live FX rate to convert pip value into that currency (same TrueFX/f…1 finding
Why it is in this group
- The name "workflow.run_forex_position_size_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_position_size_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_position_size_live" says "run": a word for a change.
Description, as the server wrote it Position size (units and standard lots) from a risk amount and stop distance, in a given account currency, via a live FX rate to convert pip value into that currency (same TrueFX/frankfurter.app source as the other forex _live tools). Never has a meaningful account-currency-agnostic form: sizing a position from a risk budget genuinely requires knowing what 1 pip is worth in the currency that budget is denominated in. Use when user asks "how many lots should I trade to risk $X on this setup?". Returns: stopDistancePips, units, lots, pipValuePerUnitAccount, fxRate, fxSource, available (false + error if entry equals stop, or if no rate could be found).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Forex Position Size (Live)
workflow.run_forex_risk_rewardRisk and reward distance in pips from entry/stop/target, and the resulting ratio (reward/risk): a raw number, not a verdict.1 finding
Why it is in this group
- The name "workflow.run_forex_risk_reward" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_risk_reward" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_risk_reward" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Risk Reward
workflow.run_forex_scenarioPnL 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.1 finding
Why it is in this group
- The name "workflow.run_forex_scenario" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_scenario" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_scenario" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Scenario
workflow.run_forex_swap_costTotal swap/rollover cost (or credit) for holding a forex position overnight, in the pair's own quote currency: no live FX rate needed.1 finding
Why it is in this group
- The name "workflow.run_forex_swap_cost" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_swap_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_forex_swap_cost" says "run": a word for a change.
Description, as the server wrote it Total swap/rollover cost (or credit) for holding a forex position overnight, in the pair's own quote currency: no live FX rate needed. Swap rates are broker-set with no free live feed available, so swapPerLotPerNight is always a manual input (quoted per standard lot, matching how commission is quoted in workflow.run_forex_breakeven), not fetched. Negative = cost (you pay), positive = credit (you receive). The live variant is workflow.run_forex_swap_cost_live, which applies when the account currency differs from the pair's quote currency. Use when user asks "how much will holding this position overnight cost me?". Returns: lots, totalSwapQuote, base, quote.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Forex Swap Cost
workflow.run_forex_swap_cost_liveTotal swap/rollover cost (or credit) for holding a forex position overnight, converted to a given account currency via a live FX rate (same TrueFX/frankfurter.app source as the oth…1 finding
Why it is in this group
- The name "workflow.run_forex_swap_cost_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_forex_swap_cost_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_forex_swap_cost_live" says "run": a word for a change.
Description, as the server wrote it Total swap/rollover cost (or credit) for holding a forex position overnight, converted to a given account currency via a live FX rate (same TrueFX/frankfurter.app source as the other forex _live tools). swapPerLotPerNight is still always a manual input: swap rates are broker-set, with no free live feed available for them. Use when user asks "how much will holding this position overnight cost me in my account currency?" and it differs from the pair's own quote currency. Returns everything workflow.run_forex_swap_cost does, plus accountCurrency, totalSwapAccount, fxRate, fxSource, available (false + error if no rate could be found).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Forex Swap Cost (Live)
workflow.run_funding_arbitrageCalculate 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…1 finding
Why it is in this group
- The name "workflow.run_funding_arbitrage" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_funding_arbitrage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_funding_arbitrage" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Funding Arbitrage
workflow.run_funding_breakevenPrice move needed to cover funding cost + fees over a holding period.1 finding
Why it is in this group
- The name "workflow.run_funding_breakeven" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_funding_breakeven" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_funding_breakeven" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Funding Breakeven
workflow.run_funding_costCalculate the total funding cost (or income) for holding a perpetual futures position.1 finding
Why it is in this group
- The name "workflow.run_funding_cost" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_funding_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_funding_cost" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Funding Cost
workflow.run_garchGARCH(1,1) volatility model, fit by maximum likelihood on a return series: estimates omega/alpha/beta (the variance-persistence parameters) and forecasts next-period volatility.1 finding
Why it is in this group
- The name "workflow.run_garch" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_garch" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_garch" says "run": a word for a change.
Description, as the server wrote it GARCH(1,1) volatility model, fit by maximum likelihood on a return series: estimates omega/alpha/beta (the variance-persistence parameters) and forecasts next-period volatility. Use when user asks "what's my GARCH volatility forecast?" or "how persistent is volatility in this return series?". This is a backward-looking statistical fit, not a market prediction guarantee. Returns: mu, omega, alpha, beta, persistence (alpha+beta), unconditional_vol, forecast_vol, loglikelihood.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: GARCH Volatility
workflow.run_hurst_exponentHurst exponent via rescaled-range (R/S) analysis: is this return/price series trending/persistent (H>0.5, a move tends to be followed by a move in the same direction), mean-reverti…1 finding
Why it is in this group
- The name "workflow.run_hurst_exponent" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_hurst_exponent" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_hurst_exponent" says "run": a word for a change.
Description, as the server wrote it Hurst exponent via rescaled-range (R/S) analysis: is this return/price series trending/persistent (H>0.5, a move tends to be followed by a move in the same direction), mean-reverting/anti-persistent (H<0.5), or consistent with a random walk (H~0.5)? Use when user asks "is this asset trending or mean-reverting?" or "does this series show long-range dependence?". Takes a return series, not raw price levels. Returns: hurst, interpretation (trending/mean_reverting/random_walk), window_sizes, rs_values.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Hurst Exponent
workflow.run_impermanent_lossImpermanent loss for a liquidity-pool position: compares providing liquidity against simply holding the same tokens, at a manually-supplied entry and current price.1 finding
Why it is in this group
- The name "workflow.run_impermanent_loss" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_impermanent_loss" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_impermanent_loss" says "run": a word for a change.
Description, as the server wrote it Impermanent loss for a liquidity-pool position: compares providing liquidity against simply holding the same tokens, at a manually-supplied entry and current price. Two modes: full_range (standard 50/50 constant-product pool, the textbook 2*sqrt(k)/(1+k)-1 closed form) or concentrated (a Uniswap-V3-style position confined to [lowerPrice, upperPrice] - IL is always worse than full_range for the same price move when the range is tight, and the position is fully single-asset, no longer earning fees, once price exits the range). impermanentLossPct is always <= 0 and is measured relative to the quote token (dimensionless, exact regardless of what the quote token is); the optional dollar figures additionally assume the quote token's own USD price stayed roughly stable (true for a stablecoin-quoted pool). Use when user asks "how much am I losing to impermanent loss?" or "is this LP position still worth it after fees?". Returns: impermanentLossPct, lpValueMultiplier, hodlValueMultiplier, inRange, lossUsd/netResultUsd (null unless depositValueUsd given).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Impermanent Loss
workflow.run_impermanent_loss_liveLive variant of workflow.run_impermanent_loss: fetches each token's current live USD price (Solana or any of 5 EVM chains) and derives currentPrice as their ratio, instead of it be…1 finding
Why it is in this group
- The name "workflow.run_impermanent_loss_live" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_impermanent_loss_live" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_impermanent_loss_live" says "run": a word for a change.
Description, as the server wrote it Live variant of workflow.run_impermanent_loss: fetches each token's current live USD price (Solana or any of 5 EVM chains) and derives currentPrice as their ratio, instead of it being supplied manually. entryPrice stays a manual, historical input (a fact the caller must supply, not something a live quote should overwrite), same convention as every other live-capable tool in this product. Use when the caller has the pool's two token addresses but doesn't already know the current price ratio. Returns the same fields as workflow.run_impermanent_loss, plus currentPrice, baseSymbol, quoteSymbol, routable (false + error if either token's price can't be resolved).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Impermanent Loss (Live)
workflow.run_implied_volatilitySolves 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.1 finding
Why it is in this group
- The name "workflow.run_implied_volatility" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_implied_volatility" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_implied_volatility" says "run": a word for a change.
Description, as the server wrote it 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, identifiable, warning, priceAtSolution. identifiable is false when many volatilities reproduce the price (deep ITM, far OTM): warning then says the returned volatility is one of them. When converged is false, identifiable is false and error explains.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Implied Volatility
workflow.run_kelly_frontierKelly growth-security frontier (MacLean, Ziemba & Blazenko 1992): for a strategy compounding at a fraction lambda of full Kelly, the probability wealth ever falls to a fraction alp…1 finding
Why it is in this group
- The name "workflow.run_kelly_frontier" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_kelly_frontier" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_kelly_frontier" says "run": a word for a change.
Description, as the server wrote it Kelly growth-security frontier (MacLean, Ziemba & Blazenko 1992): for a strategy compounding at a fraction lambda of full Kelly, the probability wealth ever falls to a fraction alpha of its starting value is P = alpha^(2/lambda-1). Provide either lambda_fraction (to compute that probability) or max_probability (to solve for the largest lambda that keeps the ruin probability at or below it). Use when user asks "if I bet half-Kelly, what's my chance of ever losing half my bankroll?" or "what fraction of Kelly keeps my chance of a 50% drawdown under 5%?". Valid lambda range is (0, 2]; beyond 2 the probability is certain (1), not the raw formula value. Returns: probability, lambda_fraction (echoed or solved).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Kelly Growth-Security Frontier
workflow.run_liquidation_safetyCalculate the liquidation price for an isolated-margin futures position.1 finding
Why it is in this group
- The name "workflow.run_liquidation_safety" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_liquidation_safety" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_liquidation_safety" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Liquidation Safety
workflow.run_market_cap_comparisonCompares 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…1 finding
Why it is in this group
- The name "workflow.run_market_cap_comparison" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_market_cap_comparison" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_market_cap_comparison" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Market Cap Comparison
workflow.run_market_implied_oddsReads 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…1 finding
Why it is in this group
- The name "workflow.run_market_implied_odds" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_market_implied_odds" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_market_implied_odds" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Market Implied Odds
workflow.run_max_leverageCalculate the maximum safe leverage based on account size, max acceptable drawdown, and asset daily volatility.1 finding
Why it is in this group
- The name "workflow.run_max_leverage" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_max_leverage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_max_leverage" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Max Leverage
workflow.run_odds_converterConverts a probability into decimal odds, American odds, and breakeven win rate: either from a manually supplied probability, or fetched live from Kalshi, Polymarket, ADI Predictst…1 finding
Why it is in this group
- The name "workflow.run_odds_converter" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_odds_converter" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_odds_converter" says "run": a word for a change.
Description, as the server wrote it Converts a probability into decimal odds, American odds, and breakeven win rate: either from a manually supplied probability, or fetched live from Kalshi, Polymarket, ADI Predictstreet, Limitless, or Myriad (five independent crypto-price prediction market venues, all public keyless market data). When a Kalshi, Polymarket, Limitless, or Myriad 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/Limitless/Myriad market?". Provide exactly one of probability/kalshiTicker/polymarketSlug/adiSymbol/limitlessSlug/myriadSlug. Returns: probability, decimalOdds, americanOdds, breakevenWinRatePct, vigPct (null unless a live two-sided source was used), source (manual/kalshi/polymarket/adi/limitless/myriad), identifier, label.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Odds Converter
workflow.run_open_analysisMarket Profile open analysis: where and how price opened vs the prior session value area.1 finding
Why it is in this group
- The name "workflow.run_open_analysis" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_open_analysis" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_open_analysis" says "run": a word for a change.
Description, as the server wrote it 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), tails (session-high/low rejection tails and single prints), scenario_framing (bullish/bearish/neutral), invalidation level.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Market Profile: Open Analysis
workflow.run_options_payoffPayoff, 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.1 finding
Why it is in this group
- The name "workflow.run_options_payoff" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_options_payoff" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_options_payoff" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Options Payoff
workflow.run_orderbook_impactOrder-book "walk the book" impact/capacity: given order-book levels (price, size in base-asset units) and EITHER a target notional or an impact budget in bps, computes VWAP and pri…1 finding
Why it is in this group
- The name "workflow.run_orderbook_impact" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_orderbook_impact" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_orderbook_impact" says "run": a word for a change.
Description, as the server wrote it Order-book "walk the book" impact/capacity: given order-book levels (price, size in base-asset units) and EITHER a target notional or an impact budget in bps, computes VWAP and price impact for that size, or (via bisection) the largest notional that stays inside the impact budget. Use when user asks "what's my price impact if I trade $X" or "how much can I trade before impact exceeds Y bps". side="buy" walks the asks, side="sell" walks the bids; impact is measured from the book's own mid ((best_bid+best_ask)/2) and is always a positive "cost in bps" number regardless of side. Returns: mid_price, spread_bps, vwap, impact_bps - both null when EITHER the loaded book doesn't cover the requested notional (book_sufficient=false flags this specific case) OR the notional involved is ~0 (book_sufficient stays true then; happens for a near-zero notional_usd, or in capacity mode when even an infinitesimal trade already exceeds impact_budget_bps, in which case max_notional itself resolves to 0) - and in capacity mode, max_notional plus capacity_is_lower_bound (true if the ENTIRE supplied book was consumed within budget, meaning true market capacity may exceed what was supplied - this tool only sees the levels given to it).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Orderbook Impact
workflow.run_pnl_planningCalculate net PnL, ROE, fees and gross profit/loss for a futures trade.1 finding
Why it is in this group
- The name "workflow.run_pnl_planning" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_pnl_planning" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_pnl_planning" says "run": a word for a change.
Description, as the server wrote it 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 (%), maxLossBound (only non-null for an inverse/coin-margined short: the finite ceiling on net coin-denominated loss as price rises without limit, (size/entryPrice)×(1+feeOpenPct) - includes the opening fee, since it survives the exit-price-to-infinity limit while the closing fee vanishes - null for every other side/contractType combination, which either has no such bound or a trivial one).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: PnL Planning
workflow.run_portfolio_riskAggregates risk across multiple open positions in one call: total notional, total P&L, total margin in use, margin usage as a % of account balance (if given), and which single posi…1 finding
Why it is in this group
- The name "workflow.run_portfolio_risk" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_portfolio_risk" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_portfolio_risk" says "run": a word for a change.
Description, as the server wrote it Aggregates risk across multiple open positions in one call: total notional, total P&L, total margin in use, margin usage as a % of account balance (if given), and which single position sits closest to liquidation. Each position is computed through the same canonical PnL/liquidation math as the single-position tools, then rolled up. Linear (USDT-margined) positions sum into one USD total; inverse (coin-margined) positions are grouped by settlement coin instead, since a BTC-margined P&L cannot be summed with an ETH-margined one without a live conversion rate. Returns a verdict: healthy / watch / reduce / critical, driven by the closest liquidation distance and margin usage. Use when user asks "how exposed am I across all my positions?" or "which of my positions is closest to liquidation?". Position size follows the product-wide convention: base-asset quantity for linear, USD notional (contracts) for inverse.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Portfolio Risk
workflow.run_portfolio_tearsheetCore risk/return tearsheet from a single return series: annualized return (compounded, not linear) and volatility, Sharpe (plain + Lo 2002-corrected + Pezier-White skew/kurtosis-ad…1 finding
Why it is in this group
- The name "workflow.run_portfolio_tearsheet" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_portfolio_tearsheet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_portfolio_tearsheet" says "run": a word for a change.
Description, as the server wrote it Core risk/return tearsheet from a single return series: annualized return (compounded, not linear) and volatility, Sharpe (plain + Lo 2002-corrected + Pezier-White skew/kurtosis-adjusted), Sortino, max drawdown, Calmar ratio, the drawdown-ratio cluster (Ulcer Index/Martin ratio, Pain Index/Pain ratio, Burke ratio + modified), Omega-Sharpe ratio, Upside Potential Ratio, skewness, kurtosis, Probabilistic Sharpe Ratio, win rate, best/worst single-period return. Use when user asks for a full risk summary/report on a strategy or portfolio's returns, not just one metric. Returns all of the above in one call.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Portfolio Tearsheet
workflow.run_position_sizingCalculate the correct position size given a maximum risk in USDT and a stop-loss price.1 finding
Why it is in this group
- The name "workflow.run_position_sizing" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_position_sizing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_position_sizing" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Position Sizing
workflow.run_pre_trade_checkFull pre-trade decision card: orchestrates position sizing, breakeven, liquidation, and funding cost in one call.1 finding
Why it is in this group
- The name "workflow.run_pre_trade_check" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_pre_trade_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_pre_trade_check" says "run": a word for a change.
Description, as the server wrote it Full 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 rate automatically. For an R:R-graded verdict on an entry, stop and target, see workflow.run_risk_reward. Returns: positionSize, breakeven, liquidationPrice, fundingCost, overnightBreakevenShift, verdict.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Pre Trade Check
workflow.run_prediction_market_edgeCompares your own probability estimate for an event against a prediction market's price (manual entry, or a live Kalshi ticker, Limitless slug, or Myriad slug) and sizes a bet usin…1 finding
Why it is in this group
- The name "workflow.run_prediction_market_edge" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_prediction_market_edge" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_prediction_market_edge" says "run": a word for a change.
Description, as the server wrote it Compares your own probability estimate for an event against a prediction market's price (manual entry, or a live Kalshi ticker, Limitless slug, or Myriad slug) 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?". Provide exactly one of marketProbabilityPct/kalshiTicker/limitlessSlug/myriadSlug. Returns: edgePct, evPerDollarStaked, fullKellyFraction, cappedKellyFraction, recommendedStakeUsd, verdict (skip_this_one/think_twice/worth_the_risk/take_it).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Prediction Market Edge
workflow.run_price_consensusCross-exchange agreement check for one perpetual futures price: fetches the same asset USDT/USDC-margined perpetual from a reference set of 7 liquid exchanges (Binance, Bybit, OKX,…1 finding
Why it is in this group
- The name "workflow.run_price_consensus" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_price_consensus" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_price_consensus" says "run": a word for a change.
Description, as the server wrote it Cross-exchange agreement check for one perpetual futures price: fetches the same asset USDT/USDC-margined perpetual from a reference set of 7 liquid exchanges (Binance, Bybit, OKX, Gate, KuCoin, Hyperliquid, MEXC; the chosen one is compared against the rest) and reports the median of the others, the spread across all, and how far the chosen exchange sits from that median. Says the exchanges disagree instead of guessing: status is agree (under 0.25%), warn (0.25% to 1%), diverge (1% or more) or insufficient (fewer than 3 other exchanges returned a comparable contract; inverse, dated and unlisted contracts are not compared, and that is not a verdict on the price). Use before acting on a live price: "is this Bybit BTC price in line with the market?" Symbol is the perp symbol as that exchange names it (e.g. BTCUSDT on bybit, ETH-USDT-SWAP on okx). Returns: status, summary, median, peerMedian, spreadPct, deviationPct, sources, quotes (price per exchange), thresholds_pct, as_of.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Price Consensus
workflow.run_risk_parityRisk-parity (equal or custom risk contribution) portfolio weights for N assets: given a covariance matrix (or N return series to compute one from), finds long-only weights where ea…1 finding
Why it is in this group
- The name "workflow.run_risk_parity" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_risk_parity" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_risk_parity" says "run": a word for a change.
Description, as the server wrote it Risk-parity (equal or custom risk contribution) portfolio weights for N assets: given a covariance matrix (or N return series to compute one from), finds long-only weights where each asset contributes its target share of total portfolio risk. Use when user asks "what weights give each asset equal risk contribution?" or "how do I risk-parity-weight this portfolio?". A portfolio-construction calculation, not a buy/sell recommendation. Returns: weights, risk_contributions (should match risk_budgets exactly at convergence), portfolio_volatility.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Risk Parity Weights
workflow.run_risk_rewardFull risk:reward analysis: takes a trade with entry, stop, AND target (all three).1 finding
Why it is in this group
- The name "workflow.run_risk_reward" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_risk_reward" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_risk_reward" says "run": a word for a change.
Description, as the server wrote it Full risk:reward analysis: takes 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. For a full setup check tied to a live exchange/symbol (including funding cost), see workflow.run_pre_trade_check; 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?".
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Risk Reward
workflow.run_scale_outScale-out planner: P&L, ROI, and cumulative P&L for each partial exit level.1 finding
Why it is in this group
- The name "workflow.run_scale_out" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_scale_out" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_scale_out" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Scale Out
workflow.run_scenario_planningRun a scenario analysis: compute PnL for multiple price-change percentages at once.1 finding
Why it is in this group
- The name "workflow.run_scenario_planning" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_scenario_planning" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_scenario_planning" says "run": a word for a change.
Description, as the server wrote it 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 }.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Scenario Planning
workflow.run_session_structureMarket Profile day-type classifier: trend / balance / neutral_trend / normal / normal_var, from TPO, initial balance, range extension and value migration.1 finding
Why it is in this group
- The name "workflow.run_session_structure" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_session_structure" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_session_structure" says "run": a word for a change.
Description, as the server wrote it 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), tails (session-high/low rejection tails and single prints), scenario_framing, invalidation level.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Market Profile: Session Structure
workflow.run_sharpe_statsSharpe ratio with the Lo (2002) serial-correlation-aware annualization correction (the naive sqrt(periods_per_year) scaling overstates or understates the true annualized Sharpe whe…1 finding
Why it is in this group
- The name "workflow.run_sharpe_stats" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_sharpe_stats" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_sharpe_stats" says "run": a word for a change.
Description, as the server wrote it Sharpe ratio with the Lo (2002) serial-correlation-aware annualization correction (the naive sqrt(periods_per_year) scaling overstates or understates the true annualized Sharpe when returns are autocorrelated), plus the Probabilistic Sharpe Ratio (Bailey & Lopez de Prado): the probability the true Sharpe exceeds a benchmark, adjusted for the sample's skewness/kurtosis and length, not just its point estimate. Use when user asks "what's my real annualized Sharpe, not the naive one?" or "how confident can I be this Sharpe ratio is actually good?". Returns: sharpe_period, sharpe_annualized_naive, sharpe_annualized_lo, autocorrelation_lag1, psr, skewness, kurtosis.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Sharpe Ratio Statistics
workflow.run_spread_payoffPayoff, breakeven(s), and max profit/loss for a Deribit BTC/ETH vertical spread (2 legs, same option type, opposite direction, e.g.1 finding
Why it is in this group
- The name "workflow.run_spread_payoff" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_spread_payoff" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_spread_payoff" says "run": a word for a change.
Description, as the server wrote it Payoff, breakeven(s), and max profit/loss for a Deribit BTC/ETH vertical spread (2 legs, same option type, opposite direction, e.g. a bull call spread) or an iron condor/butterfly (4 legs: 2 calls + 2 puts) at a scenario price. Coin-settled, and the max profit/loss are genuinely NOT the flat, textbook USD-settled values: because each leg's own payoff is divided by the settlement price, (1) a debit vertical spread's peak payoff occurs exactly at its short strike, not "anywhere beyond it" - and its profit is a finite WINDOW that closes again at a high enough price, decaying back toward a full loss of the premium paid, and (2) an iron condor/butterfly's max loss is genuinely UNBOUNDED toward price->0 (maxLossCoin: null) if it has a put wing, unlike the "capped at wing width" USD-settled result - only the call side is actually bounded. Use when user asks about a bull/bear call/put spread, vertical spread, iron condor, or iron butterfly, e.g. "what's my max loss on this BTC call spread?" or "where do my iron condor breakevens sit?". Returns: structureType (vertical_spread/iron_condor/iron_butterfly, inferred from the legs given), netDebitCoin (negative = credit received), scenarioPayoffCoin, scenarioPnlCoin/Usd, breakevenPrices (0-3, ascending), maxLossCoin/maxProfitCoin (null = unbounded), isProfitable.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Spread Payoff
workflow.run_spread_readerReads the same real-world bet's live price from 2-5 prediction-market venues at once (Kalshi, Polymarket, ADI Predictstreet, Limitless, Myriad) and reports the spread between the c…1 finding
Why it is in this group
- The name "workflow.run_spread_reader" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_spread_reader" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_spread_reader" says "run": a word for a change.
Description, as the server wrote it Reads the same real-world bet's live price from 2-5 prediction-market venues at once (Kalshi, Polymarket, ADI Predictstreet, Limitless, Myriad) 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Spread Reader
workflow.run_straddle_stranglePayoff, 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 pri…1 finding
Why it is in this group
- The name "workflow.run_straddle_strangle" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_straddle_strangle" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_straddle_strangle" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Straddle and Strangle
workflow.run_swap_price_impactLive 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.1 finding
Why it is in this group
- The name "workflow.run_swap_price_impact" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_swap_price_impact" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_swap_price_impact" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Swap Price Impact
workflow.run_token_risk_checkToken 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…1 finding
Why it is in this group
- The name "workflow.run_token_risk_check" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_token_risk_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_token_risk_check" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Token Risk Check
workflow.run_unsmoothingReturn "unsmoothing" for infrequently-marked/illiquid or appraisal-based series: Getmansky-Lo-Makarov (2004) MA(2) smoothing index plus Blundell-Ward (1987) AR(1) volatility inflat…1 finding
Why it is in this group
- The name "workflow.run_unsmoothing" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_unsmoothing" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_unsmoothing" says "run": a word for a change.
Description, as the server wrote it Return "unsmoothing" for infrequently-marked/illiquid or appraisal-based series: Getmansky-Lo-Makarov (2004) MA(2) smoothing index plus Blundell-Ward (1987) AR(1) volatility inflation, two complementary models answering "this return series looks smoother than it really is; what's the true volatility?". Use when user asks "how much is appraisal smoothing understating my real volatility?" or "what's my de-smoothed Sharpe ratio?". Returns: glm_theta (MA(2) weights), glm_smoothing_index (xi, 1=no smoothing, down to 1/3 for max MA(2) smoothing), glm_true_volatility_multiplier, glm_converged (false if the fit may be unreliable - treat that result with caution), bw_alpha (AR(1) coefficient = lag-1 autocorrelation, can be negative), bw_smoothing_detected (false when alpha<=0: no evidence of smoothing, bw_volatility_multiplier is then pinned to 1 with no correction applied rather than a misleading below-1 value), bw_volatility_multiplier, and each model's own true_stdev estimate.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Return Unsmoothing
workflow.run_value_migrationMarket Profile value-area migration across sessions: is value migrating up, down, or overlapping (directional conviction vs balance)?1 finding
Why it is in this group
- The name "workflow.run_value_migration" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_value_migration" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_value_migration" says "run": a word for a change.
Description, as the server wrote it 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), tails (session-high/low rejection tails and single prints), scenario_framing, invalidation level.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Market Profile: Value Migration
workflow.run_var_cvarParametric Value at Risk (VaR) and Conditional VaR / Expected Shortfall (CVaR), the variance-covariance method (assumes normally distributed returns), plus Modified VaR (Cornish-Fi…1 finding
Why it is in this group
- The name "workflow.run_var_cvar" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_var_cvar" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_var_cvar" says "run": a word for a change.
Description, as the server wrote it Parametric Value at Risk (VaR) and Conditional VaR / Expected Shortfall (CVaR), the variance-covariance method (assumes normally distributed returns), plus Modified VaR (Cornish-Fisher skew/kurtosis correction, Boudt/Peterson/Croux) when a return series is supplied. Supply either a return series or a mean/stdev pair directly, at a confidence level. Output is at the same periodicity as the input (no automatic annualization) - a daily return series gives a daily VaR/CVaR. Use when user asks "what's my VaR at 95%/99%?", "what's my expected shortfall on this position?", or "does my Sharpe/VaR estimate need a fat-tails correction?". Returns: var, cvar (both positive loss magnitudes; cvar >= var always), z, mean, stdev, skewness, excess_kurtosis (both null unless 3+ returns were supplied), var_modified (skew/kurtosis-adjusted VaR; null when skewness is, OR when this series' skew/kurtosis are too extreme for the Cornish-Fisher expansion to be a valid quantile - skewness/excess_kurtosis are still returned in that case).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: VaR and CVaR
workflow.run_wallet_flag_checkChecks a wallet address (Solana or any of 5 EVM chains) against independent flag databases: GoPlus (malicious-address categories, all chains), Webacy (address analysis + sanctions …1 finding
Why it is in this group
- The name "workflow.run_wallet_flag_check" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_wallet_flag_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "workflow.run_wallet_flag_check" says "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- title: Wallet Flag Check
workflow.run_window_fair_valueTheoretical 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 …1 finding
Why it is in this group
- The name "workflow.run_window_fair_value" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "workflow.run_window_fair_value" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "workflow.run_window_fair_value" says "run": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Window Fair Value
Only reads 1Claude Code: allow
system.pubkeyReturn 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.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- title: Signing Public Key
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 2.14.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http tradingcalc https://tradingcalc.io/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tradingcalc__system_pubkey"
],
"ask": [
"mcp__tradingcalc__workflow_run_pnl_planning",
"mcp__tradingcalc__workflow_run_liquidation_safety",
"mcp__tradingcalc__workflow_run_breakeven_planning",
"mcp__tradingcalc__workflow_run_position_sizing",
"mcp__tradingcalc__workflow_run_funding_cost",
"mcp__tradingcalc__primitive_average_entry",
"mcp__tradingcalc__workflow_run_exit_target",
"mcp__tradingcalc__workflow_run_scenario_planning",
"mcp__tradingcalc__workflow_run_max_leverage",
"mcp__tradingcalc__primitive_hedge_ratio",
"mcp__tradingcalc__workflow_run_funding_arbitrage",
"mcp__tradingcalc__workflow_run_compound_funding",
"mcp__tradingcalc__workflow_run_pre_trade_check",
"mcp__tradingcalc__workflow_run_risk_reward",
"mcp__tradingcalc__workflow_run_portfolio_risk",
"mcp__tradingcalc__workflow_run_dca_entry",
"mcp__tradingcalc__workflow_run_average_down",
"mcp__tradingcalc__workflow_run_scale_out",
"mcp__tradingcalc__workflow_run_carry_trade",
"mcp__tradingcalc__workflow_run_funding_breakeven",
"mcp__tradingcalc__workflow_run_crypto_profit",
"mcp__tradingcalc__workflow_run_bonding_curve",
"mcp__tradingcalc__workflow_run_impermanent_loss",
"mcp__tradingcalc__workflow_run_options_payoff",
"mcp__tradingcalc__workflow_run_black_scholes",
"mcp__tradingcalc__workflow_run_straddle_strangle",
"mcp__tradingcalc__workflow_run_covered_call_protective_put",
"mcp__tradingcalc__workflow_run_spread_payoff",
"mcp__tradingcalc__workflow_run_implied_volatility",
"mcp__tradingcalc__workflow_run_window_fair_value",
"mcp__tradingcalc__workflow_run_forex_pip_value",
"mcp__tradingcalc__workflow_run_forex_margin_level",
"mcp__tradingcalc__workflow_run_forex_breakeven",
"mcp__tradingcalc__workflow_run_forex_pnl",
"mcp__tradingcalc__workflow_run_forex_risk_reward",
"mcp__tradingcalc__workflow_run_forex_scenario",
"mcp__tradingcalc__workflow_run_forex_average_entry",
"mcp__tradingcalc__workflow_run_forex_margin_required",
"mcp__tradingcalc__workflow_run_forex_currency_converter",
"mcp__tradingcalc__workflow_run_forex_swap_cost",
"mcp__tradingcalc__workflow_run_forex_correlation",
"mcp__tradingcalc__workflow_run_var_cvar",
"mcp__tradingcalc__workflow_run_sharpe_stats",
"mcp__tradingcalc__workflow_run_hurst_exponent",
"mcp__tradingcalc__workflow_run_cointegration",
"mcp__tradingcalc__workflow_run_portfolio_tearsheet",
"mcp__tradingcalc__workflow_run_garch",
"mcp__tradingcalc__workflow_run_risk_parity",
"mcp__tradingcalc__workflow_run_dsr",
"mcp__tradingcalc__workflow_run_kelly_frontier",
"mcp__tradingcalc__workflow_run_unsmoothing",
"mcp__tradingcalc__workflow_run_evt_tail_risk",
"mcp__tradingcalc__workflow_run_orderbook_impact",
"mcp__tradingcalc__workflow_run_open_analysis",
"mcp__tradingcalc__workflow_run_session_structure",
"mcp__tradingcalc__workflow_run_value_migration",
"mcp__tradingcalc__workflow_run_breakout_acceptance",
"mcp__tradingcalc__workflow_run_token_risk_check",
"mcp__tradingcalc__workflow_run_swap_price_impact",
"mcp__tradingcalc__workflow_run_market_cap_comparison",
"mcp__tradingcalc__workflow_run_impermanent_loss_live",
"mcp__tradingcalc__workflow_run_wallet_flag_check",
"mcp__tradingcalc__workflow_run_odds_converter",
"mcp__tradingcalc__workflow_run_spread_reader",
"mcp__tradingcalc__workflow_run_cross_venue_arbitrage",
"mcp__tradingcalc__workflow_run_market_implied_odds",
"mcp__tradingcalc__workflow_run_black_scholes_live",
"mcp__tradingcalc__workflow_run_forex_pip_value_live",
"mcp__tradingcalc__workflow_run_forex_margin_required_live",
"mcp__tradingcalc__workflow_run_forex_position_size_live",
"mcp__tradingcalc__workflow_run_forex_currency_converter_live",
"mcp__tradingcalc__workflow_run_forex_swap_cost_live",
"mcp__tradingcalc__workflow_run_forex_correlation_live",
"mcp__tradingcalc__workflow_run_price_consensus",
"mcp__tradingcalc__workflow_run_prediction_market_edge",
"mcp__tradingcalc__system_verify"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tradingcalc. Review it before you use it.
