MetaTrader 5 ↔ MCP bridge for trading operations, market data, and trade journaling
24 tools with HTTP transport and tool annotations enabled. Naming is generally verb-noun compliant (mt5_get_*, mt5_place_*, mt5_log_*). All tools have descriptions (10-200 chars, within baseline). Input schemas present for all tools with proper type definitions. However, descriptions are often terse (e.g., 'Get OHLC bars data' lacks context on when to use vs alternatives). Parameter descriptions are minimal, many lack format/range guidance (e.g., 'timeframe' accepts 'H1, D1' but no enum constraint). Output schemas are not documented in the tool definitions. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Security: no evidence of secret injection, permission gates, or audit logging. Composition: tools are single-purpose but lack cross-tool chaining hints (e.g., mt5_place_bracket_order doesn't reference mt5_ea_bracket_list). Overall: functional definitions with room for LLM-optimized descriptions and structured error responses.
Query bars data from the data store.
Query deals data from the data store.
Import data into the data store.
Get data store statistics.
Query ticks data from the data store.
List all active brackets.
Register two existing pending orders as a bracket. The orders must already exist (placed via mt5_submit_pending_order). This links them so that when one fills, the other is auto-cancelled.
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure (e.g., mt5_get_bars returns what fields?). Baseline: 100% of A+ tools document return types.
Parameter descriptions lack format/range constraints. 'timeframe' accepts 'H1, D1' but no enum; 'limit' unbounded (could be 1 or 1000000). LLMs cannot validate inputs without explicit constraints. Baseline: 94% of A+ tools have actionable param descriptions.
No error handling or recovery guidance. Tools have no documented error responses, retryability, or actionable error messages. If mt5_place_bracket_order fails, LLM has no guidance on next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Stop/close a bracket order.
Get the current freeze status.
Get account summary information.
Get OHLC bars data for a symbol.
Get historical deals/trades.
Get technical indicator value for a symbol.
Get order book (bid/ask levels) for a symbol.
Get symbol information (spread, lot size, etc.).
Get tick data for a symbol.
Check health status of all subsystems (gateway, bridge, TCP).
Log a trade decision to the trade journal database.
Place a bracket order with buy and sell stop orders using ATR-based stop loss and take profit.
Query and reflect on logged trade decisions.
Safely shutdown trading by closing positions and/or cancelling orders.
Resume trading after a freeze.
Check status of tool categories (reads, writes, waits, analysis).
Get trading insights and reflection analytics.
Terse descriptions (40-50 chars) lack context on when to use vs alternatives. 'Get data store statistics' doesn't explain when to call mt5_data_stats vs mt5_tool_status. Baseline: avg 194 chars for A+ tools.
No cross-tool chaining hints. mt5_place_bracket_order doesn't mention mt5_ea_bracket_list or mt5_ea_bracket_stop. Agents cannot discover related tools without extra reasoning.