Skip to main content
Glama
TradingAgents MCP

TradingAgents MCP

by ceharsh24

backtest_results

Lists backtest runs or returns a run's scorecard, showing per-rating direction accuracy and mean alpha versus the benchmark; reading is free, and rerunning settles pending cells.

Instructions

Backtests run with run_backtest. Without run_id, lists them with their cell counts. With run_id, returns the scorecard: per rating, how often it called the direction and its mean alpha against the benchmark. Reading costs nothing; to settle cells whose window has since traded, run run_backtest again with the run_id.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "backtest_results"
  }
}

Input Schema

NameRequiredDescriptionDefault
run_idNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it declares the read is free ("reading costs nothing"), explains that results can include unsettled cells whose windows have since traded, and routes mutation of that state to run_backtest rather than this tool. It stops just short of stating idempotency or what happens if a run_id is unknown/invalid, which keeps it below 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.

Conciseness5/5

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

Four compact sentences, front-loaded with the resource and the branching condition, then the return shape, then cost and the cross-tool follow-up. Every clause conveys something actionable; nothing is redundant padding.

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

Completeness5/5

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

For a single optional-parameter read tool with an output schema in place, the description covers everything the agent needs: what each mode returns, that reads are free, and how to settle stale cells. No essential behavior is left to inference.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: run_id is explained by the contrast between its absent and present states and by what each yields. It does not specify the expected format of run_id or invalid-id behavior, so it falls one step short of fully documenting the lone parameter.

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

Purpose5/5

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

The description names a specific resource (backtest results produced by run_backtest) and splits the behavior on a single, precise condition: no run_id lists runs with cell counts, a run_id returns the per-rating scorecard with directional hit rate and mean alpha vs. benchmark. That is enough to distinguish it from siblings like list_reports or read_report 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.

Usage Guidelines5/5

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

It states both modes and when each applies (omit run_id to enumerate, supply it to get the scorecard), and gives an explicit alternative for the related goal of settling cells whose windows have traded: call run_backtest again with the run_id. There is no guesswork about which tool handles which need.

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