Skip to main content
Glama
algolift-ai

AlgoLift MCP Server

Official
by algolift-ai

AlgoLift MCP server

An MCP server that gives an AI assistant three open AlgoLift tools to call:

  • Prop firm rules. The rules of futures prop firm accounts (profit targets, drawdowns and how they trail, daily loss limits, consistency, minimum days, contract limits, payouts, fees), each rule with its verification status, the firm's own page it was checked against, and the date.

  • Indicators. The technical indicators and candlestick patterns of @algolift/indicators, each ported from TA-Lib, pandas-ta-classic, pandas-ta or technicalindicators and tested against that library's output.

  • Setup Odds. How often an intraday setup actually happened ("when it gaps up, how often does it fill by noon?"), on your bars, with the sample size and a 95% interval on every number. The engine is Setup Odds.

It also has search and fetch, the two tools ChatGPT's deep research and company knowledge read, over the same content, each document with the algolift.ai page to cite.

It is read-only: every tool reads the data bundled in this package and computes on what you pass it, and each says so to the client (readOnlyHint: true). It needs no AlgoLift account and no API key, calls no AlgoLift service, makes no outbound network request and reads no file of yours. It runs over stdio for desktop clients, or over HTTP for clients that take a server by URL, such as ChatGPT.

Made by AlgoLift, a no-code platform for building and backtesting trading strategies.

Install

You need Node.js 20 or later. MCP clients start the server themselves with npx, so there is nothing else to install.

Claude Desktop

Open Settings, Developer, Edit Config, and add the server to claude_desktop_config.json:

{
  "mcpServers": {
    "AlgoLift": {
      "command": "npx",
      "args": ["-y", "@algolift/mcp"]
    }
  }
}

Restart Claude Desktop. The tools appear in the tools menu of a new chat.

Claude Code

claude mcp add algolift -- npx -y @algolift/mcp

Cursor

Add it to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "AlgoLift": {
      "command": "npx",
      "args": ["-y", "@algolift/mcp"]
    }
  }
}

VS Code, Windsurf and other MCP clients

Any client that runs a local MCP server over stdio takes the same command: npx -y @algolift/mcp. In VS Code, add it to .vscode/mcp.json:

{
  "servers": {
    "AlgoLift": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@algolift/mcp"]
    }
  }
}

On Windows, if your client cannot find npx, use "command": "cmd" with "args": ["/c", "npx", "-y", "@algolift/mcp"].

To pin a version, name it: @algolift/mcp@0.1.0.

ChatGPT

ChatGPT connects to a remote MCP server by URL, not to a command on your machine, so it needs the server reachable over public HTTPS. There are two ways to give it one:

  • The hosted endpoint, https://www.algolift.ai/api/mcp. AlgoLift serves the same tools there, stateless, with tighter caps (5,000 bars for an indicator, 50,000 for Setup Odds) and a per-address rate limit. It is not switched on yet: until it is, every request to it gets a 404. This README and the changelog will say when it is on.

  • Your own deployment of the HTTP mode (below), behind an HTTPS address you control.

Then, following OpenAI's guide to connecting from ChatGPT: open ChatGPT Plugins, select the plus button, then Add custom MCP server; give it a name and description; under Connection choose a public endpoint and enter the URL with its path (for example https://mcp.example.com/mcp); configure authentication (this server has no sign-in); review the risk warning; and select Create as a plugin. Which ChatGPT plans and workspaces can add custom MCP servers is OpenAI's to decide and changes over time, so check OpenAI's help center for yours.

ChatGPT's deep research and company knowledge read a server through two read-only tools, search and fetch, with the input and output shapes in OpenAI's MCP guide. This server has both (see Search and fetch), and every other tool is marked read-only (readOnlyHint: true) as well.

The OpenAI Responses API

The Responses API's mcp tool takes a remote server by URL. With the hosted endpoint on, or your own HTTPS deployment in its place:

import OpenAI from "openai";

const client = new OpenAI();
const response = await client.responses.create({
  model: "gpt-6.1-sol",
  tools: [
    {
      type: "mcp",
      server_label: "algolift",
      server_description: "Futures prop firm rules with each rule's verification status, technical indicators, and Setup Odds.",
      server_url: "https://www.algolift.ai/api/mcp",
      allowed_tools: ["search", "fetch", "get_prop_plan_rules", "compare_prop_plans"],
      require_approval: "never",
    },
  ],
  input: "Compare the Topstep and Apex 50K evaluations, and say which rules are not verified.",
});
console.log(response.output_text);

allowed_tools limits which of the server's tools the model sees; leave it out for all eleven. require_approval: "never" suits a server whose tools are all read-only, as these are; the API asks for approval by default. A deep research model reads only search and fetch, and OpenAI's deep research guide says require_approval must be "never" there. The model above is the one OpenAI's MCP guide uses; any model that supports remote MCP servers works.

Run it over HTTP

algolift-mcp --http serves the same tools over Streamable HTTP, stateless (each request is answered with one JSON body; no session and no event stream), by the same handler the hosted endpoint runs:

npx -y @algolift/mcp --http --port 3000
# AlgoLift MCP server 0.1.0 listening on http://127.0.0.1:3000/mcp (Streamable HTTP, stateless)
  • --port (default 3000; 0 picks a free one), --host (default 127.0.0.1, this machine only; use 0.0.0.0 in a container or behind a proxy on another host), --path (default /mcp).

  • In HTTP mode every call has the hosted caps (5,000 bars for an indicator, 50,000 for Setup Odds, 4 MB bodies).

  • A request from a browser page (one with an Origin header) is answered only from localhost, unless you allow its origin with --allow-origin https://your.site (the MCP transport asks servers to check Origin). Server-side clients such as ChatGPT and the Responses API send none.

  • It has no rate limit and no authentication of its own: put it behind a reverse proxy that terminates HTTPS and limits requests before you give its URL to anyone. It reads only the data in the package and makes no outbound request.

To try it locally, run it and point the MCP Inspector at http://127.0.0.1:3000/mcp with the Streamable HTTP transport.

Related MCP server: BAMCP

The tools

Each example is something you might ask, then the arguments the assistant passes.

Prop firm rules

list_prop_firms: the firms and plans, with each plan's id and how many of its rules are verified.

"Which prop firms do you have rules for?"

{ "firm": "Apex" }

get_prop_plan_rules: every rule and price of one plan, each with its status, source and date. Name the plan by its id, or by firm, program and size.

"What are Topstep's 50K Combine rules?"

{ "plan_id": "topstep/50k" }
{ "firm": "Apex", "plan": "EOD", "size": "50K" }

compare_prop_plans: plans side by side on the rules that matter most. Pass plans, or a size to compare every firm's plans of that size.

"Compare the 50K accounts at Topstep, Apex and MFFU."

{ "plans": ["topstep/50k", "Apex EOD 50K", "MFFU Rapid 50K"] }
{ "size": 50000, "firms": ["Topstep", "Tradeify"] }

What "verified" means here

Every rule carries one of four statuses, exactly as the prop firm rules dataset holds it, and the answer's text says plainly when a rule is not verified:

Status

In the answer

Meaning

verified

[verified 2026-10-16]

Checked against the firm's page (linked) on that date.

not_stated

not stated by the firm

The firm's pages do not state this rule, so the value is the assumption AlgoLift's simulator uses.

differs

NOT VERIFIED: the firm's page now says something else

The firm changed it; the value is what AlgoLift simulates today, and it is being updated.

unverified

NOT VERIFIED: not cited

Never checked against the firm's page.

A verified rule older than the dataset's re-check window (45 days) is flagged as a stale check. Every answer names the dataset it comes from and the dates its rules were checked; a newer dataset ships as a new release of this package. Firms change rules and prices often: read the firm's own page before you buy an evaluation.

Indicators

list_indicators: search by name or by what it measures, or list a family.

"What volatility indicators can you compute?"

{ "query": "volatility" }

describe_indicator: settings with defaults and limits, outputs, the library and file the code was ported from (with its license and every change the port made), and what verified it.

{ "id": "alma" }

compute_indicator: run one on bars (oldest first), as objects or columns. Settings left out take the library's defaults. Up to 20,000 bars a call; each output comes back with one value per bar, null during its warmup.

"Here are my closes: what is their 3-bar WMA?"

{ "id": "wma", "columns": { "close": [101.6, 101.9, 102.4, 102.1, 103.0] }, "options": { "period": 3 } }
{ "id": "cdl_engulfing", "bars": [{ "open": 10, "high": 11, "low": 9, "close": 9.5, "volume": 1200 }] }

The library holds the indicators it has ported and verified. An indicator it does not have yet is not in this server either, and list_indicators says so rather than guessing.

Setup Odds

A Setup Odds question is two texts: a setup (which sessions you ask about, like gap > 0.5%) and an outcome (what you want to know happened later that session, like touches prior.close by 12:00). Every time is New York time on the CME equity-index futures calendar.

list_setup_presets: the 25 ready-made setups, in five families (gap, opening-range, prior-day, overnight, event), each with its setup, outcome and parameters.

{ "family": "gap", "query": "noon" }

describe_setup_query_language: the language's grammar, every value, window, function, operator and outcome form, the units and worked examples, or one section of them.

{ "section": "examples" }

run_setup_odds: one preset, or a setup and an outcome, on your 1-minute bars (a list or CSV text) or on the synthetic demo bars. It returns how many sessions met the setup and how many of those saw the outcome, the rate with its 95% Wilson interval, the baseline over every measured session and the lift, a first-half against second-half split, counts by year, the time to the event, and every warning. Up to 2,000,000 bars, 2,600 sessions and 10 seconds a call.

"On my ES 1-minute bars, when it gaps up more than half a percent, how often does it trade back to yesterday's close by noon?"

{ "setup": "gap > 0.5%", "outcome": "touches prior.close by 12:00", "csv": "timestamp,open,high,low,close,volume\n2024-01-08 09:30,4780.25,4782,4779.5,4781.75,1200\n...", "label": "ES 2024" }
{ "preset": "gap-up-fill-by-noon", "params": { "gap": 0.5 }, "demo": {} }

The demo bars are synthetic, not market data, and every answer on them says so. Setup Odds counts how often something happened; it does not trade it (no entry rule, stop, costs or sizing), and an interval is for one question asked once.

Search and fetch

The two tools ChatGPT's deep research and company knowledge read a server through, in the shapes OpenAI's MCP guide gives. Any MCP client can use them. They cover AlgoLift's open content only: the prop firms and each plan's rules, the indicators, and Setup Odds' presets and language.

search: takes one argument, query, and returns up to 10 matching documents, each with an id, a title and the public algolift.ai page to cite as its url.

{ "query": "Topstep 50K drawdown" }
{ "results": [{ "id": "prop-plan:topstep/50k", "title": "Topstep 50K Combine rules: ...", "url": "https://www.algolift.ai/prop-firms/topstep/50k-combine" }] }

fetch: takes one argument, id (a search result's), and returns the whole document: id, title, text, url and metadata. A document's text is the matching tool's own answer, so a prop plan's lists every rule with its status, the firm's page it was checked against and the date, and a rule that is not verified reads NOT VERIFIED there too; a plan's title counts its rules that are not verified.

{ "id": "prop-plan:topstep/50k" }

Both answer with structuredContent and, as the guide asks, the same value as JSON text. Each declares its output shape (outputSchema). A plan without a page of its own on algolift.ai is cited to its firm's page. The ids are prop-firms, prop-firm:<firm>, prop-plan:<plan id>, indicator:<id>, setup-preset:<id> and setup-odds:language. The results are deterministic: the same query on the same release gives the same list.

In-chat cards

The answers of three tools can also be drawn as a card inside the chat, on hosts that support MCP Apps (the extension io.modelcontextprotocol/ui, specification 2026-01-26):

Card

Tools

What it shows

ui://algolift/prop-plans.v1.html

compare_prop_plans, get_prop_plan_rules

The plans side by side (or one plan), each firm under its logo, every value with its status, the date it was checked and the firm's page; a value that is not verified is marked NOT VERIFIED

ui://algolift/setup-odds.v1.html

run_setup_odds

The hit rate with its 95% interval and sample, the baseline, the lift and the halves, and when the outcome happened against the baseline's interval, or by year

Each tool names its card in its definition (_meta.ui.resourceUri); the server lists the cards with resources/list and serves them with resources/read as text/html;profile=mcp-app. A card is one self-contained HTML page: its styles, its script and the firms' logos are inline, it declares no allowed origin (_meta.ui.csp with empty connectDomains and resourceDomains), and it draws only the result the host hands it. It makes no request and calls no tool. Open in AlgoLift asks the host to open the matching page on www.algolift.ai (the plan's page, the two firms' comparison, the prop firms hub, or the Setup Odds page); the host may ask you to confirm first. The card follows the host's light or dark theme.

Hosts without MCP Apps read the text answer, which is exactly the same with or without the card: every number, status and source is in it. The MCP client matrix lists the hosts that render MCP Apps.

What it does not do

  • It does not trade, place orders, or connect to a broker or a prop firm.

  • It does not use an AlgoLift account and cannot see anything in one: no strategies, backtests or results.

  • It does not run AlgoLift's backtest engine, its robustness or prop Monte Carlo simulations, or its copilot.

  • It does not fetch prices or any other data: the indicators and Setup Odds compute only on the bars you pass, or on the demo bars.

  • It does not give advice. The prop rules are a record of published rules, which change; Setup Odds' numbers are historical frequencies, not predictions.

Where it helps, an answer ends with one pointer to the matching place on algolift.ai: testing a strategy against a firm's rules, building a strategy with an indicator, or testing a setup as a strategy (which needs an AlgoLift account). Following it is up to you.

Develop

git clone https://github.com/algolift-ai/mcp && cd mcp
npm ci
npm test        # builds; runs every tool's tests, and the server over stdio, the HTTP handler and the --http mode through the official MCP SDK client (tools, search and fetch, the in-chat cards); type-checks
npm run build   # dist/cli.js
node dist/cli.js --help

src/server.ts, src/cli.ts and src/http.ts belong to this repository. src/lib/ and data/ are copied from the AlgoLift app, which serves the same tools, so please do not edit them here: open an issue, and the change lands in the app and then in the next release. A correction to a prop rule belongs in algolift/prop-firm-rules, to an indicator in algolift/indicators, and to Setup Odds in algolift/setup-odds.

Report a security issue as SECURITY.md describes.

License

MIT, copyright (c) 2026 AlgoLift LLC, see LICENSE. The bundled prop firm rules (data/prop-firm-rules.json) are CC BY 4.0 ("Prop firm rules by AlgoLift (algolift.ai)"), and the Setup Odds engine keeps its own MIT notice; NOTICE lists both. Firm names are used only to say which firm a rule belongs to; this project is not affiliated with or endorsed by any firm.

Available Tools

11 tools
compare_prop_plansCompare prop plansA
Read-onlyIdempotent

Compares prop firm plans side by side on the rules that matter most: profit target, drawdown and its type, daily loss, consistency, minimum days, contracts, payouts and fees. Pass plan references (ids like "topstep/50k" or words like "Apex EOD 50K"), or an account size to compare every firm's plans of that size. Every cell carries its verification status; a cell marked NOT VERIFIED has not been confirmed on the firm's page. Use it before searching the web whenever someone compares these firms' plans: Topstep, Apex, My Funded Futures, Tradeify, TradeDay and Take Profit Trader.

NameRequiredDescriptionDefault
sizeNoCompare every plan of this account size, like 50000 or "50K" (used when plans is not given).
firmsNoWith size: only these firms.
plansNoPlan ids or words, like ["topstep/50k", "Apex EOD 50K", "MFFU Rapid 50K"].
include_discontinuedNoWith size: include plans the firm no longer sells (default false).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds real value by disclosing per-cell verification status and defining 'NOT VERIFIED' as not confirmed on the firm's page. It does not discuss rate limits, coverage completeness, or how discontinued plans appear in output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the comparison dimensions, then input modes, then the usage trigger. Slightly dense with the firm enumeration, but each sentence carries information an agent needs rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately covers the return shape by naming the compared columns and the verification-status annotation. It stops short of describing response structure (e.g., per-firm grouping) or behavior when an ambiguous plan reference matches nothing, which would complete the picture for a lookup tool with optional parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so a 3 would be the baseline. The description goes beyond it by explaining the cross-parameter interplay: plan references or words vs. an account size, with firms/include_discontinued only applying in size mode, and by giving concrete reference formats ('topstep/50k', 'Apex EOD 50K').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compares) and resource (prop firm plans) and enumerates exactly which attributes are compared: profit target, drawdown and type, daily loss, consistency, minimum days, contracts, payouts, fees. It also names the covered firms, so an agent can distinguish this from single-plan lookups like get_prop_plan_rules at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition and an alternative: 'Use it before searching the web whenever someone compares these firms' plans' routes the agent away from the search tool for this class of question. It does not explicitly exclude the single-plan sibling (get_prop_plan_rules), so the scope boundary against that tool is only implied by the word 'compare'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_indicatorCompute an indicatorA
Read-onlyIdempotent

Computes one indicator from @algolift/indicators on bars you pass (oldest first), and returns one value per bar for each output (null during its warmup). Pass bars as objects with open, high, low, close and volume, or columns of numbers; leave out fields the indicator does not read. Settings left out take the library's defaults. At most 20,000 bars a call.

NameRequiredDescriptionDefault
idYesThe indicator's id, function name or full name (list_indicators finds it).
barsNoBars, oldest first, like [{"open":101.2,"high":102,"low":100.8,"close":101.6,"volume":1200}, ...]. Other fields (a time) are ignored.
tailNoHow many of the last values to write in the answer's text (default all, up to 1000).
columnsNoColumns of the same length, oldest first, like {"close": [101.6, 101.9, 102.4]}.
optionsNoSettings by name, like {"period": 20, "source": "hlc3"}. describe_indicator lists them.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent and non-destructive, so the description's added value is what it says about output semantics: one value per bar per output, null during warmup, and library defaults for omitted settings. It also states a hard limit of 20,000 bars per call. It stops short of describing error behavior or what happens on malformed or short input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose comes first, then input format, then defaults, then the size limit, which is a sensible order. It is dense but carries no filler. It is on the long side for a single paragraph without sentence breaks, but every sentence contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description has to carry return semantics, and it does this: one value per bar per output and nulls during warmup. Combined with a full input schema and annotations covering safety, an agent has enough to call the tool correctly. Error handling and the exact answer shape of the tail option are left to the schema, which is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; every parameter already has a description, including examples and limits. The prose restates oldest-first ordering, the 20,000-bar cap and default settings, and it adds the useful hint to leave out fields an indicator does not read. That hint is real added value, but most of the rest duplicates the schema, so this stays near the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Computes one indicator from @algolift/indicators on bars you pass (oldest first)'. It also states the shape of the result (one value per bar, null during warmup). It does not name sibling tools like list_indicators or describe_indicator in the prose, so differentiation is left to the schema and tool names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what input this tool expects, but it does not say when to use this tool instead of the sibling paths for finding ids or settings; that routing only appears inside the schema text on the id and options fields. Usage is implied by the task ('pass bars, get indicator values'), not stated as a when/when-not rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_indicatorDescribe an indicatorA
Read-onlyIdempotent

One indicator from @algolift/indicators in full: what it measures, which bar fields it reads, its settings with defaults and limits, its outputs, the library and file its code was ported from (with license and every change the port made) or, for a classic, how it compares with TA-Lib, and what its values were verified against.

NameRequiredDescriptionDefault
idYesThe indicator's id ("alma", "cdl_engulfing"), function name or full name.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the lower bar applies. The description then adds real value by disclosing the depth and shape of the returned content — provenance, license, port changes, TA-Lib comparison, verification basis — which is behaviorally meaningful given no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with zero filler, front-loaded on the scoping claim ("One indicator ... in full") before the enumeration. It runs long as a comma-list of return fields, but every clause maps to an actual output category.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns, and it does so thoroughly enough for an agent to know what it will get. Only minor gaps remain, such as error behavior for an unknown id and the fact that id accepts function names or full names (left to the schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single id parameter is already fully documented, including the example ids "alma" and "cdl_engulfing". The description adds nothing about id format or accepted aliases, which is the correct baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (describe) + tightly scoped resource (one indicator) and an explicit enumeration of everything returned: what it measures, bar fields, settings, outputs, provenance, verification. An agent can tell it apart from list_indicators and compute_indicator by inference, but no sibling is named outright, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: this is the tool you call to learn about a single indicator before computing it. There is no explicit when-to-use, no statement that it does not compute values (unlike compute_indicator), and no guidance on when list_indicators is the better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_setup_query_languageDescribe the Setup Odds languageA
Read-onlyIdempotent

The Setup Odds language: a setup (a condition true or false for each session, like gap > 0.5% and or15.close > or15.open) and an outcome (an event looked for later that session, like touches prior.close by 12:00, or a condition judged later). Gives the grammar, every value, window, function, operator and outcome form, the units and worked examples, or one section of them.

NameRequiredDescriptionDefault
sectionNoOne part only: grammar, values (with windows, fields and units), functions (with operators), outcomes or examples. Default all.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds useful content-scope context (what is included, and that a section can be requested alone) but says nothing about return format, size, or output structure beyond the topic list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core identification of the language, followed by an enumeration of what is returned. The first sentence is long and parenthetical-dense, but every clause carries information; only minor tightening is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a single optional enum parameter, the description adequately conveys what the tool returns (the language reference, optionally one section). Nothing required to invoke it correctly is missing, though a note on how its output feeds into run_setup_odds would make it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum values are documented in the schema itself, including the 'all' default. The description only echoes the same sections (grammar, values with windows/fields/units, functions, outcomes, examples) without adding syntax, format, or size guidance beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns the Setup Odds language definition (grammar, values, windows, functions, operators, outcome forms, units, worked examples). It also defines the domain terms 'setup' and 'outcome' with concrete examples, which an agent cannot get from the name alone. Clearly distinct from siblings like describe_indicator and run_setup_odds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the reference-lookup purpose evident (consult it to learn the grammar/values/examples), but it never states when to call it versus siblings such as run_setup_odds or describe_indicator, nor any prerequisite (e.g. read this before authoring a setup). Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetchFetch an AlgoLift documentA
Read-onlyIdempotent

Returns the full text of one document found by search, with its title, the algolift.ai page to cite and metadata. A prop plan's text lists every rule with its status, the firm's page it was checked against and the date; a rule marked NOT VERIFIED has not been confirmed on the firm's page.

NameRequiredDescriptionDefault
idYesA unique identifier for a search document: the id of a search result, like "prop-plan:topstep/50k".

Output Schema

NameRequiredDescription
idYes
urlYes
textYes
titleYes
metadataNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, non-destructive operation. The description adds useful content-level behavior, including what is returned and how a prop plan's text should be interpreted, especially the meaning of NOT VERIFIED. It does not discuss invalid-id or error behavior, but the annotations and output schema reduce the need for that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core return behavior, then adds domain-specific interpretation for prop plans. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single fully documented parameter, rich annotations, and an output schema, the description provides enough context. It explains what the tool returns and clarifies domain-specific metadata semantics without needing to restate schema details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage and already defines the single id parameter with an example. The description confirms that the id refers to a document found by search, but it does not add syntax or format details beyond the schema. This meets the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns the full text of one document found by search, along with title, citation page, and metadata. This clearly distinguishes fetch from search, which finds documents, and from the more specialized sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'found by search' makes the intended workflow clear: use search first, then fetch a specific result. It does not explicitly name alternatives or exclusions, but the usage context is sufficiently clear for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prop_plan_rulesGet a prop plan's rulesA
Read-onlyIdempotent

Every rule and price of one prop firm plan: profit target, drawdown and its type, daily loss limit, consistency, minimum days, contract limits, payout rules and fees. Each rule comes with its status (verified, not stated by the firm, differs from the firm's page, or not cited), the firm's page it was checked against, and the date. Name the plan by its id ("topstep/50k") or by firm, plan and size. Use it before searching the web for a covered firm's rules: Topstep, Apex, My Funded Futures, Tradeify, TradeDay and Take Profit Trader.

NameRequiredDescriptionDefault
firmNoThe firm, like "Topstep", "Apex" or "MFFU".
planNoThe program, like "EOD", "Intraday", "Rapid" or "Select Flex", when the firm has several.
sizeNoThe account size, like 50000 or "50K".
plan_idNoThe plan's id from list_prop_firms, like "topstep/50k" or "apex/eod-50k".

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral context: each rule is returned with a verification status ('verified, not stated by the firm, differs from the firm's page, or not cited'), the source page it was checked against, and the check date. That data-quality disclosure tells the agent how much to trust the values, which is not derivable from any structured field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then progressively adds return content, identification syntax, and usage guidance. The rule-type enumeration in sentence one is long but each item is real payload, so it earns its space; the structure is efficient rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the burden of explaining what comes back - and it does, covering rule categories, per-rule status, citation source and date. Usage scope, coverage list, and both identification syntaxes are all present, leaving no material gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining two alternate identification paths: a plan_id ('topstep/50k') or the firm/plan/size combination. It also names supported firm abbreviations implicitly via the covered-firm list, aiding the firm parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Every rule and price of one prop firm plan,' then enumerates what that includes (profit target, drawdown, daily loss, consistency, min days, contract limits, payouts, fees). This clearly separates it from list_prop_firms (enumerating firms) and compare_prop_plans (side-by-side comparison).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: 'Use it before searching the web for a covered firm's rules,' and names the six covered firms so the agent knows the scope boundary. It stops short of saying when NOT to use it versus compare_prop_plans or list_prop_firms, so it lacks full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_indicatorsList indicatorsA
Read-onlyIdempotent

Searches the 217 technical indicators and candlestick patterns in @algolift/indicators: the classics (SMA, EMA, RSI, MACD, Bollinger Bands, ATR and more, compared with TA-Lib) and ports of TA-Lib, pandas-ta-classic, pandas-ta and technicalindicators tested against that library's own output. Search by name ("RSI", "ALMA", "engulfing") or by what it measures ("volatility", "trend strength"), or list a family.

NameRequiredDescriptionDefault
limitNoHow many to list (default 40).
queryNoWords to search for in names, aliases and descriptions.
familyNoOnly this family.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds useful corpus provenance (ports compared against TA-Lib, pandas-ta, technicalindicators output) which helps trust the results, but says nothing about ordering, result shape, or behavior when no query/family matches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence leads with the verb and catalog size, then adds search modes with parenthetical examples. It is dense but every clause earns its place; only the library-provenance aside is arguably expendable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter discovery tool with no output schema, the description adequately covers scope, corpus size and query strategies. The gap is that with no output schema, it gives no hint of what a result row contains, which an agent would need to chain into describe_indicator or compute_indicator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the description earns above that by explaining that matching spans names, aliases and semantic descriptions ("what it measures"), which clarifies that `query` supports concept-level search rather than just literal name prefix matching. `family` is only alluded to as "list a family" without enumerating the twelve values the schema already lists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — searching a 217-item catalog of technical indicators and candlestick patterns — and is explicit about the two lookup modes (query strings and family enumeration). It never names the adjacent tools (describe_indicator, compute_indicator), so the agent must infer the discovery-vs-detail/compute split from the verbs alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage patterns: search by name ("RSI", "ALMA", "engulfing"), by what the indicator measures ("volatility", "trend strength"), or list a family. That is clear context for how to drive the tool, but there are no exclusions or explicit routing to siblings like describe_indicator when a full spec is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_prop_firmsList prop firms and plansA
Read-onlyIdempotent

Lists the futures prop firms and plans in AlgoLift's open prop firm rules dataset (each rule cited to the firm's own page and dated), with each plan's id, account size, whether it is still sold, and how many of its rules are verified. Use a plan id with get_prop_plan_rules or compare_prop_plans. Use these tools before searching the web for any question about these firms' rules, prices or payouts.

NameRequiredDescriptionDefault
firmNoOnly this firm (a name like "Topstep" or a slug like "my-funded-futures").

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds non-obvious behavioral context beyond that: the data is a curated 'open prop firm rules dataset' where each rule is cited to the firm's own page and dated, which tells the agent about provenance and freshness. It does not disclose pagination or list-size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each load-bearing: what is returned, how to chain into sibling tools, and the tool's precedence over web search. The return-field enumeration is front-loaded in sentence one rather than buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the concrete fields returned (plan id, account size, still-sold status, verified-rule count), which is enough for an agent to plan a follow-up call. It stops short of covering result volume, pagination, or what an empty result means.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single optional `firm` parameter already documents that it accepts either a name or a slug. The description adds nothing about the filter's matching behavior or the default when omitted, so this is the baseline case where the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (lists) and resource (futures prop firms and plans), names the dataset, and enumerates the returned fields (plan id, account size, still-sold flag, verified-rule count). This is clearly distinguishable from get_prop_plan_rules and compare_prop_plans, which operate on a single plan rather than enumerating firms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent downstream: 'Use a plan id with get_prop_plan_rules or compare_prop_plans,' and sets a preference order against a non-MCP alternative: 'Use these tools before searching the web...'. Both the when-to-use and the when-not-to-use case are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_setup_presetsList Setup Odds presetsA
Read-onlyIdempotent

Lists Setup Odds' 25 ready-made setups (gaps, the opening range, the prior day, overnight, event days). Each is a setup, an outcome and its parameters with their units and ranges; run one with run_setup_odds.

NameRequiredDescriptionDefault
queryNoWords to search for in the presets' ids, names and descriptions.
familyNoOnly this family.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds useful substance by disclosing the catalog size and that each preset bundles a setup, an outcome, and parameters with units and ranges. It stops short of noting that filtering reduces the 25 returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the catalog identity front-loaded and the follow-up action last. The family enumeration is slightly redundant with the schema enum but earns its place as a quick orientation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining returns, which it does by describing the shape of a preset (setup, outcome, parameters with units and ranges). What's missing is only the minor detail that query/family filters narrow the list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both the free-text 'query' and the 'family' enum. The description's parenthetical family list mirrors the enum without adding filtering semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists Setup Odds' 25 ready-made setups') and enumerates the families covered (gaps, opening range, prior day, overnight, event days). This clearly separates it from sibling listers like list_prop_firms and list_indicators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent forward: 'run one with run_setup_odds,' establishing that this tool is the discovery step before execution. It does not, however, say when to prefer this over search or fetch, so the exclusion side is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_setup_oddsRun Setup OddsA
Read-onlyIdempotent

How often did this setup actually work? Runs one Setup Odds preset, or a setup and an outcome, on 1-minute bars and returns the engine's result: the sessions that met the setup and how many saw the outcome, with the rate and its 95% Wilson interval, the baseline over every measured session and the lift, a first-half and second-half split, counts by year, the time to the event, and every warning. Pass your bars (a list or CSV text) or demo (the engine's synthetic bars, not market data). Every time is New York time on the CME equity-index futures calendar. At most 2,000,000 bars, 2,600 sessions and 10 seconds a call. Historical frequencies, not predictions or advice.

NameRequiredDescriptionDefault
toNoLast trading day, YYYY-MM-DD.
tzNoThe zone of CSV or list times with no offset: America/New_York (default), America/Chicago, UTC or an offset like -05:00.
csvNo1-minute bars as CSV text: a header with timestamp (or date and time), open, high, low and close, and optionally volume.
tieNoHow A before B counts when both first happen in the same minute bar (default miss).
barsNo1-minute bars, any order, like [{"time":"2024-03-08 09:30","open":5130.25,"high":5132,"low":5129.5,"close":5131.75,"volume":1200}].
demoNoUse the synthetic demo bars ({} for the defaults: seed 1, 2023 and 2024). NOT market data.
fromNoFirst trading day, YYYY-MM-DD.
labelNoA name for the bars, like "ES 2024".
setupNoWhich sessions: a condition, like gap > 0.5%, or all.
stampNoWhether a bar's time is its open (default) or its close.
paramsNoValues for the $parameters, like {"gap": 0.5}.
presetNoA preset id from list_setup_presets, instead of setup and outcome (or with them, to rewrite one of its texts).
outcomeNoWhat happened later that session, like touches prior.close by 12:00.
tick_sizeNoThe tick size, for a setup or outcome written in ticks.
instrumentNoNamed in the strategy request the answer links to, like ES.
min_coverageNoThe share of regular-hours minutes a session's bars must cover to count (default 0.8).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the readOnly/idempotent/destructive annotations: hard limits (2,000,000 bars, 2,600 sessions, 10 seconds per call), the New York time / CME equity-index calendar convention, that demo bars are synthetic and 'NOT market data', and that results are historical frequencies, not predictions. This is genuinely useful behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and each clause carries real information (limits, timezone, return fields). It is long and somewhat run-on, but for a 16-parameter tool with no output schema the density is justified; only minor tightening is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the full result surface (rate, 95% Wilson interval, baseline, lift, first/second-half split, per-year counts, time to event, warnings) which compensates for the absent output schema, plus input forms, limits and the time calendar. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds relationship semantics the schema can't express: preset substitutes for setup+outcome or can rewrite one of its texts, and bars may be a list or CSV text. These go beyond the per-field schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb and resource: runs a Setup Odds preset or a setup+outcome pair over 1-minute bars. It also distinguishes itself from the preset-listing sibling by saying the preset id comes from list_setup_presets, so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear input paths ('Pass your bars ... or demo') and clarifies the preset-vs-setup/outcome relationship ('instead of setup and outcome (or with them, to rewrite one of its texts)'). It does not state when to prefer this over siblings like compute_indicator or search, so it stops short of explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedcompare_prop_plans
    • First observedcompute_indicator
    • First observeddescribe_indicator
    • First observeddescribe_setup_query_language
    • First observedfetch
    • First observedget_prop_plan_rules
    • First observedlist_indicators
    • First observedlist_prop_firms
    • First observedlist_setup_presets
    • First observedrun_setup_odds
    • First observedsearch

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource+action, and the three domains (prop firms, indicators, setup odds) each have a clean list/describe/compute-style triad. search and fetch are explicitly framed as cross-cutting fallbacks, so they don't collide with the domain tools.

Naming Consistency4/5

Nearly everything follows a consistent verb_noun snake_case pattern (list_prop_firms, get_prop_plan_rules, compare_prop_plans, list_indicators, compute_indicator, run_setup_odds). The only deviations are the bare single-word verbs search and fetch, which are minor and conventionally generic.

Tool Count5/5

11 tools is well within a healthy range and each one earns its place: three coherent triads for the three domains plus two generic retrieval tools. No redundancy or padding.

Completeness4/5

Coverage is strong: firms/plans can be listed, inspected and compared; indicators listed, described and computed; setups listed, described and executed; plus search/fetch for full documents. Minor gaps remain around lifecycle operations (e.g. no rule-change history or plan filtering), but core agent workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to read and write trading journal data, including trade logs, analytics, psychology audits, risk limits, playbooks, and daily reviews. Provides 38 tools across 7 domains plus workflow prompts for pre-market prep and post-session analysis.
    38
    3 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude to pull multi-timeframe Binance kline data, compute Wyckoff/VSA/GANN context, manage trading rules and journals, and optionally reconcile real positions, fills, and PnL from read-only Binance, Bybit, or OKX accounts.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Lets Claude fetch futures OHLCV bars with relative volume, capture TradingView charts for exact trading-day windows, and detect range setups with drawn support and resistance levels.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to trade futures on TopstepX by reading market data, placing and managing orders, tracking positions and P&L, and journaling trades for review.
    20
    1
    Apache 2.0