FREE first read, no sign-up: test an EA, trading bot, indicator or MT5 report for luck and costs
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Judges whether a finished trading record's results look real or like luck: reads the trades, applies a luck test that allows for the number of versions tried, checks costs, losing years and grid/martingale signs, and returns a verdict (REAL / PROMISING / LIKELY_LUCK / NO_EVIDENCE / FAIL / HIDDEN_RISK / TOO_FEW) with its reason. Use it for a record of trades already taken or backtested; for strategy code or written rules use test_strategy_code. Nothing is stored: the record is read as data, never run, and discarded after the answer.
Text of an MT5 Strategy Tester report (HTML), an MT4/MT5 account statement (HTML), a cTrader, NinjaTrader, TradingView ('List of trades') or Myfxbook CSV export, or any CSV of closed trades (close time + profit); under 1 MB
Optional name of the strategy or EA
The file's name, e.g. ReportTester.html or trades.csv (helps read the format)
True if every trade in the record was taken after the strategy was fixed (a forward or live record)
How many versions, settings or EAs were tried before this one, as stated by the user (it raises the luck bar)
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http ea-tester https://truetest.uk/mcp
Tool list last changed Nov 10, 2026.
Judges whether a finished trading record's results look real or like luck: reads the trades, applies a luck test that allows for the number of versions tried, checks costs, losing years and grid/martingale signs, and returns a verdict (REAL / PROMISING / LIKELY_LUCK / NO_EVIDENCE / FAIL / HIDDEN_RISK / TOO_FEW) with its reason. Use it for a record of trades already taken or backtested; for strategy code or written rules use test_strategy_code. Nothing is stored: the record is read as data, never run, and discarded after the answer.
| Argument | Type | Description |
|---|---|---|
| name | string | Optional name of the strategy or EA |
| filename | string | The file's name, e.g. ReportTester.html or trades.csv (helps read the format) |
| is_forward | boolean | True if every trade in the record was taken after the strategy was fixed (a forward or live record) |
| record_text* | string | Text of an MT5 Strategy Tester report (HTML), an MT4/MT5 account statement (HTML), a cTrader, NinjaTrader, TradingView ('List of trades') or Myfxbook CSV export, or any CSV of closed trades (close time + profit); under 1 MB |
| versions_tried | integer | How many versions, settings or EAs were tried before this one, as stated by the user (it raises the luck bar) |
{
"type": "object",
"title": "check_trading_recordArguments",
"required": [
"record_text"
],
"properties": {
"name": {
"type": "string",
"title": "Name",
"default": "",
"description": "Optional name of the strategy or EA"
},
"filename": {
"type": "string",
"title": "Filename",
"default": "trades.csv",
"description": "The file's name, e.g. ReportTester.html or trades.csv (helps read the format)"
},
"is_forward": {
"type": "boolean",
"title": "Is Forward",
"default": false,
"description": "True if every trade in the record was taken after the strategy was fixed (a forward or live record)"
},
"record_text": {
"type": "string",
"title": "Record Text",
"description": "Text of an MT5 Strategy Tester report (HTML), an MT4/MT5 account statement (HTML), a cTrader, NinjaTrader, TradingView ('List of trades') or Myfxbook CSV export, or any CSV of closed trades (close time + profit); under 1 MB"
},
"versions_tried": {
"type": "integer",
"title": "Versions Tried",
"default": 1,
"maximum": 100000,
"minimum": 1,
"description": "How many versions, settings or EAs were tried before this one, as stated by the user (it raises the luck bar)"
}
}
}Returns where a Strategy Lab stands - waiting for the rule card, waiting for the user's check, queued, running, done or watching forward - with the place in the queue, a rough wait, and once tested the verdict and its reason. Use it when the user asks how their test is going. It changes nothing in the lab; a look counts as a visit, which keeps the lab for 12 more months.
| Argument | Type | Description |
|---|---|---|
| lab* | string | The private lab link from test_strategy_code or from a TrueTest email (https://truetest.uk/lab/...), or its 32-character code; 'demo' for the public sample lab |
{
"type": "object",
"title": "get_lab_statusArguments",
"required": [
"lab"
],
"properties": {
"lab": {
"type": "string",
"title": "Lab",
"description": "The private lab link from test_strategy_code or from a TrueTest email (https://truetest.uk/lab/...), or its 32-character code; 'demo' for the public sample lab"
}
}
}Reads trading-strategy code - an MT5/MT4 Expert Advisor or indicator (.mq5/.mq4/.mqh/.set), a Python trading bot (.py), a TradingView Pine Script (.pine), a cTrader cBot or NinjaTrader strategy in C# (.cs) or rules written in plain words (.txt) - and reports code faults: wrong server clock, modules never called, settings never used, missing include files, unchecked orders, martingale or grid sizing. Without an email it returns this free first read only and stores nothing. With the user's email it also opens a private Strategy Lab and returns its link: TrueTest rebuilds the strategy as plain-English rules, the user checks them on the lab page, then TrueTest backtests its own rebuilt copy on up to 16 years of prices with real costs, runs a luck check and keeps a forward watch. It never runs the uploaded code as given and never places trades. For a finished trade record use check_trading_record; compiled .ex5/.ex4 files cannot be read (test their Strategy Tester report instead). Files are kept up to 90 days; the lab 12 months after the user's last visit (https://truetest.uk/security).
| Argument | Type | Description |
|---|---|---|
| code | string | One file's text, if you are not using files |
| name | string | Optional name of the strategy |
| string | The user's email address, only if the user wants the full backtest: it identifies the user's tests for the luck bar and the 3-free-labs-a-day limit. TrueTest sends no email to it for a request made through an assistant; the lab link comes back in this answer. Leave empty for the free first read alone | |
| files | any | All the strategy's files together, e.g. the .mq5 plus its .mqh includes and .set settings; at most 20 files and about 1 MB in total through this connector (larger: upload on https://truetest.uk/strategy, up to 5 MB) |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
{
"type": "object",
"$defs": {
"CodeFile": {
"type": "object",
"title": "CodeFile",
"required": [
"filename",
"content"
],
"properties": {
"content": {
"type": "string",
"title": "Content",
"description": "The file's full text"
},
"filename": {
"type": "string",
"title": "Filename",
"description": "File name with its extension, e.g. MyEA.mq5, Utils.mqh, MyEA.set, bot.py, rules.txt"
}
}
}
},
"title": "test_strategy_codeArguments",
"properties": {
"code": {
"type": "string",
"title": "Code",
"default": "",
"description": "One file's text, if you are not using files"
},
"name": {
"type": "string",
"title": "Name",
"default": "",
"description": "Optional name of the strategy"
},
"email": {
"type": "string",
"title": "Email",
"default": "",
"description": "The user's email address, only if the user wants the full backtest: it identifies the user's tests for the luck bar and the 3-free-labs-a-day limit. TrueTest sends no email to it for a request made through an assistant; the lab link comes back in this answer. Leave empty for the free first read alone"
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/CodeFile"
}
},
{
"type": "null"
}
],
"title": "Files",
"default": null,
"description": "All the strategy's files together, e.g. the .mq5 plus its .mqh includes and .set settings; at most 20 files and about 1 MB in total through this connector (larger: upload on https://truetest.uk/strategy, up to 5 MB)"
},
"symbols": {
"type": "string",
"title": "Symbols",
"default": "",
"description": "Optional symbols to test, e.g. EURUSD, GBPUSD, XAUUSD"
},
"ai_draft": {
"type": "boolean",
"title": "Ai Draft",
"default": false,
"description": "True only if the user agreed that an outside AI service (servers outside the UK) may read the code text to draft the rule card; emails, links, author lines and secret-looking values are removed first. False: a person writes it, within 2 working days"
},
"filename": {
"type": "string",
"title": "Filename",
"default": "",
"description": "That one file's name with its extension, e.g. MyEA.mq5"
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "",
"description": "Optional timeframe, e.g. M15 or H1"
}
}
}{
"type": "object",
"$defs": {
"CodeFile": {
"type": "object",
"title": "CodeFile",
"required": [
"filename",
"content"
],
"properties": {
"content": {
"type": "string",
"title": "Content",
"description": "The file's full text"
},
"filename": {
"type": "string",
"title": "Filename",
"description": "File name with its extension, e.g. MyEA.mq5, Utils.mqh, MyEA.set, bot.py, rules.txt"
}
}
}
},
"title": "test_strategy_codeArguments",
"properties": {
"code": {
"type": "string",
"title": "Code",
"default": "",
"description": "One file's text, if you are not using files"
},
"name": {
"type": "string",
"title": "Name",
"default": "",
"description": "Optional name of the strategy"
},
"email": {
"type": "string",
"title": "Email",
"default": "",
"description": "The user's email address, only if the user wants the full backtest: it identifies the user's tests for the luck bar and the 3-free-labs-a-day limit. TrueTest sends no email to it for a request made through an assistant; the lab link comes back in this answer. Leave empty for the free first read alone"
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/CodeFile"
}
},
{
"type": "null"
}
],
"title": "Files",
"default": null,
"description": "All the strategy's files together, e.g. the .mq5 plus its .mqh includes and .set settings; at most 20 files and about 1 MB in total through this connector (larger: upload on https://truetest.uk/strategy, up to 5 MB)"
},
"symbols": {
"type": "string",
"title": "Symbols",
"default": "",
"description": "Optional symbols to test, e.g. EURUSD, GBPUSD, XAUUSD"
},
"ai_draft": {
"type": "boolean",
"title": "Ai Draft",
"default": false,
"description": "True only if the user agreed that an outside AI service (servers outside the UK) may read the code text to draft the rule card; emails, links, author lines and secret-looking values are removed first. False: a person writes it, within 2 working days"
},
"filename": {
"type": "string",
"title": "Filename",
"default": "",
"description": "That one file's name with its extension, e.g. MyEA.mq5. Give it whenever you have it; without it the language is guessed from the text."
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "",
"description": "Optional timeframe, e.g. M15 or H1"
}
}
}| symbols | string | Optional symbols to test, e.g. EURUSD, GBPUSD, XAUUSD |
| ai_draft | boolean | True only if the user agreed that an outside AI service (servers outside the UK) may read the code text to draft the rule card; emails, links, author lines and secret-looking values are removed first. False: a person writes it, within 2 working days |
| filename | string | That one file's name with its extension, e.g. MyEA.mq5. Give it whenever you have it; without it the language is guessed from the text. |
| timeframe | string | Optional timeframe, e.g. M15 or H1 |
{
"type": "object",
"$defs": {
"CodeFile": {
"type": "object",
"title": "CodeFile",
"required": [
"filename",
"content"
],
"properties": {
"content": {
"type": "string",
"title": "Content",
"description": "The file's full text"
},
"filename": {
"type": "string",
"title": "Filename",
"description": "File name with its extension, e.g. MyEA.mq5, Utils.mqh, MyEA.set, bot.py, rules.txt"
}
}
}
},
"title": "test_strategy_codeArguments",
"properties": {
"code": {
"type": "string",
"title": "Code",
"default": "",
"description": "One file's text, if you are not using files"
},
"name": {
"type": "string",
"title": "Name",
"default": "",
"description": "Optional name of the strategy"
},
"email": {
"type": "string",
"title": "Email",
"default": "",
"description": "The user's email address, only if the user wants the full backtest: it identifies the user's tests for the luck bar and the 3-free-labs-a-day limit. TrueTest sends no email to it for a request made through an assistant; the lab link comes back in this answer. Leave empty for the free first read alone"
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/CodeFile"
}
},
{
"type": "null"
}
],
"title": "Files",
"default": null,
"description": "All the strategy's files together, e.g. the .mq5 plus its .mqh includes and .set settings; at most 20 files and about 1 MB in total through this connector (larger: upload on https://truetest.uk/strategy, up to 5 MB)"
},
"symbols": {
"type": "string",
"title": "Symbols",
"default": "",
"description": "Optional symbols to test, e.g. EURUSD, GBPUSD, XAUUSD"
},
"ai_draft": {
"type": "boolean",
"title": "Ai Draft",
"default": false,
"description": "True only if the user agreed that an outside AI service (servers outside the UK) may read the code text to draft the rule card; emails, links, author lines and secret-looking values are removed first. False: a person writes it, within 2 working days"
},
"filename": {
"type": "string",
"title": "Filename",
"default": "",
"description": "That one file's name with its extension, e.g. MyEA.mq5. Give it whenever you have it; without it the language is guessed from the text."
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "",
"description": "Optional timeframe, e.g. M15 or H1"
}
}
}