top of page

Release Radar - An MCP Server

  • Writer: Som Bandi
    Som Bandi
  • Aug 12
  • 2 min read

Release Radar

An MCP server that reads competitor changelogs

I wanted to know what AI companies were actually shipping. Not what the news said they were shipping, and not what Claude remembered from its training data. The actual releases.

So I built a tool to go read them.


What it does

Release Radar is an MCP server, which means it gives Claude a capability it did not have. Two tools. The first holds the list of companies I track. The second fetches a company's changelog, pulls out the recent entries, and returns them in a consistent format.

Once it is registered, I can ask Claude what shipped at Linear and Vercel last month and it goes and reads both pages itself.

I pointed it at Linear, Vercel, Notion, Figma, and Stripe. Four of the five work.


What went wrong, and what it taught me

Vercel came back with 26 releases. Only 8 were real. My extractor was reading the site's navigation menu as product releases.

Nothing errored. The output was clean, well-formed, and had plausible titles. I caught it because I read the actual text and saw "Explore all products" in the list.

Claude cannot catch that. It has no concept of a navigation bar. It receives 26 entries and reasons about 26 entries. Ask it how much Vercel shipped and the answer is confident, specific, and wrong.

Stripe returned zero, because its changelog loads after the page does and never appears in the raw HTML. Fixing that needs a headless browser, which is a different project, so I left it broken and documented it.

Zero is the better failure. Claude can see an empty list and tell me something is wrong. It cannot tell that a nav menu is not a release.

The takeaway: a tool that feeds a model has to report its own uncertainty. If it returns clean data with no confidence signal, the model trusts it completely, and nothing catches the gap between 26 and 8. That is a design decision, not a bug to fix later.


The part I did not expect

Claude Code wrote every line. My job was deciding what tools should exist, what they return, what happens when they fail, and what the model gets told about them.

That last one matters more than it sounds. The model reads a tool's description and decides on its own whether to call it. Write it vaguely and the tool goes unused, and nobody files a bug. It is product copy for a reader who will never ask a clarifying question.


Known limitations

Local only. No auth, no tests. Stripe unsupported. The extractor is generic rather than per-site, which means it works well on some layouts and poorly on others. That was deliberate, since five custom parsers would break every time one of those companies redesigned.


Repo





 
 
 

Comments


bottom of page