Release Notes Index

sh.releasesPublished by releases.shOfficial publisherv0.15.2Updated Oct 24, 2026

Release notes and changelogs from across the web, indexed for agents. Also via CLI and REST API.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Remote MCP server that indexes release notes and changelogs across many vendors, letting an assistant search releases, compare versions and follow products.

What you can do
  • Search the registry and release content, including changelog chunks ranked by relevance
  • Browse the catalog of products and sources, organizations, and curated cross-org collections
  • Read a single release in full, or the latest releases filtered by product or organization
  • Resolve a domain to the organization or product that owns it
  • Compare two versions of a package to get the changelog entries and breaking-change verdicts between them
  • Follow organizations or products, read a personalized feed, and manage outbound release webhooks
When to use it
Useful when an assistant needs to answer "what changed?" — before an upgrade, after an incident, or when a dependency starts behaving differently — and when you want release news from many vendors in one normalized feed instead of reading scattered changelog pages.
Requirements
A remote HTTP endpoint; no local package or runtime is needed. Reads are public with no account or API key. Following, personalized feeds and webhooks require a signed-in user, supplied as a user key or an OAuth token.
Before you install
The webhook tool sends requests to an external URL you supply and can create, update, delete, disable or rotate the signing key of a webhook, so treat it as a write. Follow, unfollow and webhook tools need a signed-in user credential; keep that key private. Release content is third-party material and should be cited from the original source URL.

Installation

In SourceWeft

  1. Open Release Notes Index in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/sh.releases%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "release-notes-index": {
      "type": "http",
      "url": "https://agents.releases.sh/mcp"
    }
  }
}

README

[Release Notes Index — the latest product releases, indexed for agents]

Release Notes Index

The latest product releases, indexed for agents.

A registry of release notes from across the web — pulled from vendor changelogs, normalized into one schema, summarized, and queryable from your terminal, your code, or any MCP client. Readable by you and your agent.

releases.sh  ·  Docs  ·  CLI →  ·  Use it  ·  What's in this repo  ·  Develop

[CI] [npm (CLI)] [MCP server] [Ask DeepWiki] [License: Apache-2.0]

This repo is the backend for releases.sh (API · MCP · web · ingest) and the source of the command-line tool.


What is this?

"What changed?" is a question agents and developers ask constantly — before an upgrade, after an incident, when a tool suddenly behaves differently. The answer is scattered across GitHub releases, RSS feeds, changelog pages, and blog posts in a hundred different formats.

Release Notes Index collects those into one registry. It watches hundreds of sources across the vendors developers actually depend on, and for every release stores the original content plus an AI-generated title, summary, and breaking-change classification. Each organization gets a maintained overview of what it shipped recently. The web page a human reads and the JSON an agent fetches are the same content.

This repo is the source of the canonical deployment at releases.sh: the API worker (the authoritative data plane), the MCP server, the web frontend, and the ingest pipeline + agent harness that keep the registry fresh. The user-facing CLI lives in apps/cli/ and ships from this repo (npm + Homebrew).

Use it

No account or API key needed for reads — all four surfaces are public.

MCP — hosted at agents.releases.sh/mcp (mcp.releases.sh/mcp still works), listed in the MCP Registry as sh.releases/mcp, and in the Claude connector directory for Claude on the web, desktop, and mobile:

bash
claude mcp add --transport http releases https://agents.releases.sh/mcp   # Claude Codecodex mcp add releases --url https://agents.releases.sh/mcp               # Codexnpx -y mcp-remote https://agents.releases.sh/mcp                          # stdio bridge (VS Code, Zed, …)

CLI — one-off via npx, or brew install buildinternet/tap/releases:

bash
npx @buildinternet/releases get anthropic     # what did Anthropic ship lately?npx @buildinternet/releases search "MCP"      # search across every vendor

REST API — public GET endpoints on api.releases.sh, spec at /v1/openapi.json:

bash
curl "https://api.releases.sh/v1/releases/latest?limit=5"

Agent skills — auto-triggering playbooks, installable into any agent (Claude Code / Codex / Cursor / OpenCode) without checking out anything. Start with the reader skills — search, MCP lookups, and release analysis — which is what almost everyone wants:

bash
npx skills add buildinternet/releases   # reader skills — search, MCP, release analysis
# just the skill that writes a releases.json manifest for your own productnpx skills add buildinternet/releases --skill creating-releases-json

On Claude Code, the CLI repo also installs as a plugin — the reader skills plus a bundled MCP connection and a /releases command:

/plugin marketplace add buildinternet/releases/plugin install releases@releases

Running or maintaining the registry itself? This repo also ships operator skills (source onboarding, parsing, bulk maintenance) — most need an admin key: npx skills add buildinternet/releases. See releases.sh/docs/skills.

Docs — user-facing documentation is served from the web app at releases.sh/docs (source in apps/web/src/content/docs/): installation · skills · REST API · MCP · webhooks · listing your product.

Agents consuming the product start from releases.sh/llms.txt; the MCP tool catalog and auth model are also covered in docs/architecture/mcp.md. Creating a free account unlocks higher rate limits (mint an API key at releases.sh/account), plus follows, personalized feeds, webhooks, and email digests.

[An organization page: AI-maintained overview of recent releases, source list, and JSON/Markdown/Atom export]
Every org page carries an AI-maintained overview and exports as JSON, Markdown, or Atom.

What's in this repo

PathWhat
apps/api/Hono API on Cloudflare D1 — the authoritative data plane
apps/mcp/Remote MCP server at agents.releases.sh (alias mcp.releases.sh)
apps/webhooks/Signs + delivers release.created events (HMAC-SHA256, retry/DLQ) — docs
apps/web/Next.js frontend, deploys on Vercel
packages/Shared code — core + api-types publish to npm; the rest are private workspaces
.claude/Claude Code config — skills/ (canonical skill home), agents/, commands/, workflows/

How it fits together:

  • Storage — Cloudflare D1 (FTS5 + Vectorize). The API worker is the sole data plane.
  • Ingest — adapters for GitHub Releases, RSS/Atom/JSON feeds, and a browser-rendering fallback for feed-less pages (packages/adapters/). The crawler signs outbound fetches (RFC 9421) as a Cloudflare Verified Bot.
  • AI — changelog parsing, summarization, grouping, and org overviews run in the API worker as direct Anthropic SDK calls.

Contributor mental model

This repo has four kinds of code:

AreaPathsWhat to know
Product surfacesapps/api/, apps/mcp/, apps/webhooks/, apps/web/The API worker is the data plane. Web, MCP, CLI, and webhooks read from or route through it.
Shared packagespackages/core/, packages/api-types/, private packages/*core owns schema and pure helpers; api-types owns wire shapes. Change these first when shared contracts move.
Hosted operations.claude/skills/, .claude/workflows/These power the canonical releases.sh ingest and operator loop. Some paths need hosted credentials, but local work does not.
Historical contextdocs/architecture/, docs/plans/, docs/superpowers/Architecture docs are maintained references. Plans and specs are point-in-time design history.

For normal contributions, start with bun run bootstrap, bun run check, and bun run test. You do not need production Cloudflare, Anthropic, Vercel, email, or Firecrawl access to work on the core loop. If you are trying to fork or self-host the full service, read deploy-coupling.md.

Per-package detail and project conventions live in AGENTS.md — the agent entry point for working in this repo. Architecture deep-dives are in docs/architecture/, with a reader's guide at docs/README.md.

Local development

Prerequisites: Bun. No external accounts needed for the core loop:

bash
bun run bootstrap        # one-command setup: tooling, deps, env files, local D1bun run doctor           # diagnose the setup — reports what's missing and how to fix it
bun run check            # lint + type-check + format (the CI gate)bun run test             # full test suite, secret-freebun run dev:api          # API worker on local D1bun run dev:web          # Next.js frontend

bootstrap is idempotent (safe to re-run; never overwrites your env files or wipes the local DB) and doctor is read-only. Prefer the manual steps? They're bun install, copy each *.example env file, then bun run db:reset:local.

AI passes, scrape fetches, and semantic search take your own keys (ANTHROPIC_API_KEY, Cloudflare Browser Rendering, VOYAGE_API_KEY) and degrade gracefully without them. Setup detail, environment variables, testing, deployment, and the full no-accounts / bring-your-own-keys / hosted-only breakdown live in CONTRIBUTING.md.

License

Apache-2.0. The published npm packages (releases-core, api-types) and the Claude Code plugin (plugins/claude/releases) are deliberately MIT for maximum reuse.

Source: README.md at commit 93348cf

Tools

18

get_latest_releases

Get latest releases

Get the most recent releases, optionally filtered by product or organization. Excludes prereleases (canaries / alphas / betas / RCs) by default — pass `include_prereleases: true` to include them. Cursor-paginated: pass `limit` for slice size (default 10), `cursor` to continue from a prior call. The result's `_meta.pagination` carries `kind: 'cursor'`, `hasMore`, and `nextCursor` when more rows exist; the response text echoes `nextCursor` so an LLM caller can chain without parsing `_meta`. Cursors are stable under inserts — a release added between calls won't shift the slice.

ParameterskindtypelimitsinceuntilcursorproductorganizationminImportanceinclude_coverageinclude_prereleases

list_catalog

List catalog

List catalog entries — products and standalone sources combined into one list with an `entryType: 'product' | 'source'` discriminator per row. Orgs that group multiple sources under a product (e.g. Vercel → Next.js, Turborepo) surface those products; orgs with a single source that isn't part of a product surface it directly as an `entryType: 'source'` entry. Either shape is a reasonable thing to pass to `search(entity: ...)`. Paginated: defaults to 50 entries per page. Pass `page: 2` for the next slice. The footer surfaces the total when more pages exist.

Parameterskindpagelimitorganization

get_catalog_entry

Get catalog entry

Detail for a single catalog entry — accepts a prod_ id, src_ id, or an org-scoped coordinate in the form orgSlug/slug (e.g. 'vercel/nextjs' or 'vercel/next-js'). Returns the union of product / source detail fields depending on the entry kind. Source entries list tracked CHANGELOG files by path and byte size. Pass `include_changelog: true` to inline the root CHANGELOG, or `changelog_path` / `changelog_offset` / `changelog_limit` / `changelog_tokens` to embed a specific file or slice — heading-aligned, supports per-package files in monorepos (e.g. `packages/next/CHANGELOG.md`), and emits `totalTokens` / `sliceTokens` for LLM context budgeting. Files over 1MB are flagged as truncated so you know the tail is missing.

Parametersidentifierrequiredchangelog_pathchangelog_limitchangelog_offsetchangelog_tokensinclude_changelog

list_organizations

List organizations

List all indexed organizations, optionally filtered. Paginated: defaults to 50 entries per page; pass `page: 2` for the next slice. Orgs with zero indexed releases are hidden by default (curator-stub noise); set `include_empty: true` to see them.

Parameterspagelimitquerycategoryplatforminclude_empty

get_organization

Get organization

Get detailed information about a single organization — accounts, tags, sources, products, aliases. When an AI-generated overview exists the response includes a short preview; pass `include_overview: true` to inline the full briefing (with a stale warning if the content is older than 30 days since last write).

Parametersidentifierrequiredinclude_overview

lookup_domain

Lookup by domain

Resolve a domain to the org or product that owns it. The domain is normalized first (scheme, `www.`, path, and trailing slash stripped, lowercased), so `https://vercel.com/about` and `vercel.com` both look up the same row. Returns the matching org (with primary-vs-alias distinction) and any products whose alias targets the same domain. Pure resolution — does not probe the domain or materialize anything; unknown domains surface a 'no match' message. Use `lookup_domain` when you have a URL-shaped input; use `get_organization` when you already have a slug or id.

Parametersdomainrequired

list_collections

List collections

List curated collections — named cross-org playlists (e.g. 'Frontier AI Labs') independent of the fixed category taxonomy. Use `get_collection` for a collection's full member list, or `get_collection_releases` for the interleaved cross-org release feed. Paginated: defaults to 50 entries per page; pass `page: 2` for the next slice.

Parameterspagelimit

get_collection

Get collection

Detail for a single collection — name, description, and the ordered list of member organizations. Hidden / on-demand orgs never leak through; only publicly visible orgs appear in the member list.

Parametersslugrequired

get_collection_releases

Get collection releases

Interleaved cross-org release feed for a collection — same shape as `get_latest_releases` but scoped to the collection's member orgs. Cursor-paginated: pass `limit` for slice size (default 20), `cursor` to continue from a prior call. The result's `_meta.pagination` carries `kind: 'cursor'`, `hasMore`, and `nextCursor` when more rows exist; the response text echoes `nextCursor` so an LLM caller can chain without parsing `_meta`. Cursors are stable under inserts.

Parametersslugrequiredlimitcursorinclude_prereleases

get_release

Get release

Fetch the full content of a single release by id. Release ids are returned by search or get_latest_releases — pass them here to read the whole entry (e.g. to quote a specific Next.js release note). Accepts the full rel_<nanoid> form or the bare 21-char nanoid. Cite `URL:` (the original source) ahead of `Web:` (the releases.sh copy). Structured `url` and `webUrl` carry the same pair.

Parametersidrequired

follow

Follow

Follow an organization or a product so it appears in your personalized feed (`get_personalized_feed`). Following an organization implicitly includes all of its products. Requires a signed-in user (a `relu_` user key or an OAuth token). `entity` is a typed id — an `org_…` id or a `prod_…` id — as returned by `search`, `get_organization`, or `get_catalog_entry`. Idempotent: following something you already follow is a no-op.

Parametersentityrequired

unfollow

Unfollow

Stop following an organization or product. Requires a signed-in user. `entity` is an `org_…` or `prod_…` id. Idempotent: unfollowing something you don't follow is a no-op.

Parametersentityrequired

list_follows

List follows

List the organizations and products you follow (newest first). Requires a signed-in user.

Takes no parameters.

get_personalized_feed

Get personalized feed

Your personalized release feed — recent releases from the organizations and products you follow, newest first. Requires a signed-in user. Same item shape as `get_latest_releases`, scoped to your follows. Each item prints `URL:` (the original source — cite that) before `Web:` (the releases.sh copy), when present. Cursor-paginated: pass `cursor` from a prior response's `_meta.pagination.nextCursor` and optional `limit` (1–100, default 30).

Parameterslimitcursor

list_webhooks

List webhooks

List your outbound release webhooks, personal or workspace. Requires a signed-in user (a `relu_` user key or an OAuth token). With no `workspace`, lists your personal webhooks (`GET /v1/me/webhooks`) and includes a short list of your workspaces (id, slug, role) so you can target one next. Pass `workspace` (an id or a slug) to list that workspace's webhooks instead. Pass `id` to see one webhook plus its 10 most recent deliveries. Pass `enabled` to filter by enabled/disabled state.

Parametersidenabledworkspace

manage_webhook

Manage webhook

Create, update, delete, test, or rotate the signing key of an outbound release webhook — personal or workspace. Requires a signed-in user. This tool sends requests to an external URL you supply and can delete or disable delivery, so treat it as a write. Pass `workspace` (an id or slug) to act on a workspace's webhooks instead of your personal ones; workspace webhooks are always org-scoped (`scope: "follows"` is personal-only and is rejected up front). Only workspace owners and admins can create, update, delete, or rotate a workspace webhook — any member can test one. `action: "create"` needs `url` and `format` (`json`, `slack`, or `discord`), plus either `scope: "follows"` (personal only — everything you follow) or an org-scoped target: `org` (an org slug or `org_…` id), optionally narrowed by `product` (slug or `prod_…` id) or `source` (slug or `src_…` id). `action: "update"` needs `id` plus any fields to change; pass `source: null` or `product: null` to clear a filter. `action: "delete"`, `action: "test"`, and `action: "rotate_secret"` need only `id`. `create` and `rotate_secret` return a one-time `signingKey` for `json`-format webhooks — store it now, it will not be shown again. `slack` and `discord` deliveries aren't signed, so those formats never return one.

ParametersidorgurlscopeactionrequiredformatsourceenabledproductworkspacedescriptionreleaseType

whats_changed

What's changed

Given a package and a `from`/`to` version, return the changelog entries between them — `(from, to]`, from exclusive, to inclusive — with summaries and breaking-change verdicts. One call instead of reading N changelog pages to plan an upgrade. `package` is a tracked source slug or a GitHub `owner/repo` coordinate (set `ecosystem: "github"` for a bare coordinate). Reads already-indexed releases only. If the package isn't in the catalog you'll get a clear 'not tracked' answer (npm/PyPI names may not be mapped to a source yet). Each entry prints `URL:` (the original source — cite that) before `Web:` (the releases.sh copy), when present. Structured results still include both `url` and `webUrl`.

ParameterstorequiredfromrequiredpackagerequiredecosystemminImportance

Version history

2
  1. v0.15.2LatestOct 3, 2026
  2. v0.15.1Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Releases integrations