MCPサーバー

What's New

fyi.whatsnew/changelogs

このMCPでできること

Searches application, game, and operating-system release notes and identifies changes, migration notes, security issues, and missing dependency updates.

list_products
List tracked products
The products What's New tracks release notes for, with slugs, categories and platforms. Filter by category and/or a name query.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'sort': {'enum': ['curated', 'popular'], 'type': 'string', 'description': '"popular" ranks by current audience popularity â\x80\x94 outside signals (stars, downloads, players) blended with this site\'s own readers â\x80\x94 and answers "what are the most popular software right now?". Default is the curated catalog order (or search relevance when query is set, which ignores sort).'}, 'query': {'type': 'string', 'maxLength': 64, 'description': 'Filter by name, e.g. "terminal" or "jetbrains".'}, 'category': {'enum': ['Developer Tools', 'Frameworks & Libraries', 'Languages & Runtimes', 'Infrastructure & DevOps', 'Databases & Data', 'Security & Privacy', 'Games', 'Gaming Tools', 'Operating Systems', 'System Utilities', 'Browsers', 'Communication', 'Media', 'Creative Tools', 'AI', 'Productivity', 'Lifestyle & Apps', 'Firmware', 'Drivers'], 'type': 'string', 'description': 'Limit results to one product category.'}}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['total', 'returned', 'products'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Matches before the cap.'}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'vendor', 'category', 'description', 'url', 'homepage'], 'properties': {'url': {'type': 'string', 'description': "This product's page on What's New."}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provenance to keep with any quote, e.g. â\x80\x9cSample dataâ\x80\x9d.'}, 'vendor': {'type': 'string'}, 'license': {'type': 'string', 'description': "SPDX expression as the product's own source states it, e.g. MIT or LicenseRef-proprietary; absent when unknown."}, 'archived': {'type': 'boolean', 'description': 'Whether the upstream repository is archived; absent when unknown.'}, 'category': {'enum': ['Developer Tools', 'Frameworks & Libraries', 'Languages & Runtimes', 'Infrastructure & DevOps', 'Databases & Data', 'Security & Privacy', 'Games', 'Gaming Tools', 'Operating Systems', 'System Utilities', 'Browsers', 'Communication', 'Media', 'Creative Tools', 'AI', 'Productivity', 'Lifestyle & Apps', 'Firmware', 'Drivers'], 'type': 'string'}, 'homepage': {'type': 'string', 'description': "The vendor's own site."}, 'language': {'type': 'string'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'truncated': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}
missing_changes
What an outdated project is missing
For a whole project's outdated report — npm/pnpm outdated --json (current → from, wanted, latest), ncu --format installedVersion, pip or uv pip list --outdated --format json (version → from, latest_version → latest), go list -m -u -json all (Version → from, Update.Version → latest), cargo outdated, dotnet list package --outdated, a Gradle versions report — pass each package with the version installed and, where the tool gives them, wanted and latest. Answers what the project is missing, most exposed first: per package, the security releases, CVE ids and fixes it does not have, split into toWanted (from → wanted: reachable by an update within the declared range, no manifest edit) and toLatest (→ latest: needs the range changed), with the cost of moving beside them (major bump, breaking mentions, removed/deprecated) and a few of the fixes themselves. Counts are deterministic over every tracked release; no model judged anything. Up to 100 packages a call. Pass repository (from the package's own package.json) for scoped or renamed packages; a Maven, Go or NuGet package goes by its purl. For the vendor's own breaking-change and migration sections, call upgrade_notes on the packages worth moving. A Maven, Go or NuGet package this server does not track is checked against deps.dev after the answer and counted; pass recordMisses: false for private packages.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dependencies'], 'properties': {'dependencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'from'], 'properties': {'from': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "The version installed now â\x80\x94 a version, not a range: npm outdated's `current`, pip's `version`, go's `Version`."}, 'name': {'type': 'string', 'maxLength': 214, 'minLength': 1, 'description': 'The package as its ecosystem spells it: "better-auth", "@tanstack/react-query", a Maven "group:artifact", a Go module path, or an Action\'s "owner/repo@ref".'}, 'purl': {'type': 'string', 'pattern': '^[Pp][Kk][Gg]:', 'maxLength': 300, 'description': 'The package as a purl (package URL), e.g. "pkg:maven/com.squareup.okhttp3/okhttp", "pkg:golang/github.com/spf13/cobra" or "pkg:nuget/Newtonsoft.Json" â\x80\x94 what an SBOM, OSV or Renovate already names it by. Takes precedence over name and registry; a version inside it is ignored in favour of the versions passed beside it.'}, 'latest': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "The newest version published â\x80\x94 outdated's `latest`, pip's `latest_version`, go's `Update.Version`. Omit for everything tracked after `wanted` (or `from`)."}, 'wanted': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "The greatest version the declared range admits â\x80\x94 npm/pnpm outdated's `wanted`, what an update reaches without editing the manifest. Omit where the tool reports none."}, 'registry': {'enum': ['npm', 'pypi', 'crates', 'rubygems'], 'type': 'string', 'description': "Default npm â\x80\x94 unless purl, or the name's own shape (group:artifact, a Go module path), says otherwise."}, 'repository': {'type': 'string', 'maxLength': 300, 'description': "The package's source repository â\x80\x94 its package.json `repository`, or the repo a Maven or NuGet package is built from (any GitHub URL, github:owner/repo or owner/repo). Resolves scoped and renamed packages the name alone cannot, and makes the match exact."}}}, 'maxItems': 100, 'minItems': 1, 'description': 'Up to 100 per call; split a larger project.'}, 'recordMisses': {'type': 'boolean', 'description': 'Default true. A Maven, Go or NuGet package this server does not track is checked against deps.dev after the answer and counted per day, with nothing about the caller, to decide what to track next. Pass false for private packages.'}}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['summary', 'dependencies'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': 'object', 'required': ['dependencies', 'tracked', 'behindInRange', 'withSecurity', 'cves'], 'properties': {'cves': {'type': 'array', 'items': {'type': 'string'}}, 'tracked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'dependencies': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'withSecurity': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Dependencies missing a security release or a CVE fix in either interval.'}, 'behindInRange': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Dependencies with at least one release inside toWanted.'}}, 'additionalProperties': False}, 'dependencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'from', 'status'], 'properties': {'from': {'type': 'string'}, 'name': {'type': 'string'}, 'purl': {'type': 'string', 'description': 'The package as a versionless purl, as it was matched.'}, 'match': {'type': 'object', 'required': ['slug', 'name', 'vendor', 'url', 'tier', 'matchedKey'], 'properties': {'url': {'type': 'string', 'description': "The product's page on What's New."}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['identifier', 'namespace', 'name'], 'type': 'string', 'description': "identifier: a registry id, a purl or a repository the catalog tracks. namespace: the package sits under a namespace the product claims (a Maven group, say) â\x80\x94 the notes are the family's. name: a name-only guess â\x80\x94 check the product before trusting it, and pass purl or repository to make it exact."}, 'vendor': {'type': 'string'}, 'matchedKey': {'type': 'string'}}, 'additionalProperties': False}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'How the package was resolved.'}, 'latest': {'type': 'string'}, 'status': {'enum': ['ok', 'untracked'], 'type': 'string', 'description': 'untracked is not in the catalog.'}, 'wanted': {'type': 'string'}, 'registry': {'enum': ['npm', 'pypi', 'crates', 'rubygems'], 'type': 'string'}, 'toLatest': {'type': 'object', 'required': ['from', 'status', 'releases', 'unordered'], 'properties': {'to': {'type': 'object', 'required': ['label', 'tracked'], 'properties': {'url': {'type': 'string', 'description': "The release's page here, when tracked."}, 'date': {'type': 'string', 'description': 'ISO 8601, when tracked.'}, 'label': {'type': 'string'}, 'tracked': {'type': 'boolean', 'description': 'Whether this exact version is in the history we hold.'}}, 'description': 'Absent when the interval runs to the newest we track.', 'additionalProperties': False}, 'cost': {'type': 'object', 'required': ['majorBump', 'breakingMentions', 'removed', 'deprecated'], 'properties': {'removed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'majorBump': {'type': 'boolean'}, 'deprecated': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'breakingMentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases whose notes say â\x80\x9cbreaking changeâ\x80\x9d.'}}, 'description': "What moving would cost â\x80\x94 deterministic signals, no model's reading. upgrade_notes has the vendor's own breaking and migration sections.", 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['label', 'tracked'], 'properties': {'url': {'type': 'string', 'description': "The release's page here, when tracked."}, 'date': {'type': 'string', 'description': 'ISO 8601, when tracked.'}, 'label': {'type': 'string'}, 'tracked': {'type': 'boolean', 'description': 'Whether this exact version is in the history we hold.'}}, 'additionalProperties': False}, 'gain': {'type': 'object', 'required': ['security', 'fixed', 'cves', 'uncategorized'], 'properties': {'cves': {'type': 'array', 'items': {'type': 'string'}}, 'fixed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases carrying a fix.'}, 'security': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases carrying a security change.'}, 'uncategorized': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases with no categorized changes â\x80\x94 not enriched, or notes that yielded none; they may hold fixes the counts miss.'}}, 'description': 'What the project is missing, counted over every release in the interval.', 'additionalProperties': False}, 'ahead': {'type': 'boolean', 'const': True, 'description': '`from` is newer than anything we track.'}, 'items': {'type': 'object', 'required': ['security', 'fixed'], 'properties': {'fixed': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'versions'], 'properties': {'text': {'type': 'string'}, 'versions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The versions that shipped it, newest first.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': "Cut at the cap; the release's page has it whole."}, 'synthesized': {'type': 'boolean', 'const': True, 'description': 'Summarized from commit messages because the vendor published no notes.'}}, 'additionalProperties': False}}, 'security': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'versions'], 'properties': {'text': {'type': 'string'}, 'versions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The versions that shipped it, newest first.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': "Cut at the cap; the release's page has it whole."}, 'synthesized': {'type': 'boolean', 'const': True, 'description': 'Summarized from commit messages because the vendor published no notes.'}}, 'additionalProperties': False}}}, 'description': 'A sample of the changes themselves, security first.', 'additionalProperties': False}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'unversioned', 'unreadable', 'unplaceable', 'same', 'reversed', 'unorderable'], 'type': 'string', 'description': 'ok answers; unreadable is a version the grammar cannot read (a range is not a version); unversioned is a source whose notes carry no numbers; the rest name why the pair has no interval.'}, 'releases': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases numbered inside the interval.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': '`from` sits below the history we hold, so every count is a lower bound.'}, 'unordered': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Rows the comparator could not place against it.'}, 'compareUrl': {'type': 'string', 'description': "The interval as one page on What's New."}, 'itemsTruncated': {'type': 'boolean', 'const': True, 'description': 'More security or fixed items exist than are listed; compareUrl or upgrade_notes has them all.'}, 'compareMarkdownUrl': {'type': 'string', 'description': "The same interval as markdown, with every release's notes."}}, 'description': 'wanted (or from) â\x86\x92 latest: what needs the range changed. Absent when wanted was passed without latest, or equals it.', 'additionalProperties': False}, 'toWanted': {'type': 'object', 'required': ['from', 'status', 'releases', 'unordered'], 'properties': {'to': {'type': 'object', 'required': ['label', 'tracked'], 'properties': {'url': {'type': 'string', 'description': "The release's page here, when tracked."}, 'date': {'type': 'string', 'description': 'ISO 8601, when tracked.'}, 'label': {'type': 'string'}, 'tracked': {'type': 'boolean', 'description': 'Whether this exact version is in the history we hold.'}}, 'description': 'Absent when the interval runs to the newest we track.', 'additionalProperties': False}, 'cost': {'type': 'object', 'required': ['majorBump', 'breakingMentions', 'removed', 'deprecated'], 'properties': {'removed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'majorBump': {'type': 'boolean'}, 'deprecated': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'breakingMentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases whose notes say â\x80\x9cbreaking changeâ\x80\x9d.'}}, 'description': "What moving would cost â\x80\x94 deterministic signals, no model's reading. upgrade_notes has the vendor's own breaking and migration sections.", 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['label', 'tracked'], 'properties': {'url': {'type': 'string', 'description': "The release's page here, when tracked."}, 'date': {'type': 'string', 'description': 'ISO 8601, when tracked.'}, 'label': {'type': 'string'}, 'tracked': {'type': 'boolean', 'description': 'Whether this exact version is in the history we hold.'}}, 'additionalProperties': False}, 'gain': {'type': 'object', 'required': ['security', 'fixed', 'cves', 'uncategorized'], 'properties': {'cves': {'type': 'array', 'items': {'type': 'string'}}, 'fixed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases carrying a fix.'}, 'security': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases carrying a security change.'}, 'uncategorized': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases with no categorized changes â\x80\x94 not enriched, or notes that yielded none; they may hold fixes the counts miss.'}}, 'description': 'What the project is missing, counted over every release in the interval.', 'additionalProperties': False}, 'ahead': {'type': 'boolean', 'const': True, 'description': '`from` is newer than anything we track.'}, 'items': {'type': 'object', 'required': ['security', 'fixed'], 'properties': {'fixed': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'versions'], 'properties': {'text': {'type': 'string'}, 'versions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The versions that shipped it, newest first.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': "Cut at the cap; the release's page has it whole."}, 'synthesized': {'type': 'boolean', 'const': True, 'description': 'Summarized from commit messages because the vendor published no notes.'}}, 'additionalProperties': False}}, 'security': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'versions'], 'properties': {'text': {'type': 'string'}, 'versions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The versions that shipped it, newest first.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': "Cut at the cap; the release's page has it whole."}, 'synthesized': {'type': 'boolean', 'const': True, 'description': 'Summarized from commit messages because the vendor published no notes.'}}, 'additionalProperties': False}}}, 'description': 'A sample of the changes themselves, security first.', 'additionalProperties': False}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'unversioned', 'unreadable', 'unplaceable', 'same', 'reversed', 'unorderable'], 'type': 'string', 'description': 'ok answers; unreadable is a version the grammar cannot read (a range is not a version); unversioned is a source whose notes carry no numbers; the rest name why the pair has no interval.'}, 'releases': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases numbered inside the interval.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': '`from` sits below the history we hold, so every count is a lower bound.'}, 'unordered': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Rows the comparator could not place against it.'}, 'compareUrl': {'type': 'string', 'description': "The interval as one page on What's New."}, 'itemsTruncated': {'type': 'boolean', 'const': True, 'description': 'More security or fixed items exist than are listed; compareUrl or upgrade_notes has them all.'}, 'compareMarkdownUrl': {'type': 'string', 'description': "The same interval as markdown, with every release's notes."}}, 'description': 'from â\x86\x92 wanted: what an update within the declared range would bring. Present when wanted was passed.', 'additionalProperties': False}}, 'additionalProperties': False}, 'description': 'Most exposed first â\x80\x94 CVEs, then security releases, then fixes, then releases behind; untracked last, in the order given.'}}, 'additionalProperties': False}
search_releases
Search products and release notes
Full-catalog search across product names and release history. Returns matching products and releases with permalinks.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 200, 'description': 'Search products and release notes. At least 2 characters.'}, 'category': {'enum': ['Developer Tools', 'Frameworks & Libraries', 'Languages & Runtimes', 'Infrastructure & DevOps', 'Databases & Data', 'Security & Privacy', 'Games', 'Gaming Tools', 'Operating Systems', 'System Utilities', 'Browsers', 'Communication', 'Media', 'Creative Tools', 'AI', 'Productivity', 'Lifestyle & Apps', 'Firmware', 'Drivers'], 'type': 'string', 'description': 'Limit results to one product category.'}}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'products', 'releases'], 'properties': {'note': {'type': 'string', 'description': 'Present when nothing matched.'}, 'query': {'type': 'string', 'description': 'The query as searched â\x80\x94 trimmed and capped.'}, 'category': {'enum': ['Developer Tools', 'Frameworks & Libraries', 'Languages & Runtimes', 'Infrastructure & DevOps', 'Databases & Data', 'Security & Privacy', 'Games', 'Gaming Tools', 'Operating Systems', 'System Utilities', 'Browsers', 'Communication', 'Media', 'Creative Tools', 'AI', 'Productivity', 'Lifestyle & Apps', 'Firmware', 'Drivers'], 'type': 'string', 'description': 'Limit results to one product category.'}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'vendor', 'category', 'description', 'url', 'homepage'], 'properties': {'url': {'type': 'string', 'description': "This product's page on What's New."}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provenance to keep with any quote, e.g. â\x80\x9cSample dataâ\x80\x9d.'}, 'vendor': {'type': 'string'}, 'license': {'type': 'string', 'description': "SPDX expression as the product's own source states it, e.g. MIT or LicenseRef-proprietary; absent when unknown."}, 'archived': {'type': 'boolean', 'description': 'Whether the upstream repository is archived; absent when unknown.'}, 'category': {'enum': ['Developer Tools', 'Frameworks & Libraries', 'Languages & Runtimes', 'Infrastructure & DevOps', 'Databases & Data', 'Security & Privacy', 'Games', 'Gaming Tools', 'Operating Systems', 'System Utilities', 'Browsers', 'Communication', 'Media', 'Creative Tools', 'AI', 'Productivity', 'Lifestyle & Apps', 'Firmware', 'Drivers'], 'type': 'string'}, 'homepage': {'type': 'string', 'description': "The vendor's own site."}, 'language': {'type': 'string'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'releases': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'date', 'url', 'sourceUrl', 'product'], 'properties': {'url': {'type': 'string', 'description': "This release's page on What's New."}, 'date': {'type': 'string', 'description': 'ISO 8601 timestamp.'}, 'title': {'type': 'string'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provenance to keep with any quote, e.g. â\x80\x9cPre-releaseâ\x80\x9d.'}, 'changes': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'text'], 'properties': {'text': {'type': 'string'}, 'category': {'enum': ['added', 'changed', 'fixed', 'removed', 'deprecated', 'security'], 'type': 'string'}}, 'additionalProperties': False}}, 'channel': {'type': 'string', 'description': "The source's own classification, e.g. â\x80\x9clongtermâ\x80\x9d."}, 'product': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}, 'summary': {'type': 'string'}, 'version': {'type': 'string'}, 'sourceUrl': {'type': 'string', 'description': "The vendor's own release notes."}, 'prerelease': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}}}, 'additionalProperties': False}
upgrade_notes
Review a dependency upgrade
Before or after upgrading dependencies — package.json / lockfile / requirements changes, npm update, pip install -U, a Gradle version catalog, go.mod, a workflow's actions — pass each package with the version you run and the version you are moving to. Returns every tracked release in between with the vendor's own breaking-change, deprecation, migration and security sections verbatim, the categorized change list, CVE ids and deterministic signals (major bump, removed/deprecated items, breaking mentions) — including breaking changes shipped in minor or patch versions. Pass repository (from the package's own package.json) for scoped or renamed packages; it makes the match exact. A Maven/Gradle, Go, NuGet or GitHub Actions package goes by its purl (e.g. pkg:maven/com.squareup.okhttp3/okhttp), or by its own coordinate as the name (group:artifact, a module path, owner/repo@ref), and is matched exactly or not at all. A Maven, Go or NuGet package this server does not track is checked against deps.dev after the answer and counted, to decide what to track next; pass recordMisses: false for private packages.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dependencies'], 'properties': {'dependencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'from'], 'properties': {'to': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The version being moved to. Omit for everything after `from` that is tracked.'}, 'from': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The version installed now â\x80\x94 a version, not a range: read it from the lockfile.'}, 'name': {'type': 'string', 'maxLength': 214, 'minLength': 1, 'description': 'The package as its ecosystem spells it: "better-auth", "@tanstack/react-query", a Maven "group:artifact", a Go module path, or an Action\'s "owner/repo@ref".'}, 'purl': {'type': 'string', 'pattern': '^[Pp][Kk][Gg]:', 'maxLength': 300, 'description': 'The package as a purl (package URL), e.g. "pkg:maven/com.squareup.okhttp3/okhttp", "pkg:golang/github.com/spf13/cobra" or "pkg:nuget/Newtonsoft.Json" â\x80\x94 what an SBOM, OSV or Renovate already names it by. Takes precedence over name and registry; a version inside it is ignored in favour of the versions passed beside it.'}, 'registry': {'enum': ['npm', 'pypi', 'crates', 'rubygems'], 'type': 'string', 'description': "Default npm â\x80\x94 unless purl, or the name's own shape (group:artifact, a Go module path), says otherwise."}, 'repository': {'type': 'string', 'maxLength': 300, 'description': "The package's source repository â\x80\x94 its package.json `repository`, or the repo a Maven or NuGet package is built from (any GitHub URL, github:owner/repo or owner/repo). Resolves scoped and renamed packages the name alone cannot, and makes the match exact."}}}, 'maxItems': 20, 'minItems': 1, 'description': 'Up to 20 per call; split a larger upgrade.'}, 'recordMisses': {'type': 'boolean', 'description': 'Default true. A Maven, Go or NuGet package this server does not track is checked against deps.dev after the answer and counted per day, with nothing about the caller, to decide what to track next. Pass false for private packages.'}}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dependencies'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'dependencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'from', 'status'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'name': {'type': 'string'}, 'purl': {'type': 'string', 'description': 'The package as a versionless purl, as it was matched.'}, 'match': {'type': 'object', 'required': ['slug', 'name', 'vendor', 'url', 'tier', 'matchedKey'], 'properties': {'url': {'type': 'string', 'description': "The product's page on What's New."}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['identifier', 'namespace', 'name'], 'type': 'string', 'description': "identifier: a registry id, a purl or a repository the catalog tracks. namespace: the package sits under a namespace the product claims (a Maven group, say) â\x80\x94 the notes are the family's. name: a name-only guess â\x80\x94 check the product before trusting it, and pass purl or repository to make it exact."}, 'vendor': {'type': 'string'}, 'matchedKey': {'type': 'string'}}, 'additionalProperties': False}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'How the package and its versions were resolved, and what was cut.'}, 'status': {'enum': ['ok', 'untracked', 'unreadable', 'unversioned', 'unplaceable', 'same', 'reversed', 'unorderable'], 'type': 'string', 'description': 'ok answers; untracked is not in the catalog; unreadable is a from/to the version grammar cannot read (a range is not a version); the rest name why the pair has no interval.'}, 'changes': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'versions'], 'properties': {'text': {'type': 'string'}, 'versions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The versions that shipped it, newest first â\x80\x94 several when a fix landed on more than one branch.'}, 'synthesized': {'type': 'boolean', 'const': True, 'description': 'Summarized from commit messages because the vendor published no notes.'}}, 'additionalProperties': False}}, 'category': {'enum': ['added', 'changed', 'fixed', 'removed', 'deprecated', 'security'], 'type': 'string'}}, 'additionalProperties': False}, 'description': 'Every categorized change across the interval, merged across releases, removed/deprecated/security first.'}, 'signals': {'type': 'object', 'required': ['majorBump', 'breakingMentions', 'removed', 'deprecated', 'security', 'cves'], 'properties': {'cves': {'type': 'array', 'items': {'type': 'string'}}, 'removed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'security': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'majorBump': {'type': 'boolean'}, 'deprecated': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'breakingMentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'description': "Deterministic, over every release in the interval: a SemVer major bump, Keep a Changelog removed/deprecated/security items, the vendor's literal â\x80\x9cbreakingâ\x80\x9d wording, CVE ids. No model judged anything.", 'additionalProperties': False}, 'interval': {'type': 'object', 'required': ['from', 'releases', 'unordered'], 'properties': {'to': {'type': 'object', 'required': ['label', 'tracked'], 'properties': {'url': {'type': 'string', 'description': "The release's page here, when tracked."}, 'date': {'type': 'string', 'description': 'ISO 8601, when tracked.'}, 'label': {'type': 'string'}, 'tracked': {'type': 'boolean', 'description': 'Whether this exact version is in the history we hold.'}}, 'description': 'Absent when the call named no `to`.', 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['label', 'tracked'], 'properties': {'url': {'type': 'string', 'description': "The release's page here, when tracked."}, 'date': {'type': 'string', 'description': 'ISO 8601, when tracked.'}, 'label': {'type': 'string'}, 'tracked': {'type': 'boolean', 'description': 'Whether this exact version is in the history we hold.'}}, 'additionalProperties': False}, 'ahead': {'type': 'boolean', 'const': True, 'description': '`from` is newer than anything we track.'}, 'newest': {'type': 'string', 'description': 'The newest version we hold.'}, 'oldest': {'type': 'string', 'description': 'The oldest version we hold.'}, 'releases': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases numbered inside the interval.'}, 'truncated': {'type': 'boolean', 'const': True, 'description': '`from` sits below the history we hold, so `releases` is a lower bound.'}, 'unordered': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Rows the comparator could not place against it.'}}, 'additionalProperties': False}, 'registry': {'enum': ['npm', 'pypi', 'crates', 'rubygems'], 'type': 'string', 'description': 'The registry, when the package is in one of these four; absent for a Maven, Go, NuGet or Actions package.'}, 'releases': {'type': 'array', 'items': {'type': 'object', 'required': ['version', 'title', 'date', 'url'], 'properties': {'url': {'type': 'string', 'description': "This release's page on What's New."}, 'date': {'type': 'string', 'description': 'ISO 8601 timestamp.'}, 'title': {'type': 'string'}, 'cveIds': {'type': 'array', 'items': {'type': 'string'}}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provenance to keep with any quote, e.g. â\x80\x9cSample dataâ\x80\x9d.'}, 'removed': {'type': 'boolean', 'const': True}, 'version': {'type': 'string'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'heading', 'text'], 'properties': {'key': {'enum': ['breaking', 'security', 'deprecated', 'migration'], 'type': 'string'}, 'text': {'type': 'string', 'description': "Verbatim from the vendor's notes."}, 'under': {'type': 'string', 'description': "The heading this section sits under â\x80\x94 in a monorepo's release note, the package it is about."}, 'heading': {'type': 'string'}, 'truncated': {'type': 'boolean', 'const': True, 'description': "Cut at the cap; the release's permalink has it whole."}}, 'additionalProperties': False}, 'description': 'What the vendor filed under its own breaking / security / deprecation / migration headings.'}, 'security': {'type': 'boolean', 'const': True}, 'sourceUrl': {'type': 'string', 'description': "The vendor's own release notes; present when the notes were read."}, 'deprecated': {'type': 'boolean', 'const': True}, 'notesOmitted': {'type': 'boolean', 'const': True, 'description': 'Past the per-call body budget: listed by version only; the permalink has the notes.'}, 'breakingMention': {'type': 'boolean', 'const': True, 'description': "The vendor's own words say â\x80\x9cbreaking changeâ\x80\x9d."}, 'sectionsOmitted': {'type': 'boolean', 'const': True, 'description': 'A budget cut a section or left one out; the permalink has them all.'}}, 'additionalProperties': False}, 'description': 'Newest first.'}, 'compareUrl': {'type': 'string', 'description': "The interval as one page on What's New."}, 'uncategorized': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Versions in the interval with no categorized changes.'}, 'changesTruncated': {'type': 'boolean', 'const': True}, 'compareMarkdownUrl': {'type': 'string', 'description': "The same interval as markdown, with every release's notes."}}, 'additionalProperties': False}}}, 'additionalProperties': False}
whats_new
What changed in a product
A product's newest releases with notes. Pass since_version (the version you run) to get only what shipped after it, with per-category change counts.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['product'], 'properties': {'limit': {'type': 'integer', 'maximum': 25, 'minimum': 1, 'description': 'Releases to return, default 10.'}, 'product': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Product slug or name, e.g. "next-js" or "Next.js".'}, 'since_version': {'type': 'string', 'maxLength': 100, 'description': 'The version you run. Returns only the releases above it in the history, matched exactly or as the same version spelled with fewer trailing zeros. A version we do not hold is reported as a miss rather than guessed into an ordering.'}}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['product', 'returned', 'releases'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'How the product or the version was resolved.'}, 'product': {'type': 'object', 'required': ['slug', 'name', 'vendor', 'category', 'description', 'url', 'homepage'], 'properties': {'url': {'type': 'string', 'description': "This product's page on What's New."}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provenance to keep with any quote, e.g. â\x80\x9cSample dataâ\x80\x9d.'}, 'vendor': {'type': 'string'}, 'license': {'type': 'string', 'description': "SPDX expression as the product's own source states it, e.g. MIT or LicenseRef-proprietary; absent when unknown."}, 'archived': {'type': 'boolean', 'description': 'Whether the upstream repository is archived; absent when unknown.'}, 'category': {'enum': ['Developer Tools', 'Frameworks & Libraries', 'Languages & Runtimes', 'Infrastructure & DevOps', 'Databases & Data', 'Security & Privacy', 'Games', 'Gaming Tools', 'Operating Systems', 'System Utilities', 'Browsers', 'Communication', 'Media', 'Creative Tools', 'AI', 'Productivity', 'Lifestyle & Apps', 'Firmware', 'Drivers'], 'type': 'string'}, 'homepage': {'type': 'string', 'description': "The vendor's own site."}, 'language': {'type': 'string'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': False}, 'releases': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'date', 'url', 'sourceUrl'], 'properties': {'url': {'type': 'string', 'description': "This release's page on What's New."}, 'body': {'type': 'string'}, 'date': {'type': 'string', 'description': 'ISO 8601 timestamp.'}, 'title': {'type': 'string'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Provenance to keep with any quote, e.g. â\x80\x9cPre-releaseâ\x80\x9d.'}, 'changes': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'text'], 'properties': {'text': {'type': 'string'}, 'category': {'enum': ['added', 'changed', 'fixed', 'removed', 'deprecated', 'security'], 'type': 'string'}}, 'additionalProperties': False}}, 'channel': {'type': 'string', 'description': "The source's own classification, e.g. â\x80\x9clongtermâ\x80\x9d."}, 'summary': {'type': 'string'}, 'version': {'type': 'string'}, 'sourceUrl': {'type': 'string', 'description': "The vendor's own release notes."}, 'prerelease': {'type': 'boolean', 'const': True}, 'bodyTruncated': {'type': 'boolean', 'const': True, 'description': 'The body was cut at the cap; the permalink has it all.'}}, 'additionalProperties': False}}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'truncated': {'type': 'boolean', 'const': True}, 'newerCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Releases above the pinned version, before the limit.'}, 'changeCounts': {'type': 'object', 'description': 'Change items across the whole span, even when truncated.', 'propertyNames': {'enum': ['added', 'changed', 'fixed', 'removed', 'deprecated', 'security'], 'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'sinceVersion': {'type': 'string', 'description': 'The version you passed.'}, 'sinceVersionFound': {'type': 'boolean', 'description': 'Whether that version was found in the history. False means the releases below are the latest, not the ones after yours.'}}, 'additionalProperties': False}
追加
missing_changes
2026年9月27日2:43
変更
upgrade_notes
2026年9月27日2:43
変更
upgrade_notes
2026年9月25日2:50
追加
upgrade_notes
2026年9月21日2:49
追加
whats_new
2026年9月17日12:39
追加
search_releases
2026年9月17日12:39
追加
list_products
2026年9月17日12:39