FXMacroData
Purpose
Read-only macroeconomic and FX data from FXMacroData: the indicator catalogue for a currency, the release history of one indicator (CPI, payrolls, policy rate, bond yields and so on, each row with its official source link), upcoming release dates, and daily FX spot rates. Use when the user asks for a macro release, an economic calendar, or an exchange rate.
Currencies: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, HUF, ILS, JPY, KRW, MYR, NGN, NOK, NZD, PEN, SEK, THB, TWD, USD.
Source: the public OpenAPI spec at https://api.fxmacrodata.com/openapi.json and the reference at https://fxmacrodata.com/documentation/reference, both checked on 2026-10-04.
Tooling
All commands go through bin/fxmacrodata.py. Each prints the API's JSON response unchanged.
bashbin/fxmacrodata.py status # GET /v1/health, plus which auth mode is in use bin/fxmacrodata.py catalogue USD # GET /v1/data_catalogue/USD: indicator slugs, units, coverage bin/fxmacrodata.py history USD inflation --limit 12 # GET /v1/announcements/USD/inflation, most recent first bin/fxmacrodata.py history USD non_farm_payrolls --start 2026-01-01 --end 2026-09-30 bin/fxmacrodata.py calendar USD --start 2026-10-01 --end 2026-10-31 # GET /v1/calendar/USD bin/fxmacrodata.py calendar USD --indicator inflation bin/fxmacrodata.py forex EUR USD --limit 20 # GET /v1/forex/EUR/USD (API key required)
history and forex take --start/--end (YYYY-MM-DD) and --limit (1-100). calendar takes --indicator, --start, and --end. Use catalogue to find the indicator slug before calling history.
Auth
- Provider id:
fxmacrodata(credential is collected ascustom.fxmacrodata) - Collection: API key via the secure credential flow (
credentials.request_api_access). Outside Muse, the CLI reads the key from theFXMACRODATA_API_KEYenvironment variable. It never accepts a key as an argument. - Connect placement:
custom_header:X-API-Key(the key is never put in the query string) - Required scopes: none; the API has no scopes. Access depends on the key's plan.
- Allowed hosts:
api.fxmacrodata.com(HTTPS only; redirects to any other host are refused) - Status check:
bin/fxmacrodata.py status. The health check does not need a key;bin/fxmacrodata.py forex EUR USD --limit 1confirms a key works.
Without a key, USD data still works: catalogue, history, and calendar. The catalogue answers for every currency. Keyless USD history is delayed by 15 minutes and limited to the last 90 days. Those responses carry freemium_delay and freemium_window objects, which the CLI also summarises on stderr. Other currencies' history and calendar, and all FX rates, return HTTP 401 api_key_required without a key.
Operating Rules
- This connector is read-only: every call is a GET. It never places trades, changes an account, or sends anything on the user's behalf.
- When
freemium_delay.withheld_countis above zero, a newer release exists but is not shown yet. Say so and do not present the older value as the latest. - When
freemium_windowis present, the history was cut to the last 90 days. Do not describe it as the full series. - Report HTTP errors verbatim (
api_key_required,invalid_api_key, and so on). A 401 means the data needs a key, not that it is missing. - Quote the row's
sourceandsource_urlwhen citing a figure. This is data, not financial advice. - Never print, log, or transmit the key value.
Files
- SKILL.md
- bin/fxmacrodata.py
Maturity
🧪 Draft: keyless USD commands (status, catalogue, history, calendar) were live-tested against api.fxmacrodata.com on 2026-10-04, as was the 401 path for forex and non-USD history. Keyed calls and the Muse credential flow have not been tested end-to-end.


