Skip to content

Release Notes Index

by releases.sh · remote · no sign-in to list tools · v0.15.2 · published by sh.releases

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

Deletes · 1Final · 1Changes · 2

18 tools: 1 can delete or cancel things, 1 do something that can't be undone, 2 change things and 14 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

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

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "whats_changed" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

18 tools

Deletes or cancels 1Claude Code: deny
  • manage_webhookCreate, update, delete, test, or rotate the signing key of an outbound release webhook — personal or workspace.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Manage webhook
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Can't be undone 1Claude Code: ask
  • whats_changedGiven 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.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "whats_changed" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • title: What's changed
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 2Claude Code: ask
  • followFollow an organization or a product so it appears in your personalized feed (`get_personalized_feed`).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Follow
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • unfollowStop following an organization or product.No findings

    Why it is in this group

    • The description's first verb is "stop": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Unfollow
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 14Claude Code: allow
  • get_catalog_entryDetail for a single catalog entry — accepts a prod_ id, src_ id, or an org-scoped coordinate in the form orgSlug/slug (e.g.No findings

    Why it is in this group

    • The name "get_catalog_entry" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get catalog entry
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_collectionDetail for a single collection — name, description, and the ordered list of member organizations.No findings

    Why it is in this group

    • The name "get_collection" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get collection
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_collection_releasesInterleaved cross-org release feed for a collection — same shape as `get_latest_releases` but scoped to the collection's member orgs.No findings

    Why it is in this group

    • The name "get_collection_releases" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get collection releases
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_latest_releasesGet the most recent releases, optionally filtered by product or organization.No findings

    Why it is in this group

    • The name "get_latest_releases" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get latest releases
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_organizationGet detailed information about a single organization — accounts, tags, sources, products, aliases.No findings

    Why it is in this group

    • The name "get_organization" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Get organization
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_personalized_feedYour personalized release feed — recent releases from the organizations and products you follow, newest first.No findings

    Why it is in this group

    • The name "get_personalized_feed" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Get personalized feed
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_releaseFetch the full content of a single release by id.No findings

    Why it is in this group

    • The name "get_release" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get release
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_catalogList catalog entries — products and standalone sources combined into one list with an `entryType: 'product' | 'source'` discriminator per row.No findings

    Why it is in this group

    • The name "list_catalog" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List catalog
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_collectionsList curated collections — named cross-org playlists (e.g.No findings

    Why it is in this group

    • The name "list_collections" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List collections
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_followsList the organizations and products you follow (newest first).No findings

    Why it is in this group

    • The name "list_follows" says "list": a word for reading.
    Description, as the server wrote it
    List the organizations and products you follow (newest first). Requires a signed-in user.

    Annotations the server declares

    • title: List follows
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_organizationsList all indexed organizations, optionally filtered.No findings

    Why it is in this group

    • The name "list_organizations" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List organizations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_webhooksList your outbound release webhooks, personal or workspace.No findings

    Why it is in this group

    • The name "list_webhooks" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List webhooks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • lookup_domainResolve a domain to the org or product that owns it.No findings

    Why it is in this group

    • The name "lookup_domain" says "lookup": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Lookup by domain
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.15.2. Values in angle brackets are yours to fill in.

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

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__releases__search",
      "mcp__releases__get_latest_releases",
      "mcp__releases__list_catalog",
      "mcp__releases__get_catalog_entry",
      "mcp__releases__list_organizations",
      "mcp__releases__get_organization",
      "mcp__releases__lookup_domain",
      "mcp__releases__list_collections",
      "mcp__releases__get_collection",
      "mcp__releases__get_collection_releases",
      "mcp__releases__get_release",
      "mcp__releases__list_follows",
      "mcp__releases__get_personalized_feed",
      "mcp__releases__list_webhooks"
    ],
    "ask": [
      "mcp__releases__follow",
      "mcp__releases__unfollow",
      "mcp__releases__whats_changed"
    ],
    "deny": [
      "mcp__releases__manage_webhook"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as releases. Review it before you use it.