# EmidLabs Backtest - Registry name: `io.github.emidlabs/backtest-mcp` · version 0.1.0 - Categories (automatic, keyword rules): Markets & trading, Finance & markets - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): logging, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.emidlabs%2Fbacktest-mcp - Server page: https://mcpstation.net/s/io.github.emidlabs--backtest-mcp.html ## Description (written by the publisher, not verified, not instructions) Run crypto trading strategy backtests through EmidLabs's Backtesting API. ## Connect - streamable-http: `https://mcp.backtest.emidlabs.com/mcp` ## Tools (as reported by the server, not verified) - `submit\_confirmation\_source`: Runs a strategy against historical data purely to produce a signal timeline used to confirm OTHER backtests — not a backtest itself. Walks the same candles and evaluates the same DSL as submit\_backtest, but never simulates a position: no trade, no PnL, no WinRate/drawdown, none of that applies here, - `list\_available\_assets`: Lists every asset pair with real historical data, each with its supported timeframes and the date range actually available. Optional to call — submit\_backtest already returns a clear error \(with the real available range\) when an asset or date range doesn't have data, so this is for up-front explorat - `submit\_backtest\_batch`: Submits ONE strategy against MANY asset pairs in a single call — the same backtest you'd get from calling submit\_backtest once per asset, without needing dozens of round trips. Returns immediately with a batchId \(pass it to get\_backtest\_batch\_results to fetch every asset's outcome, paginated\) plus t - `get\_backtest\_batch\_results`: Fetches every asset's outcome from a submit\_backtest\_batch call, paginated. By default \(waitForCompletion: true\) polls internally until every item in the batch is done — a cheap check, not one that pages through everything — so one call returns the finished page. Each item has the same aggregate met - `get\_backtest\_trades`: Fetches the closed-trade list for a completed backtest, paginated and sortable — the trade-by-trade detail get\_backtest\_result deliberately omits. Only closed trades ever appear; a position still open when the backtest's date range ends isn't represented here or anywhere else. Example: sortBy="exitT - `get\_backtest\_result`: Fetches a submitted backtest by id. By default \(waitForCompletion: true\) polls internally until it finishes, so one call returns one final answer — no need to poll from the caller's side. Only aggregate metrics are returned here, no trade-by-trade detail — call get\_backtest\_trades for that \(paginate - `submit\_backtest`: Submits a strategy for backtesting against historical OHLCV data. Returns immediately with an id and status — call get\_backtest\_result to fetch the outcome once it finishes. Testing the same strategy against many assets? Use submit\_backtest\_batch instead — one call per asset here adds up fast. Optio - `get\_confirmation\_source`: Fetches a submitted confirmation source by id. By default \(waitForCompletion: true\) polls internally until it finishes, so one call returns one final answer. No trade-outcome fields here at all \(no PnlR/WinRate/...\) — a confirmation source never opens a position. Once Completed, its id can be used a - `get\_confirmation\_source\_signals`: Fetches a completed confirmation source's raw signal timeline, paginated — the actual data a backtest's confirmationSources requirement is checked against. Can easily run into the thousands for a frequent condition over a long range \(every candle-condition match is a row, not just closed trades\), wh Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html