Skip to main content
Glama

Get a backtest result

get_backtest
Read-onlyIdempotent

Retrieve a previous backtest by run_id — the full record, including why it was rejected.

    Only runs in YOUR namespace are visible; a run_id belonging to someone else is simply not
    found. Args: run_id (the `twmd_bt_…` handle returned by run_backtest).
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cagrNo
hintNo
specNo
as_ofNo
costsNo
errorNo
queueNo
engineNo
periodNo
reasonNo
run_idNo
sharpeNo
statusNo
blockedNo
metricsNo
acceptedNo
turnoverNo
warningsNo
cache_hitNo
citationsNo
data_gapsNo
poll_withNo
query_idsNo
job_statusNo
gate_passedNo
bundle_trustNo
equity_curveNo
max_drawdownNo
bundle_versionNo
engine_versionNo
queue_positionNo
interactive_capNo
running_secondsNo
anti_overfittingNo
estimate_secondsNo
known_strategiesNo
marketplace_cardNo
equity_curve_baseNo
persistence_errorNo
rejection_reasonsNo
run_id_resolvableNo
survivorship_safeNo
citations_persistedNo
not_investment_adviceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / costs
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Costs"
      +}
    • addedOutput schema / properties / interactive_cap
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Interactive Cap"
      +}
    • addedOutput schema / properties / marketplace_card
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Marketplace Card"
      +}
  2. Changed16 schema fields changed
    • addedOutput schema / properties / bundle_trust
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Bundle Trust"
      +}
    • addedOutput schema / properties / bundle_version
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Bundle Version"
      +}
    • addedOutput schema / properties / cache_hit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Cache Hit"
      +}
    • addedOutput schema / properties / data_gaps
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Data Gaps"
      +}
    • addedOutput schema / properties / engine
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Engine"
      +}
    • addedOutput schema / properties / engine_version
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Engine Version"
      +}
    • addedOutput schema / properties / equity_curve
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "items": {},
      +        "type": "array"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Equity Curve"
      +}
    • addedOutput schema / properties / equity_curve_base
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Equity Curve Base"
      +}
    • addedOutput schema / properties / estimate_seconds
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Estimate Seconds"
      +}
    • addedOutput schema / properties / job_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Job Status"
      +}
    • addedOutput schema / properties / metrics
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Metrics"
      +}
    • addedOutput schema / properties / poll_with
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Poll With"
      +}
    • addedOutput schema / properties / queue
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Queue"
      +}
    • addedOutput schema / properties / queue_position
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Queue Position"
      +}
    • addedOutput schema / properties / running_seconds
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Running Seconds"
      +}
    • addedOutput schema / properties / spec
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Spec"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / citations_persisted
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Citations Persisted"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / persistence_error
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Persistence Error"
      +}
    • addedOutput schema / properties / run_id_resolvable
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Run Id Resolvable"
      +}
  5. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds value by revealing that the result includes 'why it was rejected' and that a run_id outside your namespace returns 'not found' rather than an error. This goes beyond the safety profile, though it doesn't cover potential timeouts or partial results. No contradiction with annotations.

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?

Two sentences, front-loaded with the primary action and outcome, then the namespace caveat. No filler; every word earns its place. The format example is compact and immediately actionable.

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

Completeness4/5

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

With an output schema present (as indicated by context signals), the description doesn't need to detail return fields. It covers the key inputs, the namespace behavior, and the rejection-reason detail. It could mention behavior for malformed run_ids or in-progress runs, but for a simple retrieve tool this is largely complete.

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

Parameters5/5

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

The schema only provides type and title for run_id (coverage 0%), but the description supplies the critical detail that run_id is the 'twmd_bt_…' handle returned by run_backtest. This is essential for correct invocation and completely compensates for the empty schema description.

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?

Description clearly states 'Retrieve a previous backtest by run_id' — a specific verb, resource, and key. It distinguishes from siblings: list_backtests (listing) and run_backtest (creating), and mentions 'full record' including rejection reason, which sets it apart from a simple fetch.

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

Usage Guidelines4/5

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

Provides clear context: 'Only runs in YOUR namespace are visible' and explains that foreign run_ids are 'simply not found'. This guides usage to only your own runs. It doesn't explicitly name alternatives like list_backtests, but the scoping is implied. A 4 is appropriate because it gives actionable context without explicit when-not-to-use.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources