# Releases (remote · agents.releases.sh)

An agent-friendly API for product changelogs. A unified registry via CLI, API, or MCP.

- Trust score: 73/100 (medium)
- Change this week: −4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-27

> **Recent critical change**: Authorization (2026-09-24). See the changelog below before you install this server.

## Components

- remote · `agents.releases.sh`: 73/100 (this document), [markdown](https://verifymcp.io/servers/sh-releases-mcp/agents.md), [page](https://verifymcp.io/servers/sh-releases-mcp/agents)

## Channel facts

- Endpoint: `https://agents.releases.sh/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.15.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-27.

- **Endpoint Security**: 60/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (manage_webhook).
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 78/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4723 tokens (~248/item across 19 items; 18 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 53/100
  - Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## Install

### How do I install the Releases MCP server?

Releases is a hosted endpoint at https://agents.releases.sh/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http sh-releases-mcp 'https://agents.releases.sh/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "sh-releases-mcp": {
      "url": "https://agents.releases.sh/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sh-releases-mcp": {
      "type": "http",
      "url": "https://agents.releases.sh/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.sh-releases-mcp]
url = "https://agents.releases.sh/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sh-releases-mcp": {
      "type": "remote",
      "url": "https://agents.releases.sh/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sh-releases-mcp --url 'https://agents.releases.sh/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  sh-releases-mcp:
    url: "https://agents.releases.sh/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "sh-releases-mcp": {
      "Transport": "http",
      "Url": "https://agents.releases.sh/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add sh-releases-mcp -t streamable-http -u 'https://agents.releases.sh/mcp'
```

### Other

```json
{
  "mcpServers": {
    "sh-releases-mcp": {
      "type": "http",
      "url": "https://agents.releases.sh/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-25 (score 73, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-24 (score 72, −7)

- [critical regression] Authorization: partial → fail
- [security] New tool “manage_webhook”, which the server declares destructive
- [functional regression] Schema quality: 3988 → 4723
- [functional] New tool “list_webhooks”

### 2026-09-23 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-21 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (18)

### `search` (~939 tokens)

Search

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.

Input parameters:

- `domain` (string): Scope to the org owning this domain. Input is normalized (scheme/path/www stripped, lowercased), so `https://vercel.com/` and `vercel.com` both work. Falls back to a 'no match' message when the domai…
- `entity` (string): Scope release results to one catalog entry. Accepts a prod_ id (expands to every source under the product), a src_ id, or an org-scoped coordinate in the form orgSlug/slug (e.g. 'vercel/nextjs'). Bar…
- `include_coverage` (boolean): Include releases grouped as coverage of another (e.g. marketing posts that re-announce a platform release). Defaults to false so each underlying launch appears once.
- `include_empty` (boolean): Include orgs with zero indexed releases in the `orgs` section. Default false — empty orgs are stubs and surface as noise. Scoping by `domain` ignores this and always returns the resolved org.
- `kind` (string): Filter to a specific source/product kind. Release hits resolve through `source.kind ?? product.kind`; catalog hits filter on the row's own kind. The orgs and collections sections are unaffected; chan…
- `limit` (number): Max results per section (default 20)
- `mode` (string): Release-retrieval strategy. 'hybrid' (default) fuses FTS + vector results. 'lexical' is legacy FTS only. 'semantic' is vectors only. Falls back to lexical if vector infra is unavailable.
- `organization` (string): Scope release results to sources belonging to this organization. Accepts an org_ id, slug, or registered domain.
- `product` (string): Scope release results to a specific product's sources. Accepts a prod_ id or an org-scoped coordinate in the form orgSlug/productSlug (e.g. 'vercel/next-js'). Bare slugs without an org prefix are not…
- `query` (string, required): Search query
- `since` (string): Keep only release hits published at or after this bound. Accepts an ISO date/datetime (`2026-01-01`) or relative shorthand (`90d`, `4w`, `6m`, `2y`). Filters `published_at`; undated releases are drop…
- `type` (array): Which sections to return. Omit to return all four. Use to skip expensive paths — e.g. ['catalog'] for registry-only lookups, ['releases'] for pure release search, ['collections'] for a quick playlist…
- `until` (string): Keep only release hits published at or before this bound. Same input formats as `since`.

### `get_latest_releases` (~660 tokens)

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.

Input parameters:

- `cursor` (string): Opaque continuation token from a prior call's `_meta.pagination.nextCursor`. Pass to fetch the next slice. Stale cursors are silently ignored — the call returns a fresh head of the feed.
- `include_coverage` (boolean): Include releases grouped as coverage of another (e.g. marketing posts that re-announce a platform release). Defaults to false so each underlying launch appears once.
- `include_prereleases` (boolean): Include prerelease tags (alphas, betas, RCs, canaries). Defaults to false so the feed matches the public web view.
- `kind` (string): Filter to releases from sources of a specific kind. Resolves through `source.kind ?? product.kind`, so an SDK repo with no own kind still matches its product's kind. Omit to include all kinds.
- `limit` (integer): Slice size (1–200). Defaults to 10.
- `minImportance` (integer): Only include releases with an AI-scored `importance` >= this value (1-5; 5=landmark, 1=housekeeping). Releases with no score (unscored) are excluded when this is set. Mirrors the REST `?minImportance…
- `organization` (string): Filter to sources belonging to this organization. Accepts an org_ id, slug, or registered domain.
- `product` (string): Filter to a product's cross-source release feed. Accepts a prod_ id (expands to ALL sources under the product), a src_ id (single source), or an org-scoped coordinate in the form orgSlug/productSlug…
- `since` (string): Keep only releases published at or after this bound. Accepts an ISO date/datetime (`2026-01-01`) or relative shorthand (`90d`, `4w`, `6m`, `2y`). Filters `published_at`; undated releases are dropped.
- `type` (string): Filter by release type: 'feature' for individual releases, 'rollup' for seasonal/quarterly catch-all posts. Omit to include both.
- `until` (string): Keep only releases published at or before this bound. Same input formats as `since`.

### `list_catalog` (~255 tokens)

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.

Input parameters:

- `kind` (string): Filter to catalog entries of a specific kind. Matches each row's own kind (a product's kind, or a standalone source's kind) — no source→product inheritance on this catalog surface. Omit to include al…
- `limit` (integer): Entries per page (1–200). Defaults to 50.
- `organization` (string): Organization to scope to. Accepts an org_ id, slug, domain, or name.
- `page` (integer): 1-based page number. Defaults to 1.

### `get_catalog_entry` (~433 tokens)

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.

Input parameters:

- `changelog_limit` (number): Target slice size in characters. Slice ends at a heading boundary. Defaults to 40000 when slicing without a token budget. Passing this implies include_changelog.
- `changelog_offset` (number): Character offset into the selected CHANGELOG. Snapped forward to the next heading unless 0. Passing this implies include_changelog.
- `changelog_path` (string): Specific CHANGELOG path for a source-kind entry (e.g. 'packages/next/CHANGELOG.md'). Passing this implies include_changelog.
- `changelog_tokens` (number): Target slice size in tokens (cl100k_base). Takes precedence over changelog_limit. Recommended brackets: 2000, 5000, 10000, 20000. Passing this implies include_changelog.
- `identifier` (string, required): Catalog entry identifier: prod_ id, src_ id, or org-scoped coordinate orgSlug/slug (e.g. 'vercel/nextjs'). Bare slugs without an org prefix are not accepted.
- `include_changelog` (boolean): When true, inline the root tracked CHANGELOG for a source-kind entry. Ignored for products.

### `list_organizations` (~231 tokens)

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.

Input parameters:

- `category` (string): Filter to a single category slug (e.g. `ai`, `devops`). Aliases (e.g. `e-commerce`) resolve to their canonical category (`commerce`); unknown values are ignored (unfiltered).
- `include_empty` (boolean): Include orgs with zero indexed releases. Default false — empty orgs are stubs from in-flight discovery or broken parsers and surface as noise on the public catalog.
- `limit` (integer): Entries per page (1–200). Defaults to 50.
- `page` (integer): 1-based page number. Defaults to 1.
- `platform` (string): Filter to orgs with an account on this platform
- `query` (string): Search across org name, slug, domain, and account handles

### `get_organization` (~123 tokens)

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).

Input parameters:

- `identifier` (string, required): Organization identifier. Accepts an org_ id, slug, domain, name, or account handle.
- `include_overview` (boolean): When true, inline the full AI-generated overview instead of the default first-paragraph preview.

### `lookup_domain` (~162 tokens)

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.

Input parameters:

- `domain` (string, required): Domain to resolve. Any URL-shaped form is accepted; the server normalizes it.

### `list_collections` (~123 tokens)

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.

Input parameters:

- `limit` (integer): Entries per page (1–200). Defaults to 50.
- `page` (integer): 1-based page number. Defaults to 1.

### `get_collection` (~66 tokens)

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.

Input parameters:

- `slug` (string, required): Collection slug (e.g. 'frontier-ai-labs').

### `get_collection_releases` (~234 tokens)

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.

Input parameters:

- `cursor` (string): Opaque continuation token from a prior call's `_meta.pagination.nextCursor`. Stale cursors are silently ignored — the call returns a fresh head of the feed.
- `include_prereleases` (boolean): Include prerelease tags (alphas, betas, RCs). Defaults to false so the feed matches the public web view.
- `limit` (integer): Slice size (1–200). Defaults to 20.
- `slug` (string, required): Collection slug (e.g. 'frontier-ai-labs').

### `get_release` (~95 tokens)

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.

Input parameters:

- `id` (string, required): Release id — 'rel_<nanoid>' or a bare 21-char nanoid

### `follow` (~141 tokens)

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.

Input parameters:

- `entity` (string, required): Entity to follow — an `org_…` or `prod_…` id (from search / get_* results).

### `unfollow` (~80 tokens)

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.

Input parameters:

- `entity` (string, required): Entity to unfollow — an `org_…` or `prod_…` id.

### `list_follows` (~27 tokens)

List follows

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

### `get_personalized_feed` (~123 tokens)

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.

Cursor-paginated: pass `cursor` from a prior response's `_meta.pagination.nextCursor` and optional `limit` (1–100, default 30).

Input parameters:

- `cursor` (string): Opaque cursor from a previous page's `_meta.pagination.nextCursor`.
- `limit` (integer): Entries per page (1–100). Defaults to 30.

### `list_webhooks` (~181 tokens)

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.

Input parameters:

- `enabled` (boolean): Filter to enabled or disabled webhooks.
- `id` (string): Show one webhook (with recent deliveries) instead of the full list.
- `workspace` (string): Workspace id or slug. Omit for your personal webhooks.

### `manage_webhook` (~554 tokens)

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.

Input parameters:

- `action` (string, required)
- `description` (string): Freeform label for the webhook.
- `enabled` (boolean): Update only. Enable or disable delivery.
- `format` (string): Delivery format.
- `id` (string): Webhook id — required for update, delete, test, and rotate_secret.
- `org` (string): Org slug or org_… id. Required for an org-scoped create.
- `product`: Product slug or prod_… id to narrow an org-scoped webhook. null clears it on update.
- `releaseType` (string): Optional filter on release taxonomy type.
- `scope` (string): Create only. "follows" is personal-only and defaults org-scoped when omitted.
- `source`: Source slug or src_… id to narrow an org-scoped webhook. null clears it on update.
- `url` (string): Delivery URL. Required for create.
- `workspace` (string): Workspace id or slug. Omit to act on your personal webhooks.

### `whats_changed` (~258 tokens)

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).

Input parameters:

- `ecosystem` (string): Optional resolution hint; "github" enables matching a bare owner/repo.
- `from` (string, required): Version you're upgrading FROM (exclusive).
- `minImportance` (integer): Only include entries with an AI-scored `importance` >= this value (1-5; 5=landmark, 1=housekeeping). Entries with no score (unscored) are excluded when this is set.
- `package` (string, required): Package identifier — a source slug or a GitHub "owner/repo" coordinate.
- `to` (string, required): Version you're upgrading TO (inclusive).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/sh-releases-mcp/agents#diagnostics

## Score history

- 2026-09-27: 73
- 2026-09-26: 73
- 2026-09-25: 73
- 2026-09-24: 72
- 2026-09-23: 79
- 2026-09-22: 78
- 2026-09-21: 78
- 2026-09-20: 77
- 2026-09-19: 77
- 2026-09-18: 76
- 2026-09-17: 76
- 2026-09-16: 75
- 2026-09-15: 75
- 2026-09-14: 74
- 2026-09-13: 74
- 2026-09-12: 73
- 2026-09-11: 73

## Common questions

### What is the Releases MCP server?

Releases is an MCP server listed in the public MCP registry as sh.releases/mcp. An agent-friendly API for product changelogs. A unified registry via CLI, API, or MCP. This page covers its hosted endpoint (https://agents.releases.sh/mcp).

### Is the Releases MCP server safe to use?

Releases scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Releases MCP server expose?

Releases exposes 18 tools: search, get_latest_releases, list_catalog, get_catalog_entry, list_organizations, and 13 more. Their descriptions and schemas cost roughly 4,685 tokens of context every time the server is loaded.

### Does the Releases MCP server require authentication?

No. We connected to Releases without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Releases MCP server still maintained?

Releases is still listed as active in the MCP registry. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://agents.releases.sh/mcp
- Repository: https://github.com/buildinternet/releases
- Changelog RSS feed: https://verifymcp.io/servers/sh-releases-mcp/agents.xml
- Changelog JSON feed: https://verifymcp.io/servers/sh-releases-mcp/agents.json
- HTML version of this page: https://verifymcp.io/servers/sh-releases-mcp/agents
