# EmidLabs Backtest (remote · mcp.backtest.emidlabs.com)

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

- Trust score: 70/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.backtest.emidlabs.com`: 70/100 (this document), [markdown](https://verifymcp.io/servers/emidlabs-backtest-mcp/mcp.md), [page](https://verifymcp.io/servers/emidlabs-backtest-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.backtest.emidlabs.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 743 tokens (~185/item across 4 items; 3 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 7 days we've observed: 0 tool removals, 3 breaking changes, 0 auth/transport breaks, 0 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http emidlabs-backtest-mcp https://mcp.backtest.emidlabs.com/mcp
```

### Codex

```toml
[mcp_servers.emidlabs-backtest-mcp]
url = "https://mcp.backtest.emidlabs.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "emidlabs-backtest-mcp": {
      "type": "remote",
      "url": "https://mcp.backtest.emidlabs.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add emidlabs-backtest-mcp --url https://mcp.backtest.emidlabs.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  emidlabs-backtest-mcp:
    url: "https://mcp.backtest.emidlabs.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "emidlabs-backtest-mcp": {
      "type": "http",
      "url": "https://mcp.backtest.emidlabs.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-07-31 (score 70, +7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 63, −3)

- [security regression] Stability: 0.03 → fail
- [security regression] A breaking change shipped without a version bump: still 0.1.0
- [functional regression] Schema quality: 142 → 185
- [functional regression] “get_backtest_result” changed the type of “backtestApiKey”: string → string|null
- [functional regression] “list_available_assets” changed the type of “backtestApiKey”: string → string|null
- [functional regression] “submit_backtest” changed the type of “backtestApiKey”: string → string|null
- [functional] Schema quality: excellent → good
- [cosmetic] “get_backtest_result” reworded the description of “backtestApiKey”
- [cosmetic] “submit_backtest” reworded the description of “strategySnapshotJson”
- [cosmetic] “list_available_assets” reworded the description of “backtestApiKey”
- [cosmetic] “submit_backtest” reworded the description of “backtestApiKey”
- [cosmetic] “get_backtest_result” made “backtestApiKey” optional
- [cosmetic] “list_available_assets” made “backtestApiKey” optional
- [cosmetic] “submit_backtest” made “backtestApiKey” optional

### 2026-07-28 (score 66, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-07-27 (score 65)

First indexed and scored.

## MCP tools (3)

### `list_available_assets` (~151 tokens)

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.

Input parameters:

- `backtestApiKey` (string|null): Your EmidLabs backtest API key. Not needed if this connector was added with a static 'x-api-key' header.
- `backtestBaseUrl` (string|null): Defaults to the public production API. Override only for self-hosted/staging use.

Output parameters:

- `assets` (array)

### `get_backtest_result` (~176 tokens)

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. Trade-level detail is intentionally omitted; only aggregate metrics are returned.

Input parameters:

- `backtestApiKey` (string|null): Your EmidLabs backtest API key. Not needed if this connector was added with a static 'x-api-key' header.
- `backtestBaseUrl` (string|null): Defaults to the public production API.
- `id` (string, required): The id returned by submit_backtest.
- `pollTimeoutMs` (integer): Defaults to 120000 (2 minutes).
- `waitForCompletion` (boolean): If true (default), polls internally until the backtest finishes or pollTimeoutMs elapses.

Output parameters:

- `errorMessage` (string|null)
- `id` (string)
- `result` (object|null)
- `status` (string)

### `submit_backtest` (~314 tokens)

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.

Input parameters:

- `assetPair` (string, required): e.g. "BTC-USDC".
- `backtestApiKey` (string|null): Your EmidLabs backtest API key (created in the Console). Not needed if this connector was added with a static 'x-api-key' header.
- `backtestBaseUrl` (string|null): Defaults to the public production API. Override only for self-hosted/staging use.
- `finalDate` (string, required): ISO date string, e.g. "2025-06-01".
- `initialDate` (string, required): ISO date string, e.g. "2025-01-01".
- `strategySnapshotJson` (object, required): The Strategy DSL object — every field below documents its own exact shape, this is just the execution model that ties them together. Entry fills at the close of the candle where decision.entry turns…

Output parameters:

- `id` (string)
- `status` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/emidlabs-backtest-mcp/mcp#diagnostics

## Score history

- 2026-08-03: 70
- 2026-08-02: 70
- 2026-08-01: 70
- 2026-07-31: 70
- 2026-07-30: 63
- 2026-07-29: 63
- 2026-07-28: 66
- 2026-07-27: 65

## Links

- Remote endpoint: https://mcp.backtest.emidlabs.com/mcp
- Repository: https://github.com/emidlabs/emidlabs-backtest-mcp
- Website: https://emidlabs.com/
- Changelog RSS feed: https://verifymcp.io/servers/emidlabs-backtest-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/emidlabs-backtest-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/emidlabs-backtest-mcp/mcp
