algotest-backtester
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@algotest-backtesterBacktest ETHUSD for last 350 days, entry 22:00, exit 07:00, sell ATM call and put, Today expiry – preview only."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AlgoTest Backtester MCP for Termux
This local MCP server controls the already-authenticated AlgoTest Backtester browser profile using Playwright and system Chromium. It is intended for personal use with Claude Code.
Files
Copy algotest-mcp-server.mjs into /root/algotest-mcp/ inside the Debian PRoot environment where Chromium and npm dependencies are installed. The repository also includes login-session.cjs for local hidden-password login and BROWSER_ACCESS.md with the complete Android/Termux/PRoot browser setup.
Related MCP server: shoonya-mcp
Install
cd /root/algotest-mcp
npm install --no-audit --no-fund playwright @modelcontextprotocol/sdk zod
# The package is already installed with PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1.The server expects the persistent login profile at /root/algotest-mcp/profile and Chromium at /usr/bin/chromium. These can be overridden with ALGO_PROFILE and CHROMIUM_PATH.
Create or refresh the local login session
cd /root/algotest-mcp
node login-session.cjsThe helper reads credentials locally, does not print the password, and stores the authenticated Playwright profile under /root/algotest-mcp/profile. Never commit or share that directory.
Test server manually
cd /root/algotest-mcp
node algotest-mcp-server.mjsThe process uses stdio and will appear to wait; press Ctrl+C to stop. Do not type passwords into the server process.
Add to Claude Code
Claude Code commonly supports adding a local stdio MCP server with an mcp add command. From the same Debian shell, try:
claude mcp add algotest-backtester -- node /root/algotest-mcp/algotest-mcp-server.mjsIf your installed Claude Code version uses a different MCP command, run claude mcp --help and add a local server with:
Name:
algotest-backtesterTransport:
stdioCommand:
nodeArguments:
/root/algotest-mcp/algotest-mcp-server.mjs
Available tools
backtest_strategy is the unified natural-language workflow. It parses a request such as “ETH par last 350 days, 22:00 entry, 07:00 exit, sell ATM call and put, Today expiry,” configures the UI, and returns a preview. It never starts the run unless confirm: true is explicitly supplied by Claude Code after user confirmation.
preview_backtest configures the Backtester and never presses Start Backtest. run_backtest requires confirm: true; without confirmation it only returns the configuration preview. get_results reads the currently visible result page. close_browser closes the browser but preserves the login profile.
Example Claude Code request
ETH ki strategy ko last 350 days par backtest karo: Delta Exchange ETHUSD, intraday, entry 22:00 IST, next-day exit 07:00 IST, sell ATM call and sell ATM put, Today expiry, 1 lot, no stop-loss and no target.Claude Code should first call backtest_strategy with confirm: false, show the parsed configuration, and ask for confirmation. Only after you approve should it call the same tool with confirm: true.
After reviewing the preview, explicitly ask Claude Code to run it. The tool itself still requires confirm: true as a safety guard.
Important limitations
The browser profile must remain available and the Debian/Termux process must not be killed. OTP, CAPTCHA, session expiry, or a changed AlgoTest UI may require manual intervention. The automation is for Backtester data only; it does not place live orders or deploy an algo. The Today expiry plus a 22:00-to-07:00 overnight window may be rejected by AlgoTest validation; the tool will return the platform's message.
Never share AlgoTest passwords or OTPs in chat. If a session expires, run a separate local login flow and preserve the profile directory.
Available Tools
5 toolsbacktest_strategyA
Accept a natural-language strategy request, configure AlgoTest Backtester, and either return a preview or run it when confirm=true. Never performs live trading.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| request | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It explicitly discloses that the tool never performs live trading and explains the preview-versus-run conditional based on confirm. This adds meaningful safety and control information, though it does not cover side effects like result persistence or browser interaction hinted at by close_browser.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The main action and conditional behavior are front-loaded, and the critical safety note ('Never performs live trading') is isolated at the end. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core invoke condition and safety, but with no output schema it omits what a 'preview' looks like, whether results are returned directly or need to be fetched via get_results, and how this tool relates to the sibling run/preview tools. An agent can call it correctly but may not know the follow-up steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does: 'request' is identified as a natural-language strategy, and 'confirm' is explained as the switch that triggers a run rather than a preview. For two simple parameters this is adequate, though a format example for request would strengthen it further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action: accept a natural-language strategy request, configure the backtester, and conditionally return a preview or run it. The verb and resource are specific. However, it does not explicitly differentiate from the sibling preview_backtest and run_backtest tools, which appear to offer the same behaviors separately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for natural-language strategy requests but gives no guidance on when to use this combined tool versus calling preview_backtest or run_backtest directly. It does not mention alternatives or exclusion conditions, leaving the agent to guess the correct routing among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_browserA
Close the local automation browser while preserving the persistent login profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly discloses the primary action ('close the local automation browser') and an important non-destructive detail ('preserving the persistent login profile'), which tells an agent that credentials/session state survive the close. It does not mention secondary effects such as open tabs or reconnection behavior, but for a zero-parameter close operation, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The core action is front-loaded, and the key preservation guarantee is included without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema and straightforward behavior, the description is fully complete. It states both what happens (close) and what is preserved (login profile), which is everything an agent needs to invoke it correctly and understand its impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. There are no parameter details to add, and the description appropriately focuses on behavior rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Close') with a clear resource ('the local automation browser') and adds a meaningful qualifier ('while preserving the persistent login profile'). It unambiguously identifies a browser-lifecycle action and is clearly distinct from the backtest-focused sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's purpose obvious, but it does not explicitly state when it should be called or contrast it with alternatives. Usage timing is implied rather than stated, which fits a simple utility but lacks explicit when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resultsA
Read the currently visible AlgoTest Backtest result metrics without starting a new run.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states the tool reads visible metrics and does not start a new run, signaling a non-destructive read operation. It does not describe error scenarios or preconditions (e.g., what happens if no results are visible), which is a minor gap given the simplicity of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action ('Read the currently visible AlgoTest Backtest result metrics') and includes a relevant constraint ('without starting a new run'). Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is complete for an agent to invoke it correctly. It states what the tool reads and explicitly denies side effects, which is all that is needed for correct usage. There are no missing fields or behaviors that would prevent an agent from using it appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty schema). According to the rubric, a baseline of 4 is appropriate when there are no parameters, as there is nothing to add. The description correctly does not mention parameters, and the schema fully defines the input expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Read', a resource 'currently visible AlgoTest Backtest result metrics', and adds the scope 'without starting a new run', which clearly distinguishes it from siblings like run_backtest and preview_backtest. An agent can readily infer what this tool does and how it differs from the others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that it does not start a new run, implying it is for reading existing results, which is a clear usage constraint. However, it does not explicitly mention when to use it versus alternatives (e.g., after a backtest has been run or previewed), nor does it state prerequisites (e.g., that a run must have already occurred). The context is clear enough for basic usage, but lacks explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_backtestB
Configure AlgoTest Backtester in the local browser profile without starting a backtest. Use this first.
| Name | Required | Description | Default |
|---|---|---|---|
| lots | No | ||
| expiry | No | Today | |
| target | No | ||
| endDate | Yes | ||
| exchange | No | Delta Exchange | |
| exitTime | No | 07:00 | |
| stopLoss | No | ||
| entryTime | No | 22:00 | |
| startDate | Yes | ||
| underlying | No | ETHUSD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses that the tool does not start a backtest and operates in the 'local browser profile.' Yet it does not explain side effects, persistence, browser session state, or whether existing configuration is overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action. Every clause adds context, and 'Use this first' is a useful directive. However, for a tool with this many parameters, the brevity edges toward underspecification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 10 parameters, no annotations, no output schema, and sibling tools for execution and results. The description covers only the highest-level purpose and ordering; it lacks parameter guidance, side-effect detail, and a clear relationship to the other backtest tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 10 parameters with 0% description coverage, and the description names none of them. Without any explanation of startDate, endDate, stopLoss, target, or the enum fields, an agent has no semantic guidance beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Configure AlgoTest Backtester in the local browser profile.' It also differentiates from the sibling run_backtest by explicitly stating it does so 'without starting a backtest,' and 'Use this first' establishes its role as a precursor in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this first' gives an explicit when-to-use instruction and implies this precedes backtest execution. However, it does not name sibling alternatives like backtest_strategy or run_backtest, nor does it state when this tool should NOT be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_backtestB
Configure and run AlgoTest Backtester. Requires confirm=true because it consumes a backtest quota. Never use for live trading.
| Name | Required | Description | Default |
|---|---|---|---|
| lots | No | ||
| expiry | No | Today | |
| target | No | ||
| confirm | No | ||
| endDate | Yes | ||
| exchange | No | Delta Exchange | |
| exitTime | No | 07:00 | |
| stopLoss | No | ||
| entryTime | No | 22:00 | |
| startDate | Yes | ||
| underlying | No | ETHUSD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does add useful behavioral context: it consumes a quota, demands confirm=true, and must not be used for live trading. Yet it omits other effects such as whether the operation is destructive, how long it runs, or what happens if confirm is false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences with no filler. The most critical information — the confirm requirement and quota consumption — appears first, and the live-trading warning is a clear, extra safety boundary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema and no annotations, this description is too thin. It covers the invocation guardrail but omits practical details like date format expectations, parameter relationships, what results are returned, and how this differs from preview_backtest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only addresses the confirm parameter. It gives no meaning for startDate, endDate, lots, expiry, target, stopLoss, entryTime, exitTime, or underlying, leaving the agent to infer everything from raw schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('Configure and run'), a distinct resource ('AlgoTest Backtester'), and notes it is not for live trading. However, it does not differentiate from sibling tools like backtest_strategy or preview_backtest, so it is clear but not fully distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite ('Requires confirm=true') and a rationale ('consumes a backtest quota'), plus an exclusion ('Never use for live trading'). It does not say when to prefer this tool over preview_backtest or backtest_strategy, leaving relative usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
backtest_strategy overlaps heavily with both preview_backtest and run_backtest, since it can either preview or run a strategy depending on confirm. This makes it unclear when an agent should use backtest_strategy versus the more specific preview/run tools.
All five tool names follow a consistent snake_case verb_noun pattern: backtest_strategy, preview_backtest, run_backtest, get_results, close_browser. This is predictable and easy to scan.
Five tools is well-scoped for a browser-automation backtesting workflow. Each tool maps to a meaningful step in the process without unnecessary bloat.
The set covers the core workflow: preview, run, retrieve results, and clean up. Minor gaps exist, such as no explicit cancel or historical results retrieval, but agents can likely complete the main backtest lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Automate trading on your own Alpaca account - build, backtest and run strategies via your AI.
Run multi-step tasks in a real Chrome browser: persistent environments, live view, human takeover.
Run crypto trading strategy backtests through EmidLabs's Backtesting API.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables AI assistants to backtest trading strategies described in plain English, providing access to market data, technical indicators, and comprehensive performance reports.1MIT- AlicenseBqualityBmaintenanceEnables algorithmic trading on the Shoonya platform through natural language commands, with military-grade encryption for credential security.118ISC
- AlicenseAqualityDmaintenanceDrives your real local Chrome with profile isolation, allowing LLMs to interact with your logged-in sessions without modifying your actual profile.1348MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to control a local browser via Playwright's accessibility tree, allowing automated web interactions and testing through natural language commands.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/makwanaalpesh811-a11y/algotest-backtester-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server