Inspiration

Every month the US publishes data that moves every mortgage and portfolio. Voice assistants read out the headline. Anyone who trades rates asks the next question: is that a big number? I wanted Alexa to answer that question, not just the first one.

What it does

Macro Desk is an MCP server for Alexa+. Ask about CPI, core PCE, payrolls, unemployment, retail sales, industrial production, jobless claims, GDP, the fed funds rate, breakevens or Treasury yields. You get the latest figure in one or two spoken sentences. When the move was unusual, Alexa adds how unusual it was: "the monthly change of 0.6 percent was a bigger than usual move, 1.9 standard deviations above its three-year average." It also gives a 30-second briefing led by whatever moved most, says whether the yield curve is inverted and since when, and places the economy in a growth/inflation regime (goldilocks, reflation, stagflation or disinflationary slowdown).

How I built it

  • Python MCP server over Streamable HTTP, stateless. It negotiates protocol 2025-03-26 (what the Alexa+ client sends) through 2025-11-25.
  • Each release is split into its headline (what people quote) and its innovation (the new information). Inflation is quoted year on year but scored on the monthly change, because the change in a year-on-year rate is dominated by base effects. The innovation is z-scored against the prior three years. The "largest since" date is the last move at least as large in the same direction.
  • Every tool returns structured content with a speech field written for text-to-speech: no symbols, one number per clause, the shock score only when it's worth hearing. The numbers behind it come along too.
  • Data comes from FRED. Requests never wait on the network: the cache is primed from a bundled snapshot and refreshed in the background. A cold start answers in about 25 ms, well inside Alexa+'s 500 ms budget.
  • Runs on Amazon ECS Express Mode on Graviton (ARM64) behind HTTPS, with the image in Amazon ECR. The same server hosts the add-on's privacy policy, terms and listing art.
  • 40 tests, covering each protocol version, structured output, sub-500 ms answers with FRED unreachable, and the analytics.

Challenges

  • The Alexa+ client initializes at MCP 2025-03-26 while the track asks for 2025-11-25 or later, so the server supports both, with a test for each.
  • AWS's own MCP host, AgentCore Runtime, always requires inbound auth. Alexa+'s OAuth discovery doesn't support that, so I moved to ECS Express Mode for a public endpoint.
  • A cold briefing touches twelve FRED series and took 13 seconds serially. A stale-while-revalidate cache brought it to milliseconds.

Accomplishments

A spoken answer that carries real statistical judgement, and stays fast and correct when the upstream source is down.

What I learned

Designing for voice is mostly subtraction: one number per clause, and only mention the shock score when it changes what you'd do.

What's next

Consensus forecasts to score surprises against expectations rather than history. Coverage beyond the US. A visual card for Echo Show.

Built With

Share this project:

Updates

Submission history