Search / sh.releases/mcp
Release Notes Index
R0· no sign-inRelease notes and changelogs from across the web, indexed for agents. Also via CLI and REST API.
v0.15.2 · active · repository · descriptor JSON · versions
Search / sh.releases/mcp
R0· no sign-inRelease notes and changelogs from across the web, indexed for agents. Also via CLI and REST API.
v0.15.2 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"releases": {
"type": "http",
"url": "https://agents.releases.sh/mcp"
}
}
}claude mcp add --transport http releases https://agents.releases.sh/mcp[mcp_servers.releases]
url = "https://agents.releases.sh/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"releases": {
"type": "remote",
"url": "https://agents.releases.sh/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"releases": {
"type": "http",
"url": "https://agents.releases.sh/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=releases&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYWdlbnRzLnJlbGVhc2VzLnNoL21jcCJ9"
}{
"servers": {
"releases": {
"type": "http",
"url": "https://agents.releases.sh/mcp"
}
}
}{
"mcpServers": {
"releases": {
"httpUrl": "https://agents.releases.sh/mcp"
}
}
}extensions:
"releases":
enabled: true
name: "releases"
type: streamable_http
uri: "https://agents.releases.sh/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltool list is cacheable (ttlMs 3600000)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length2 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations18 of 18 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 6,497 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes5 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagewhats_changedchangeddescriptionGiven 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).
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`.
get_personalized_feedchangeddescriptionYour 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. Cursor-paginated: pass `cursor` from a prior response's `_meta.pagination.nextCursor` and optional `limit` (1–100, default 30).
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).
get_releasechangeddescriptionFetch 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.
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.
get_latest_releaseschangedinput schemasearchchangedinput schemaFull history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +dns-namespace +reachable +uptime-100% +updated-16d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://agents.releases.sh/mcp streamable-http | none | yes | 100% | 895 ms | 2026-07-28 | 2026-10-19 |
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. |
get_catalog_entryread-only | 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. |
get_collectionread-only | 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. |
get_collection_releasesread-only | 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. |
get_latest_releasesread-only | 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. |
get_organizationread-only | 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). |
get_personalized_feedread-only | 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). |
get_releaseread-only | 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. |
list_catalogread-only | 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. |
list_collectionsread-only | 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. |
list_followsread-only | List the organizations and products you follow (newest first). Requires a signed-in user. |
list_organizationsread-only | 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. |
list_webhooksread-only | 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. |
lookup_domainread-only | 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. |
manage_webhookdestructive | 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. |
searchread-only | Unified search across the registry and release content. Returns up to four sections — organizations, catalog entries (products + standalone sources folded into one list), curated collections (cross-org playlists), and releases with CHANGELOG chunks interleaved by relevance. Use `type` to narrow the surfaces you want and skip the expensive paths. For example, pass `type: ['catalog']` to look up a known entity by name (fast, registry-only); pass `type: ['releases']` when you only care about release content and want to avoid entity lookups. Omit `type` to search all four. Collections surface via two paths: a direct match on the collection's name/description (lexical in every mode, plus a vector match in hybrid/semantic mode) and a member rollup that includes every collection containing one of the matched orgs. Member rollups carry a list of result-set org slugs that triggered the rollup so a UI can render an "includes X" hint. Use `entity` (product slug / prod_ id OR source slug / src_ id) to scope release results to one catalog entry. Product identifiers expand to every source under the product. Use `organization` to scope to a whole org. Release retrieval defaults to hybrid (FTS5 + semantic vectors fused via RRF); it silently degrades to lexical when vector infra is unavailable and flags the result. |
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. |
whats_changedread-only | 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`. |
Schemas: list_tools.
{
"name": "sh.releases/mcp",
"title": "Release Notes Index",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://agents.releases.sh/mcp",
"type": "streamable-http"
}
],
"version": "0.15.2",
"repository": {
"url": "https://github.com/buildinternet/releases",
"source": "github"
},
"description": "Release notes and changelogs from across the web, indexed for agents. Also via CLI and REST API."
}