Skip to main content
Glama

FX Backtest Task

fx_backtest_task
Read-only

Run a transparent rule-based FX backtest on historical spot data using carry and/or momentum signals. Supports MCP Tasks for async execution when clients send task-augmented requests.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
baseYesBase currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD.
quoteYesQuote currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD.
end_dateNoInclusive upper bound, YYYY-MM-DD.
strategyNoSignal mode: carry, momentum, or carry_momentum.carry_momentum
start_dateNoInclusive lower bound, YYYY-MM-DD.
event_gatedNoWhen true, only allow positions during release-event windows derived from announcement_datetime on base and quote calendars.
initial_capitalNoStarting capital for equity-curve calculations.
event_window_daysNoEvent gate window in days around each release date (0 means release-date only).
momentum_lookbackNoMomentum lookback in observations for the momentum signal.
transaction_cost_bpsNoPer-side transaction cost in basis points applied on position changes.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare safe behavior (readOnlyHint=true, destructiveHint=false), so the description does not need to restate those. It adds useful behavioral context: 'transparent rule-based' implies the logic is open and not a black box, and 'Supports MCP Tasks for async execution' discloses an async execution capability not present in annotations. No contradiction exists.

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

Conciseness5/5

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

The description is two sentences and front-loaded with the core purpose, followed by the async execution note. Every sentence earns its place; there is no fluff or repetition of schema information.

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

Completeness3/5

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

Although the schema is rich and annotations are present, no output schema exists and the description does not mention what the backtest returns (e.g., metrics, report, task result). For a 10-parameter tool, the description leaves the user without an understanding of the tool's output, which is a notable gap. The async execution hint partially addresses usage context but not return values.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all 10 parameters with examples and defaults. The description adds no additional parameter-related meaning beyond what the schema provides; its mention of carry/momentum signals is already echoed in the 'strategy' parameter 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?

The description clearly states the tool's function: 'Run a transparent rule-based FX backtest on historical spot data using carry and/or momentum signals.' It uses a specific verb (run), identifies the resource (FX backtest on historical spot data), and differentiates from siblings like fx_trade_setup_task or event_impact_replay_task by specifying the signal types and rule-based nature.

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

Usage Guidelines3/5

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

The description implies when to use the tool (whenever a rule-based FX backtest with carry/momentum signals is needed) but does not explicitly mention alternatives or exclusion criteria. The note about MCP Tasks for async execution provides some context, but it does not compare with related tools or explain when not to use it.

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.

TDQS

A3.8/5.0
Disambiguation4/5

Most tools have clearly distinct purposes with detailed descriptions; the visual_artifact variants are explicitly duplicate payloads for chart rendering. However, several task and analysis tools (macro_briefing_task, macro_research_pack_task, indicator_intel_task) have overlapping scopes and could cause misselection despite different outputs.

Naming Consistency4/5

Tool names are consistently snake_case with systematic _task and _visual_artifact suffixes, making the pattern predictable. Minor deviations like 'ping', 'subscribe_for_mcp_access', and a few noun-only names (e.g., 'forex', 'commodities') break a strict verb_noun pattern but remain readable.

Tool Count2/5

At 48 tools, the surface is far beyond the typical well-scoped server and risks overwhelming agents. The broad macro/FX domain justifies some size, but 48 is excessive and could be consolidated (e.g., merging visual artifact pairs or grouping task tools).

Completeness5/5

The tool set covers the full macro/FX workflow: data discovery (data_catalogue), raw queries (indicator_query, forex, commodities), visual artifacts, release calendar, news, COT, sentiment, seasonality, backtesting, scenario modeling, portfolio risk, and reference tools. No obvious dead ends or missing lifecycle operations for a read-heavy data server.