FXMacroData
Server Details
Macroeconomic and FX time-series data for AI agents: indicators, calendars, COT, forex, commodities.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- fxmacrodata/fxmacrodata
- GitHub Stars
- 3
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 48 of 48 tools scored. Lowest: 3.1/5.
Most tools have clearly distinct purposes, with pairs like indicator_query vs indicator_visual_artifact differentiated by output format. However, the abundance of _task tools (e.g., macro_briefing_task, macro_research_pack_task) could confuse an agent about which to use for a given scenario, slightly reducing clarity.
Naming conventions are mixed: some tools use verb_noun (announcement_changes), others use standalone nouns (forex, seasonality), and many use suffixes _visual_artifact or _task. While underscores are consistent, the lack of a uniform verb pattern makes naming less predictable.
48 tools is high but justified by the broad domain (forex, commodities, indicators, news, etc.). The many raw/visual pairs and task tools expand the surface beyond what's typical, but the scope is comprehensive. Slightly over-scoped for a concise tool set.
The tool set covers an extensive range of macroeconomic data: spot FX, commodities, COT, economic indicators, release calendar, news, predictions, and analytics tasks. Missing are some advanced features like user-defined alerts or data export, but the core domain coverage is strong.
Available Tools
48 toolsannouncement_changesMacro Announcement ChangesARead-onlyInspect
Poll recently ingested macro announcement changes with a resumable cursor. This is the bounded MCP-safe companion to the release-event stream: use the returned next_cursor as since on a later call instead of holding an unbounded streaming tool invocation open.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matching change events to return. | |
| since | No | Optional previous next_cursor, ISO 8601 timestamp, or Unix epoch seconds. | |
| payload | No | Event payload shape: compact trigger rows or full announcement rows. | compact |
| currencies | No | Optional comma-separated currency codes, `g10`, or `all`. Without subscriber access, results are limited to the public scope. | |
| indicators | No | Optional comma-separated announcement indicator slugs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly and non-destructive, which the description complements by explaining the bounded polling mechanism. It adds context about being MCP-safe and cursor-based, though it does not disclose rate limits or authorization requirements, which are less critical given 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?
Two sentences with no unnecessary words. The first sentence states the action, the second explains the usage pattern. Information is front-loaded and every word 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?
The tool has an output schema, so return values are covered. The description covers core functionality and usage pattern adequately. It could mention that the tool only provides recently ingested changes, but that is implied by 'poll recently ingested'. Overall, no major gaps.
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% with detailed descriptions for each parameter (limit, since, payload, currencies, indicators). The description does not elaborate further on parameters, so it provides no additional value beyond the schema, meeting the baseline for full coverage.
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 clearly specifies the tool polls for macro announcement changes with a resumable cursor, distinguishing it from unbounded streams. It explicitly contrasts with the release-event stream and mentions the pagination pattern, making the purpose distinct among siblings like 'latest_announcements'.
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?
The description provides explicit guidance on using the returned next_cursor for polling, contrasting with unbounded streaming. It implies the tool is for resumable polling, but does not explicitly state when to avoid using it or compare directly to other sibling tools like 'release_calendar'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commoditiesCommodity IndicatorsARead-onlyInspect
Get historical price series for supported commodity indicators using the exact slugs advertised by this schema. Requires an API key. Supported indicators: crude_oil_inventories, gold, natural_gas, natural_gas_storage, oil_brent, oil_wti, platinum, silver.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Backward-compatible alias for `indicator`. Prefer `indicator` in new calls. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicator | No | Commodity indicator slug. Supported: crude_oil_inventories, gold, natural_gas, natural_gas_storage, oil_brent, oil_wti, platinum, silver. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false. The description adds that an API key is needed, which is valuable behavioral context. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states purpose and slug guidance, second lists prerequisites and supported values. No wasted words, front-loaded with key info.
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 4 optional parameters, full schema descriptions, and an output schema, the description covers the tool's purpose, prerequisites, valid parameter values, and alias clarification. It is adequate for an agent to invoke 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% with descriptions. The description adds context: 'symbol' is a backward-compatible alias for 'indicator', and lists the exact supported slugs. This clarifies parameter semantics beyond the schema.
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 clearly states the tool retrieves historical price series for commodity indicators, specifying the verb 'get' and resource 'historical price series'. It lists supported indicators, aiding identification. However, it does not explicitly differentiate from sibling tools like 'commodities_visual_artifact', so it's clear but not perfectly distinguished.
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?
The description notes 'Requires an API key' and instructs using exact slugs from the schema. It does not provide guidance on when to use this tool versus alternatives (e.g., when to choose commodities over cot_data or visual_artifact), leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commodities_visual_artifactCommodities Visual ArtifactARead-onlyInspect
Same payload as commodities, but packaged with MCP Apps chart metadata so compatible clients render an interactive commodity chart inline.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicator | Yes | Commodity indicator slug. Supported: crude_oil_inventories, gold, natural_gas, natural_gas_storage, oil_brent, oil_wti, platinum, silver. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and open-world. Description adds that it packages chart metadata, but doesn't disclose other behavioral traits like data freshness, auth requirements, or error handling beyond what annotations provide.
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?
Single sentence, front-loaded with key distinction, no wasted words.
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, but description implies same payload as 'commodities'. Lacks details on return format or chart metadata structure. Adequate for a read-only tool with good annotations.
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 covers 100% of parameters with descriptions. Description adds no extra meaning to parameters; baseline 3 for high schema coverage.
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?
Description clearly states it is like 'commodities' but with MCP Apps chart metadata for inline rendering. Distinguishes itself from sibling 'commodities' by specifying the visual artifact aspect.
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?
No explicit when-to-use or when-not-to-use guidance. Implies use for chart rendering, but doesn't compare with alternative 'commodities' or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cot_dataCOT ReportARead-onlyInspect
Get weekly CFTC Commitment of Traders (COT) positioning data for a currency's FX futures contract on the CME. Use this when the user asks about speculator positioning, non-commercial longs vs shorts, hedge-fund FX positioning, or wants to gauge sentiment extremes. Returns weekly snapshots with long/short open interest by trader category. Updated every Friday at 15:30 ET reflecting the Tuesday cutoff. Requires an API key. Supported currencies: AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code for the FX futures contract (case-insensitive). Supported: AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds useful behavioral traits beyond annotations: 'Updated every Friday at 15:30 ET reflecting the Tuesday cutoff' and 'Requires an API key'. No contradictions.
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 concise with approximately 6 sentences. It front-loads the main purpose and usage context. Every sentence provides value, including update schedule, auth, and supported currencies. No waste.
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 the tool has an output schema, the description does not need to explain return values. It covers update schedule, auth requirements, supported currencies, and usage context. For a simple tool with 3 parameters, this is fully adequate.
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 description does not need to add much. It lists supported currencies, which is already in the schema. No additional parameter semantics beyond the schema. Baseline 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?
The description clearly states the tool gets 'weekly CFTC Commitment of Traders (COT) positioning data for a currency's FX futures contract on the CME'. The verb 'Get' and specific resource 'CFTC COT positioning data' are precise. It distinguishes from siblings like commodities and forex by specifying CFTC data, and there is no direct COT data sibling.
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?
The description explicitly says 'Use this when the user asks about speculator positioning, non-commercial longs vs shorts, hedge-fund FX positioning, or wants to gauge sentiment extremes'. This provides clear context. It does not explicitly list when not to use, but the usage guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cot_visual_artifactCOT Visual ArtifactARead-onlyInspect
Same payload as cot_data, but with MCP Apps chart metadata. By default it charts noncommercial net positioning; pass metric to chart another COT field.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | Field to plot from each COT row. Typical values: noncommercial_net, noncommercial_net_zscore, noncommercial_long, noncommercial_short, open_interest. | noncommercial_net |
| currency | Yes | 3-letter ISO currency code for the FX futures contract (case-insensitive). Supported: AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, non-destructive behavior. The description adds that the tool returns chart metadata (beyond raw data) and mentions the default metric. It does not contradict annotations and provides useful context, though it could detail what 'chart metadata' entails.
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?
Two sentences that are front-loaded with the core purpose and a clear instruction for customization. No wasted words.
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 tool with 4 parameters all documented in schema and simple behavior, the description is nearly complete. It lacks an explicit statement about the return format (visual artifact), but the term 'chart metadata' implies it. Overall adequate.
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 each parameter well. The description only adds that the metric defaults to noncommercial_net, which is already in the schema. It provides no additional meaning beyond the schema.
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 clearly states it charts COT data with MCP Apps chart metadata, distinguishing it from cot_data which returns raw data. It specifies the default chart and how to customize via the metric parameter.
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?
The description indicates when to use this tool over cot_data (when a chart is desired) and how to customize the chart. However, it does not explicitly exclude use cases or compare to other visual artifact tools like commodities_visual_artifact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_catalogueIndicator CatalogueARead-onlyInspect
List every macroeconomic indicator FXMacroData publishes for a currency, with units, frequency, and coverage/freshness metadata. ALWAYS call this first when the user asks about a country's macro data — it returns the exact indicator slug strings to pass to indicator_query, release_calendar, and indicator_visual_artifact. Check coverage before calling indicator_query; stale, partial, or unavailable rows are not suitable for real-time carry or inflation analysis. Supported currencies (lowercase 3-letter codes): AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| indicator | No | Optional indicator slug to limit coverage calculation, for example `core_inflation`. Use this when you already know the candidate series. | |
| include_coverage | No | Include coverage/freshness rows with latest_available_date, coverage_quality, has_recent_data, and recent_observation_count. Leave true when deciding whether an indicator is usable before calling indicator_query. | |
| include_capabilities | No | Include machine-readable indicator capabilities when the API supports them, such as supported transformations, history availability, and release-calendar linkage. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint; description does not contradict and adds valuable context: warns about stale/partial data and instructs to check coverage. Adds behavioral detail beyond 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?
Single paragraph of 4-5 sentences, front-loaded with main action, then specific instructions. No wasted words, every sentence 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?
Output schema exists, so return values are documented. Description covers purpose, usage, parameter behavior, and warnings. Complete for a catalogue tool.
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% with clear descriptions. Description adds practical usage guidance: currency lists supported codes, include_coverage is recommended true for usability checks, indicator optional to limit scope. Adds value beyond schema.
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?
Clearly states it lists every macroeconomic indicator for a currency with metadata. Distinguishes from siblings by mentioning it returns indicator slugs for use with indicator_query, release_calendar, indicator_visual_artifact. Verb 'list' is specific and actionable.
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 'ALWAYS call this first when the user asks about a country's macro data' and instructs to check coverage before calling indicator_query. Provides list of supported currencies. Does not explicitly mention when not to use or alternatives, but the context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_impact_replay_taskEvent Impact Replay TaskBRead-onlyInspect
Create a point-in-time replay timeline mapping macro announcements to FX context and heuristic impact markers. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | FX base currency for market context, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | eur |
| quote | No | FX quote currency for market context, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | usd |
| currency | Yes | Currency for macro event series, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| indicator | Yes | Indicator slug for event replay. Supported examples: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. | |
| lookback_events | No | Maximum number of recent events to include in replay. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds that it supports MCP Tasks for async execution, which is useful but does not elaborate on other behaviors like authentication, rate limits, or data freshness. It does not contradict 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 description is very concise (two sentences, 23 words) and front-loaded with the primary purpose. The second sentence about MCP Tasks is relevant but could be integrated for slightly better flow. No wasted words.
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 the tool's complexity (7 parameters, no output schema) and the presence of many sibling tools, the description is too brief. It does not describe the output format or structure (e.g., what a 'replay timeline' looks like), nor does it explain how this tool differs from alternatives like macro_war_room_task or macro_heatmap_task. Lacks sufficient detail for an agent to use it confidently.
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 input schema provides descriptions for all 7 parameters (100% coverage), so the baseline is 3. The description does not add any additional context or meaning beyond what the schema already offers, such as explaining how parameters like 'indicator' or 'currency' interact in the replay timeline.
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 clearly states the tool creates a 'point-in-time replay timeline mapping macro announcements to FX context and heuristic impact markers'. It names the verb ('create') and the resource ('replay timeline'), but does not explicitly differentiate it from sibling tools like indicator_query or macro_heatmap_task, which might also involve macro events.
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?
The description provides no direct guidance on when to use this tool versus its siblings. It only mentions MCP Tasks support for async execution, which is a technical detail, not a usage recommendation. There is no when-not or alternative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_predictionsEvent PredictionsARead-onlyInspect
Return stored forecasts, consensus-style predictions, central-bank projections, survey forecasts, IMF forecasts, nowcasts, or FXMacroData blended predictions for macro announcements. Use this with release_calendar and indicator_query when a report needs actual-vs-consensus, prior-vs-forecast, or event-surprise context. Rows are keyed by announcement_id/date/indicator and include prediction source metadata. Supported currencies: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. Supported indicators: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | One-based page number. When supplied, overrides offset. | |
| limit | No | Maximum prediction groups to return. Defaults to 20; maximum 100. | |
| offset | No | Zero-based prediction-group offset. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound by reference-period date, YYYY-MM-DD. | |
| indicator | Yes | Required indicator slug. Currency-wide prediction reads are not supported. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound by reference-period date, YYYY-MM-DD. | |
| prediction_type | No | Optional forecast type filter, for example market_consensus, market_prediction, model_nowcast, survey, central_bank_forecast, central_bank_projection, imf_weo, or fxmacrodata. | |
| prediction_source | No | Optional source slug filter, for example ecb_spf or philly_fed_spf. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds value by specifying that rows are keyed by announcement_id/date/indicator and include prediction source metadata. No contradictions.
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 front-loaded with purpose and usage context, but it includes lengthy lists of supported currencies and indicators that are also present in the schema, making it unnecessarily verbose.
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?
Despite not detailing pagination, the description covers when to use, what it returns, key structure, and supported values. With an output schema present, it is sufficiently complete for a tool with 9 parameters and many siblings.
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 marginal value beyond schema, such as noting that currency-wide prediction reads are not supported, but much of the list is redundant with the schema.
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 opens with a specific verb+resource: 'Return stored forecasts, consensus-style predictions...' and explicitly distinguishes from sibling tools by stating when to use it with release_calendar and indicator_query.
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?
The description provides clear usage context: 'Use this with release_calendar and indicator_query when a report needs actual-vs-consensus, prior-vs-forecast, or event-surprise context.' It implies when to use but lacks explicit exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forexFX Spot RatesARead-onlyInspect
Get raw historical FX spot-rate rows for a currency pair (e.g. EUR/USD, USD/JPY). Prefer this tool when the user explicitly wants a plain-text table, raw rows, exact values, JSON-like data, or technical-indicator series (SMA, EMA, RSI, MACD, Bollinger Bands, etc.) computed from spot without a chart. If the user asks more generally to show/tell/explain the last few weeks or months of a pair, prefer forex_visual_artifact instead so the client can render a chart. Daily granularity from official central-bank reference rates with full multi-year history. Supported currencies (use lowercase 3-letter codes): AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. Optional indicators parameter accepts a comma-separated list of technical indicator slugs to attach to each row. Supported indicator values: adx_14, atr_14, bollinger_bands, cci_20, donchian_20, ema_12, ema_20, ema_200, ema_26, ema_50, macd, macd_histogram, macd_signal, rsi_14, sma_20, sma_200, sma_50, stochastic_14_3, williams_r_14, all.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. Defaults to today. | |
| indicators | No | Comma-separated technical-indicator slugs to attach to each row. Supported: adx_14, atr_14, bollinger_bands, cci_20, donchian_20, ema_12, ema_20, ema_200, ema_26, ema_50, macd, macd_histogram, macd_signal, rsi_14, sma_20, sma_200, sma_50, stochastic_14_3, williams_r_14, all. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. Defaults to ~5 years ago. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds behavioral context: data is from 'official central-bank reference rates' with 'daily granularity', and the indicators parameter is detailed. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: front-loaded with primary purpose, then usage guidelines, supported currencies, and indicator details. Every sentence adds value, and it avoids redundancy with the schema.
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 the tool's moderate complexity (5 params, 100% schema coverage, output schema present), the description fully covers data source, granularity, supported inputs, and provides usage guidance. No gaps apparent for agent understanding.
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%, and the description adds beyond schema by explaining default date ranges and the purpose of indicators parameter. It also lists supported values and clarifies the comma-separated format, aiding proper parameter construction.
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 clearly states the tool retrieves 'raw historical FX spot-rate rows for a currency pair', specifying the verb, resource, and scope. It distinguishes from the sibling tool forex_visual_artifact by contrasting plain-text tables vs charts.
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?
The description explicitly provides when-to-use vs alternatives: 'Prefer this tool when the user explicitly wants a plain-text table... If the user asks more generally... prefer forex_visual_artifact instead.' It also lists supported currencies, guiding the agent on valid inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forex_visual_artifactFX Visual ArtifactARead-onlyInspect
Same payload as forex, but packaged with MCP Apps chart metadata so compatible clients render an interactive spot-rate chart inline. Prefer this by default for FX pair time-series requests, especially for prompts like 'show me AUD/USD', 'tell me the last 30 days', 'how has EUR/USD moved recently', or any request where a trend view is more useful than raw rows. Only prefer plain forex when the user explicitly asks for a table, raw values, JSON, CSV-style output, or exact row-by-row data.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicators | No | Optional technical indicators to include in the raw payload. Supported: adx_14, atr_14, bollinger_bands, cci_20, donchian_20, ema_12, ema_20, ema_200, ema_26, ema_50, macd, macd_histogram, macd_signal, rsi_14, sma_20, sma_200, sma_50, stochastic_14_3, williams_r_14, all. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that the tool packages the payload 'with MCP Apps chart metadata so compatible clients render an interactive spot-rate chart inline.' This explains the output format but does not disclose other behavioral traits (e.g., rate limits, authorization needs). With annotations covering the safety baseline, a score of 3 is appropriate—the description adds some value but not extensive 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?
The description consists of two concise sentences. The first sentence defines the tool's functionality, and the second provides clear usage guidance. No extraneous information; every word adds value. Front-loaded with the most critical 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?
Given the tool's moderate complexity (5 parameters, no output schema, but annotations present), the description is fairly complete. It explains the relationship to forex, usage context, and output format (interactive chart). However, it does not explicitly describe what the return format looks like (though it is implied to be a visual artifact). The presence of sibling tools makes the guidance crucial, and the description handles that well. A score of 4 reflects that it covers most needs but could be slightly more explicit about the output 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 the schema already documents all 5 parameters thoroughly. The description only mentions 'same payload as forex' without adding any additional meaning beyond what the schema provides. Baseline 3 is correct as the schema handles the parameter documentation fully.
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 clearly states it is the same payload as forex but packaged for chart rendering, specifying 'interactive spot-rate chart inline' and distinguishing from plain forex by use case. It precisely defines the tool's purpose as returning a visual artifact for FX pair time-series requests.
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?
The description provides explicit guidance: 'Prefer this by default for FX pair time-series requests' with concrete examples like 'show me AUD/USD', and clearly states when to use plain forex instead (explicit requests for tables, raw values, JSON, CSV, or row-by-row data). This is excellent disambiguation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_backtest_taskFX Backtest TaskARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote 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_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| strategy | No | Signal mode: carry, momentum, or carry_momentum. | carry_momentum |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. | |
| event_gated | No | When true, only allow positions during release-event windows derived from announcement_datetime on base and quote calendars. | |
| initial_capital | No | Starting capital for equity-curve calculations. | |
| event_window_days | No | Event gate window in days around each release date (0 means release-date only). | |
| momentum_lookback | No | Momentum lookback in observations for the momentum signal. | |
| transaction_cost_bps | No | Per-side transaction cost in basis points applied on position changes. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, and destructiveHint. The description adds that the backtest is transparent and rule-based, and supports async execution via MCP Tasks. No contradiction with annotations, and adds useful context beyond 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?
The description is two sentences long, front-loaded with the core purpose, and adds the async task support detail concisely. No unnecessary words.
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 10 parameters, no output schema, and annotations that already provide safety context, the description adequately explains the tool's function but does not describe return values or output format. Somewhat complete for the complexity level.
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?
Input schema has 100% coverage with descriptions for all 10 parameters. The description does not add significant parameter-specific meaning beyond what the schema already provides, so baseline 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?
Description clearly states the tool runs rule-based FX backtests on historical spot data using carry/momentum signals. It distinguishes from sibling tools like 'fx_trade_setup_task' by focusing on backtesting, not trade setup.
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?
The description mentions support for MCP Tasks via async execution but does not explicitly state when to use this tool over alternatives or provide when-not conditions. Usage context is implied from 'backtest' but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_intraday_reference_ratesIntraday FX Reference RatesARead-onlyInspect
Return subscriber intraday official FX reference-rate observations for one pair. Call fx_reference_universe first to verify pair and source availability.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency code. | |
| quote | Yes | Quote currency code. | |
| end_time | No | Optional inclusive RFC 3339 source timestamp. | |
| start_time | No | Optional inclusive RFC 3339 source timestamp. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool returns observations for one pair and is subscriber-only, but does not disclose data freshness, rate limits, or behavior on missing pairs. Some additional context is provided, but not extensive.
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 consists of two sentences, with the purpose stated first and no extraneous information. Every sentence is essential and efficiently communicates the tool's function and prerequisite.
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 the tool has 4 parameters, an output schema (not shown), and annotations, the description covers the key points: what it returns and the prerequisite call. It could mention time parameter constraints or subscriber restrictions, but the output schema likely covers the return format. The description is adequate for the tool's simplicity.
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% with descriptions for all 4 parameters. The description adds only that the tool works 'for one pair' and advises verification via fx_reference_universe. This adds minimal meaning beyond the schema, so a baseline score 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?
The description clearly states the tool returns 'subscriber intraday official FX reference-rate observations for one pair,' specifying the verb ('return') and the resource ('intraday official FX reference-rate observations'). It distinguishes from siblings by limiting to one pair and referencing fx_reference_universe for pair verification.
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?
The description explicitly instructs to call fx_reference_universe first to verify pair and source availability, providing a clear prerequisite. It does not specify when not to use this tool or mention alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_reference_sourcesFX Reference SourcesARead-onlyInspect
List public official FX reference-rate sources and their source policy before requesting a pair-specific intraday reference-rate series.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true and destructiveHint false. Description adds that it lists sources and policies, which is consistent and provides additional behavioral context about output.
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?
Single sentence that is concise and front-loaded with key purpose and usage guidance. No wasted words.
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 zero parameters, read-only annotation, and existence of output schema, description is complete: it explains what is returned and why it should be used.
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?
No parameters; schema coverage is 100%. Baseline score of 4 is appropriate as description need not add parameter details.
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?
Description clearly states the tool lists public official FX reference-rate sources and their source policy, with specific verb 'List' and resource. It distinguishes from sibling fx_intraday_reference_rates by noting it should be used before requesting pair-specific rates.
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 'before requesting a pair-specific intraday reference-rate series,' providing clear usage context. Does not mention alternative tools or when not to use, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_reference_universeFX Reference Pair UniverseARead-onlyInspect
List the public FX reference-rate pair universe, optionally filtered by currency or source id. Call this before requesting an intraday reference-rate series.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Optional official source id filter. | |
| currency | No | Optional 3-letter currency filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive. Description adds that the universe is public and optional filters, but no behavioral traits beyond 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?
Two sentences with no wasted words. Purpose and usage are front-loaded.
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 simple list tool with output schema present, the description adequately covers purpose, filtering, and prerequisite. No missing elements.
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% with descriptions for both parameters. The description echoes filtering options but does not add new meaning beyond the schema.
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?
Clearly states the verb 'list' and the resource 'public FX reference-rate pair universe'. Distinguishes from siblings by being a prerequisite for intraday reference-rate series.
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 advises to call this before requesting an intraday reference-rate series, providing clear usage context. Does not mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_trade_setup_taskFX Trade Setup TaskARead-onlyInspect
Build a trader-oriented FX pair setup using spot context, macro differentials, upcoming catalyst risk, and optional COT positioning. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| include_cot | No | When true, attempt to include COT positioning context for both legs. | |
| horizon_events | No | Maximum upcoming catalysts per leg to rank. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, reinforcing safe usage. The description adds behavioral details: the tool uses spot context, macro differentials, and optional COT positioning, and supports async execution. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences efficiently communicate purpose and async capability without redundancy. Every phrase adds 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?
All parameters are documented in the schema, but no output schema is provided. The description's phrase 'trader-oriented FX pair setup' is vague regarding return structure, which may force the agent to infer response format from the tool's name and context.
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 value by mapping parameters to concepts like 'upcoming catalyst risk' (horizon_events) and 'COT positioning' (include_cot), helping the agent understand parameter intent beyond schema descriptions.
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 clearly states the tool builds a 'trader-oriented FX pair setup' specifying components like spot context, macro differentials, catalyst risk, and COT positioning. This differentiates from sibling tools like fx_backtest_task or pair_intel_task, though it could be more explicit.
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?
The description mentions async execution via MCP Tasks, which gives a usage context. However, it fails to specify when to prefer this tool over similar task tools (e.g., macro_briefing_task, pair_intel_task) or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indicator_intel_taskIndicator Intelligence TaskARead-onlyInspect
Build an intelligence pack for one indicator by combining chart-ready series data, derived analytics, and nearest release timing context. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicator | Yes | Indicator slug for the given currency. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. The description adds that it combines multiple data types and supports async, which is helpful behavioral context without contradiction.
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?
Two sentences, no fluff. First sentence front-loads the core purpose; second adds async support context. Every word is meaningful.
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?
Adequately describes the tool's output (intelligence pack) and components, but lacks details on return format (e.g., JSON structure, task ID for async). Since no output schema exists, more completeness would help.
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 explains parameters. The description adds no additional insight into parameter values or constraints beyond what the schema provides.
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 specifies a clear verb ('build') and resource ('intelligence pack for one indicator'), with components listed ('chart-ready series data, derived analytics, nearest release timing context'). This distinguishes it from sibling tools like indicator_query (raw data) and indicator_visual_artifact (visuals).
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?
Mentions async execution via MCP Tasks, indicating a specific use case. However, it does not explicitly state when to prefer this tool over siblings (e.g., for comprehensive pack vs raw data), leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indicator_queryIndicator Time SeriesARead-onlyInspect
Get a paginated historical time series of a single macroeconomic indicator for a currency, sourced directly from the official central bank or statistical agency. Use this for CPI/inflation, GDP, unemployment, policy rates, bond yields, payrolls, retail sales, PCE, PPI, trade balance, current account, money supply, and similar series. Each row returns date (value-as-of), val (numeric), and announcement_datetime (when the value was first published — useful for backtest point-in-time integrity). This plain tool returns raw rows for data workflows. Use indicator_visual_artifact when the host should render an MCP App chart. Use limit, offset, or page to page through broad histories; check pagination.next_offset and pagination.page_includes_latest_available in the result. Responses default to official-source rows only; prohibited private aggregator rows are always removed. Always call data_catalogue(currency) first to get the exact indicator slug. USD indicators are free; non-USD requires API key. Supported currencies: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. Supported indicators: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | One-based page number. When supplied, the REST endpoint derives offset as `(page - 1) * limit`. | |
| slug | No | Optional compound `"<currency>:<indicator>"` slug (e.g. `"usd:cpi"`, `"jpy:policy_rate"`). Many small / open tool-calling models concatenate the two parts anyway. When supplied, overrides `currency` and `indicator`. | |
| limit | No | Maximum rows to return from the existing REST pagination path. Defaults to 20; maximum 100. | |
| offset | No | Zero-based row offset after most-recent-first ordering. | |
| currency | No | 3-letter ISO currency code (case-insensitive). Optional if `slug` is provided as a `"usd:cpi"`-style compound. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicator | No | Indicator slug for the given currency. Optional if `slug` is provided as a `"usd:cpi"`-style compound. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. | |
| official_only | No | When true, return only official-source rows and remove explicit fallback observations. Prohibited private aggregator rows are always removed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. The description adds that results are paginated, return raw rows with specific fields (date, val, announcement_datetime), and always remove prohibited private aggregator rows. This is helpful beyond 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 description is well-structured and front-loaded with the core purpose. It is somewhat lengthy due to listing many indicators and parameters, but every sentence adds value. Slightly verbose but clear.
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 the complexity with 9 parameters, 100% schema coverage, no output schema but inline description, the description covers output structure, pagination fields, data source, authentication requirements, and prerequisite calls. It is highly 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?
Schema coverage is 100%, so the schema already documents each parameter. The description mentions the slug format and date bounds but adds little new meaning beyond what is in the schema. Baseline 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?
The description clearly states the tool returns a paginated historical time series of a single macroeconomic indicator for a currency from official sources. It lists many supported indicators and explicitly distinguishes from the sibling tool indicator_visual_artifact, which is for rendering charts.
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?
The description advises calling data_catalogue first to get the exact slug, specifies when to use this tool (data workflows) versus indicator_visual_artifact (chart rendering), and notes that USD indicators are free while non-USD requires an API key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indicator_visual_artifactIndicator Visual ArtifactARead-onlyInspect
Same payload as indicator_query, but also returns MCP Apps metadata so compatible clients (Claude Desktop, ChatGPT, Codex, etc.) render an interactive line chart instead of a JSON dump. Prefer this by default for indicator time-series requests, especially when the user asks to show, tell, explain, compare, inspect a trend, or review a recent window. For broad histories, use the existing limit, offset, or page controls and inspect pagination.next_offset rather than retrying with arbitrary shorter windows. Only fall back to indicator_query when the user explicitly wants a raw table, plain text list, JSON, exact rows, or minimal structured data. Supported currencies: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. Supported indicators: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | One-based page number. When supplied, the REST endpoint derives offset as `(page - 1) * limit`. | |
| limit | No | Maximum rows to render from the existing REST pagination path. Defaults to 20; maximum 100. | |
| offset | No | Zero-based row offset after most-recent-first ordering. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicator | Yes | Indicator slug. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds valuable context about returning visual metadata for rendering and pagination behavior, without contradicting 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?
Description is well-structured and front-loaded with purpose and usage. The list of supported currencies and indicators is lengthy but useful.
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 tool with 7 parameters and no output schema, the description provides comprehensive usage context, fallback conditions, and pagination hints. Minor lack of mention of any date range limits.
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% with descriptions for all 7 parameters. The description adds pagination usage guidance beyond schema, though it repeats supported values also in schema.
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 clearly states the tool's purpose: same payload as indicator_query but returns MCP Apps metadata for visual chart rendering. It distinguishes from the sibling tool indicator_query by specifying the visual output.
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 guidance: 'Prefer this by default for indicator time-series requests' for visualization tasks, and fallback to indicator_query for raw data requests. Also provides pagination best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
known_at_time_taskKnown At Time TaskARead-onlyInspect
Return the slice of a macro series that would have been known at a specific timestamp, using announcement_datetime as the point-in-time integrity boundary. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | Yes | UTC ISO-8601 timestamp or YYYY-MM-DD cutoff. Only rows with announcement_datetime <= this moment are returned. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| indicator | Yes | Indicator slug for the given currency. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds value by explaining the point-in-time logic (announcement_datetime boundary) and async task support, which are behavioral traits not captured in annotations. It does not mention pagination or auth, but for a read query this is adequate.
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 consists of two sentences, front-loaded with the core purpose. Every sentence adds value—the first defines the tool's primary action, the second adds async execution context. There is no waste or redundancy.
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?
The description covers the essential logic and async capability. However, without an output schema, it could briefly mention the return format (e.g., 'returns macro series data points with announcement_datetime <= as_of'). For a 5-parameter tool with 3 required, this is mostly complete but lacking output details.
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% with detailed descriptions and examples for all 5 parameters. The description does not add further parameter-level meaning beyond restating the cutoff logic. Baseline 3 is appropriate since the schema already 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?
The description clearly states the tool returns a 'slice of a macro series known at a specific timestamp' using announcement_datetime, distinguishing it from sibling tools like indicator_query which likely return current data. The specific verb 'return' and resource 'macro series slice' make the purpose unambiguous.
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?
The description explains the tool's function but does not explicitly state when to use it versus alternatives or when not to use it. It mentions async execution support but provides no context on preferred scenarios or exclusions, leaving usage inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
latest_announcementsLatest Macro AnnouncementsARead-onlyInspect
Return the latest stored macroeconomic value for every available indicator in one currency. Use this for a compact current macro snapshot after data_catalogue has confirmed the currency coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'latest stored' adds no new behavioral insight. The description is consistent with annotations but does not elaborate on openWorldHint behavior. Acceptable given annotation coverage.
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 two concise sentences with zero wasted words. It front-loads the purpose and ends with usage guidance, making it efficient and scannable.
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 the tool's simplicity (single parameter, read-only, output schema exists), the description fully covers what the agent needs: purpose, usage context, and prerequisite. No gaps are evident.
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 description coverage for the only parameter (currency), the schema already provides meaning. The tool description adds no extra parameter details, so baseline score 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?
The description clearly states it returns the latest stored macroeconomic value for every indicator in one currency, specifying a verb, resource, and scope. It also distinguishes from siblings by referencing the prerequisite use of data_catalogue.
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?
The description explicitly recommends using this tool for a compact current macro snapshot after data_catalogue confirms currency coverage, providing clear when-to-use guidance. It does not mention when not to use or alternatives, but the context is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
latest_commoditiesLatest Commodity ValuesARead-onlyInspect
Return the latest stored value for every available commodity indicator in one response. This subscriber tool is the batch counterpart to commodities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false. Description adds batch context but no further behavioral details (e.g., no mention of rate limits, auth beyond subscriber).
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?
Two concise sentences, front-loaded, no wasted text.
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 output schema present and good annotations, description sufficiently covers the tool's purpose and scope for a no-parameter tool.
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?
No parameters, schema coverage 100%, so baseline 3. Description adds no parameter info as none are needed.
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?
Description clearly states action ('Return') and resource ('latest stored value for every available commodity indicator') and distinguishes from sibling 'commodities' by calling it the batch counterpart.
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?
Indicates it is a subscriber tool and the batch counterpart to 'commodities', implying use when all indicators are needed. Could be more explicit about when not to use (e.g., single indicator), but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_briefing_taskMacro Briefing TaskARead-onlyInspect
Build a compact macro briefing for a currency by combining catalogue, key macro series, release-calendar, prediction, news, risk-sentiment, COT, seasonality, and FX technical context. Supports MCP Tasks for async execution when clients send a task-augmented request.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds that it supports MCP Tasks for async execution, which is a key behavioral trait. However, it does not discuss performance implications or internal request behavior.
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 a single sentence followed by a note about async support. It is front-loaded with the purpose but could be more structured. Every part is relevant, but there is minor room for tightening.
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 the tool's complexity (combines multiple data sources) and absence of an output schema, the description should hint at what the briefing contains or how it is returned. It lists components but omits output format or structure, leaving a gap for a composite task.
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%, and the description repeats the schema's information about the currency parameter. No additional semantic value is added beyond specifying case-insensitivity and listing supported codes, which is already in the schema.
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 clearly states the tool's action ('Build a compact macro briefing'), the resource ('for a currency'), and the scope by listing the combined sources. It distinguishes itself from sibling tools that focus on individual data types.
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?
The description implies the tool is for generating a comprehensive briefing, but does not explicitly state when to use it versus alternatives (e.g., calling individual data tools or other composite tasks). No when-not-to guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_factorMacro FactorARead-onlyInspect
Return a precomputed macro factor for one currency, with optional stored component scores and source references. Use this for a documented factor value, not as a substitute for inspecting its underlying macro releases.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| factor | Yes | Factor slug, for example monetary_stance. | |
| offset | No | Zero-based row offset. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). | |
| end_date | No | Optional inclusive end date, YYYY-MM-DD. | |
| start_date | No | Optional inclusive start date, YYYY-MM-DD. | |
| include_sources | No | Include public source endpoint references when available. | |
| include_components | No | Include stored component scores when available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and destructiveHint. The description adds that the returned factor includes optional component scores and source references, which is useful. However, it does not disclose pagination behavior (limit, offset) or what happens when no data matches, leaving some gaps beyond 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?
Two succinct sentences that front-load the core purpose. No unnecessary words or repetition. Every sentence adds value.
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?
While the description covers key aspects, it lacks details about the return format (e.g., array of objects) and pagination behavior. Given the complexity of 8 parameters and no output schema, a more complete description would clarify these points.
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 by mentioning 'optional stored component scores and source references' (mapping to include_components and include_sources) and specifying 'for one currency', clarifying the required currency and factor parameters beyond their schema descriptions.
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 clearly states the tool returns a precomputed macro factor for one currency, using specific verbs and resource. It distinguishes from siblings by warning against using it as a substitute for inspecting underlying macro releases, implying a different use case from other macro tools.
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?
The description explicitly states when to use ('for a documented factor value') and when not to ('not as a substitute for inspecting its underlying macro releases'), providing clear context. However, it does not explicitly mention alternative tools like macro_heatmap_task or macro_regime_classifier_task for other factor-related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_heatmap_taskMacro Heatmap TaskARead-onlyInspect
Build a cross-currency macro heatmap from indicator time series and return a matrix with latest values, recent changes, and z-scores. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| currencies | No | Comma-separated 3-letter currency codes (lowercase preferred). Supported values include: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| indicators | No | Comma-separated indicator slugs to include in the matrix. Supported values include: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds value by specifying the output (matrix with latest values, changes, z-scores) and async execution support, which are not in annotations. No contradictions.
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?
Two sentences front-loaded with the core purpose. The mention of MCP Tasks adds some extra detail but could be considered slightly extraneous. Overall 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 4 optional parameters and no output schema, the description explains the return format (matrix with values, changes, z-scores). It is sufficiently complete for an agent to understand what the tool does and what it returns.
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% with descriptions and examples for all 4 parameters. The description does not add extra meaning beyond the schema, so baseline score 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?
Description clearly states the tool builds a cross-currency macro heatmap from indicator time series and returns a matrix with latest values, recent changes, and z-scores. This specific verb+resource combination distinguishes it from sibling tools like commodities, forex, and indicator_intel_task.
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?
No explicit guidance on when to use this tool versus alternatives. The mention of MCP Tasks for async execution hints at a specific context, but there is no direct comparison or exclusion of other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_newsMacro NewsARead-onlyInspect
Return recent official central-bank news and press-release headlines for a currency. Use this when a report needs headline context for central-bank policy, inflation, employment, GDP, trade, fiscal, energy, or commodity narratives. The tool returns official-source headline rows and lightweight keyword-derived affected_indicators and sentiment fields when a headline is classifiable. Supported currencies: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, INR, JPY, MXN, NOK, NZD, PEN, PLN, SEK, SGD, THB, USD, ZAR.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of headline rows to request. | |
| offset | No | Zero-based headline offset. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, INR, JPY, MXN, NOK, NZD, PEN, PLN, SEK, SGD, THB, USD, ZAR. | |
| lookback_days | No | Maximum age of returned headlines in calendar days when headline timestamps are available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds that it returns 'official-source headline rows and lightweight keyword-derived affected_indicators and sentiment fields when a headline is classifiable.' This provides some behavioral detail beyond annotations but does not significantly expand on the annotation-provided traits.
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 consists of two concise sentences. The first sentence clearly states the purpose, and the second adds usage context. Every word serves a purpose without unnecessary elaboration.
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 an output schema present, the description does not need to explain return values. It covers the tool's scope, currency list, and narrative contexts. The description is sufficient for an agent to understand when and how to use the tool.
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 parameters. The description lists supported currencies again but does not add new meaning or usage details beyond what the schema provides. Baseline 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?
The description clearly states the tool returns 'recent official central-bank news and press-release headlines for a currency.' It specifies the verb (return) and resource (news headlines), and lists supported currencies. This distinguishes it from sibling tools like commodities, forex, and release_calendar.
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?
The description explicitly says 'Use this when a report needs headline context for central-bank policy, inflation, employment, GDP, trade, fiscal, energy, or commodity narratives.' It provides clear context for when to use the tool, though it does not explicitly state when not to use it or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_regime_classifier_taskMacro Regime Classifier TaskARead-onlyInspect
Classify a currency's macro regime using policy rate, inflation, GDP, and unemployment context, with explicit assumptions and confidence notes. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by revealing that the tool uses specific macroeconomic data and provides assumptions and confidence notes, plus notes it supports async MCP Tasks.
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?
Two sentences with no wasted words. The first sentence covers core purpose and inputs, and the second explains execution mode. Every sentence 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?
The tool has no output schema, so the description should clarify what the classification result looks like. It mentions assumptions and confidence notes but not the format or possible regime categories, leaving some ambiguity for the agent.
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?
Input schema covers 100% of parameters with descriptions, setting a baseline of 3. The description does not add additional semantic meaning to the parameters beyond what is already in the schema.
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?
Clearly states the tool classifies a currency's macro regime using policy rate, inflation, GDP, and unemployment, with explicit assumptions and confidence notes. This distinguishes it from sibling tools like macro_heatmap_task or indicator_intel_task by specifying the exact inputs and the nature of the output.
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?
The description explains the functionality but provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, cases to avoid, or why one might choose this over similar classification tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_research_pack_taskMacro Research Pack TaskARead-onlyInspect
Bundle catalogue, indicator history, next release timing, and optional FX pair context into one persistent-host-friendly research payload. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Optional FX base currency for pair context. | |
| quote | No | Optional FX quote currency for pair context. | |
| currency | Yes | 3-letter ISO currency code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| indicator | Yes | Indicator slug. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint. The description adds context about the tool producing a 'persistent-host-friendly research payload' and supporting async execution, which is valuable beyond 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?
Two concise sentences deliver all critical information: the bundle contents, payload nature, and async support. No redundant or wasted words.
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 the tool has 6 parameters with complete schema descriptions and no output schema, the description adequately covers the bundled research components and async execution context. It could mention the return format, but the absence is not critical.
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 thoroughly explains each parameter. The description adds minimal extra meaning beyond mentioning 'optional FX pair context', which corresponds to base/quote parameters. Baseline score 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?
The description clearly states the tool bundles catalogue, indicator history, next release timing, and optional FX pair context into a research payload for async execution via MCP Tasks. It distinguishes from sibling tools by specifying the bundled nature and async support.
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?
The description implies usage for async research pack tasks but does not explicitly state when to use this tool versus alternative task tools (e.g., indicator_intel_task, macro_briefing_task). No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_war_room_taskMacro War Room TaskARead-onlyInspect
Build a multi-panel macro market cockpit that combines FX sessions, upcoming release queue, pair context, and generated risk alerts. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Base currency for pair context, 3-letter ISO code (case-insensitive). Defaults to the release currency when omitted. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | No | Quote currency for pair context, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | usd |
| currency | No | Release currency used for queue and spotlight indicator. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | usd |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| indicator | No | Spotlight indicator slug for release context. Supported examples: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | inflation |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false. The description adds the behavioral detail that it supports MCP Tasks for async execution, which is not in annotations. This extra information is valuable for understanding how the tool can be invoked. No contradictions.
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?
Two sentences that front-load the core purpose: first sentence describes what it builds, second adds async capability. No redundant or filler content. Efficient and clear.
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 6 optional parameters and no output schema, the description gives a high-level overview but fails to specify the return format (e.g., JSON object with panels, messages, or visual artifact). It leaves the agent to infer what 'build a cockpit' means in terms of output. Lacks sufficient detail for complete understanding.
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% with good parameter descriptions. The description adds context that the parameters configure the different panels (e.g., base/quote for pair context, currency for release queue, indicator for alerts, dates for range). This adds meaning beyond the individual schema descriptions.
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 clearly states it builds a 'multi-panel macro market cockpit' combining specific components (FX sessions, release queue, pair context, risk alerts). This distinguishes it from sibling tools which focus on individual aspects, and the verb 'Build' combined with the resource description gives a specific 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?
The description does not provide guidance on when to use this tool over siblings. It doesn't mention alternatives or scenarios where this aggregation is preferable to using individual tools like forex, release_calendar, etc. No contextual cues for usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_sessionsFX Market SessionsARead-onlyInspect
Tell the user which FX trading sessions are currently open (Sydney, Tokyo, London, New York) and when the next session opens/closes. Use this when the user asks 'is the market open?', 'when does London open?', or 'which sessions overlap right now?'. Pass an ISO-8601 UTC timestamp via at to get the snapshot for a specific moment instead of now. Accounts for weekends and major banking holidays.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | Optional ISO-8601 UTC timestamp; defaults to now. Use to snapshot session state at a specific moment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so safety is clear. The description adds valuable context about accounting for weekends and holidays, and explains the optional timestamp parameter for specific moments.
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?
Two concise sentences with key information front-loaded. No wasted words; parameter explanation is integrated naturally.
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 the output schema exists and annotations are provided, the description covers purpose, usage, parameter details, and behavioral nuances (weekends/holidays). It is complete for an agent to select and invoke 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% and both description and schema explain the 'at' parameter's purpose and format. The description adds context for its use case beyond the schema's description.
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?
Clearly states the tool tells which FX sessions are open and when next opens/closes. The verb 'tell' and resource 'FX trading sessions' are specific. It does not explicitly distinguish from the sibling 'forex' tool, but the purpose is distinct enough.
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?
Provides explicit when-to-use guidance with example user questions. Does not mention when not to use or suggest alternatives, but covers common use cases well.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_auth_guideMCP Auth GuideARead-onlyInspect
Explain which authentication mode to use for FXMacroData MCP across major clients and platforms. Use this when the user asks whether to use OAuth, an API key, a bearer token, ChatGPT/OpenAI Apps, Claude/Anthropic, Microsoft/VS Code/Copilot-style clients, AstrBot, Cursor, Codex, local scripts, or CI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's mention of 'Explain' confirms read-only behavior. The description adds little beyond annotations, but does not contradict them, earning a baseline score.
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 two sentences: first states purpose, second provides usage guidance. No wasted words, front-loaded with the most important 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?
Given the tool's simplicity (no parameters, no output schema, clear annotations), the description fully covers what the tool does and when to use it. No further information is needed.
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 has zero parameters, so the description does not need to add parameter information. Schema coverage is effectively 100% (empty schema), and the baseline for 0 parameters is 4.
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 clearly states the tool's purpose: explaining authentication modes for FXMacroData MCP across major clients and platforms. It uses a specific verb ('Explain') and resource ('authentication mode'), and distinguishes itself from sibling tools (which are data or task tools) by focusing on authentication guidance.
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?
The description explicitly says 'Use this when the user asks whether to use OAuth, an API key, a bearer token...' providing clear context for when to invoke the tool. While it doesn't include negative examples or alternatives, it is sufficient for a simple guide tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_capabilitiesMCP CapabilitiesARead-onlyInspect
Explain what the FXMacroData MCP server can do, which tools render MCP Apps, which tools return plain rows, what is public versus subscriber-only, and how to choose tools across ChatGPT, Claude, Cursor, Codex, and plain MCP clients. Use this when a user asks what is available, why visuals are not showing, or how to get the same result in a different interface.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, destructiveHint. The description adds value by detailing the scope of explanations (tools, public vs subscriber, etc.). No contradictions.
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?
Two sentences with clear front-loading of purpose and usage guidance. Every sentence is essential and 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?
For a tool with no output schema and zero parameters, the description sufficiently covers the purpose and usage. It could optionally mention return format, but current completeness is adequate.
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?
No parameters, baseline 4. The description does not need to add parameter info as schema coverage is 100%.
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 clearly states that the tool explains the MCP server's capabilities, distinguishing it from sibling tools that perform specific tasks. It uses specific verb 'Explain' and resource 'MCP server capabilities'.
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 specifies when to use this tool: 'when a user asks what is available, why visuals are not showing, or how to get the same result in a different interface.' No alternatives are needed as it is a meta-tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
official_dataset_familyOfficial Dataset FamilyARead-onlyInspect
Get metadata-first official dataset payloads grouped by API endpoint type. Use endpoint_type to pick the API taxonomy group and dataset to choose the specific series family. Supported endpoint types: monetary_policy, fiscal_policy, international_trade, statistics_releases. Supported datasets: auction_metrics, bop, capital_flows, cb_liquidity, credit_conditions, external_debt, fx_intervention, iip, services_trade, treasury_cash, wage_settlements.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset | Yes | Dataset slug within the selected endpoint_type. Supported: auction_metrics, bop, capital_flows, cb_liquidity, credit_conditions, external_debt, fx_intervention, iip, services_trade, treasury_cash, wage_settlements. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). | |
| component | No | Required only when dataset='bop'. Supported bop components: goods_balance, services_balance, primary_income, secondary_income, current_account, capital_account, financial_account. | |
| endpoint_type | Yes | Endpoint taxonomy group from the API structure. Supported: monetary_policy, fiscal_policy, international_trade, statistics_releases. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context (metadata-first, grouped by endpoint type) and lists supported values, which aids understanding of the tool's behavior.
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 two sentences plus a list of supported values, front-loaded with the primary purpose. Every sentence adds necessary context without redundancy.
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?
While the description covers the main selection logic, it does not mention the 'component' parameter, which is conditionally required for the bop dataset. The schema covers this, but for complete context, the description should note this dependency. Output schema exists, so return values are not required.
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%, giving a baseline of 3. The description adds value by explaining the role of endpoint_type and dataset in selecting the series family, and lists supported values, which goes beyond the schema's individual parameter descriptions.
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 clearly states the tool's purpose (Get metadata-first official dataset payloads grouped by API endpoint type) with a specific verb and resource. It distinguishes itself from siblings by focusing on 'official dataset families' but does not explicitly contrast with any sibling tools.
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?
The description explains how to use the tool by selecting endpoint_type and dataset, and lists supported values. However, it provides no guidance on when not to use this tool or mention of alternative tools for similar data retrieval (e.g., data_catalogue).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pair_intel_taskFX Pair Intelligence TaskBRead-onlyInspect
Build an intelligence pack for an FX pair by combining policy-rate spread context, spot-rate context, and release-timing metadata. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that it 'Supports MCP Tasks for async execution', which adds behavioral context beyond annotations. However, it does not fully disclose other behavioral aspects like data freshness or rate limits.
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 two sentences, front-loaded with the core purpose. It is efficient but the second sentence about MCP Tasks could be considered non-essential for basic usage. Still, it's well-structured and not verbose.
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 the lack of an output schema, the description should explain the output format or structure of the 'intelligence pack'. It does not, and it also does not clarify how the optional date parameters affect the result. This leaves significant gaps for the agent.
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% with clear descriptions for each parameter, including examples, types, and constraints. The description does not add supplementary meaning beyond what the schema already provides, so a baseline score 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?
The description clearly states 'Build an intelligence pack for an FX pair' specifying the verb and resource. It mentions combining three contexts, which clarifies the tool's function. However, it does not explicitly differentiate it from sibling tools like macro_briefing_task or fx_trade_setup_task, which also build packs or intelligence.
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?
No guidance is provided on when to use this tool versus alternatives. The description lacks when-to-use, when-not-to-use, or references to sibling tools. The note about MCP Tasks is technical but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingPingARead-onlyInspect
Quick health check that confirms the FXMacroData API and MCP server are reachable. Use this only if other tools fail unexpectedly — it is not needed before normal calls.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds quick health check context and reaffirms non-destructive nature. No contradictions.
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?
Two sentences, front-loaded with purpose. Every sentence adds value; no 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?
Given zero parameters, annotations present, and output schema exists, the description fully covers the tool's role and usage context.
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?
No parameters; schema coverage is 100%. The description does not need to add param semantics. Baseline 4 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?
Clear verb 'Quick health check' specifies action, and 'confirms the FXMacroData API and MCP server are reachable' identifies the resource. Distinguishes from sibling tools by being a connectivity test.
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 states 'Use this only if other tools fail unexpectedly — it is not needed before normal calls.' Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plot_visual_artifactPlot Visual ArtifactARead-onlyInspect
Build a generic MCP Apps chart from one or more FXMacroData endpoint families. Use this for arbitrary plot requests, multi-series charts, and actual-vs-consensus views that need to combine announcements with event_predictions. Supported series sources are announcements, predictions, forex, commodities, and cot. For example, plot USD policy-rate midpoint actuals against market consensus by passing one announcements series for usd/policy_rate_midpoint and one predictions series for usd/policy_rate_midpoint with prediction_type=market_consensus. This tool never fetches arbitrary URLs or runs custom chart code; it only composes approved FXMacroData API surfaces into the comparison chart app.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Base currency for single-series forex plots. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| page | No | One-based page number per source. | |
| limit | No | Maximum rows per source. Defaults to 20; maximum 100. | |
| query | No | Optional natural-language request to preserve in the payload title/context. | |
| quote | No | Quote currency for single-series forex plots. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| title | No | Optional chart title. Defaults to query or an auto-generated title. | |
| y_key | No | Single-series metric field. Defaults by source: val for announcements and commodities, predicted_value for predictions, rate for forex, noncommercial_net for COT. | |
| offset | No | Zero-based row offset per source. | |
| series | No | Optional list of series specs. Each spec supports `source` (announcements, predictions, forex, commodities, cot), `currency`, `indicator`, `base`, `quote`, `label`, `y_key`, `metric`, `prediction_type`, `prediction_source`, `start_date`, `end_date`, `limit`, `offset`, and `page`. | |
| source | No | Single-series source when `series` is omitted. Supported values: announcements, predictions, forex, commodities, cot. | |
| x_axis | No | Field to use as the shared x-axis. Supported: date, announcement_datetime, announcement_datetime_local, generated_at, observation_datetime. | date |
| y_label | No | Optional y-axis label for the chart. | |
| currency | No | Single-series currency for announcements, predictions, or COT. Supported macro currencies: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. Supported COT currencies: AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| indicator | No | Single-series indicator for announcements, predictions, or commodities. Supported macro indicators: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. Supported commodity indicators: crude_oil_inventories, gold, natural_gas, natural_gas_storage, oil_brent, oil_wti, platinum, silver. | |
| chart_kind | No | Initial chart view. Supported: line, area, bar, dot, step. | line |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. | |
| prediction_type | No | Optional prediction type filter for prediction series. | |
| prediction_source | No | Optional prediction source filter for prediction series. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds value by confirming it only composes approved API surfaces and does not execute custom code, reinforcing safety and scope.
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?
Two paragraphs, first defines purpose, second adds constraints and an example. No unnecessary words, front-loaded with key 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?
Given 19 parameters and no output schema, description covers scope, constraints, supported sources, and a usage example. Sufficient for an agent to determine when and how to invoke the tool.
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%, baseline 3. Description enhances with a concrete example showing how to combine announcements and predictions series, clarifying the series parameter's structure and purpose beyond schema descriptions.
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?
Description clearly states verb 'Build' and resource 'generic MCP Apps chart', distinguishes from siblings by specifying use with FXMacroData endpoint families and providing an example combining announcements and predictions.
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 states when to use ('arbitrary plot requests, multi-series charts, actual-vs-consensus views') and what it does not do ('never fetches arbitrary URLs or runs custom chart code'). Implicitly contrasts with single-series chart siblings but does not name them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy_rate_differential_visual_artifactPolicy-Rate Differential Visual ArtifactARead-onlyInspect
Build a two-series chart comparing base and quote policy-rate history to visualize the rate differential setup for an FX pair.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. | |
| start_date | No | Inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is clear. The description adds only that it builds a chart, with no additional behavioral context (e.g., data latency, date range limits, or return format).
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 a single sentence that is front-loaded with the core action and result, with no wasteful words.
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?
While the tool is simple and annotations cover safety, the description lacks details about the output chart (e.g., series appearance, labeling) and any constraints on currency pairs or data availability. Given no output schema, some completeness 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%, with each parameter having a description. The tool description does not add extra semantics beyond the schema, meeting the baseline expectation.
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 clearly states the tool builds a two-series chart comparing base and quote policy-rate history for an FX pair. It uses a specific verb ('Build') and resource ('two-series chart'), and its purpose is distinct from sibling visual artifacts.
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?
The description implies the use case (visualizing rate differential) but does not specify when to use this tool over siblings like forex_visual_artifact or cot_visual_artifact. No explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy_scenario_modeler_taskPolicy Scenario Modeler TaskARead-onlyInspect
Run a policy-rate spread what-if scenario for an FX pair and estimate directional spot impact using an explicit heuristic elasticity assumption. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| shock_bps | No | Policy shock size in basis points (100 bps = 1.00 percentage point). | |
| shock_leg | No | Which leg receives the policy shock: base or quote. | base |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. | |
| policy_shock_bps | No | Optional alias for shock_bps for compatibility with host-side app payloads. | |
| elasticity_per_100bps | No | Heuristic percent change in FX spot for a 100 bps spread change. Used as a scenario assumption, not a forecast guarantee. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, openWorldHint=true, destructiveHint=false. The description aligns by stating it estimates directional impact and is a scenario assumption, not a guarantee. It adds context about async execution and non-forecast nature, enhancing transparency beyond 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 description is two sentences, front-loaded with the core action and key qualifier (heuristic elasticity). Every part is purposeful, with no redundancy or 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?
Given the tool's moderate complexity (8 parameters, no output schema), the description provides sufficient context: what the tool does, its async support, and the heuristic nature. It does not describe return values, but that is acceptable without output schema.
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% with descriptions for all 8 parameters. The description adds value by clarifying that elasticity_per_100bps is a heuristic assumption and that policy_shock_bps is an alias. This provides meaning beyond schema alone, though not extensive.
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 clearly states the tool runs a policy-rate spread what-if scenario for an FX pair and estimates directional spot impact with a heuristic elasticity assumption. It distinguishes itself from siblings by specifying the scenario and elasticity approach, making the purpose specific and unambiguous.
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?
The description explains the tool is for 'what-if' scenarios with an explicit elasticity heuristic, and mentions async execution support. While it implies comparison to other FX tools via sibling list, it lacks explicit 'when not to use' or named alternatives, reducing guidance slightly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio_risk_engine_taskPortfolio Risk Engine TaskARead-onlyInspect
Analyze a multi-position FX book for concentration, stress exposure, and event-driven catalyst risk. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| horizon_events | No | Maximum release events to consider per currency leg. | |
| positions_json | Yes | JSON array of FX positions. Each item should include base, quote, side (long/short), and notional. Example: [{"base":"eur","quote":"usd","side":"long","notional":100000}] | |
| stress_shock_pct | No | Stress shock in percent applied to each pair. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, openWorldHint=true, and destructiveHint=false, which the description complements by stating the tool analyzes risk and supports async tasks. It provides behavioral context beyond annotations (e.g., async execution), but does not detail what 'event-driven catalyst risk' entails or the output format.
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?
Two sentences, no fluff, front-loaded with purpose. Every sentence adds value. Highly concise for a tool with 3 parameters and no output schema.
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 could mention the output format (e.g., 'returns a risk report'). It also lacks guidance on when to use this tool vs. similar sibling tasks. Adequate but incomplete.
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% with each parameter having a description and examples. The tool description does not add meaning beyond the schema; it only provides high-level context. Baseline 3 is appropriate as the schema already handles parameter semantics adequately.
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 clearly states the tool's purpose: 'Analyze a multi-position FX book for concentration, stress exposure, and event-driven catalyst risk.' The verb 'Analyze' and the specific resource 'multi-position FX book' precisely define its function, distinguishing it from sibling tools that handle data retrieval or other analyses.
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?
The description mentions 'Supports MCP Tasks for async execution when clients send task-augmented requests,' which provides invocation context but does not explicitly guide when to use this tool over alternatives like fx_backtest_task or macro_briefing_task. No exclusions or comparative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_releasesOfficial Press ReleasesARead-onlyInspect
Return the public central-bank press-release archive for a currency without adding derived sentiment or indicator classifications. Use macro_news when a headline summary is useful; use this tool when the original official release rows matter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| offset | No | Zero-based row offset. | |
| currency | Yes | 3-letter ISO currency code (case-insensitive). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already confirm idempotent read-only behavior. The description adds value by specifying that the tool does not add derived sentiment or indicator classifications, and that it returns public data. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the purpose, second provides usage guidance. Every sentence earns its place with no unnecessary words.
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 the presence of output schema, annotations, and 100% schema coverage, the description provides all necessary context: what the tool does, when to use it, and the nature of the output. No gaps identified.
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% with adequate parameter descriptions. The description does not add additional information about parameters beyond what is in the schema, so baseline score 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?
The description clearly states the tool returns the public central-bank press-release archive for a currency, without added sentiment or indicator classifications. It distinguishes itself from the sibling tool macro_news by specifying that this tool provides original official release rows, not summaries.
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 tells when to use this tool (when original official release rows matter) versus the alternative macro_news (when headline summary is useful). This provides clear decision guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quant_scenario_lab_taskQuant Scenario Lab TaskBRead-onlyInspect
Run an expanded quant-style policy scenario for an FX pair with deterministic projection, stress percentiles, and horizon assumptions. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code (case-insensitive). Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| shock_bps | No | Policy shock size in basis points (100 bps = 1.00 percentage point). | |
| shock_leg | No | Which leg receives the policy shock: base or quote. | base |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. | |
| horizon_days | No | Scenario horizon in calendar days. | |
| elasticity_per_100bps | No | Heuristic percent FX move per 100 bps spread change. | |
| annualized_volatility_pct | No | Annualized volatility assumption (percent) for stress-band construction. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds async execution context. However, it does not elaborate on the open world behavior (e.g., external API calls) or other side effects, leaving gaps beyond 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 description is short (two sentences) and front-loaded with the main purpose. The second sentence adds value about async support. Every sentence earns its place, though it could be slightly more structured.
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 the tool has 9 parameters and no output schema, the description is too minimal. It fails to explain what the output looks like, the meaning of 'expanded quant-style', or how the returned data is structured, leaving the agent with insufficient context to use the tool effectively.
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 baseline is 3. The description does not add any parameter-specific meaning beyond what is already in the schema, such as clarifying the shock or elasticity 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?
The description clearly states it runs an expanded quant-style policy scenario for an FX pair, specifying deterministic projection, stress percentiles, and horizon assumptions. However, it does not explicitly distinguish from the similar sibling 'policy_scenario_modeler_task', so it loses the top score.
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?
No guidance is provided on when to use this tool versus alternatives like 'policy_scenario_modeler_task' or 'fx_backtest_task'. The description fails to mention use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_curveRate Curve AnalyticsARead-onlyInspect
Return official government-nominal curve nodes, slopes, or derived forward segments for one currency. This is a subscriber data tool and preserves the endpoint's requested view and method metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional target date, YYYY-MM-DD. | |
| view | No | Curve view: nodes, slopes, or forwards. | nodes |
| method | No | Forward derivation method when view is forwards. | derived_from_spot_nodes |
| metric | No | Curve metric. | spot |
| currency | Yes | 3-letter currency code. | |
| curve_family | No | Official curve family. | government_nominal |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by noting it is a subscriber data tool (implying access restrictions) and that it preserves endpoint metadata. This provides additional behavioral context beyond 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 description is two sentences, front-loaded with the primary action, and contains no unnecessary words. Every sentence adds value.
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 the presence of an output schema, the description does not need to explain return values. It adequately covers the tool's purpose and subscriber data nature, but could briefly mention required authentication or rate limits.
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?
Input schema has 100% description coverage, so the baseline is 3. The description does not add new parameter-specific details beyond what the schema provides; it only summarizes the overall function.
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 clearly states the tool returns official government-nominal curve nodes, slopes, or derived forward segments for one currency. It uses specific verbs ('Return') and resource types, differentiating it from sibling tools focused on other financial data like commodities or forex.
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?
The description mentions it is a subscriber data tool but does not explicitly state when to use it versus alternatives or provide exclusion criteria. The context implies usage for government nominal curve data, but no direct comparison to siblings is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_differentialsPair Rate DifferentialsBRead-onlyInspect
Return the stored or derived rate differential for one FX pair. Use the returned measure, rate type, curve family, and tenor metadata when explaining the result.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency code. | |
| limit | No | Maximum rows to return. | |
| quote | Yes | Quote currency code. | |
| offset | No | Zero-based row offset. | |
| measure | No | Shared rate measure to compare across the pair. | auto |
| end_date | No | Optional inclusive end date, YYYY-MM-DD. | |
| rate_type | No | Differential type: spot or forward. | spot |
| start_date | No | Optional inclusive start date, YYYY-MM-DD. | |
| curve_family | No | Curve family when rate_type is forward. | government_nominal |
| end_tenor_years | No | End tenor in years for forward differentials. | |
| start_tenor_years | No | Start tenor in years for forward differentials. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint. The description adds minimal context ('stored or derived'), which implies possible computation but does not reveal further details like authentication or rate limits.
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?
Two concise sentences, front-loaded with the core action. No wasted words; structure is efficient and clear.
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 11 parameters, an output schema, and full schema coverage, the description is minimally complete. It hints at return fields but could better summarize the tool's role relative to its many parameters.
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 does not add meaning beyond schema; it mentions using returned metadata but does not clarify parameter roles or relationships.
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 clearly states it returns the stored or derived rate differential for one FX pair, using a specific verb and resource. However, it does not distinguish from sibling tools like `policy_rate_differential_visual_artifact`, which may overlap.
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?
No guidance on when to use this tool versus alternatives (e.g., `policy_rate_differential_visual_artifact`). The description only hints at post-use behavior (explaining result) but lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_calendarRelease CalendarARead-onlyInspect
Get upcoming scheduled macroeconomic release timestamps for a currency. Use this when the user asks 'when is the next CPI/GDP/payrolls/policy decision', or to plan a trade around a known release. Returns ISO-8601 announcement_datetime values in UTC plus market-local timestamps. Pass timezone for an additional announcement_datetime_requested_timezone field. Each row has a release string with the indicator name and a currency code. Unbounded calls return future releases only; do not show stale past rows unless the user explicitly asks for historical/past calendar data. Consumer-facing clients should present the returned markdown agenda or render the Release Calendar App resource; do not summarize this tool as only a row count. Pass an optional indicator filter to narrow to a single series. Pass optional start_date and end_date bounds when the user mentions a month, week, day, or explicit date range. Supported currencies: AED, ARS, AUD, BOB, BRL, CAD, CHF, CLP, CNH, CNY, COMM, COP, CZK, DKK, DZD, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PEN, PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR. Supported indicators: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AED, ARS, AUD, BOB, BRL, CAD, CHF, CLP, CNH, CNY, COMM, COP, CZK, DKK, DZD, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PEN, PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| timezone | No | Optional IANA timezone for an additional converted timestamp, for example America/Sao_Paulo. | |
| indicator | No | Optional indicator slug to narrow results. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false. The description adds behavioral details: returns ISO-8601 datetimes, market-local timestamps, optional timezone conversion, and the constraint that unbounded calls return only future releases. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose first, followed by usage guidelines and parameter details. However, it includes a lengthy list of supported currencies and indicators that are already present in the schema, which adds redundancy and reduces conciseness. While functional, it could be more streamlined.
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 the tool has 5 parameters, no output schema, and annotations, the description covers the return format (ISO-8601 datetimes, row structure with release and currency), behavioral constraints (future-only), and parameter usage. It does not mention pagination or rate limits, but the openWorldHint annotation suggests possibly unbounded results, and the description addresses this with 'Unbounded calls return future releases only'. Overall, fairly complete for a read-only list tool.
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%. The description adds value beyond the schema by providing usage context: e.g., 'Pass `start_date` and `end_date` bounds when the user mentions a month, week, day, or explicit date range' and 'Pass `timezone` for an additional `announcement_datetime_requested_timezone` field'. This enhances understanding of parameter semantics.
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 clearly states 'Get upcoming scheduled macroeconomic release timestamps for a currency' and gives specific use cases like 'when the user asks when is the next CPI/GDP/payrolls/policy decision'. It distinguishes from sibling tools like release_calendar_visual_artifact by mentioning that consumer-facing clients should render the resource, implying this tool returns data, not visuals.
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?
The description explicitly states when to use the tool and provides guidance on parameters like start_date and end_date. It also says 'Unbounded calls return future releases only; do not show stale past rows unless the user explicitly asks for historical/past calendar data'. However, it does not explicitly mention when not to use this tool or compare with alternatives like indicator_query or macro_briefing_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_calendar_visual_artifactRelease Calendar Visual ArtifactARead-onlyInspect
Same payload as release_calendar, but named as an explicit visual artifact tool so compatible MCP Apps clients render the interactive Release Calendar App inline. Prefer this by default when the user asks to show, display, visualize, or render a macro release calendar, especially for prompts like 'show me the AUD release calendar'. Only prefer plain release_calendar when the user explicitly asks for a raw table, JSON, exact rows, or text-only output. Pass optional indicator, start_date, and end_date filters when the user names a specific series, month, week, day, or date range. Pass timezone when the user asks for local times in a specific city or region. Supported currencies: AED, ARS, AUD, BOB, BRL, CAD, CHF, CLP, CNH, CNY, COMM, COP, CZK, DKK, DZD, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PEN, PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR. Supported indicators: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | 3-letter ISO currency code (case-insensitive). Supported: AED, ARS, AUD, BOB, BRL, CAD, CHF, CLP, CNH, CNY, COMM, COP, CZK, DKK, DZD, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PEN, PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR. | |
| end_date | No | Optional inclusive upper bound, YYYY-MM-DD. | |
| timezone | No | Optional IANA timezone for an additional converted timestamp, for example America/Sao_Paulo. | |
| indicator | No | Optional indicator slug to narrow results. Supported: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages. | |
| start_date | No | Optional inclusive lower bound, YYYY-MM-DD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description repeats that it has the same payload as release_calendar, hinting at non-destructive read-only behavior, which aligns with annotations (readOnlyHint=true, destructiveHint=false). However, it does not disclose additional behavioral traits beyond what annotations already provide, such as rate limits or specific output format.
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 well-structured and front-loaded with the core purpose. It then provides usage guidelines and parameter tips. However, it repeats the full lists of currencies and indicators which are already in the schema, making it longer than necessary.
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 the tool's simplicity (5 parameters, all documented, read-only annotations), the description covers the purpose, usage, parameter guidance, and hints at output (visual artifact inline). It could be more explicit about the return type, but overall it is adequately 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?
Schema coverage is 100% and each parameter has a description. The description adds value by providing context on when to use each parameter (e.g., 'when the user names a specific series' for indicator, 'when the user asks for local times' for timezone). This goes beyond the schema's basic descriptions.
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 clearly states the tool's purpose: it is a visual artifact version of release_calendar with the same payload. It distinguishes itself from the sibling release_calendar explicitly by noting it is for visual rendering in compatible apps.
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?
Provides explicit guidance on when to use this tool over release_calendar (when user asks to show/display/visualize) and when to prefer the plain version (raw table/JSON). Also advises when to pass optional parameters like indicator, dates, timezone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_risk_score_taskRelease Risk Score TaskARead-onlyInspect
Score upcoming releases for a currency pair using release-calendar proximity and indicator-level heuristics. Supports MCP Tasks for async execution when clients send task-augmented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| quote | Yes | Quote currency, 3-letter ISO code. Supported: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD. | |
| horizon_events | No | Maximum release events per currency to score. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool uses heuristics and supports async execution, which are useful beyond the structured annotations. No contradictions.
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?
Two sentences: first defines the core purpose, second explains the async capability. No filler, front-loaded, and every word adds value.
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 omits what the 'score' looks like (e.g., value range, format). For a task tool, this is a notable gap. Otherwise adequate for a simple read operation.
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%, with each parameter well-described via description and examples. The tool-level description does not add extra parameter details, so it meets the baseline of 3.
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 clearly states the tool 'scores upcoming releases for a currency pair' using specific methods (release-calendar proximity and indicator-level heuristics). This distinguishes it from sibling tools like release_calendar which lists events rather than scoring risk.
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?
The description mentions async execution via MCP Tasks but provides no guidance on when to use this tool versus alternatives like event_impact_replay_task or macro_briefing_task. An agent would need to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
risk_sentimentGlobal Risk SentimentARead-onlyInspect
Return the global risk-on/risk-off sentiment series used for FX regime analysis. The result includes a derived composite score, regime label, component contributions, pagination, and data_quality metadata. Use this for cross-asset regime context before classifying high-beta, safe-haven, commodity, or USD-defensive FX conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | Optional inclusive end date in YYYY-MM-DD format. | |
| start_date | No | Optional inclusive start date in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. The description adds details on output components (composite score, regime label, pagination, data quality), which provides useful behavioral context beyond annotations and does not contradict 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?
The description is concise with two sentences that front-load the core purpose and immediately follow with usage guidance. Every sentence adds value with no redundancy.
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 the tool's simplicity (two optional date params, output schema exists), the description adequately covers purpose, usage context, and key output components. It is sufficiently complete for a read-only query tool.
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 both parameters. The tool description does not add any parameter-specific information beyond what the schema already provides, so it meets the baseline expectation.
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 clearly states the tool returns a global risk-on/off sentiment series for FX regime analysis, including specific output components. It also differentiates from siblings by specifying its use as a precursor to classification of FX conditions.
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?
The description explicitly advises using this tool for cross-asset regime context before classifying certain FX conditions. While it lacks explicit 'when not to use' guidance, the context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seasonalityFX SeasonalityARead-onlyInspect
Get monthly return seasonality for an FX pair or XAU/USD. Use this when the user asks for seasonal patterns, month-of-year tendency, historical monthly win rate, or XAUUSD/gold seasonality. Returns monthly average return, median return, win rate, sample size, dispersion, and per-year monthly returns from stored FX or gold series.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Optional month filter, 1-12 or name such as July. | |
| end_date | No | Inclusive upper bound, YYYY-MM-DD. Defaults to today. | |
| instrument | Yes | Six-letter pair such as EURUSD, AUDUSD, USDJPY, or XAUUSD. Slashes and separators are accepted by the REST endpoint only when passed as a single string. | |
| lookback_years | No | Number of years to include, 2-30. Defaults to 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false) already indicate safe, non-destructive behavior. The description adds transparency by detailing the return fields (e.g., monthly average, median return, win rate, sample size), providing full context without contradicting 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 description is concise at two sentences, front-loading the purpose and usage. It is well-structured but could be slightly more scannable, e.g., using bullet points for output fields.
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 the tool's moderate complexity, the presence of an output schema (indicated true) reduces the need to detail returns. The description covers inputs and outputs adequately, though it lacks examples of parameter combinations.
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 baseline is 3. The description does not add new parameter semantics beyond what the schema provides; it only lists output data. Hence, no extra value for parameter understanding.
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 clearly states the tool retrieves monthly return seasonality for FX pairs or XAU/USD. It lists specific use cases like seasonal patterns, month-of-year tendency, and historical win rate, which distinguishes it from sibling tools that likely provide other analytics.
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?
The description explicitly advises usage when the user asks for seasonal patterns, month-of-year tendency, or gold seasonality. It does not, however, mention when to avoid this tool or suggest alternatives like other forecast tools, which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_for_mcp_accessSubscribe For MCP AccessARead-onlyInspect
Open subscription options when a user needs to unlock MCP app visuals, charts, and advanced analytical tools. Returns a direct checkout path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the non-destructive and navigational aspects. The description adds that it returns a checkout path, but does not elaborate on authentication requirements or potential side effects (e.g., opening an external site). The description adds marginal value beyond 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 description is two sentences, front-loaded with the action, and contains no unnecessary words. Every word serves a 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?
The tool is simple with no parameters, and the description covers its purpose and return value. It could mention if a user session is required or if the checkout path opens in a new window, but for a basic subscription access tool, it is sufficiently 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 has zero parameters, and schema coverage is 100% (no parameters to document). According to rubric, 0 params = baseline 4. The description does not need to add parameter information.
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 clearly states the tool's action ('Open subscription options') and its trigger condition ('when a user needs to unlock MCP app visuals, charts, and advanced analytical tools'). It also specifies the outcome ('Returns a direct checkout path'). This distinguishes it from the sibling tools, which are focused on data retrieval and analysis rather than subscription management.
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?
The description explicitly describes when to use this tool: when a user needs to unlock premium features. It implies that for free features, other sibling tools (e.g., indicator_query) would be used. However, it does not provide explicit exclusions or a list of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!