Skip to main content

FRED API for LLMs — Jintel macro time-series

FRED (Federal Reserve Economic Data) is the canonical source for US macro time-series. The native FRED API is REST, requires a personal API key, returns one series at a time, and ships no agent-friendly tooling. Jintel wraps it behind a typed GraphQL field (macroSeries) and an MCP tool (/tools/macroSeries) so any LLM runtime can pull macro data with the same auth and the same per-query x402 pricing as the rest of the schema.

What's covered

Every FRED series ID. Common picks:

ConceptFRED series ID
Real GDPGDPC1
Nominal GDPGDP
CPI (all urban consumers)CPIAUCSL
Core CPICPILFESL
Federal funds rateFEDFUNDS
Unemployment rateUNRATE
10-year Treasury yieldDGS10
2y/10y spreadT10Y2Y
M2 money supplyM2SL
Industrial productionINDPRO
Consumer sentiment (UMich)UMCSENT
Initial jobless claimsICSA
Case-Shiller home price indexCSUSHPISA

Plus OECD-sourced equivalents already exposed via gdp, inflation, and interestRates for cross-country macro work.

Call from GraphQL

query Macro {
cpi: macroSeries(seriesId: "CPIAUCSL", filter: { since: "2010-01-01" }) {
date
value
}
fedFunds: macroSeries(seriesId: "FEDFUNDS", filter: { since: "2010-01-01" }) {
date
value
}
unrate: macroSeries(seriesId: "UNRATE") {
date
value
}
}

One round trip pulls three series, batched and cached server-side. Compare with three sequential FRED REST calls + manual rate-limit handling.

Call from an MCP-compatible agent

The same field is exposed as the macroSeries MCP tool:

{
"name": "macroSeries",
"arguments": {
"seriesId": "GDPC1",
"filter": { "since": "2015-01-01" }
}
}

Claude Desktop, Cursor, Continue, Cline, Zed, Windsurf, Raycast AI, the OpenAI Responses API, LangChain, and LlamaIndex all see this tool in tools/list once the Jintel MCP server is wired up.

Why agents use Jintel for FRED

  • No personal API key needed. Issue a Jintel Bearer key once (or skip auth entirely with x402 pay-per-query) — the FRED API key is server-side.
  • Batched fan-out. Pull GDP + CPI + fed funds + unemployment in one query alongside any non-macro field. The Mercurius loader deduplicates upstream calls within a request.
  • Typed dates and filters. ArrayFilterInput (since, until, limit, sort) is the same shape across every Jintel time-series, so an agent that learned how to filter Entity.news already knows how to filter macroSeries.
  • Cached + stale fallback. Module-level TTL caches with getStale() fallbacks mean a transient FRED outage still returns last-known-good data instead of null.
  • Cross-data-source joins. Pair macroSeries(seriesId: "FEDFUNDS") with entitiesByTickers to score how rate moves correlate with a watchlist's price history — without leaving the schema.