{"serverId":"mcp-registry/io.github.mtcontext/mtcontext","tools":[{"name":"calculate_lot_size","fixed":{"name":"calculate_lot_size","description":"Calculates the appropriate lot size for a trade based on account equity and risk parameters. Uses live account equity and symbol contract specs from the connected terminal. Returns the recommended lot size, risk amount in account currency, and pip value. Returns LOT_TOO_SMALL if the computed lots are below the symbol minimum. Available at Free+ tier (no analytics capability required).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol","risk_percent","stop_loss_pips"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"risk_percent":{"type":"number","maximum":100,"exclusiveMinimum":0},"stop_loss_pips":{"type":"number","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":221,"tokensAfter":221},{"name":"cancel_alert","fixed":{"name":"cancel_alert","description":"Cancels an active alert by alert_id (from create_alert or list_alerts). Returns ALERT_NOT_FOUND if the alert does not exist, already fired, or was already cancelled. Available at Pro+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["alert_id"],"properties":{"alert_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"cancel_order","fixed":{"name":"cancel_order","description":"Cancels a pending (limit or stop) order by ticket. Defaults to dry_run=true — set dry_run=false to execute live. Returns ORDER_NOT_FOUND if the ticket is not in pending orders. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ticket"],"properties":{"ticket":{"type":"integer","exclusiveMinimum":0},"dry_run":{"type":"boolean","default":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"check_order","fixed":{"name":"check_order","description":"Checks whether an order can be placed without sending it. Supports both market and pending order types. Returns { feasible, required_margin, free_margin, estimated_cost, reason? }.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol","order_type","volume"],"properties":{"price":{"type":"number","exclusiveMinimum":0},"symbol":{"type":"string","maxLength":12,"minLength":1},"volume":{"type":"number","exclusiveMinimum":0},"order_type":{"enum":["BUY","SELL","BUY_LIMIT","BUY_STOP","SELL_LIMIT","SELL_STOP"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":179,"tokensAfter":179},{"name":"close_all_positions","fixed":{"name":"close_all_positions","description":"Closes all currently open positions, optionally filtered by symbol. The EA executes all closes in a single command to avoid N round-trips and partial-disconnect risk. Returns a `results` array with per-ticket success/failure. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"dry_run":{"type":"boolean","default":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":176},{"name":"close_position","fixed":{"name":"close_position","description":"Closes an open position by ticket. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ticket"],"properties":{"ticket":{"type":"integer","exclusiveMinimum":0},"dry_run":{"type":"boolean","default":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"create_alert","fixed":{"name":"create_alert","description":"Creates a persistent server-side alert, evaluated every ~30 seconds while the terminal is connected (not tick-precise). Types: price (level above/below), indicator (value or cross vs threshold), position_event (sl_hit / tp_hit / position_closed, optional ticket filter), margin_level (below %). mode=once fires a single time; mode=recurring re-arms after cooldown_seconds. Fired events are queued durably — retrieve them with poll_alerts. Active-alert caps by tier: Pro 10, Team 50, Enterprise 200. A","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["type","condition"],"properties":{"mode":{"enum":["once","recurring"],"type":"string","default":"once"},"note":{"type":"string","maxLength":200},"type":{"enum":["price","indicator","position_event","margin_level"],"type":"string"},"condition":{"type":"object","description":"Condition object; shape depends on type — see tool description.","additionalProperties":{}},"cooldown_seconds":{"type":"integer","default":300,"maximum":86400,"minimum":60}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":310,"tokensAfter":310},{"name":"explain_trade","fixed":{"name":"explain_trade","description":"Explains a trade: what conditions existed at entry, the risk/reward ratio, SL/ATR ratio, and whether it aligns with common strategies. Works for both open positions and closed trade history. Returns POSITION_NOT_FOUND if ticket not found. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ticket"],"properties":{"ticket":{"type":"integer","exclusiveMinimum":0},"timeframe":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string","default":"H1"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":175,"tokensAfter":175},{"name":"get_account_info","fixed":{"name":"get_account_info","description":"Returns account balance, equity, margin, leverage, and currency.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":58,"tokensAfter":58},{"name":"get_bars","fixed":{"name":"get_bars","description":"Returns OHLCV bars for a symbol and timeframe.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol","timeframe"],"properties":{"count":{"type":"integer","default":100,"maximum":5000,"minimum":1},"symbol":{"type":"string","maxLength":20,"minLength":1},"timeframe":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"get_behavioral_insights","fixed":{"name":"get_behavioral_insights","description":"Computes descriptive behavioural metrics from closed trade history: overtrading (trades/day vs the trailing 30-day baseline), revenge trading (re-entry within 15 min of a loss on the same symbol at >=1.5x volume), volume escalation across consecutive losses, and winner-vs-loser hold-time asymmetry. All thresholds are fixed constants echoed in the `criteria` field. This is descriptive coaching over trade data, NOT a psychological assessment. Returns DATA_INSUFFICIENT below 10 closed trades. Requi","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"to_date":{"type":"string","description":"ISO date, default today"},"from_date":{"type":"string","description":"ISO date, default 30 days ago"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"get_cb_stance","fixed":{"name":"get_cb_stance","description":"Returns the central bank hawk/dove stance for a currency, scored from −1 (max dovish) to +1 (max hawkish). Reads from persisted snapshots — no LLM call in the request path. Includes recent_change indicator, source statements, and classifier provenance marker. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["currency"],"properties":{"currency":{"type":"string","maxLength":3,"minLength":3}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"get_correlation","fixed":{"name":"get_correlation","description":"Returns the Pearson price correlation coefficient between two symbols over N daily bars. Ranges from -1.0 (perfect inverse) to +1.0 (perfect positive). Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol_a","symbol_b"],"properties":{"bars":{"type":"integer","default":20,"maximum":200,"minimum":2},"symbol_a":{"type":"string","maxLength":20,"minLength":1},"symbol_b":{"type":"string","maxLength":20,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":164,"tokensAfter":164},{"name":"get_cot_report","fixed":{"name":"get_cot_report","description":"Returns the latest CFTC Commitments of Traders (COT) report data for a currency or commodity. Data sourced from the CFTC Socrata public API (free, no key required), cached 24 hours. Supported symbols: EUR, GBP, JPY, CHF, AUD, CAD, NZD, GOLD, OIL. Returns { error: 'COT_UNAVAILABLE' } if the feed is unreachable. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"weeks":{"type":"integer","default":4,"maximum":52,"minimum":1},"symbol":{"type":"string","maxLength":20,"minLength":2},"report_type":{"enum":["LEGACY","TFF","DISAGGREGATED"],"type":"string","default":"TFF"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"get_currency_strength","fixed":{"name":"get_currency_strength","description":"Ranks the 8 major currencies (USD EUR GBP JPY CHF CAD AUD NZD) by normalised % change, computed from bars across up to 28 major crosses in the terminal's Market Watch. Strongest first. Symbols missing from Market Watch are skipped and listed in skipped[]; currencies with fewer than 4 contributing pairs are flagged low_confidence. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"bars":{"type":"integer","default":24,"maximum":200,"minimum":2},"timeframe":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string","default":"H4"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"get_economic_calendar","fixed":{"name":"get_economic_calendar","description":"Returns upcoming and recent economic calendar events. Prefers MT5's built-in Calendar API when a terminal is connected; falls back to the server-side calendar (free feed) on MT4 or when disconnected. Response includes a `source` field ('terminal' or 'server'). Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"impact":{"enum":["LOW","MEDIUM","HIGH"],"type":"string"},"currencies":{"type":"array","items":{"type":"string","maxLength":3,"minLength":3},"maxItems":10},"hours_back":{"type":"integer","default":0,"maximum":168,"minimum":0},"hours_ahead":{"type":"integer","default":24,"maximum":168,"minimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":219,"tokensAfter":219},{"name":"get_economic_surprise","fixed":{"name":"get_economic_surprise","description":"Returns a rolling actual-vs-forecast surprise index for a currency's economic events, weighted by impact tier (high=3×, medium=1×, low ignored). Reports insufficient_history when fewer than 30 days of data exist. Uses the server-side calendar. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["currency"],"properties":{"days":{"type":"integer","default":90,"maximum":365,"minimum":7},"currency":{"type":"string","maxLength":3,"minLength":3}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"get_equity_guard_status","fixed":{"name":"get_equity_guard_status","description":"Returns the current equity guard: config, status (armed / breached / breached_pending / none), day_start_equity anchor, current equity, daily P&L percent, and the equity level at which the guard breaches. Requires the `trade` capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":108,"tokensAfter":108},{"name":"get_event_risk","fixed":{"name":"get_event_risk","description":"Preflight check: returns a graded verdict (proceed/caution/block) for trading a symbol based on upcoming high-impact economic events within the horizon. Uses the server-side calendar — works with no terminal connected. Includes blackout windows, resume_after time, and per-event details. Unknown symbols default to caution (fail-safe). Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"horizon_hours":{"type":"number","default":4,"maximum":168,"exclusiveMinimum":0},"high_after_min":{"type":"integer","exclusiveMinimum":0},"high_before_min":{"type":"integer","exclusiveMinimum":0},"medium_after_min":{"type":"integer","exclusiveMinimum":0},"medium_before_min":{"type":"integer","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":264,"tokensAfter":264},{"name":"get_execution_quality","fixed":{"name":"get_execution_quality","description":"Reports slippage statistics (requested vs filled price) for live market orders placed through MT-MCP: average, median, and worst slippage in points, overall and per symbol. Measurement starts from when fill auditing was enabled — earlier periods return DATA_INSUFFICIENT with the earliest measurable date. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"to_date":{"type":"string","description":"ISO date, default today"},"from_date":{"type":"string","description":"ISO date, default 30 days ago"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"get_fibonacci_levels","fixed":{"name":"get_fibonacci_levels","description":"Computes Fibonacci retracement and extension levels from swing high and low price points. Pure server-side computation — no EA dispatch required. Available at Free+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["swing_high","swing_low"],"properties":{"direction":{"enum":["UP","DOWN"],"type":"string","default":"UP"},"swing_low":{"type":"number","exclusiveMinimum":0},"swing_high":{"type":"number","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"get_holding_risk","fixed":{"name":"get_holding_risk","description":"Assesses risk for holding (or planning to hold) a position in a symbol for a specified duration. Reports events landing inside the hold window, weekend/market-closure gap exposure, and triple-swap day flags. Uses the server-side calendar — works with no terminal. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"expected_hold_hours":{"type":"number","default":24,"maximum":720,"exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":181,"tokensAfter":181},{"name":"get_indicator","fixed":{"name":"get_indicator","description":"Returns raw indicator values for a symbol and timeframe. Values are deterministic and\nunlabelled — no directional signals or verdicts are attached; the caller interprets them.\nProvide either `timeframe` (single) or `timeframes` (array, returns results keyed by timeframe\nunder `by_timeframe`) — exactly one.\n\nSupported indicators:\nRSI (Relative Strength Index): period 2-200 (default 14) → values: number[]\nMACD (Moving Average Convergence Divergence): fast 2-200 (default 12), slow 2-200 (default 26","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol","indicator"],"properties":{"count":{"type":"integer","default":10,"maximum":500,"minimum":1},"params":{"type":"object","additionalProperties":{}},"symbol":{"type":"string","maxLength":20,"minLength":1},"indicator":{"enum":["RSI","MACD","ATR","SMA","EMA","BOLLINGER","ADX","STOCHASTIC","CCI","PARABOLIC_SAR","ICHIMOKU","WPR","MFI","STDDEV","DEMARKER","MOMENTUM"],"type":"string"},"timeframe":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string"},"timeframes":{"type":"array","items":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string"},"maxItems":9,"minItems":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":358,"tokensAfter":358},{"name":"get_interest_rates","fixed":{"name":"get_interest_rates","description":"Returns current central bank policy interest rates for major currencies, sourced from MT5's built-in Calendar API. Includes the date of the last change and next scheduled decision. On MT4 terminals, returns { error: 'NOT_SUPPORTED_ON_MT4' }. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"currencies":{"type":"array","items":{"enum":["USD","EUR","GBP","JPY","CHF","AUD","NZD","CAD"],"type":"string"},"default":["USD","EUR","GBP","JPY","CHF","AUD","NZD","CAD"],"maxItems":8,"minItems":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"get_journal","fixed":{"name":"get_journal","description":"Returns recent lines from the MT5 Journal log. available=false when the log cannot be read.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"date":{"type":"string","pattern":"^\\d{8}$"},"count":{"type":"integer","default":100,"maximum":500,"minimum":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get_key_levels","fixed":{"name":"get_key_levels","description":"Computes support/resistance key levels for a symbol: classic + Fibonacci pivot points from the prior period, swing highs/lows (fractal detection), and psychological round numbers near the current price. Each level includes its distance from the current price. Available at Free+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"timeframe":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string","default":"D1"},"swing_bars":{"type":"integer","default":100,"maximum":500,"minimum":10}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":197,"tokensAfter":197},{"name":"get_macro_indicators","fixed":{"name":"get_macro_indicators","description":"Returns key macroeconomic indicators (CPI, GDP, NFP, PMI, unemployment, retail sales, trade balance) for a currency with the latest actual, previous, forecast, and surprise values. Data from MT5's built-in Calendar API. On MT4 terminals, returns { error: 'NOT_SUPPORTED_ON_MT4' }. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["currency"],"properties":{"currency":{"type":"string","maxLength":3,"minLength":3},"indicators":{"type":"array","items":{"enum":["CPI","GDP","NFP","PMI","UNEMPLOYMENT","RETAIL_SALES","TRADE_BALANCE"],"type":"string"}}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":201,"tokensAfter":201},{"name":"get_market_context","fixed":{"name":"get_market_context","description":"Returns live cross-asset context in one call: DXY (broad USD), VIX (equity-vol risk regime), and the US 10Y yield — each with level, short-horizon (5-day) change, asof, and source — plus a transparent risk_tone (risk_on / neutral / risk_off) derived from a documented VIX+DXY heuristic. Reads the server-side market-snapshot foundation; works with no terminal connected (incl. MT4). Degrades transparently: unavailable inputs are listed in missing_inputs, never zeroed; risk_tone is 'unknown' unless ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":180,"tokensAfter":180},{"name":"get_market_depth","fixed":{"name":"get_market_depth","description":"Returns Depth of Market (DOM) bid/ask levels for a symbol. Requires the broker to supply DOM data — if unavailable, returns empty arrays with a note. On MT4 terminals, returns { error: 'NOT_SUPPORTED_ON_MT4' }. Requires the `read` capability (Pro+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"levels":{"type":"integer","default":10,"maximum":20,"minimum":1},"symbol":{"type":"string","maxLength":20,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"get_market_sessions","fixed":{"name":"get_market_sessions","description":"Returns which major trading sessions (Sydney, Tokyo, London, New York) are currently open and when the next session opens/closes. Pure server-side UTC computation — no EA dispatch required. Available at Free+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"get_market_snapshot","fixed":{"name":"get_market_snapshot","description":"Returns a single-call market snapshot for one symbol: current tick (bid/ask/spread) plus a chosen indicator set across up to 4 timeframes. Replaces 5-8 separate tool calls when analysing a symbol. Limits: 4 timeframes x 6 indicators, 10 values per indicator. Defaults: timeframes [\"H1\"], indicators [\"RSI\", \"ATR\", \"EMA\"]. Indicators use their registry default parameters (e.g. RSI 14). If the 10s deadline is hit, returns the completed components with partial: true and a missing[] list. Values are r","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"bars":{"type":"integer","default":3,"maximum":10,"minimum":1},"symbol":{"type":"string","maxLength":20,"minLength":1},"indicators":{"type":"array","items":{"enum":["RSI","MACD","ATR","SMA","EMA","BOLLINGER","ADX","STOCHASTIC","CCI","PARABOLIC_SAR","ICHIMOKU","WPR","MFI","STDDEV","DEMARKER","MOMENTUM"],"type":"string"},"default":["RSI","ATR","EMA"],"maxItems":6,"minItems":1},"timeframes":{"type":"array","items":{"enum":["M1","M5","M15","M30","H1","H4","D1","W1","MN1"],"type":"string"},"default":["H1"],"maxItems":4,"minItems":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":345,"tokensAfter":345},{"name":"get_news","fixed":{"name":"get_news","description":"Returns recent forex/financial news articles from NewsAPI.org. Requires NEWS_API_KEY environment variable — returns NEWS_NOT_CONFIGURED if not set. Returns NEWS_UNAVAILABLE if the feed is unreachable. Results cached 5 minutes. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":100}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"get_news_guard_status","fixed":{"name":"get_news_guard_status","description":"Returns the current news guard configuration, enabled state, last poll time, classifier mode (llm/heuristic), and count of alerts raised in the last 24h. Returns { status: 'none' } if no guard is configured. Requires the `analytics` capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"get_orders","fixed":{"name":"get_orders","description":"Returns all pending orders.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":46,"tokensAfter":46},{"name":"get_pnl_by_symbol","fixed":{"name":"get_pnl_by_symbol","description":"Returns P&L broken down per trading symbol. Result: { items: [{ symbol, pnl, trades }] } sorted by |pnl| descending.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"to_date":{"$ref":"#/properties/from_date"},"from_date":{"type":"string","format":"date-time"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":107,"tokensAfter":107},{"name":"get_pnl_by_time","fixed":{"name":"get_pnl_by_time","description":"Returns P&L bucketed into time intervals. Result: { items: [{ period_start, pnl, trades }] } sorted chronologically.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"period":{"enum":["DAY","WEEK","MONTH"],"type":"string","default":"DAY"},"to_date":{"$ref":"#/properties/from_date"},"from_date":{"type":"string","format":"date-time"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"get_positions","fixed":{"name":"get_positions","description":"Returns all open positions with P&L.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":50,"tokensAfter":50},{"name":"get_prop_firm_status","fixed":{"name":"get_prop_firm_status","description":"Returns a decision-ready prop-firm verdict: overall status (ok | warning | critical | breached), trade_advice (proceed | reduce_risk | block), max_safe_risk_percent for the next trade, per-rule headroom (percent and account currency) with human-readable reasons, days_traded, trailing watermark, and the consistency + profit-target / min-trading-days progress. Status is driven only by loss rules and a consistency violation; profit target and min trading days never worsen it. FAIL-SAFE: if the term","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":180,"tokensAfter":180},{"name":"get_rate_differential","fixed":{"name":"get_rate_differential","description":"Returns the interest rate differential between the two currencies in a pair, plus the annualised swap cost/credit for the specified volume. Computed server-side from get_interest_rates and get_symbol_info data. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":10,"minLength":6},"volume":{"type":"number","default":1,"exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"get_rate_expectations","fixed":{"name":"get_rate_expectations","description":"Returns the market's expected policy path per G10 central bank: next scheduled meeting + countdown, current policy rate, last decision, and — for USD when a Fed Funds futures quote source is configured — market-implied cut/hold/hike probabilities and the implied year-end rate. Every response is labelled `data_quality: implied | calendar_only`; calendar-only entries omit probability fields entirely (never a fabricated guess). Implied values are DELAYED and APPROXIMATE (`approximate: true`, `metho","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["currency"],"properties":{"currency":{"enum":["USD","EUR","GBP","JPY","CHF","AUD","NZD","CAD","ALL"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":221,"tokensAfter":221},{"name":"get_risk_regime","fixed":{"name":"get_risk_regime","description":"Returns a composite risk-on/risk-off score in [−1, 1] from z-scored market inputs (VIX, DXY, gold, 2s10s spread, equities). Pure scoring function with transparent per-input drivers, confidence, missing_inputs, and sizing_advice. Requires at least 3 available inputs or returns REGIME_UNAVAILABLE. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"get_risk_summary","fixed":{"name":"get_risk_summary","description":"Returns a portfolio risk overview: aggregate currency exposure, margin utilisation, and correlated pairs. NOTE: Currency exposure logic assumes FX symbols (e.g., EURUSD) where the base currency is the first 3 characters. Results for indices, cryptos, and stocks will be inaccurate. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"get_sentiment","fixed":{"name":"get_sentiment","description":"Returns retail trader positioning sentiment for a symbol from Myfxbook Community Outlook (free, no key required). Includes long/short percentages and a contrarian signal (when retail is >70% long, signal is SHORT). Returns SENTIMENT_UNAVAILABLE if the feed is unreachable. Results cached 15 minutes. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"get_spread_alert","fixed":{"name":"get_spread_alert","description":"Returns the current spread for a symbol compared to an estimated historical average. The 30-day average is estimated from daily high-low range (not tick-level data). A spread is flagged as abnormal if it exceeds threshold_multiplier × the estimated average. Requires the `analytics` capability (Team+ tier).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1},"threshold_multiplier":{"type":"number","default":3,"exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":176},{"name":"get_symbol_info","fixed":{"name":"get_symbol_info","description":"Returns contract spec for a symbol: lot size, swap rates, digits.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":20,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"get_symbols","fixed":{"name":"get_symbols","description":"Returns all symbols available in Market Watch.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":52,"tokensAfter":52},{"name":"get_terminal_info","fixed":{"name":"get_terminal_info","description":"Returns MT5 terminal metadata: name, company, path, build, max_bars.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"get_tick","fixed":{"name":"get_tick","description":"Returns the current bid, ask, and spread for a symbol.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"symbol":{"type":"string","maxLength":12,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"get_tick_history","fixed":{"name":"get_tick_history","description":"Returns a sequence of raw ticks for a symbol. Result: { ticks: [{ time, bid, ask, last, volume }] }.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol"],"properties":{"count":{"type":"integer","default":100,"maximum":1000,"minimum":1},"symbol":{"type":"string","maxLength":12,"minLength":1},"from_date":{"type":"string","format":"date-time"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":131,"tokensAfter":131},{"name":"get_trade_history","fixed":{"name":"get_trade_history","description":"Returns closed trades with optional date range filter.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":100,"maximum":1000,"minimum":1},"to_date":{"type":"string","format":"date-time"},"from_date":{"type":"string","format":"date-time"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"get_trade_stats","fixed":{"name":"get_trade_stats","description":"Returns aggregate statistics over closed trades: total_trades, win/loss counts, win_rate, avg_profit, avg_loss, profit_factor, total_pnl, expectancy, max_drawdown_percent, sharpe_ratio, consistency_percent.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"symbol":{"type":"string","maxLength":12,"minLength":1},"to_date":{"$ref":"#/properties/from_date"},"from_date":{"type":"string","format":"date-time"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"list_alerts","fixed":{"name":"list_alerts","description":"Lists all alerts for this license with status (active/fired/cancelled), condition, mode, fire count, and last_evaluated_at (stale while the terminal is disconnected — evaluation pauses). Available at Pro+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"list_experts","fixed":{"name":"list_experts","description":"Returns all Expert Advisors currently attached to open charts.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":57,"tokensAfter":57},{"name":"modify_order","fixed":{"name":"modify_order","description":"Modifies the price, stop_loss, take_profit, or expiry of a pending order. At least one of price, stop_loss, take_profit, or expiry must be provided. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ticket"],"properties":{"price":{"type":"number","exclusiveMinimum":0},"expiry":{"type":"integer","minimum":0},"ticket":{"type":"integer","exclusiveMinimum":0},"dry_run":{"type":"boolean","default":true},"stop_loss":{"type":"number","minimum":0},"take_profit":{"type":"number","minimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"partial_close","fixed":{"name":"partial_close","description":"Closes a portion of an open position. `volume` must be less than the full position volume. Defaults to dry_run=true — set dry_run=false to execute live. Returns INVALID_PARAMETER if volume >= position volume, POSITION_NOT_FOUND if position closed between dry-run and live call. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ticket","volume"],"properties":{"ticket":{"type":"integer","exclusiveMinimum":0},"volume":{"type":"number","maximum":10,"exclusiveMinimum":0},"dry_run":{"type":"boolean","default":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"place_order","fixed":{"name":"place_order","description":"Places a market or pending order on MT5. Defaults to dry_run=true — set dry_run=false to execute live. Pending orders may set expiry (unix epoch seconds) for broker-side expiration; expiry is rejected on market orders. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["symbol","volume","order_type"],"properties":{"magic":{"type":"integer","minimum":0},"price":{"type":"number","exclusiveMinimum":0},"expiry":{"type":"integer","minimum":0,"description":"Pending orders only: expiration as unix epoch seconds (UTC). Must be in the future."},"symbol":{"type":"string","maxLength":12,"minLength":1},"volume":{"type":"number","maximum":10,"exclusiveMinimum":0},"comment":{"type":"string","maxLength":64},"dry_run":{"type":"boolean","default":true},"stop_loss":{"type":"number","minimum":0},"order_type":{"enum":["BUY","SELL","BUY_LIMIT","BUY_STOP","SELL_LIMIT","SELL_STOP"],"type":"string"},"take_profit":{"type":"number","minimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":310,"tokensAfter":310},{"name":"query_journal","fixed":{"name":"query_journal","description":"Queries trade journal entries, newest first. Filters: ticket, tag, setup, from_date/to_date (ISO), and search (case-insensitive text match). Entries linked to closed trades include realized_pnl when the terminal is connected (null otherwise). Available at Free+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tag":{"type":"string","maxLength":32,"minLength":1},"limit":{"type":"integer","default":20,"maximum":100,"minimum":1},"setup":{"type":"string","maxLength":64,"minLength":1},"offset":{"type":"integer","default":0,"minimum":0},"search":{"type":"string","maxLength":200,"minLength":1},"ticket":{"type":"integer","exclusiveMinimum":0},"to_date":{"type":"string","description":"ISO date"},"from_date":{"type":"string","description":"ISO date"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":244,"tokensAfter":244},{"name":"read_ea_logs","fixed":{"name":"read_ea_logs","description":"Returns recent lines from the EA log file. available=false when the log cannot be read (MQL5 sandbox).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"date":{"type":"string","pattern":"^\\d{8}$"},"count":{"type":"integer","default":100,"maximum":500,"minimum":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":107,"tokensAfter":107},{"name":"remove_equity_guard","fixed":{"name":"remove_equity_guard","description":"Removes the equity guard. If the guard is currently breached (or breached_pending), removal requires confirm=true — this prevents silently disabling an active safety rail; without it the call returns CONFIRM_REQUIRED. Requires the `trade` capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"confirm":{"type":"boolean","default":false}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":131,"tokensAfter":131},{"name":"remove_news_guard","fixed":{"name":"remove_news_guard","description":"Removes the news guard for this license. The guard stops polling immediately. Returns { removed: true } on success. Requires the `analytics` capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"remove_prop_firm_rules","fixed":{"name":"remove_prop_firm_rules","description":"Removes the prop-firm ruleset for the terminal (does not touch any linked equity guard — remove that separately with remove_equity_guard). Returns RULESET_NOT_FOUND if none exists. Requires the `trade` capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"set_breakeven","fixed":{"name":"set_breakeven","description":"Moves the stop loss of a position (or all positions) to its entry price. Optional buffer_points adds N points on the safe side of entry. Returns POSITION_NOT_IN_PROFIT if the position has not yet moved favourably. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"ticket":{"type":"integer","exclusiveMinimum":0},"dry_run":{"type":"boolean","default":true},"buffer_points":{"type":"integer","default":0,"minimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"set_equity_guard","fixed":{"name":"set_equity_guard","description":"Configures an account-level circuit breaker enforced server-side (survives this session): when equity falls max_daily_loss_percent below the daily anchor (or max_total_drawdown_percent below initial equity), the guard breaches. breach_action: close_all = close all positions then block new live trades until the daily reset; block_new = block only; notify = record an alert event only (see poll_alerts). Evaluation runs on a ~30s sampling loop while the terminal is connected; if disconnected at brea","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["max_daily_loss_percent","breach_action"],"properties":{"breach_action":{"enum":["close_all","block_new","notify"],"type":"string"},"initial_equity":{"type":"number","description":"Starting account equity for total drawdown calculation basis.","exclusiveMinimum":0},"reset_timezone":{"type":"string","default":"UTC","maxLength":64,"description":"IANA timezone for the daily reset boundary, e.g. 'UTC' or 'Europe/Prague'."},"initial_balance":{"type":"number","description":"Alias for initial_equity.","exclusiveMinimum":0},"max_daily_loss_percent":{"type":"number","maximum":99,"exclusiveMinimum":0},"max_total_drawdown_percent":{"type":"number","maximum":99,"exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":375,"tokensAfter":375},{"name":"set_news_guard","fixed":{"name":"set_news_guard","description":"Configures a persistent server-side news monitor. When enabled, the guard polls news at the specified interval, classifies articles by severity and affected currencies, and triggers alerts (via poll_alerts) when articles meet the threshold. One guard per license — calling again replaces the config. Notify-only: the guard never closes positions or blocks trades. Requires the `analytics` capability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["currencies"],"properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":100},"default":[],"maxItems":20},"currencies":{"type":"array","items":{"type":"string","maxLength":3,"minLength":3},"maxItems":10,"minItems":1},"min_severity":{"enum":["low","medium","high","critical"],"type":"string","default":"high"},"poll_interval_seconds":{"type":"integer","default":300,"maximum":3600,"minimum":300}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":273,"tokensAfter":273},{"name":"set_prop_firm_rules","fixed":{"name":"set_prop_firm_rules","description":"Configures a per-terminal prop-firm ruleset evaluated server-side (survives this session). Rules: max_daily_loss_percent (vs the daily equity anchor), optional max_total_drawdown_percent with drawdown_mode (static = from initial balance; trailing = from the high-watermark) and drawdown_basis (balance or equity), optional profit_target_percent, min_trading_days, and consistency_max_day_share_percent (max share of total profit from a single day). A preset (ftmo | generic) pre-fills defaults but th","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"preset":{"enum":["ftmo","generic"],"type":"string"},"breach_action":{"enum":["close_all","block_new","notify"],"type":"string"},"drawdown_mode":{"enum":["static","trailing"],"type":"string"},"drawdown_basis":{"enum":["balance","equity"],"type":"string"},"initial_equity":{"type":"number","description":"Alias for initial_balance. Starting account balance/equity for drawdown basis.","exclusiveMinimum":0},"reset_timezone":{"type":"string","maxLength":64,"description":"IANA timezone for the daily reset boundary, e.g. 'Europe/Prague'."},"initial_balance":{"type":"number","exclusiveMinimum":0},"min_trading_days":{"type":"integer","maximum":365,"minimum":0},"link_equity_guard":{"type":"boolean","description":"Install a matching equity guard for enforcement."},"profit_target_percent":{"type":"number","maximum":999,"exclusiveMinimum":0},"max_daily_loss_percent":{"type":"number","maximum":99,"exclusiveMinimum":0},"max_total_drawdown_percent":{"type":"number","maximum":99,"exclusiveMinimum":0},"consistency_max_day_share_percent":{"type":"number","maximum":100,"exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":490,"tokensAfter":490},{"name":"set_trailing_stop","fixed":{"name":"set_trailing_stop","description":"Registers a software trailing stop on a position. The EA updates the SL each timer cycle when price moves trailing_points in the position's favour. IMPORTANT: trailing state is lost if the EA restarts — callers should re-set after reconnect. trailing_points minimum is 10. Defaults to dry_run=true — set dry_run=false to register live. Requires the `trade` capability and inp_AllowTrading=true on the EA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ticket","trailing_points"],"properties":{"ticket":{"type":"integer","exclusiveMinimum":0},"dry_run":{"type":"boolean","default":true},"trailing_points":{"type":"integer","minimum":10}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"write_trade_note","fixed":{"name":"write_trade_note","description":"Persists a trade journal entry: rationale, setup label, and tags, optionally linked to a position/order ticket. Entries are append-only and immutable — to correct one, write a new note with amends_entry_id pointing at the original. Use at order time to capture WHY a trade was taken; query later with query_journal for post-trade review and per-setup statistics. Free tier stores up to 100 entries. Available at Free+ tier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"tags":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":32,"minLength":1},"default":[],"maxItems":10},"text":{"type":"string","maxLength":2000,"minLength":1},"setup":{"type":"string","maxLength":64,"minLength":1},"ticket":{"type":"integer","exclusiveMinimum":0},"amends_entry_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":267,"tokensAfter":267}],"toolsChanged":67,"tokensSaved":0,"todo":[{"tool":"backtest_strategy","params":["bars","symbol","strategy","timeframe","initial_balance","risk_per_trade_pct"]},{"tool":"calculate_lot_size","params":["symbol","risk_percent","stop_loss_pips"]},{"tool":"cancel_alert","params":["alert_id"]},{"tool":"cancel_order","params":["ticket","dry_run"]},{"tool":"check_order","params":["price","symbol","volume","order_type"]},{"tool":"close_all_positions","params":["symbol","dry_run"]},{"tool":"close_position","params":["ticket","dry_run"]},{"tool":"create_alert","params":["mode","note","type","cooldown_seconds"]},{"tool":"detect_patterns","params":["bars","symbol","patterns","timeframe"]},{"tool":"explain_trade","params":["ticket","timeframe"]},{"tool":"get_bars","params":["count","symbol","timeframe"]},{"tool":"get_cb_stance","params":["currency"]},{"tool":"get_correlation","params":["bars","symbol_a","symbol_b"]},{"tool":"get_cot_report","params":["weeks","symbol","report_type"]},{"tool":"get_currency_strength","params":["bars","timeframe"]},{"tool":"get_economic_calendar","params":["impact","currencies","hours_back","hours_ahead"]},{"tool":"get_economic_surprise","params":["days","currency"]},{"tool":"get_event_risk","params":["symbol","horizon_hours","high_after_min","high_before_min","medium_after_min","medium_before_min"]},{"tool":"get_execution_quality","params":["symbol"]},{"tool":"get_fibonacci_levels","params":["direction","swing_low","swing_high"]},{"tool":"get_holding_risk","params":["symbol","expected_hold_hours"]},{"tool":"get_indicator","params":["count","params","symbol","indicator","timeframe","timeframes"]},{"tool":"get_interest_rates","params":["currencies"]},{"tool":"get_journal","params":["date","count"]},{"tool":"get_key_levels","params":["symbol","timeframe","swing_bars"]},{"tool":"get_macro_indicators","params":["currency","indicators"]},{"tool":"get_market_depth","params":["levels","symbol"]},{"tool":"get_market_snapshot","params":["bars","symbol","indicators","timeframes"]},{"tool":"get_news","params":["limit","query"]},{"tool":"get_pnl_by_symbol","params":["to_date","from_date"]},{"tool":"get_pnl_by_time","params":["period","to_date","from_date"]},{"tool":"get_rate_differential","params":["symbol","volume"]},{"tool":"get_rate_expectations","params":["currency"]},{"tool":"get_sentiment","params":["symbol"]},{"tool":"get_spread_alert","params":["symbol","threshold_multiplier"]},{"tool":"get_symbol_info","params":["symbol"]},{"tool":"get_tick","params":["symbol"]},{"tool":"get_tick_history","params":["count","symbol","from_date"]},{"tool":"get_trade_history","params":["limit","to_date","from_date"]},{"tool":"get_trade_stats","params":["symbol","to_date","from_date"]},{"tool":"modify_order","params":["price","expiry","ticket","dry_run","stop_loss","take_profit"]},{"tool":"modify_position","params":["ticket","dry_run","stop_loss","take_profit"]},{"tool":"partial_close","params":["ticket","volume","dry_run"]},{"tool":"place_order","params":["magic","price","symbol","volume","comment","dry_run","stop_loss","order_type","take_profit"]},{"tool":"poll_alerts","params":["include_delivered"]},{"tool":"query_journal","params":["tag","limit","setup","offset","search","ticket"]},{"tool":"read_ea_logs","params":["date","count"]},{"tool":"remove_equity_guard","params":["confirm"]},{"tool":"reverse_position","params":["ticket","volume","dry_run","stop_loss","take_profit"]},{"tool":"scan_symbols","params":["limit","filter","sort_by","timeframe"]},{"tool":"set_breakeven","params":["ticket","dry_run","buffer_points"]},{"tool":"set_equity_guard","params":["breach_action","max_daily_loss_percent","max_total_drawdown_percent"]},{"tool":"set_news_guard","params":["keywords","currencies","min_severity","poll_interval_seconds"]},{"tool":"set_prop_firm_rules","params":["preset","breach_action","drawdown_mode","drawdown_basis","initial_balance","min_trading_days","profit_target_percent","max_daily_loss_percent","max_total_drawdown_percent","consistency_max_day_share_percent"]},{"tool":"set_trailing_stop","params":["ticket","dry_run","trailing_points"]},{"tool":"write_trade_note","params":["tags","text","setup","ticket","amends_entry_id"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}