Skip to main content
Glama

macropulse

MacroPulse: Real-time macro intelligence for forex and CFD traders. All endpoints require x402 payment (USDC on Base mainnet) via the PAYMENT-SIGNATURE header.

Coverage: Global

Endpoints: • session-brief ($0.10): Forex session brief • event-pulse ($0.20): Economic event deep-dive • crypto-pulse ($0.05): Crypto market context • commodities-pulse ($0.10): Commodities brief • calendar ($0.10): Weekly economic calendar • cot ($0.02): CFTC Commitments of Traders positioning — 21 markets, deterministic • bls-series ($0.02): US labor statistics by BLS series id — deterministic, computed YoY • eia-inventory ($0.10): Weekly EIA petroleum inventory intelligence for energy and macro agents — crude, gasoline and distillate builds and draws versus expectations, with the oil-price and CAD/NOK implications. • intermarket ($0.15): Cross-asset intermarket synthesis for macro agents — bond yields, equities, commodities and FX read together to surface the dominant regime and the divergences that tend to lead price. • rates-differential ($0.10): Interest-rate differential and carry intelligence for FX agents — G10 policy rates, yield spreads and the carry-trade map that drives durable currency trends. • regime ($0.10): Macro regime classifier for multi-asset agents — labels the current environment (risk-on/off, reflation, stagflation, tightening) and its directional implications for FX, rates and equities. • convert ($0.005): Currency conversion at the official ECB reference rate • is-open ($0.005): Is the stock market open right now? Exchange status, trading hours and holiday calendar • us ($0.01): Official US macro indicators read from Chainlink contracts (GDP, PCE, SOFR) • us-revisions ($0.02): The revision trail of a US macro series, from immutable on-chain round history • sentiment ($0.05): Real-time directional sentiment for any forex pair or gold — retail crowd positioning, COT institutional alignment, and a clear contrarian bias call. Built for FX trading and advisor agents.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
atNoISO 8601 timestamp to evaluate. Default: now.
toNoTarget currency, or a comma-separated list (max 30).
dateNoYYYY-MM-DD. Returns that day's ECB fixing, or the last fixing on or before it (whose date is reported back in `date`, with is_last_available_fixing=true). Omit for the latest.
fromNoSource currency, ISO 4217 alpha-3.
langNoResponse language code (en | es | fr | de | zh | hi | ar | pt | ja | ko | etc.)
pairNopair
eventNoEconomic event identifier
limitNoHow many prints to walk back. Default 8, max 24.
actionYesWhich endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | calendar | cot | bls-series | eia-inventory | intermarket | rates-differential | regime | convert | is-open | us | us-revisions | sentiment
amountNoAmount to convert. Default 1 (the raw rate).
seriesNoUp to 5 comma-separated BLS series ids or aliases
sessionNoTrading session. Auto-detected from UTC time if omitted.
exchangeNoExchange code. Aliases accepted (TSE->JPX, XNYS->NYSE, FRANKFURT->XETRA, ...).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Which endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | calendar | cot | bls-series | eia-inventory | intermarket | rates-differential | regime | fx-convert | market-is-open | macro-us | macro-us-revisions | sentiment"New value: +"Which endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | calendar | cot | bls-series | eia-inventory | intermarket | rates-differential | regime | convert | is-open | us | us-revisions | sentiment"
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "session-brief",
      -  "event-pulse",
      -  "crypto-pulse",
      -  "commodities-pulse",
      -  "calendar",
      -  "cot",
      -  "bls-series",
      -  "eia-inventory",
      -  "intermarket",
      -  "rates-differential",
      -  "regime",
      -  "fx-convert",
      -  "market-is-open",
      -  "macro-us",
      -  "macro-us-revisions",
      -  "sentiment"
      -]New value: +[
      +  "session-brief",
      +  "event-pulse",
      +  "crypto-pulse",
      +  "commodities-pulse",
      +  "calendar",
      +  "cot",
      +  "bls-series",
      +  "eia-inventory",
      +  "intermarket",
      +  "rates-differential",
      +  "regime",
      +  "convert",
      +  "is-open",
      +  "us",
      +  "us-revisions",
      +  "sentiment"
      +]
    • changedInput schema / properties / amount / description
      Previous value: -"amount to convert"New value: +"Amount to convert. Default 1 (the raw rate)."
    • addedInput schema / properties / at
      Added value: +{
      +  "description": "ISO 8601 timestamp to evaluate. Default: now.",
      +  "type": "string"
      +}
    • addedInput schema / properties / date
      Added value: +{
      +  "description": "YYYY-MM-DD. Returns that day's ECB fixing, or the last fixing on or before it (whose date is reported back in `date`, with is_last_available_fixing=true). Omit for the latest.",
      +  "type": "string"
      +}
    • changedInput schema / properties / exchange / description
      Previous value: -"e.g. NYSE, LSE, TSE"New value: +"Exchange code. Aliases accepted (TSE->JPX, XNYS->NYSE, FRANKFURT->XETRA, ...)."
    • changedInput schema / properties / from / description
      Previous value: -"ISO currency e.g. USD"New value: +"Source currency, ISO 4217 alpha-3."
    • removedInput schema / properties / group
      Removed value: -{
      -  "description": "fx | commodities | grains | financials | all",
      -  "type": "string"
      -}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "How many prints to walk back. Default 8, max 24.",
      +  "type": "string"
      +}
    • changedInput schema / properties / series / description
      Previous value: -"Up to 5 comma-separated BLS series ids or aliases — e.g. cpi,unemployment"New value: +"Up to 5 comma-separated BLS series ids or aliases"
    • changedInput schema / properties / to / description
      Previous value: -"ISO currency e.g. EUR"New value: +"Target currency, or a comma-separated list (max 30)."
  2. Changed3 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Which endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | calendar | cot | eia-inventory | intermarket | rates-differential | regime | fx-convert | market-is-open | macro-us | macro-us-revisions | sentiment"New value: +"Which endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | calendar | cot | bls-series | eia-inventory | intermarket | rates-differential | regime | fx-convert | market-is-open | macro-us | macro-us-revisions | sentiment"
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "session-brief",
      -  "event-pulse",
      -  "crypto-pulse",
      -  "commodities-pulse",
      -  "calendar",
      -  "cot",
      -  "eia-inventory",
      -  "intermarket",
      -  "rates-differential",
      -  "regime",
      -  "fx-convert",
      -  "market-is-open",
      -  "macro-us",
      -  "macro-us-revisions",
      -  "sentiment"
      -]New value: +[
      +  "session-brief",
      +  "event-pulse",
      +  "crypto-pulse",
      +  "commodities-pulse",
      +  "calendar",
      +  "cot",
      +  "bls-series",
      +  "eia-inventory",
      +  "intermarket",
      +  "rates-differential",
      +  "regime",
      +  "fx-convert",
      +  "market-is-open",
      +  "macro-us",
      +  "macro-us-revisions",
      +  "sentiment"
      +]
    • changedInput schema / properties / series / description
      Previous value: -"comma-separated filter e.g. gdp_change,sofr"New value: +"Up to 5 comma-separated BLS series ids or aliases — e.g. cpi,unemployment"
  3. Changed8 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Which endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | equities-pulse | calendar | cot | eia-inventory | intermarket | rates-differential | regime | sentiment"New value: +"Which endpoint to call. Options: session-brief | event-pulse | crypto-pulse | commodities-pulse | calendar | cot | eia-inventory | intermarket | rates-differential | regime | fx-convert | market-is-open | macro-us | macro-us-revisions | sentiment"
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "session-brief",
      -  "event-pulse",
      -  "crypto-pulse",
      -  "commodities-pulse",
      -  "equities-pulse",
      -  "calendar",
      -  "cot",
      -  "eia-inventory",
      -  "intermarket",
      -  "rates-differential",
      -  "regime",
      -  "sentiment"
      -]New value: +[
      +  "session-brief",
      +  "event-pulse",
      +  "crypto-pulse",
      +  "commodities-pulse",
      +  "calendar",
      +  "cot",
      +  "eia-inventory",
      +  "intermarket",
      +  "rates-differential",
      +  "regime",
      +  "fx-convert",
      +  "market-is-open",
      +  "macro-us",
      +  "macro-us-revisions",
      +  "sentiment"
      +]
    • addedInput schema / properties / amount
      Added value: +{
      +  "description": "amount to convert",
      +  "type": "string"
      +}
    • addedInput schema / properties / exchange
      Added value: +{
      +  "description": "e.g. NYSE, LSE, TSE",
      +  "type": "string"
      +}
    • addedInput schema / properties / from
      Added value: +{
      +  "description": "ISO currency e.g. USD",
      +  "type": "string"
      +}
    • addedInput schema / properties / group
      Added value: +{
      +  "description": "fx | commodities | grains | financials | all",
      +  "type": "string"
      +}
    • addedInput schema / properties / series
      Added value: +{
      +  "description": "comma-separated filter e.g. gdp_change,sofr",
      +  "type": "string"
      +}
    • addedInput schema / properties / to
      Added value: +{
      +  "description": "ISO currency e.g. EUR",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses critical behavioral traits: all endpoints require x402 payment via PAYMENT-SIGNATURE header, some endpoints are 'deterministic', data comes from 'official ECB reference rate', and 'immutable on-chain round history'. It does not disclose error handling or rate limits, but provides substantial operational context beyond a basic read.

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

Conciseness4/5

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

The description is long but well-structured with a clear intro, payment note, coverage line, and a bulleted endpoint list. Each endpoint gets a one-line explanation that earns its place. While repetitive with the action enum, the added context justifies the length. It could be slightly more compact, but is appropriately sized for 16 endpoints.

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

Completeness3/5

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

The description covers overall purpose, payment, coverage, and endpoint functions, but lacks explicit per-endpoint required parameter mappings. For instance, 'convert' implies need for from/to/amount, and 'bls-series' for series, but these are not stated, risking incomplete invocations. With no output schema, it also omits return structures, though endpoint blurbs hint at content. This is acceptable but has clear gaps for a 13-parameter tool.

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

Parameters4/5

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

Although schema coverage is 100%, the description enriches parameter semantics by clarifying which action values apply to which data need (e.g., 'cot' for positioning, 'bls-series' for labor stats). It also gives contextual hints like 'deterministic, computed YoY' for bls-series, aiding agents in selecting the correct action and understanding output nuances beyond schema descriptions.

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

Purpose5/5

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

The description clearly states this is 'MacroPulse: Real-time macro intelligence for forex and CFD traders,' using a specific verb-resource relationship and listing 16 distinct endpoints with their individual purposes. It differentiates from sibling tools by focusing on macro/market intelligence, not generic AI or other pulse tools.

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

Usage Guidelines4/5

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

The description provides clear context for each endpoint (e.g., 'eia-inventory... for energy and macro agents', 'sentiment... Built for FX trading and advisor agents'), enabling appropriate action selection. However, it does not explicitly state when not to use the tool or mention alternative sibling tools, lacking full exclusionary guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.