Stochastly MCP
With the Stochastly desktop app installed, running, and licensed, this MCP server lets an MCP client inspect Stochastly’s catalogs, build/run strategy graph backtests, run robustness and adversarial checks, combine portfolios, export research artifacts, and monitor/control the app; without the app it only lists the 29-tool manifest and returns structured licensing/access refusals.
Discover metadata: node catalog, data sources, strategy families, instrument groups, timeframes, crypto strategies, diagnostic codes, research-paper sections, reality-check profiles, app/licence info, live app state, and logs.
Build and validate strategies: validate graph plans with
compose_graph, get valid node keys fromnode_catalog, count configurations, and obtain a runnable spec before backtesting.Run backtests: execute cost-aware strategy graphs with
backtest_graph, use leakage-free splits and overfitting gates, run in background, and poll results withbacktest_status.Evaluate robustness: use
red_flag_checkfor GREEN/AMBER/RED overfitting verdicts,adversarial_checkfor refutation controls, and diagnostic tools to explain violation codes.Work with portfolios and dependence: combine finished runs into a portfolio with weights, correlations, contributions, and deflated Sharpe via
portfolio_combine(Portfolio licence required), or measure dependence between two supplied curves withanalyze_dependence.Export research outputs: produce full research-paper PDFs (
export_paper), batch PDFs (export_atlas), or one-page tearsheets (export_tearsheet).Monitor and control the app: use
pilot_appto open.stlydocuments, switch screens, show charts, start backtests, display notes, or prompt the in-app assistant; readresearch_status,live_state, and app logs;set_live_statesupports a legacy chart terminal.Inspect batch scanner runs: list and read V9/V95 scanner runs, tails logs, and summarize saved regression results.
Run development smoke tests:
run_smoke_testsstarts Playwright UI tests only in a source checkout with the test harness installed.Licensing/refusal behavior: most tools need Atelier or Portfolio;
portfolio_combineneeds Portfolio. Without the app, tools are only listed and calls returnok: falsewith the required edition and access link; unknown tool names returnUnknown tool.
Click on "Deploy 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., "@Stochastly MCPcompose a mean-reversion strategy graph and backtest it on SPY"
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.
Stochastly MCP
This small public launcher connects an MCP client to the server shipped with the Stochastly desktop app. The app must be installed, running, and licensed for Atelier or Portfolio. The package contains no Stochastly engine code.
Install with pip install stochastly-mcp or run with uvx stochastly-mcp. To run this source instead of the PyPI release, install this directory with pip install ..
Configure a local stdio server with command stochastly-mcp and no arguments:
Claude Desktop: add
"stochastly": {"command": "stochastly-mcp"}undermcpServersinclaude_desktop_config.json.Cursor: add the same entry under
mcpServersin.cursor/mcp.json.VS Code: add
"stochastly": {"type": "stdio", "command": "stochastly-mcp"}underserversin.vscode/mcp.json.
The server exposes 29 tools, among them node_catalog, compose_graph, backtest_graph, red_flag_check, adversarial_check, portfolio_combine and export_paper. The installed app runs them and checks the licence on every call: portfolio_combine needs Portfolio, every other tool Atelier or Portfolio.
Without the app, the launcher lists the same 29 tools (names, descriptions, input schemas and annotations from stochastly_mcp_data/tools_manifest.json, generated from the app's server), so a client can see what the server offers. Each description then starts with a note that the desktop app is required, and every call to a listed tool returns a structured answer with ok: false, the edition needed and a link to request access. A name the server does not list returns the error Unknown tool, as the app's server does. The manifest is metadata only.
For a nonstandard installation, set STOCHASTLY_MCP_SCRIPT to the installed app's stochastly_mcp.py. This is a local path, not a network endpoint.
Links
MCP server overview: what the server does and which clients it supports.
MCP server reference: the 29 tools, their inputs and which ones write.
Documentation: the Stochastly desktop app, from data import to research papers.
Comparison with other backtesting tools: how Stochastly differs from other backtesting software.
Request access: early access to the desktop app.
Available Tools
29 toolsadversarial_checkARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Run six controls that try to refute a finished run (drift against its own block-bootstrap null, an edge-free twin of the prop-firm cycle, Romano-Wolf multiplicity, concentration on the best days, frictions, stability across sub-periods) plus a positive control that checks a known edge would be detected on the same data.
Call it after any promising result. synthesis is SURVIVES, REFUTED, UNDERPOWERED (effect
smaller than the sample can resolve; observations_needed says how many bars it would take)
or BLIND (the positive control failed, so the sample, not the strategy, must change). Each
passed control reports its floor, the smallest effect it could have rejected. Deterministic
arithmetic, no language model; measured error rates in the test suite: 0.017 false
positives, 0.000 false negatives. Needs the run's full PnL series with at least 8 points; an
unknown run is a named error. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed; the same seed gives the same answer. | |
| n_boot | No | Number of bootstrap resamples. | |
| n_sims | No | Number of simulations for the randomised controls. | |
| run_id | Yes | Id of a finished run, from backtest_graph or backtest_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: determinism ('no language model', same seed same answer), measured error rates (0.017 FP / 0.000 FN), the four possible synthesis verdicts, the meaning of `floor` and `observations_needed`, minimum input size, and licence/desktop-app requirements. The readOnly/idempotent/non-destructive annotations are consistent with this and the description extends rather than repeats them.
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?
Front-loads the blocking constraint (desktop app not installed) before explaining the tool, which is the right priority for an agent that may not be able to call it. Dense but nearly every sentence carries information; minor redundancy in restating the licence requirement at both the opening and the close keeps it from a 5.
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?
There is no output schema, so the description carries the return-value burden and does so: it defines all four synthesis outcomes and the per-control `floor` field. Combined with prerequisites, input minimums and determinism guarantees, nothing an agent needs to invoke and interpret this tool is missing.
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 100%, so the schema already documents seed, n_boot, n_sims and run_id, including the same-seed-same-answer property. The description only adds the run_id provenance and the sample-size precondition, which is marginal over what the schema already establishes; baseline 3 applies.
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?
Names a concrete verb and resource ('run six controls that try to refute a finished run') and enumerates the six controls plus the positive control, so the agent knows exactly what work is performed. The subject matter is specific enough that it is unmistakable against siblings like red_flag_check or diagnostic_explain even without an explicit contrast sentence.
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?
Gives explicit timing ('Call it after any promising result') and prerequisites (needs the run's full PnL series with at least 8 points, an unknown run is a named error, Stochastly open with an Atelier or Portfolio licence). It stops short of naming a when-not condition or pointing to an alternative sibling test, so it is clear context but not full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_dependenceARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Measure the dependence between two equity curves you supply, by fitting one copula or the mutual information to their paired increments (only timestamps present in both curves count).
Use it to ask whether two strategies or markets move together before combining them; to actually build and judge a combined book from finished runs, use portfolio_combine instead. Descriptive only: it reports the fit, it does not run a hypothesis test or take a decision. Malformed curves are refused with a named error (wrong count, missing unit, unordered dates, non-finite values). Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Dependence model: a gaussian, student, clayton or gumbel copula fit, or mutual_information on the ranks. | |
| instruments | Yes | Exactly two curves. Each is an object with `equity` (list of finite numbers, at least 2), an optional `symbol`, `timestamps` or `dates` (ISO dates, same length, unique, increasing) and `pnl_unit` set to "R" or "return". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds substantially beyond them: the runtime prerequisite (desktop app installed, licence of a specific tier), the timestamp-intersection semantics of the join, and the named-error refusal for malformed curves. That is exactly the kind of operational context structured fields cannot carry.
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?
Front-loaded with the blocking precondition (app not installed, how to fix), then purpose, then routing, then edge behavior. Dense but each sentence carries information; the install/activation sentence and URL are slightly verbose for a precondition note.
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 two-parameter, read-only tool this covers prerequisites, routing, input constraints and failure modes well. The one soft spot is that with no output schema the description only says it 'reports the fit' without indicating what that report contains.
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 100%, so baseline is 3. The description adds meaning beyond the schema by stating the curves are compared on paired increments and that only timestamps present in both curves count, which clarifies the effective input domain rather than restating field names.
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?
States a specific verb and resource: measure dependence between two supplied equity curves by fitting a copula or mutual information on paired increments. It also names the sibling it is not (portfolio_combine), so an agent can discriminate without opening either schema.
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?
Explicitly gives the when ('ask whether two strategies or markets move together before combining them'), the when-not ('to actually build and judge a combined book, use portfolio_combine instead'), and a scope exclusion ('descriptive only, no hypothesis test or decision').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
app_infoARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Report the installed Stochastly app: version, build_edition, platform, python, cpu_count,
hw_factor, license_status (key masked), build (git commit, dirty flag, engine fingerprint),
engine_integrity (whether the running engine matches that fingerprint) and _engine
(sidecar when it talks to the open app, in-process in a source checkout).
Call it first to check that the app is reachable and which plan is active; a refusal from any other tool names the plan it needs. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations it discloses heavy behavioral context: the tool runs inside a desktop app that may not be installed, requires install + licence activation, and needs the app open with a specific licence tier. It also distinguishes the `_engine` sidecar vs in-process execution mode.
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 critical precondition (app not installed) is front-loaded, which is correct prioritization. It is slightly redundant, restating the licence requirement both in the first paragraph ("activate a licence") and the last ("open with an Atelier or Portfolio licence").
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?
With no output schema, the description carries the full return-value burden and does so thoroughly. Preconditions, licence requirements, and the Routing rationale for calling it first are all present, leaving no gap an agent would need filled.
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 takes zero parameters, so the description cannot add parameter meaning; the baseline of 4 applies. The return-field enumeration compensates by describing the output contract instead.
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?
States a specific verb ("Report") and resource (the installed Stochastly app) and enumerates exactly what is returned (version, build_edition, platform, license_status, engine_integrity, `_engine`). It is unmistakably distinct from siblings like backtest_status or research_status.
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?
Explicitly says to "Call it first to check that the app is reachable and which plan is active," and explains the complement: a refusal from any other tool names the plan it needs. It also states the precondition (Stochastly open with an Atelier or Portfolio licence).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backtest_graphA
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Run a strategy graph end to end on your data: build the configurations, run a cost-aware
backtest with leakage-free splits, apply the overfitting gates and return the verdict, the
number of survivors and the run_id. Each finished run is added to the day's session registry,
and multiplicity reports how many runs and configurations this session has tried.
Check the plan with compose_graph first. Data comes from data_root or a registered
source; nothing is downloaded for you and an unknown source is refused. A plan with custom
Python is refused unless the user allowed custom code on this machine. Use background=true for
long runs, then backtest_status. Requires an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| tf | No | Bar timeframe, for example "1h". | 1h |
| cap | No | Maximum number of parameter configurations evaluated. | |
| plan | Yes | Strategy graph, same shape as in compose_graph; node keys come from node_catalog. | |
| source | No | Registered data source name from data_sources; "folder" reads data_root. An existing folder path given here is used as data_root. | folder |
| symbols | No | Symbols to trade; omit for the default universe, which the run names in its note. | |
| data_root | No | Folder holding your own price files. | |
| direction | No | Trade direction: "L" (long only), "S" (short only) or "LS" (both). | LS |
| timeout_s | No | Seconds to wait for the result (minimum 5); after that, poll backtest_status. | |
| background | No | True returns a run_id at once; poll backtest_status for the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, non-idempotent, closed-world call; the description goes much further by disclosing the session-registry side effect, the multiplicity counter, data-source refusal rules, custom-code gating, licensing, and timeout/polling behaviour. No contradiction with the annotations.
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?
Front-loaded with the hard install/licence gate, then a dense but well-ordered body covering what it does, side effects, data sources, and async pattern. Every sentence carries information, though the opening environment-specific install paragraph is bulky boilerplate relative to the core instruction.
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?
With 9 parameters, no output schema, and a nested plan object, the description supplies the missing context: named return values, session-registry effects, prerequisite sibling calls, async workflow, and failure conditions. An agent has everything needed to invoke this correctly.
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 100%, so baseline is 3, but the description adds real meaning: source='folder' sourcing rules, data_root vs registered source, and guidance to use background=true for long runs with timeout_s framed around backtest_status polling. Not a full parameter walkthrough, but above the schema-only baseline.
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?
States a specific verb and resource ('Run a strategy graph end to end on your data') and enumerates the concrete stages performed (build configurations, cost-aware backtest with leakage-free splits, overfitting gates). It also names the outputs (verdict, number of survivors, run_id), which distinguishes it clearly from compose_graph (plan validation) and backtest_status (polling).
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?
Explicit prerequisites and routing: 'Check the plan with compose_graph first', 'Use background=true for long runs, then backtest_status', and licence requirements (Atelier or Portfolio). It also states refusal conditions (unknown source, custom Python without permission), so the agent knows when the call will fail before making it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backtest_statusAIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Get the state of a graph run started by backtest_graph: while running, status, progress and message; once done, failed or cancelled, the same summary backtest_graph returns (verdict, survivors, multiplicity).
Use it after backtest_graph with background=true, or when a foreground run hit its timeout. A finished run is recorded once in the day's session registry. An unknown run_id is a named error. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | run_id returned by backtest_graph. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety hints (destructiveHint=false, idempotentHint=true), but the description adds real behavioral context beyond them: a desktop-app and licence prerequisite, that a finished run is recorded once in the day's session registry, and that an unknown run_id is a named error. The registry-writing note also plausibly explains the otherwise odd readOnlyHint=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 blocking prerequisite about installing the desktop app is front-loaded, which is useful for an agent, and the remaining sentences are tight and each carry information. Slightly more verbose than strictly necessary, but nothing is wasted.
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?
There is no output schema, and the description compensates by describing return values at each run state, the error behavior for unknown ids, licence requirements, and the registry side effect. Nothing an agent needs to call it correctly is missing.
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?
With a single required parameter and 100% schema coverage, the schema already documents run_id as 'returned by backtest_graph,' which the description merely echoes. Baseline 3 is appropriate since the schema does the heavy lifting and no new syntax or format detail is added.
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 precise verb and resource: 'Get the state of a graph run started by backtest_graph,' and enumerates what is returned at each stage (status/progress/message while running; verdict/survivors/multiplicity when done). It anchors the tool to its producer sibling, backtest_graph, so an agent can place it immediately.
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 explicit triggers: use after backtest_graph with background=true, or when a foreground run hit its timeout. There is no true alternative status tool among the siblings, so nothing needs naming. Clear context with no ambiguity, though no explicit when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_graphARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Check a strategy graph plan and turn it into a run specification, counting how many parameter configurations it would test. Nothing is executed and no data is read.
Use it to build and debug a plan before backtest_graph, which takes the same arguments.
Returns ok, configs, runnable, strategy, filters, gates and the full spec; an invalid plan
returns ok false with the exact field at fault. A plan carrying custom Python is reported in
custom_code_nodes with runnable_over_mcp, since backtest_graph refuses it unless the user
allowed custom code. Strategy and filter params are single-value locks; omit one to sweep its
catalogue values. Gates take a threshold, op "ge" or "le", and window "oos", "is", "oos2",
"sealed", "full" or "wfa". Cost nodes charge the run; lectures are informational. Needs
Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| tf | No | Bar timeframe, for example "1h". | 1h |
| plan | Yes | Strategy graph. Keys: strategy {key, params, code}, filters [{key, params, code, mode}], gates [{key, threshold, params, op, window}], lectures [{key, params}], execution {..}, data {is_pct, oos1_pct, purge_bars, embargo_bars, wfa_is_len, wfa_oos_len}, cost, cost_nodes [{name, params}], propfirm, propfirm_ev. Node keys are "family/name" from node_catalog. | |
| symbols | No | Symbols to trade; omit for the default universe. | |
| direction | No | Trade direction: "L" (long only), "S" (short only) or "LS" (both); long, short, both and similar spellings are accepted. | LS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial detail beyond the readOnly/idempotent/non-destructive annotations: 'Nothing is executed and no data is read,' invalid plans return ok false with the exact offending field, custom-Python plans are flagged via custom_code_nodes/runnable_over_mcp, and it discloses the required app state and license tier (Atelier or Portfolio). This is rich behavioral context.
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?
Content is front-loaded with the core purpose and the backtest_graph routing. The leading app-install paragraph is somewhat noisy and includes a pricing URL, but the remaining sentences are dense and each 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?
Given no output schema, the description documents the return shape (ok, configs, runnable, strategy, filters, gates, spec), failure behavior, and prerequisites. For a nested-object plan tool this covers everything an agent needs to invoke it correctly.
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?
With 100% schema coverage the baseline is 3, but the description adds real semantics beyond the schema: params act as single-value locks (omit one to sweep its catalogue values), gates require a threshold with op 'ge'/'le' and specific window values, and cost vs lecture nodes are distinguished. This meaningfully clarifies how to shape the plan.
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?
States a precise verb and resource: it validates/'checks a strategy graph plan and turns it into a run specification, counting how many parameter configurations it would test.' It also explicitly distinguishes itself from backtest_graph, so an agent can tell the two apart without opening the schema.
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?
Gives clear sequencing guidance: 'Use it to build and debug a plan before backtest_graph, which takes the same arguments,' and notes backtest_graph's custom-code restriction. It lacks an explicit when-not-to-use condition, but the routing context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crypto_registryARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
List the cross-sectional crypto strategies (momentum and mean reversion) with their
timeframes, directions, parameter grids and filters; each entry carries an implemented flag.
Use it to see which crypto ranking strategies exist. For graph node keys use node_catalog; for the general strategy families use registries. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds genuinely useful non-schema context: the tool only runs inside the Stochastly desktop app, which must be installed and hold an Atelier or Portfolio licence, and each entry carries an `implemented` flag. It stops short of describing return shape or size, which keeps it at a 4.
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 actual purpose is buried behind a two-sentence installation/licence preamble that precedes it, so the definition is not front-loaded. The remaining sentences are tight and each earns its place, but the ordering forces an agent to read boilerplate before learning what the tool does.
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?
With no output schema, the description carries the burden of telling the agent what comes back, and it does (strategies plus an `implemented` flag). Prerequisites, sibling routing and return content are all covered; only finer detail such as entry count or pagination is absent, which is minor for a static registry read.
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 takes zero parameters, so there is nothing to disambiguate; the baseline for a parameterless tool is 4. The description's field list (timeframes, directions, grids, filters) describes output, not inputs, which is the right place given no arguments exist.
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?
States a specific verb+resource ('List the cross-sectional crypto strategies') and enumerates the returned fields (timeframes, directions, parameter grids, filters, `implemented` flag). It also explicitly disambiguates from siblings, saying node_catalog is for graph node keys and registries for general strategy families.
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?
Gives an explicit use case ('see which crypto ranking strategies exist') and names two alternatives with the condition that selects each (node_catalog for graph node keys, registries for general families). Nothing is left to inference about when to reach for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_sourcesARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
List the data source names registered in this build, as sources; "folder" (a folder of
your own price files) is always one of them.
Use it before backtest_graph to pick its source argument. A source missing from this list
is not available: pass data_root (a folder of price files) to backtest_graph instead.
Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds important behavioral context beyond annotations: the tool requires the Stochastly desktop app to be installed and opened with an Atelier or Portfolio licence, and it describes the output field `sources`.
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 appropriately sized and front-loads the critical app/licence prerequisite, then explains output and usage. There is minor redundancy between the opening installation/licence note and the closing licence requirement, but it remains focused overall.
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 zero-parameter, read-only listing tool with no output schema, the description covers prerequisites, output content (`sources`), and its relationship to `backtest_graph`. Nothing essential for invoking the tool correctly is missing.
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?
This tool has zero parameters, so the schema does not require additional parameter semantics. The description adds no parameter meaning because there are none to explain, which aligns with the baseline for zero-parameter tools.
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 and resource: it lists registered data source names, names the output field `sources`, and notes that `folder` is always included. It also distinguishes the tool from `backtest_graph` by positioning it as a prerequisite for choosing that tool's `source` argument.
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 explicitly says to use this before `backtest_graph` to pick its `source` argument, and it states when not to rely on it: if a source is missing, pass `data_root` to `backtest_graph` instead. The prerequisite app/licence context further clarifies when the tool can be used at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnostic_explainARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Explain one diagnostic code: what the quantity measures, why it matters, and which measurement could move the verdict (never a promise that an action will improve it).
Use it on codes returned by red_flag_check; list every code with diagnostics_catalog. An unknown code returns an error with the list of known codes. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Diagnostic code such as "OF01", "OF03" or "CO01", as returned in red_flag_check `violations`. |
TDQS
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 substantial context beyond them: the tool runs inside an app that must be installed and licensed, an unknown code returns an error listing known codes, and the explanation explicitly avoids promising that an action will improve the verdict. This is rich, non-obvious 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is dense and every sentence carries information, but the opening paragraph is a long environment/licensing preamble before the actual function is stated. It is efficient overall, though the ordering pushes the app-install requirement ahead of the core purpose.
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?
With no output schema, the description compensates by describing what the returned explanation contains and how errors surface. For a single-parameter read-only tool, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'code' parameter is fully documented, including example values ('OF01', 'OF03', 'CO01'). The description reinforces the provenance (codes from red_flag_check violations) but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource — 'Explain one diagnostic code' — and enumerates exactly what the explanation contains (what the quantity measures, why it matters, which measurement could move the verdict). It also cleanly distinguishes itself from siblings diagnostics_catalog (lists all codes) and red_flag_check (source of codes).
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?
Explicitly says to use it on codes returned by red_flag_check and to list every code with diagnostics_catalog, i.e. it names both the trigger source and the alternative tool. It also states the prerequisite (Stochastly desktop app open with an Atelier or Portfolio licence) and the failure behavior for unknown codes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnostics_catalogARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
List every diagnostic code the app can raise, as diagnostics (code, family, page) and
severities.
Use it to know what the checks can hold against a run, and so what they cannot judge yet; explain one code with diagnostic_explain. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful non-annotation context: the tool only runs inside the desktop app and needs an Atelier or Portfolio licence, which is exactly the kind of prerequisite disclosure the annotations cannot carry.
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 critical prerequisite is front-loaded before any functional text, which is the right ordering for a tool that cannot run without the app. Some redundancy remains: the licence requirement is stated in the opening sentence and repeated at the end ('Needs Stochastly open with an Atelier or Portfolio licence').
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?
With no output schema, the description steps in to describe the return structure; with annotations covering safety, it covers the remaining burden of environment and licence prerequisites. An agent has everything needed to decide whether to call it and whether the call can succeed.
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 takes zero parameters, so the baseline of 4 applies. The description instead documents the output shape (diagnostics grouped as code/family/page plus severities), which is helpful given no output schema exists, but it adds nothing about inputs because there are none.
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?
States a specific verb and resource: 'List every diagnostic code the app can raise', and names the returned fields (code, family, page, severities). It is clearly distinguishable from the sibling diagnostic_explain, which it explicitly routes deeper questions to.
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?
Gives a concrete when-to-use rationale ('know what the checks can hold against a run, and so what they cannot judge yet') and names the alternative for the adjacent task ('explain one code with diagnostic_explain'). No explicit when-not conditions, but the routing to the sibling is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_atlasADestructive
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Write one research paper PDF per finished run with a shared layout and title, and return ok, dir, n, papers ({name, path, pages, rank, or error} each) and failed.
Use it to report several runs consistently; export_paper handles a single run. Every paper prints how many papers the batch contains, because producing N reports is N trials. Every run must be finished and carry a verdict, otherwise nothing is written; a paper that fails to render is listed with its error. Requires an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title shared by every paper. | |
| layout | No | Ordered section ids from paper_sections, shared by every paper. | |
| out_dir | No | Output folder; files with the same names are overwritten. Omit for a new folder in the app's papers folder. | |
| run_ids | Yes | Ids of the finished runs, one paper each. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so overwrite/non-repeat behavior is signaled structurally. The description adds real value beyond that: the finished-run+verdict precondition, the per-paper error listing on render failure, and the licence requirement. It loses a point only because the desktop-app/licence requirement is stated twice rather than once.
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?
Core function is front-loaded and readable, but the leading app-installation paragraph and the trailing 'Requires an Atelier or Portfolio licence' restate the same availability constraint, and the 'N reports is N trials' aside is tangential. There is noticeable redundancy that dilutes an otherwise tight description.
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?
With no output schema, the description usefully enumerates the return fields (ok, dir, n, papers, failed) and what a per-paper entry contains, and covers the key preconditions. It is nearly complete; only the duplication and lack of pagination/limit nuance around large run_id batches keep it from a 5.
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 100%, and the schema already documents title, layout, out_dir and run_ids including the overwrite note on out_dir. The description repeats the shared-layout/shared-title idea but adds no syntax or format detail, so the baseline 3 applies.
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?
States a specific verb+resource with scope: 'Write one research paper PDF per finished run with a shared layout and title.' It explicitly distinguishes itself from the sibling export_paper, which handles a single run, so an agent can route without opening schemas.
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?
Gives a clear when-to-use ('report several runs consistently') and names the alternative ('export_paper handles a single run'), plus the precondition that every run must be finished and carry a verdict or nothing is written. Exclusions and prerequisites are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_paperADestructiveIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Write a multi-page research paper PDF for one finished backtest run: abstract, numbered equations, tables, robustness section and a mandatory backtest disclosures box. Returns ok, path, pages, figures, tables, omitted and the layout actually printed.
Use it for a full write-up of one run; export_tearsheet makes a one-page summary and export_atlas a batch of papers. Every number comes from the run; a section whose data the run lacks is omitted with a note, and an unknown layout id is an error. Requires an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Output PDF path; an existing file there is overwritten. Omit for a new time-stamped file in the app's results folder. | |
| title | No | Paper title. | |
| layout | No | Ordered section ids from paper_sections; omit for the default paper. | |
| run_id | Yes | Id of a finished backtest run. | |
| hypothesis | No | The hypothesis registered before the search. Only pass it if that is true; without it the paper is labelled exploratory. | |
| instrument | No | Instrument name printed on the paper. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (destructiveHint=true, readOnlyHint=false, idempotentHint=true), and the description adds substantial context beyond them: the tool runs only inside a separately-licensed desktop app, changes require an Atelier/Portfolio licence, sections whose data the run lacks are silently omitted with a note, and an unknown layout id is a hard error. These are meaningful behavioral traits that the structured fields do not convey.
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?
Front-loads the blocking prerequisite, then purpose, then routing, then edge cases — a sensible order with little waste. The install/pricing preamble is somewhat verbose for a tool description, but it is genuinely necessary given the tool cannot run without it.
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?
With no output schema, the description carries the return contract itself, listing ok, path, pages, figures, tables, omitted and the layout printed. Combined with licence gating, omission behavior and error semantics, an agent has everything needed to call and interpret the result.
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 100%, so the schema already documents all six parameters including overwrite behavior, layout ids from paper_sections, and the exploratory labelling of omitted hypothesis. The description reiterates the layout-id error and hypothesis semantics but adds little syntax or format detail beyond the schema, so the baseline of 3 applies.
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?
States a specific verb (write/export) and resource (multi-page research paper PDF) and enumerates the exact artifacts produced (abstract, numbered equations, tables, robustness section, disclosures box) for a clearly scoped input (one finished backtest run). It explicitly distinguishes itself from siblings export_tearsheet (one-page) and export_atlas (batch), so an agent can route without opening schemas.
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?
Gives explicit when-to-use ('full write-up of one run') and names both alternatives with their differing scope ('export_tearsheet makes a one-page summary and export_atlas a batch of papers'). It also states prerequisites (desktop app installed/activated, Atelier or Portfolio licence), which functions as a when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_tearsheetADestructiveIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Write a one-page tearsheet image or PDF summarising a finished run, and return ok, path and fmt.
Use it for a quick shareable summary; export_paper writes the full paper. Research runs have no tearsheet and are refused, as are unknown or unfinished runs. Requires an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| fmt | No | "png" or "pdf"; any other value gives png. | png |
| path | No | Output file path; an existing file there is overwritten. Omit for tearsheet_<run_id> in the app's tearsheets folder. | |
| run_id | Yes | Id of a finished backtest, ML or portfolio run. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (destructiveHint=true, idempotentHint=true, readOnlyHint=false), and the schema documents the overwrite behavior of 'path'. The description adds real context beyond that: it is gated on the desktop app being installed and on an Atelier/Portfolio licence, and it enumerates which run types are refused. It does not, however, say what a refusal looks like to the caller.
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 content is efficient, but the structure is poor: it opens with a machine-specific installation/prerequisite paragraph before stating what the tool does, so the actual purpose is buried in the second paragraph. A caller scanning the first line learns about a missing desktop app rather than the tool's function.
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?
With no output schema, the description helpfully states the return shape (ok, path, fmt), plus refusal conditions, licence gating and the sibling alternative. It is close to complete for a 3-param export tool; only the failure/refusal response shape is left unspecified.
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 100%, so fmt, path and run_id are already fully documented, including the png fallback and the overwrite warning. The description adds no syntax or meaning beyond the schema, so the baseline 3 is correct.
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?
States a specific verb and resource — write a one-page tearsheet image/PDF summarising a finished run — and names its return values. It explicitly differentiates itself from the sibling export_paper ('writes the full paper'), so an agent can route correctly without opening either schema.
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?
Gives when-to-use ('quick shareable summary'), names the alternative (export_paper) and its selection condition, and lists exclusions: research runs, unknown runs and unfinished runs are refused. The licence prerequisite (Atelier or Portfolio) is also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
live_stateARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Read what the open app last reported it is showing (workspace, chart, symbol, timeframe,
indicators, graph nodes, current run, active assistant agent; never secrets) from its state
file, with age_s (seconds since it was written) and present (false when the app has never
written it).
Use it to check the effect of pilot_app or the context of the user's screen. A large age_s means the app is probably closed. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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), but the description adds materially beyond them: the hard precondition that the desktop app must be installed, opened, and licensed (Atelier or Portfolio), and the guarantee that secrets are never exposed. Those are exactly the operational facts an agent needs before calling, and they are not derivable from the annotations.
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 blocking app/licence requirement is front-loaded in its own paragraph, then the content, then the usage hint and interpretation. Everything is on-topic, though the app-installation and licence requirements are restated in the opening and closing sentences, which costs a little density.
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?
With no output schema present, the description carries the return-value burden and does so: it lists the reported fields and defines both age_s and present. Combined with the precondition and licence constraints, an agent has everything needed to call this correctly or decide it cannot be called.
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 takes zero parameters, which sets a baseline of 4. The description still earns that baseline by documenting the shape of what comes back (age_s as seconds since the state file was written, present as false when the app has never written it), which is useful even though there is nothing to describe on the input side.
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?
States a specific verb-plus-resource (read the app's last reported state) and enumerates exactly what that state contains: workspace, chart, symbol, timeframe, indicators, graph nodes, current run, active assistant agent. It is clearly distinguished from the write-side sibling set_live_state, so an agent can separate the two without opening either schema.
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?
Gives concrete usage triggers: 'check the effect of pilot_app or the context of the user's screen', plus an interpretation rule that a large age_s means the app is probably closed. It does not state an explicit when-not or name set_live_state as the write alternative, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_catalogARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Return the graph editor's node catalogue, grouped by family: every strategy, filter, gate,
cost and reading node with its parameter schema, plus an exportable flag on strategies.
This is the only source of valid node keys ("family/name") for compose_graph and backtest_graph; call it before writing a plan. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | True reloads the catalogue from the engine instead of the in-memory copy; only needed after the engine was updated while the app was open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a safe, read-only, idempotent, local read; the description goes well beyond that by disclosing the hard prerequisite (the Stochastly desktop app must be installed, open, and running with an Atelier or Portfolio licence) and the environment where it will fail. It also explains the in-memory vs engine-reload behavior tied to the force flag.
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 return-value explanation is front-loaded and dense, and the licence prerequisite is stated early. There is mild redundancy between the opening installation instructions and the closing 'Needs Stochastly open with an Atelier or Portfolio licence' sentence, but the size is justified by the non-obvious environment requirement.
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?
With no output schema, the description carries the return-value burden and does so well: it explains the family grouping, the node categories, the per-node parameter schema, and the exportable flag. The environment prerequisite and downstream usage are also covered, leaving only minor detail unstated.
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 100%, and the single force parameter is fully explained in the schema itself (engine reload after an update). The description adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.
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?
States a specific verb and resource (return the graph editor's node catalogue) and describes the return content precisely: grouped by family, covering strategy/filter/gate/cost/reading nodes with parameter schema and an exportable flag. It also distinguishes itself from siblings by naming compose_graph and backtest_graph as its dependents.
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?
Gives clear context: it is the only source of valid node keys and should be called before writing a plan, which implies calling it ahead of compose_graph and backtest_graph. No explicit when-not-to-use case is stated, so it falls just short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_sectionsARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
List every section a research paper can contain, each as {id, group, label, mandatory, in_default}, default sections first in print order.
Use it to choose the layout ids for export_paper or export_atlas. Mandatory sections (the
simulation letterhead and the backtest disclosures) are always added back, and the paper
follows the order you pass. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds real context beyond them: an environment/licence prerequisite (desktop app open with Atelier or Portfolio licence) and the downstream behavior that mandatory letterhead/backtest sections are always reinstated. It does not describe pagination or failure modes when the app is missing, so not a 5.
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?
Front-loads the prerequisite and then the purpose, which is reasonable, but the app/licence requirement is stated twice (opening paragraph and closing sentence), a redundant repetition that dilutes an otherwise tight three-sentence description.
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?
With zero parameters and no output schema, the description carries the full burden and mostly does: it specifies the return shape, the licensing prerequisite, and the consumer tools. It leaves out what happens if the licence is absent beyond the install instruction, so slightly short of complete.
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 takes no parameters, so per the baseline this scores 4. There is nothing to document, and the description still usefully describes the returned object fields.
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?
States a specific verb and resource ('List every section a research paper can contain') and even enumerates the returned field shape {id, group, label, mandatory, in_default}. This clearly distinguishes it from export_paper and export_atlas, which consume the ids rather than list them.
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?
Explicitly routes the agent: 'Use it to choose the `layout` ids for export_paper or export_atlas.' It also explains the downstream consequence that mandatory sections are re-added and that caller order is respected, so the agent knows the sequencing contract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pilot_appA
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Drive the open Stochastly app on the user's screen: open a .stly document, switch screen, show a chart, start a backtest, display a note or send a prompt to the in-app assistant. Fields combine in one call and apply in the order open, screen, chart, run; the user sees each step in the status bar and the session journal.
Use it when the user should watch the work in the app; to run a graph and get its numbers
back directly, use backtest_graph. The command replaces any pending one. It has no effect
unless the app is open and the user enabled piloting (off by default); the response always
carries pilot_enabled. Requires an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| tf | No | Legacy timeframe field, ignored by the current app. | |
| run | No | True starts a backtest on the graph in place. Cannot be combined with prompt. Refused for a document with custom Python unless the user allowed it. | |
| sym | No | Legacy symbol field, ignored by the current app. | |
| note | No | Message shown to the user on screen; say what you are doing and why. | |
| chart | No | Chart key to show in the display panel. | |
| prompt | No | Text for the in-app assistant, or a command: /verdict <hypothesis>, /research [@agent...] [rounds=N] [budget=N] <topic>, /stop. Cannot be combined with run. | |
| workspace | No | Screen to switch to: Home, Build, Backtest, Analyze, Results or Research. | |
| session_path | No | Path to a .stly document (at most 8 MB) to open in the Build screen. Only a summary of it comes back, never its content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) by disclosing the desktop-app and licence prerequisites, that the command replaces any pending command, that field application order is open/screen/chart/run, that the user sees each step in the status bar and journal, and that the response always carries pilot_enabled. These are exactly the operational facts an agent needs and none are in the schema.
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?
Front-loaded with the blocking prerequisite before any capability detail, which is the right priority, and each later sentence adds a distinct fact (ordering, when-to-use, caveats, response field). It is slightly long and the install/licence material could be tightened, but no sentence is pure filler.
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 8-parameter, zero-required, no-output-schema tool that acts on a GUI, the description covers prerequisites, licensing, mutual exclusions, effect ordering, user-visible feedback, and the pilot_enabled response field. Nothing needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so per-parameter meaning is already carried by the schema, but the description adds cross-parameter semantics the schema cannot: fields combine in one call and apply in a fixed order, and a call replaces any pending command. It restates the run/prompt exclusion rather than adding to it, which keeps it just below a 5.
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?
States a specific capability set with concrete verbs and objects (open a .stly document, switch screen, show a chart, start a backtest, display a note, send a prompt) and names the sibling it is not (backtest_graph). An agent can distinguish this from backtest_graph or compose_graph without opening either schema.
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?
Gives an explicit selection rule: use this when the user should watch the work in the app, otherwise use backtest_graph to get numbers back directly. It also states the hard preconditions (app open, piloting enabled and off by default, Atelier or Portfolio licence) so the agent can decide not to call it at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio_combineA
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Combine several finished runs into one portfolio (book) and judge it: returns the combined series, the weights actually used, the correlation matrix between sleeves, each sleeve's contribution and a deflated Sharpe ratio. The book is saved as a new run, so adversarial_check and export_tearsheet accept its run_id.
Use it for a multi-strategy or multi-market book; a single graph run covers one strategy, and analyze_dependence only measures two curves you supply. Weights at bar t use only bars before t, and the drawdown cap acts on the previous bar's equity. Nothing is re-simulated: runs must be finished in the current app session; runs in different PnL units are refused, not converted. Requires a Portfolio licence (Atelier gets a named refusal).
| Name | Required | Description | Default |
|---|---|---|---|
| dd_cap | No | Drawdown at which the book is de-levered; 0 turns it off. | |
| method | No | Weighting: equal weights, volatility targeting, risk parity, or hierarchical risk parity. | equal |
| run_ids | No | Comma-separated ids of at least 2 finished runs from this app session (a unique prefix is enough). | |
| lookback | No | Trailing window in bars used to estimate weights. | |
| n_trials | No | Number of candidate sleeves to deflate the Sharpe ratio by; 0 uses the number of runs passed. | |
| dd_derisk | No | Leverage multiplier applied once dd_cap is reached. | |
| rebalance | No | Bars between two weight updates. | |
| vol_target | No | Target volatility per bar for the whole book; 0 turns it off. | |
| max_leverage | No | Upper bound on the book's leverage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the shape (not read-only, not idempotent, not destructive); the description adds the real behavioural load: the book is persisted as a new run consumable by adversarial_check/export_tearsheet, runs from other sessions or in mismatched PnL units are refused rather than converted, a Portfolio licence is required with a named refusal path for Atelier, and the weighting/drawdown timing rules are disclosed.
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?
Dense and largely waste-free, with prerequisites, purpose, return values, constraints and algorithm timing each getting one sentence. Minor structural weakness: the generic install/licence boilerplate occupies the opening position, pushing the actual purpose into the second paragraph.
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?
With no output schema, the description correctly enumerates the return values, and it covers side effects (new run id), licensing/auth requirements, session and unit preconditions, and look-ahead/timing semantics. An agent has everything needed to decide and call correctly.
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 100%, so the schema already documents every parameter and its defaults, and the description's parameter-relevant content is indirect (weights at bar t use only earlier bars; the drawdown cap acts on the previous bar's equity). That adds interpretive context for lookback/dd_cap but no per-parameter syntax beyond what the schema provides, so the baseline 3 applies.
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?
States a specific verb and resource — combining finished runs into a portfolio/book — and enumerates the concrete output (combined series, used weights, correlation matrix, sleeve contributions, deflated Sharpe). It explicitly distinguishes itself from siblings: 'a single graph run covers one strategy, and analyze_dependence only measures two curves you supply.'
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?
Gives explicit when-to-use ('for a multi-strategy or multi-market book'), when-not ('a single graph run covers one strategy'), and names alternatives with the reason they don't fit. Prerequisites (app installed, Portfolio licence, runs finished in the current session) are stated up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reality_check_profilesARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Return the three synthetic example profiles of the reality check screen (profitable, marginal, overfit) and the prop-firm rule presets it can apply (FTMO Standard and Pro 100k phase 1, The5ers Hyper Growth).
Reference data only: to judge a real result use red_flag_check or adversarial_check. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 meaningful context the annotations cannot: the tool executes inside a desktop app that may not be installed, and a specific licence tier (Atelier or Portfolio) is required. It does not, however, describe failure modes when the licence is missing or how the data is scoped.
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 blocking prerequisite (app not installed on this machine, install URL, licence activation) is front-loaded, followed by the return contents and the routing note. Everything earns its place, though the licence/installation detail is somewhat dense in a single opening sentence.
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?
With no input parameters, no output schema and a closed-world read-only annotation set, the description supplies exactly the missing pieces: what it returns (three profiles and named presets), that it is reference data only, the alternative tools, and the environment/licence prerequisite. Nothing an agent needs to invoke or decline the tool is absent.
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 takes zero parameters, so there are no arguments whose semantics need explaining; the baseline for a no-param tool is 4. The description correctly adds no parameter discussion, and the returned profiles/presets are described at the value level rather than as inputs.
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 concrete verb (return) and enumerates the exact payload: the three synthetic example profiles (profitable, marginal, overfit) plus the prop-firm rule presets (FTMO Standard/Pro 100k phase 1, The5ers Hyper Growth). It also differentiates itself from siblings by naming red_flag_check and adversarial_check as the tools for real judgments.
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 explicit routing advice — 'Reference data only: to judge a real result use red_flag_check or adversarial_check' — and states prerequisites (Stochastly desktop app open with an Atelier or Portfolio licence). Both when-to-use and when-not-to-use are covered with the alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
red_flag_checkARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Combine five overfitting measures into one deployment verdict, GREEN, AMBER or RED, with a
score from 0 (no red flag) to 100 (severe); RED sets deploy_blocked. Also returns each component and its contribution,
reasons, violations (diagnostic codes with severity), which measures were missing, and the
coverage needed for GREEN.
Use it to decide whether a configuration or run is fit to deploy. Pass null for anything you
did not measure: missing evidence lowers coverage instead of being guessed. Explain a code
from violations with diagnostic_explain; to try to refute a finished run, use
adversarial_check. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| dsr | Yes | Deflated Sharpe ratio of the result; null if not measured. | |
| selection_score | Yes | Multiple-testing adjusted p-value (Romano-Wolf) returned by every run in `selection.score`; lower is better. null if not measured. | |
| realization_ratio | Yes | Real PnL divided by theoretical PnL, after frictions; null if not measured. | |
| oos_is_sharpe_ratio | Yes | Out-of-sample Sharpe divided by in-sample Sharpe; null if not measured. | |
| slippage_sens_delta | Yes | Change in realization_ratio when frictions are multiplied by 1.5; null if not measured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: RED sets deploy_blocked, the returned diagnostics (components, contributions, reasons, violations, missing measures, coverage needed for GREEN), and the fact that missing evidence lowers coverage rather than being imputed. It also discloses a hard environmental prerequisite (Stochastly running with an Atelier or Portfolio licence).
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?
Front-loads the deployment verdict and the null-handling rule, and every substantive sentence earns its place. However, the install prerequisite is spread over three sentences up front and then partially repeated at the end ('Needs Stochastly open with an Atelier or Portfolio licence'), a redundancy that costs conciseness.
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?
There is no output schema, so the description carries the return-value burden, and it does: verdict, score, per-component contributions, reasons, violation codes, missing measures, and GREEN coverage requirements. Combined with the prerequisite and sibling routing, an agent has everything needed to call and interpret it.
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 100%, so the baseline is 3, but the description adds genuine semantics: null is a meaningful 'not measured' value that reduces coverage instead of being guessed, which tells the agent how to populate the five required fields. It does not add units, ranges, or thresholds per measure.
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?
States a specific verb+resource: combines five overfitting measures into one deployment verdict (GREEN/AMBER/RED) with a 0-100 score. It also enumerates the returned artifacts, so an agent knows exactly what the tool produces 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use it to decide whether a configuration or run is fit to deploy' and routes adjacent needs to named siblings: diagnostic_explain for explaining a violation code, adversarial_check for refuting a finished run. The null-for-unmeasured rule gives a clear invocation condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registriesARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
List the strategy families, instrument groups and timeframes ("15M", "30M", "1H") the
app's built-in scanner screens are populated from, as strategy_families,
instrument_groups and timeframes.
For the node keys you pass to compose_graph or backtest_graph, use node_catalog instead; for the cross-sectional crypto strategies, use crypto_registry. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds the crucial behavioral facts they cannot: the tool only runs inside the Stochastly desktop app, that app is not installed on this machine, and a paid licence must be active. This tells the agent the call will fail in the current environment — high-value disclosure beyond structured fields.
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?
Front-loaded with the blocking prerequisite, then purpose, then routing — a sensible order with no wasted filler. The installation/pricing sentence is slightly long and marketing-toned, but it carries genuinely decision-relevant information about tool availability.
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 zero-parameter, no-output-schema tool, the description supplies everything an agent needs: what it returns, which keys, sibling alternatives for adjacent needs, and the environmental/licence prerequisites. Nothing material is left to inference.
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 takes zero parameters and the schema is an empty object, so the baseline of 4 applies. The description instead documents the return keys (strategy_families, instrument_groups, timeframes), which is useful but belongs to output semantics 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?
States a specific verb ('List') and enumerates the exact resources returned (strategy families, instrument groups, timeframes), plus names the concrete output keys. It also explicitly distinguishes itself from siblings node_catalog and crypto_registry, so an agent can route without opening any schema.
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?
Gives explicit exclusions and alternatives with their selecting conditions: 'For the node keys you pass to compose_graph or backtest_graph, use node_catalog instead; for the cross-sectional crypto strategies, use crypto_registry.' It also states the prerequisite context (app open, Atelier/Portfolio licence).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_statusARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Read the saved journal of an in-app Research session: its status, turns, ideas, evidence,
token count and errors, with age_s since it was last saved.
Start a session with pilot_app(prompt="/research ...") and stop it with
pilot_app(prompt="/stop"). The journal is saved at start, after each turn and at the end,
so a running status is a checkpoint, not proof the session is still alive. Returns
present: false when no session exists. Needs Stochastly open with an Atelier or Portfolio
licence.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Journal id (lowercase letters, digits and dashes, no path or extension). Omit for the most recent session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, but the description adds substantial behavioral context beyond them: the journal write cadence (at start, after each turn, at the end), the meaning of `running`, and the `present: false` return when no session exists. It also discloses the environment prerequisite (app not installed on this machine) that annotations cannot express.
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?
Front-loaded with the blocking prerequisite, then the purpose, then the lifecycle routing — a sensible order with no filler. It is somewhat long and the parenthetical about `age_s` leans toward describing output that a return-value reader would infer, but every sentence carries actionable information.
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?
There is no output schema, so the description must describe the return surface — and it does (status, turns, ideas, evidence, token count, errors, age_s, and the `present: false` case). Combined with the prerequisite and lifecycle guidance, an agent has everything needed to call this correctly.
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 100% and the `session_id` parameter is already documented in the schema (journal id format, omit for most recent). The description adds no additional meaning about the parameter, so the baseline of 3 applies.
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?
States a specific verb and resource: 'Read the saved journal of an in-app Research session', and enumerates exactly what the journal contains (status, turns, ideas, evidence, token count, errors, age_s). This is clearly distinguishable from siblings like backtest_status, live_state, and v9_get_run, which cover different subsystems.
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?
Explicitly routes the agent: start a session with pilot_app(prompt="/research ...") and stop it with pilot_app(prompt="/stop"), and states the hard prerequisite (Stochastly installed, open, with an Atelier or Portfolio licence). It also warns that a `running` status is only a checkpoint, not proof of liveness, which is precisely the kind of caveat that changes how an agent interprets a result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_smoke_testsAIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Development only: start the Playwright smoke test of the app interface (visual regression and a clean console, headless, on mocked test data) and return pass or fail with the diagnostic line.
It needs a source checkout with its test harness installed. An installed app does not ship it,
so there the tool returns dev_only: true and starts nothing. Requires an Atelier or Portfolio
licence.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | Playwright spec file name inside the checkout's tests folder. | terminal.spec.js |
| timeout_s | No | Seconds before the test process tree is killed and a failure is returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=false, idempotentHint=true and destructiveHint=false, but the description adds substantial context: environment prerequisites, licence tier requirement, the graceful degradation to dev_only: true when the harness is absent, and the fact that the process tree is killed on timeout. It does not however describe the exact diagnostic line format or the pass/fail payload shape.
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?
Front-loads the most important gating fact (the desktop app is required / not installed) before describing behavior. There is mild redundancy in restating licence requirements at the end after the checkout prerequisite, but overall it is efficient.
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 no output schema, the description carries the return contract reasonably well ('pass or fail with the diagnostic line', plus the dev_only fallback). Prerequisites, licence needs and timeout behavior are all covered, leaving only minor gaps about the exact return payload structure.
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 100%, so both 'spec' and 'timeout_s' are already documented in the schema, including defaults and the timeout kill semantics. The description adds nothing parameter-specific, so the baseline of 3 is appropriate.
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?
States a specific verb and resource ('start the Playwright smoke test of the app interface') and enumerates the exact scope: visual regression and clean console, headless, mocked data. An agent can immediately distinguish this from sibling tools like diagnostic_explain or tail_app_log.
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?
Explicitly scopes usage to development ('Development only') and states the prerequisite conditions (source checkout with test harness, Atelier or Portfolio licence) and the when-not case (installed app returns dev_only: true and starts nothing). It does not name alternative diagnostic tools, but the gating conditions are clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_live_stateAIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Legacy: queue a command asking the old chart terminal to show another symbol or timeframe. The current app does not apply these two fields, and the response says so.
To drive the current app (open a document, switch screen, start a backtest) use pilot_app.
The command replaces any pending one and only takes effect when piloting is enabled
(pilot_enabled in the response). Requires an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| tf | No | Timeframe for the legacy chart terminal, for example "1h". | |
| sym | No | Symbol for the legacy chart terminal, for example "BTCUSDT". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering the safety profile, the description goes well beyond them by disclosing that the command replaces any pending one, only takes effect when piloting is enabled, is reported via pilot_enabled in the response, requires a specific licence tier, and that the current app ignores the two fields. These are exactly the operational constraints an agent needs and are not in the structured fields.
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 content is front-loaded and each paragraph carries distinct information (install prerequisite, legacy behavior, alternative tool, effect semantics). It is somewhat verbose in the opening install paragraph, but nothing is gratuitous.
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?
There is no output schema, and the description compensates by describing what the response contains (pilot_enabled, notice that fields were not applied). Prerequisites, enabling conditions, and the alternative tool are all covered, so an agent has enough to call it correctly.
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 100%, so the schema documents tf and sym, making 3 the baseline. The description adds important meaning the schema cannot: the current app does not apply these two fields and the response says so, which materially affects whether an agent should pass them at all.
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 and resource: 'queue a command asking the old chart terminal to show another symbol or timeframe.' It also explicitly labels itself 'Legacy' and contrasts with pilot_app, so an agent can distinguish it from siblings. The installation preamble at the top slightly buries the core purpose.
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?
Explicit routing is given: 'To drive the current app (open a document, switch screen, start a backtest) use pilot_app,' and the legacy/exhausted nature of this tool is stated. It also names prerequisites (desktop app installed, activated, Atelier or Portfolio licence) and the enabling condition (piloting enabled).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tail_app_logARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Return the last lines of the app's own log file, with present, age_s and, when the log
is older than one hour, stale: true and a note saying it may describe an earlier session.
Use it to diagnose an app error. For a batch scanner run use v9_tail_log; for a graph run use backtest_status. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Number of trailing log lines to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely new behavior: the environment prerequisite that the desktop app must be installed and running with a specific licence tier, the returned fields, and the staleness rule (logs older than one hour are flagged with a caveat about an earlier session). That is exactly the context annotations cannot supply.
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 critical blocker (tool runs in an uninstalled app) is front-loaded, which is the right ordering. However, the licence/app requirement is stated twice (the install block and the closing sentence), and the install URL plus activation instructions add bulk that is only marginally actionable for an agent.
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?
With no output schema, the description still explains the return fields and the staleness signal, plus prerequisites and sibling routing. An agent has everything needed to decide whether to call it and to interpret the result.
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 100% for the single 'lines' parameter, so the schema already documents its meaning and default. The description adds nothing about the parameter, which is the expected 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Return the last lines of the app's own log file') and enumerates the shape of what comes back ('present', 'age_s', 'stale: true' with a note). It also distinguishes itself from the log-related siblings v9_tail_log and backtest_status, so an agent can select it without opening any schema.
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?
Gives an explicit positive trigger ('Use it to diagnose an app error') and names the two alternatives with the exact conditions that select them ('For a batch scanner run use v9_tail_log; for a graph run use backtest_status'). The prerequisite (app installed, open, Atelier or Portfolio licence) is stated, leaving nothing material to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
v9_get_runARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Read one batch scanner run: its verdict file, the robustness counts (n_total, n_robust_pass), its PBO and the last 30 log lines.
Use v9_list_runs first to find the run_id, and v9_tail_log for more log lines. Errors are
named: no_runs when nothing has run, run_not_found for an unknown id. Needs Stochastly
open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | A run_id from v9_list_runs, or "latest" for the newest run. | latest |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered; the description adds valuable non-structured context the annotations cannot express — the Stochastly app must be installed and open, and an Atelier or Portfolio licence is required. The licensing prerequisite is stated twice (opening sentence and closing sentence), which is mildly redundant rather than incorrect.
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 install/licence preamble is a genuine blocker and is reasonably front-loaded, and the middle paragraph is dense with useful content (returned fields, sibling routing, error names). Minor duplication between the first and last sentences keeps it from being maximally tight.
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?
There is no output schema, so the description carries the burden of describing return content — and it does, listing the verdict file, both robustness counts, PBO, and the log-line window. Combined with the licence prerequisite and sibling routing, an agent has everything needed to call it correctly.
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 100% and the single run_id parameter already documents the 'latest' default and its source (v9_list_runs). The description adds no syntax or semantics beyond that, so the baseline 3 applies — it neither compensates nor detracts.
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?
States a specific verb and resource ('Read one batch scanner run') and enumerates exactly what comes back — verdict file, robustness counts n_total/n_robust_pass, PBO, and last 30 log lines. This distinguishes it cleanly from v9_list_runs (which only finds ids) and v9_tail_log (which streams more log lines).
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?
Explicitly routes the agent: 'Use v9_list_runs first to find the run_id, and v9_tail_log for more log lines,' naming both alternatives and the condition that selects them. It also names the failure modes ('no_runs', 'run_not_found'), so an agent can anticipate and interpret errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
v9_list_runsARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
List the runs of the separate batch strategy scanner (run folders named V9_* or V95_*), newest first, each with run_id, status (running, done or error) and a summary (verdict, n_configs, pbo_cscv, auc, best_config).
Use it to find a run_id for v9_get_run or v9_tail_log. Runs started from a graph are not listed here: use backtest_status for those. Returns an empty list when the scanner is not installed on this machine. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of runs returned, newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses the app/installation prerequisite, the licence-tier requirement, the newest-first ordering, the exact status vocabulary (running/done/error), and that an empty list is returned when the scanner is absent.
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?
Front-loaded and organized around purpose/usage/return fields, but the prerequisite is stated redundantly three times (desktop app required, runs inside the app, install/open/activate) and the licence requirement appears twice, once mid-description and again in the closing sentence.
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?
No output schema exists, so the description carries the return shape on its own and does so (run_id, status enum, verdict/n_configs/pbo_cscv/auc/best_config summary). Preconditions, alternatives, and empty-result behavior are all covered, leaving nothing an agent needs before calling.
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?
Only one optional parameter and schema coverage is 100%, so the schema already documents 'limit' fully. The description's 'newest first' restates the schema's own wording rather than adding ordering semantics or interaction with the limit value.
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?
States a specific verb and resource ('List the runs of the separate batch strategy scanner') with the run-folder naming convention (V9_*/V95_*) and the per-run fields returned. It also explicitly distinguishes itself from backtest_status (graph-started runs) and positions itself as the feeder for v9_get_run and v9_tail_log.
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?
Gives explicit when-to-use ('Use it to find a run_id for v9_get_run or v9_tail_log'), when-not ('Runs started from a graph are not listed here: use backtest_status'), and the environmental preconditions (desktop app installed, scanner present, Stochastly open with an Atelier or Portfolio licence).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
v9_protocol_aARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Summarise the batch scanner's saved regression check: how many baseline configurations its current engine reproduces from the previous one, as n_total, n_strict (exact matches), n_soft (within tolerance), n_cumul, pct_cumul and the tolerance used.
It reads a result file computed earlier by the scanner and starts nothing. Returns the error
no_protocol_a_results when that file does not exist. Needs Stochastly open with an Atelier
or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, idempotent, closed-world), and the description goes well beyond them: it discloses the hard runtime prerequisite (desktop app installed, opened, licence activated), the specific licence tiers accepted, the absence of side effects ('starts nothing'), and the exact failure mode `no_protocol_a_results`. That is the kind of context annotations cannot carry.
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 gating fact (requires the desktop app, output fields, read-only nature) is front-loaded, and every paragraph carries information. The install URL and 'open it and activate a licence' phrasing is slightly more verbose than needed, but it is not padding.
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?
With no output schema and no parameters, the description compensates fully: it names the returned metrics, the error returned when the source file is missing, and all prerequisites an agent must verify before calling. Nothing needed to invoke or interpret this tool is missing.
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 takes zero parameters, so per the rubric the baseline is 4. There is no argument surface for the description to clarify, and it correctly does not invent one.
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?
States a specific verb (summarise) and an unambiguous resource (the batch scanner's saved regression check), and enumerates the exact quantities produced (n_total, n_strict, n_soft, n_cumul, pct_cumul, tolerance). It never names a sibling such as v9_get_run or v9_tail_log, so the differentiation is achieved by subject matter rather than explicit contrast.
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?
Gives clear operating context: it reads a file computed earlier, 'starts nothing', and needs the Stochastly app open with an Atelier or Portfolio licence. That tells an agent both when this tool is appropriate and when it is not (before the app/licence exists). No alternative tool is named for the same job, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
v9_tail_logARead-onlyIdempotent
Requires the Stochastly desktop app: this tool runs inside the app, which is not installed on this machine. Install it from https://stochastly.com/pricing, open it and activate a licence.
Return the last lines of a batch scanner run's log file, as lines.
Use it to follow a running scan or see why one failed; v9_get_run gives the verdict and robustness counts. An empty list means no run or no log yet. Needs Stochastly open with an Atelier or Portfolio licence.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Number of trailing log lines to return; must be 0 or more. | |
| run_id | No | A run_id from v9_list_runs, or "latest" for the newest run. | latest |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it safe, read-only, idempotent and non-destructive, so the safety profile needs no restating. The description adds genuine context beyond them: the empty-list behavior ('no run or no log yet') and the environment/licence prerequisite (Stochastly open with Atelier or Portfolio licence).
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 purpose sentence is well-formed, but the definition opens with a three-line installation prerequisite and the licensing requirement is stated twice ('Requires the Stochastly desktop app...' and 'Needs Stochastly open with an Atelier or Portfolio licence'), which is redundant weight.
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?
With no output schema, the description covers the return value (`lines`) and the empty-result case, and it discloses the runtime prerequisite. Complete enough to invoke correctly; only minor gaps about log size/retention remain.
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 100% – both `lines` and `run_id` are fully documented in the schema, including the 'latest' default and the >=0 constraint. The description adds no syntax or format detail beyond that, so the baseline 3 applies.
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?
States a specific verb and resource: 'Return the last lines of a batch scanner run's log file, as `lines`.' It explicitly separates itself from sibling v9_get_run ('gives the verdict and robustness counts'), so an agent can distinguish the two without opening either schema.
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?
Gives clear context: 'Use it to follow a running scan or see why one failed,' and names the alternative (v9_get_run) with the distinct condition that selects it. No explicit when-not guidance or mention of the adjacent tail_app_log sibling, so it falls just short of a full 5.
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.
29 tool updates
v0.2.1- First observed
adversarial_check - First observed
analyze_dependence - First observed
app_info - First observed
backtest_graph - First observed
backtest_status - First observed
compose_graph - First observed
crypto_registry - First observed
data_sources - First observed
diagnostic_explain - First observed
diagnostics_catalog - First observed
export_atlas - First observed
export_paper - First observed
export_tearsheet - First observed
live_state - First observed
node_catalog - First observed
paper_sections - First observed
pilot_app - First observed
portfolio_combine - First observed
reality_check_profiles - First observed
red_flag_check - First observed
registries - First observed
research_status - First observed
run_smoke_tests - First observed
set_live_state - First observed
tail_app_log - First observed
v9_get_run - First observed
v9_list_runs - First observed
v9_protocol_a - First observed
v9_tail_log
TDQS
Scored across 29 tools
Most tools target a distinct resource+action (compose_graph vs backtest_graph vs backtest_status, export_paper vs export_atlas vs export_tearsheet, the v9_* scanner family vs the backtest_* graph family). A few clusters overlap thematically, notably the evaluation tools (red_flag_check, adversarial_check, reality_check_profiles, diagnostics_catalog/explain) and the app-control trio (live_state, set_live_state, pilot_app), but descriptions explicitly cross-reference 'use X instead', resolving most confusion.
Everything is snake_case with a predictable, readable style and useful subsystem prefixes (backtest_, export_, diagnostic_, v9_). The main deviation is that some tools are verb_noun (compose_graph, export_paper, red_flag_check) while others are noun-only (app_info, data_sources, node_catalog, live_state), so the verb pattern isn't fully uniform.
29 tools is on the heavy side and includes clear bloat (set_live_state is explicitly legacy, run_smoke_tests is dev-only), which everyone pays the surface-area cost for. Still, the server spans genuinely different subsystems—graph backtesting, a separate batch scanner, portfolio combination, report export, diagnostics, and app piloting—so the count is defensible rather than gratuitous.
The research lifecycle is well covered: discover nodes/registries/data sources, compose and run graphs, poll status, judge results (red_flag_check, adversarial_check, portfolio_combine), and export papers/tearsheets, plus the parallel v9 scanner surface and app/diagnostics introspection. Minor gaps exist—e.g. no tool to enumerate the day's session run registry directly, and inspection of graph runs depends on a run_id from a prior call—but these are workable.
Maintenance
Related MCP Connectors
Free, no-key MCP connector for market data in Claude, Cursor and any Streamable HTTP client. Six tools: a pre-market and after-hours gapper scanner (get_premarket_gappers: top 10 names up 10% or more, $1-$100, float under 100M, with premarket relative volume, ATR, RSI and a news-catalyst flag), plus the Market Health desk: S&P 500 valuation verdict (get_market_valuation), Fed liquidity and yield-curve series (get_macro_liquidity), cross-asset regime (get_cross_asset_regime), market breadth (get_market_breadth) and risk-score history (get_market_health_history). Ships with a ready-made prompt, premarket_gappers_brief. Nothing to sign up for. Built by TraderMatrix. The full TraderMatrix connector has 51 tools, adding options flow, dealer gamma and Apex levels, unusual activity, sector flow, wheel screeners and your own watchlists.
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects local LLMs to external tools (calculator, knowledge base) via MCP protocol, enabling automatic tool detection and execution to enhance query responses.MIT
- AlicenseAqualityAmaintenanceMCP server for the FLOX trading framework. About 30 tools to run backtests, scaffold strategies, validate for lookahead bias, compute indicators, place orders, and query PnL from Claude/Cursor.38228MIT
- FlicenseNot gradedqualityDmaintenanceExposes TradingView technical indicators and OHLCV data through MCP tools for Claude Desktop or any MCP-aware client.25-
- AlicenseNot gradedqualityCmaintenanceBridges a local Tongdaxin client to MCP, exposing tools for market data, financial information, sector management, terminal push, simulated trading, and automatic price alerts, enabling natural-language data retrieval, analysis, and order operations through agents.4MIT