mcpbeat Sign in

EmidLabs Backtest MCP Server

answering

EmidLabs Backtest is answering right now. Last checked 5 min ago. It exposes 9 tools.

Run crypto trading strategy backtests through EmidLabs's Backtesting API.

The linked repository no longer exists on GitHub — it was deleted or made private.

Uptime history 48 days of history · worst day 0%
48 days agonow
100.0%
Uptime 24h
92 of 92 checks
9
Tools
read from the server
691 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 28

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 13 August 2026. No other catalogue keeps this.

2 Sep 3 tools changed the parameters they ask for submit_backtest, submit_backtest_batch, submit_confirmation_source
1 Sep a tool description was rewritten get_confirmation_source_signals
31 Aug 2 tools changed the parameters they ask for5 times that day submit_backtest, submit_backtest_batch
31 Aug 3 tools appeared get_confirmation_source, get_confirmation_source_signals, submit_confirmation_source
31 Aug 2 tool descriptions were rewritten submit_backtest, submit_backtest_batch
22 Aug 2 tools changed the parameters they ask for submit_backtest, submit_backtest_batch
20 Aug 2 tools changed the parameters they ask for submit_backtest, submit_backtest_batch
19 Aug 2 tools changed the parameters they ask for submit_backtest, submit_backtest_batch
14 Aug 3 tools appeared get_backtest_batch_results, get_backtest_trades, submit_backtest_batch
14 Aug 2 tool descriptions were rewritten3 times that day get_backtest_result, submit_backtest
and 6 more, back to 13 August 2026

This one has been quiet for a while

Quiet is not dead — but it is worth knowing when it wakes up, or when someone else takes it over. We watch the repository and tell you either way.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 5 min ago.

run in your terminal
claude mcp add backtest-mcp --transport http https://mcp.backtest.emidlabs.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "backtest-mcp": {
      "url": "https://mcp.backtest.emidlabs.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.backtest-mcp]
url = "https://mcp.backtest.emidlabs.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "backtest-mcp": {
      "url": "https://mcp.backtest.emidlabs.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "backtest-mcp": {
      "url": "https://mcp.backtest.emidlabs.com/mcp"
    }
  }
}

Available tools 9

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

backtest
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 metrics and recency fields (recentTradeCount/recentAvgPnlR/recentOutcomes) get_backtest_result returns for a single backtest, plus assetPair/status/error, so the single-result and batch-result shapes never drift apart. totalCount/completedCount/failedCount/pendingCount come back on every page, not just the last, so you can tell the batch is done from a single pageSize=1 call.
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 (paginated, sortable). Fetching many results from the same submit_backtest_batch call? Use get_backtest_batch_results instead.
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="exitTime", sortDirection="desc", pageSize=5 for the most recently closed trades.
submit
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. Optionally accepts confirmationSources to only count a candidate Entry/Exit as a real trade once corroborated by a submit_confirmation_source result (multi-timeframe or cross-asset confirmation) — see the confirmationSources argument and submit_confirmation_source's own description.
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 the per-asset id/status assigned right away. Best-effort: one bad asset pair (unknown, or its date range outside coverage) shows up with an error in that item only — every other asset in the batch is unaffected. Optionally accepts confirmationSources, applied identically to every asset in the batch — see submit_backtest's own confirmationSources argument for the full semantics.
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, because this strategy is never meant to be traded on its own. Returns immediately with an id and status — call get_confirmation_source to check completion, then pass that id as a confirmationSources sourceId in submit_backtest (e.g. only count an XRP entry once a BTC-neutral confirmation source agrees). Costs the same capacity as a regular backtest of the same size — the compute is identical, it just skips trade simulation.
confirmation
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 as a confirmationSources sourceId in submit_backtest; its raw signal timeline is available separately via get_confirmation_source_signals.
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), which is why this is paginated from the start. Debugging/inspection only — you do NOT need this tool to make confirmationSources work, and should not fetch these rows to reconstruct the gating yourself. To actually gate a backtest by this source, pass its id directly as sourceId in submit_backtest's own confirmationSources array; the backend applies the backward-only state check against this exact timeline automatically, including the higher-timeframe-to-lower-timeframe alignment. Reimplementing that alignment by hand from this raw data is unnecessary and easy to get wrong (e.g. failing to correctly persist a higher-timeframe state across every lower-timeframe candle until the next higher-timeframe close). Use this tool only to sanity-check a source's signal density or diagnose an unexpectedly low ConfirmedSignalsCount after the fact.
available
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 exploration or for recovering from an "unknown asset" error, not a required step before every submit_backtest.

Endpoints

URLTransportStateLatencyChecked
https://mcp.backtest.emidlabs.com/mcp streamable-http answering 707 ms 5 min ago

Alternatives to EmidLabs Backtest

same job, measured the same way
Sentinel
by clarencyu-boop

Crypto trading backtesting, bot deployment, AI strategy, and account management for Sentinel Bot.

36 installs/wk local only
Tradestaq MCP
by the-staq

AI-powered crypto trading tools. Strategies, backtests, bots, and portfolio management.

51 installs/wk local only
C
HaasOnline Trade Server
by haasonline

Manage HaasOnline crypto trading bots, labs, backtests and HaasScript across 20+ exchanges.

answering
dMoERA Creator
by cachecarti

Build, backtest, and deploy crypto trading strategies via MCP with 7-stage validation.

44 tools answering
BotSpot — AI Trading Bots & Backtesting
by grzesir

AI trading bots: generate strategies, backtest, deploy live to 10+ brokers. No coding required.

answering
Finlab AI
by koreal6803

Quantitative trading toolkit with 900+ data columns, backtesting, and 60+ strategy examples.

6 tools answering
StratEvo
by neuzhou

Quantitative trading: quotes, backtesting, screening, and genetic algorithm strategy evolution.

68 installs/wk local only
Trading
by lona

AI-powered trading strategy development: backtesting, market data, and portfolio analysis

answering

EmidLabs Backtest — questions

Answers built from our own checks of this server.

What can EmidLabs Backtest do?
It exposes 9 tools, read directly from the server on our last check. Among them: get_backtest_batch_results, get_backtest_result, get_backtest_trades, get_confirmation_source, get_confirmation_source_signals, list_available_assets and 3 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is EmidLabs Backtest mostly used for?
Its tools cluster around submit, backtest and confirmation. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is EmidLabs Backtest working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 691 ms. The bar chart above shows every period we have measured.
Is EmidLabs Backtest still maintained?
The linked repository no longer exists on GitHub — it was deleted or made private. We show this because it changes what you can expect: an unmaintained server may keep answering for months and then stop without warning.
How do I connect EmidLabs Backtest?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does EmidLabs Backtest need an API key?
No. EmidLabs Backtest completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 9 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is EmidLabs Backtest?
It answers our handshake in 691 ms on average, which is faster than 17% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.