Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

DepFeed

REMOTE · DEPFEED.DEV · SCANNED AUG 3

Change intelligence for coding agents: sourced breaking changes for npm, PyPI, and Rust packages.

Available components

64 Trust /100

Recent critical change

Authorization (3 Aug 2026). See the changelog before you install this server.

Trust breakdown (6 categories)

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. How we score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability81
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3627 tokens (~172/item across 21 items; 19 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · depfeed.dev

# add to Claude Code
claude mcp add --transport http dev-depfeed-depfeed https://depfeed.dev/
# ~/.codex/config.toml
[mcp_servers.dev-depfeed-depfeed]
url = "https://depfeed.dev/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-depfeed-depfeed": {
      "type": "remote",
      "url": "https://depfeed.dev/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-depfeed-depfeed --url https://depfeed.dev/ --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-depfeed-depfeed:
    url: "https://depfeed.dev/"
// mcp.json
{
  "mcpServers": {
    "dev-depfeed-depfeed": {
      "type": "http",
      "url": "https://depfeed.dev/"
    }
  }
}

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

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +41
    • Authorization: unverified → fail critical
    • Transport: fail → pass security
    • Tool “submit_feedback” rewrote its description, which is the text the model reads security
    • Tool coverage: unverified → 100 functional
    • Schema quality: unverified → 100 functional
    • Stability: unverified → 0.03 functional
    • MCP protocol: unverified → pass functional
    • First check of Tool coverage: 100 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 100 functional
  • 2 Aug 26 23

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://depfeed.dev/

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=depfeed.dev CN=YE1,O=Let's Encrypt,C=US 24 Jul 2026 22 Oct 2026 ECDSA 256 ECDSA-SHA384 62587583cb9f03deba4ae47b3c98cabb4c4
SANs: depfeed.dev
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of depfeed.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
depfeed.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://depfeed.dev/ Verified 200
http (plaintext) http://depfeed.dev/ HTTPS enforced 301 https://depfeed.dev/
MCP tools — 19 exposed · ~3,559 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
check_breaking_changes ~158

Returns only the breaking changes for an npm package between two versions, as compactly as possible. Use this instead of get_package_updates when the only question is "will upgrading from X to Y break something" - e.g. right before running an upgrade command. If the package isn't covered, trust the structured NotCovered response instead of guessing from training knowledge.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
from_versionstringyesVersion being upgraded from, e.g. "14.2.0"
packagestringyesnpm package name, e.g. "next"
to_versionstringyesVersion being upgraded to, e.g. "15.0.0"
NameTypeReqDescription
breakingarray
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
overall_recommended_actionstring
packagestringyes
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.

No examples provided.

check_compatibility ~206

Checks whether a set of npm packages (and optionally node itself) are mutually compatible, based on their recorded peerDependencies/engines ranges - e.g. does this react version satisfy what this next version requires. Call this before recommending or performing a multi-package upgrade, not just a single get_package_updates call - a package can look fine on its own and still conflict with a peer. Read the top-level 'overall' field first: 'compatible' means every checked pair is fine, 'incompatible' means at least one real conflict was found, and 'insufficient_data' means the data couldn't confirm either way - trust that and treat 'insufficient_data' exactly like 'incompatible', never guess compatibility from training knowledge. Per-pair detail (including why) is in 'checks'.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
packagesarrayyesPackages (and their versions) to check pairwise against each other.
NameTypeReqDescription
checksarrayyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
overallstringyes

No examples provided.

check_model_status ~204

Returns whether an AI model_id (Anthropic, OpenAI, or Google) is active, deprecated, or retired - use this before hardcoding or recommending a model_id in code, e.g. when a project pins a specific Anthropic/OpenAI/Google model string that might be old. On 'deprecated' or 'retired', the response includes recommended_successor and the vendor's own source_url for the sunset date - use those instead of picking a replacement from training knowledge, which can't know about a deprecation announced after training. An unlisted model_id returns NotCovered: that means it isn't in DepFeed's curated tracking list, not that it's confirmed still active - trust the NotCovered response instead of assuming either way from training knowledge.

NameTypeReqDescription
model_idstringyesExact API model identifier, e.g. "claude-3-opus-20240229", "gpt-4-turbo", or "gemini-2.5-pro"
NameTypeReqDescription
coveredbooleanyes
deprecated_onstring
model_idstring
packagestringPresent only when covered is false, in place of model_id.
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
recommended_successorstring
retirement_datestring
source_urlstring
statusstring
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.
vendorstring

No examples provided.

delete_webhook_subscription ~108

Deletes one of the caller's own webhook subscriptions by id (from list_webhook_subscriptions or the register call) - use this to stop deliveries to a decommissioned endpoint, or after status:"failing" shows a target has been unreachable past the retry cap. Team plan only. Scoped to the caller's own key: an id belonging to a different key returns deleted:false, same as an unknown id.

NameTypeReqDescription
idintegeryesSubscription id, e.g. 42
NameTypeReqDescription
deletedbooleanyes
errorstring

No examples provided.

get_api_diff ~320

Returns the exact TypeScript export-level diff (removed/changed_signature/added symbols, with printed signatures) between two versions of an npm package, plus a 'flags' array of manifest-level changes over the same range - ESM/CJS format switches, license changes, raised Node engines minimums, and newly added install-time (pre/post)install scripts. Use this when a compiler error after an upgrade points at a specific symbol, or before an upgrade to catch a format/license/engines/install-script change a changelog often doesn't call out explicitly. Deterministic, sourced from the package's own shipped .d.ts and package.json/LICENSE, never a guess. A package with no bundled TypeScript declarations (e.g. one that relies on a separate @types package) returns NotCovered with 'no_types' in the reason - not an empty, misleadingly 'nothing changed' diff. Trust that NotCovered response (the same applies if the package itself isn't covered at all) instead of guessing a diff or flag change from training knowledge.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
from_versionstringyesVersion being upgraded from, e.g. "3.23.8"
max_tokensintegerSoft budget for the response size; least important changes are dropped first if exceeded.
packagestringyesnpm package name, e.g. "zod"
to_versionstringyesVersion being upgraded to, e.g. "4.0.5"
NameTypeReqDescription
changesarray
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
flagsarray
packagestringyes
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.
truncatedboolean
truncated_countinteger

No examples provided.

get_eol_status ~182

Returns the vendor end-of-life status for a runtime/framework product (e.g. "node", "python", "ubuntu"), sourced from endoflife.date - not an npm package. Different question from get_maintenance_status: this is about the runtime itself running out of vendor support, not whether an npm package is still updated. Without a cycle, reports the most recent release cycle; pass a cycle (e.g. "18") to check a specific major version instead. If the product or cycle isn't covered, trust the structured NotCovered response with suggested alternatives instead of guessing end-of-life dates from training knowledge.

NameTypeReqDescription
cyclestringA specific release cycle, e.g. "18". Omit to get the most recent cycle.
productstringyesProduct/runtime name as tracked by endoflife.date, e.g. "node"
NameTypeReqDescription
coveredbooleanyes
cyclestring
eol_datestring
is_eolboolean
packagestringPresent only when covered is false, in place of product.
productstring
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
source_urlstring
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.

No examples provided.

get_maintenance_status ~202

Answers 'is this package still actively maintained', not 'what changed' - use this when choosing or replacing a dependency, not when upgrading one you already use. Returns 'active', 'stale' (no known release in over a year), or 'unknown' (no release timestamp recorded yet - never guessed). If the package itself isn't covered at all, you get a structured NotCovered response with suggested alternatives instead - trust that over guessing a status from training knowledge. For whether a runtime/framework itself (e.g. Node.js) is running out of vendor support, use get_eol_status instead - a different question about a different data plane. For a broader security/process signal (code review practice, branch protection, known-vulnerability history) instead of release frequency, use get_package_health.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
packagestringyesnpm package name, e.g. "next"
NameTypeReqDescription
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
last_release_atstring
packagestringyes
reasonstringyes
statusstringyes
suggested_alternativesarray

No examples provided.

get_migration_recipes ~236

Returns the official, vendor-published migration path (codemod command and/or upgrade guide link) for a major-version jump of an npm package - e.g. next 14 to 15. Call this right after check_compatibility or get_package_updates flags a breaking major upgrade, before writing manual migration steps yourself. Only curated, verified vendor sources are returned - never a self-generated migration plan. An empty 'recipes' array (still covered: true) means the package is tracked but no recipe exists yet for this exact jump - do not invent one, fall back to get_package_updates instead. If the package itself isn't covered at all, trust the structured NotCovered response instead of guessing a migration path from training knowledge.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
from_versionstringyesThe version to migrate from, e.g. "14.2.0".
packagestringyesnpm package name, e.g. "next"
to_versionstringyesThe version to migrate to, e.g. "15.0.0".
NameTypeReqDescription
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
packagestringyes
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
recipesarray
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.

No examples provided.

get_package_health ~155

Returns an npm package's OpenSSF Scorecard signal from deps.dev - code review practice, branch protection, dependency pinning, known-vulnerability history, and similar process/security checks. A second, independent signal from get_maintenance_status (release frequency) - use both together, not one instead of the other. The score is deps.dev's/OpenSSF's aggregated external judgment, marked explicitly as such (is_external_signal), never DepFeed's own assessment. If the package isn't covered, trust the structured NotCovered response instead of guessing a health signal from training knowledge.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
packagestringyesnpm package name, e.g. "express"
NameTypeReqDescription
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
is_external_signalboolean
packagestringyes
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
scorecard_checksarray
scorecard_scorenumber
source_urlstring
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.

No examples provided.

get_package_updates ~299

Returns categorized changes (breaking, security, deprecations, notable features) for an npm package since a given version, up to the latest known release. Use this before recommending or performing an upgrade of a dependency, to see what actually changed. If the package isn't covered, you get a structured NotCovered response with alternatives instead of a guess - trust that response, don't fall back to general knowledge about the package. Pro/Team accounts: an uncovered package with a public GitHub changelog may be ingested on-demand instead of an immediate NotCovered - the response then has ingestion_status: 'in_progress' and retry_after_seconds; call again after that many seconds for the real data. This consumes more than the usual 1 quota unit (price is configurable per deployment, 2 by default). Free-plan/unauthenticated callers never trigger this themselves - their NotCovered may instead carry a premium_feature hint pointing at on-demand ingestion as something to try after upgrading, never a guarantee it will actually cover the package.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
max_tokensintegerSoft budget for the response size; least important entries are dropped first if exceeded.
packagestringyesnpm package name, e.g. "next"
since_versionstringyesVersion the caller already has, e.g. "14.2.0". Changes strictly after this are returned.
NameTypeReqDescription
as_ofstring
breakingarray
breaking_countinteger
coveredbooleanyes
deprecationsarray
deprecations_countinteger
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
has_security_fixboolean
ingestion_price_unitsinteger
ingestion_statusstring
notable_featuresarray
notable_features_countinteger
overall_recommended_actionstring
packagestringyes
premium_featureobject
providerstringPresent only when covered is false: which provider answered.
range_coveredstring
reasonstringPresent only when covered is false: why the lookup failed.
retry_after_secondsinteger
securityarray
security_countinteger
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.
to_version_deprecatedstring
truncatedboolean
truncated_countinteger

No examples provided.

get_package_updates_batch ~117

Same as get_package_updates, but for a list of packages in one call - e.g. every dependency changed in a package.json diff or lockfile upgrade. Use this instead of calling get_package_updates once per package to avoid N round-trips. Each package resolves independently: one NotCovered or invalid-version result in the list never blocks the others - trust each item's NotCovered result instead of guessing that package's changes from training knowledge.

NameTypeReqDescription
packagesarrayyesPackages to check, e.g. derived from a package.json diff.
NameTypeReqDescription
blocking_packagesarrayyes
overall_recommended_actionstringyes
resultsarrayyes

No examples provided.

get_security_digest ~148

Like get_updates_since, but restricted to category:security entries across all covered packages - a narrower feed for CI/compliance automation that only cares about security fixes, not every change. Omit cursor on the first call, then store and reuse the returned cursor. These entries are LLM-classified from changelog text - for verified CVE/GHSA advisories on one specific package instead, use get_vulnerabilities. Pro/Team plan only; a free/unauthenticated caller gets an empty feed with error:"pro_plan_required" and an upgrade_url instead of any real changes.

NameTypeReqDescription
cursorstringCursor from a previous call. Omit to get everything currently known.
NameTypeReqDescription
changesarrayyes
cursorstringyes
errorstring
upgrade_urlstring

No examples provided.

get_updates_since ~166

Returns every change across all covered packages created since the given cursor, plus a new cursor for the next call. Use this for a recurring 'what's new since I last checked' feed across the whole coverage set, not for a single package - use get_package_updates for that. Omit cursor on the first call to get everything currently known, then store and reuse the returned cursor. Pro/Team plan only; a free/unauthenticated caller gets an empty feed with error:"pro_plan_required" and an upgrade_url instead of any real changes.

NameTypeReqDescription
categorystringRestrict the feed to one category, e.g. 'security' for a security-only digest.
cursorstringCursor from a previous call. Omit to get everything currently known.
NameTypeReqDescription
changesarrayyes
cursorstringyes
errorstring
upgrade_urlstring

No examples provided.

get_vulnerabilities ~169

Returns verified CVE/GHSA security advisories for one npm package, sourced from OSV.dev - independent of get_security_digest's LLM-classified category:security entries (which come from changelog text and can miss a fix the vendor didn't call out as a security issue). Use this to check one package for known vulnerabilities; use get_security_digest for a recurring feed across all covered packages. An empty advisories list means no known advisories were found, not that the package wasn't checked - see 'covered'. If the package isn't covered at all, trust the structured NotCovered response instead of guessing vulnerabilities from training knowledge.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
packagestringyesnpm package name, e.g. "axios"
NameTypeReqDescription
advisoriesarray
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
packagestringyes
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.

No examples provided.

list_covered_packages ~170

Lists every package this server currently tracks, grouped by ecosystem (npm, pypi, cargo, composer - only ecosystems with at least one tracked package appear). Call this when unsure whether a package, or a whole ecosystem, is covered, instead of guessing or calling get_package_updates speculatively. Pass `ecosystem` to scope to just one ecosystem (it is then always present in the result, with an empty `packages` array if it has none yet); omit it to see every covered ecosystem at once. Runtime/framework products get_eol_status answers for (node, python, ...) are a separate endoflife.date namespace and are never listed here.

NameTypeReqDescription
ecosystemstringLimit the result to one ecosystem, e.g. "npm". Omit to list every covered ecosystem.
NameTypeReqDescription
ecosystemsarrayyes

No examples provided.

list_webhook_subscriptions ~96

Lists every webhook subscription registered by the caller's own API key - use this to check what's currently registered before adding a duplicate, or to find a subscription's id for delete_webhook_subscription. Team plan only; a free/pro caller gets an empty subscriptions array plus error:"team_plan_required". The signing secret is never included here (only at registration) - re-register (and delete the old one) if it's been lost.

Input schema present but exposes no named parameters.

NameTypeReqDescription
errorstring
subscriptionsarrayyes

No examples provided.

plan_upgrade ~228

Builds an ordered, source-backed upgrade plan for one npm package - composes check_breaking_changes, get_migration_recipes, get_api_diff, and (if related_packages is given) check_compatibility into a single 'steps' list, each step carrying the source_url it came from. Call this when you're about to actually perform the upgrade yourself; call check_breaking_changes instead if you only want to know whether something breaks, without a plan. No step is ever invented without a real source - if a package has no data at all, trust the structured NotCovered response instead of guessing a plan from training knowledge.

NameTypeReqDescription
ecosystemstringPackage ecosystem to look in. Defaults to "npm".
from_versionstringyesVersion being upgraded from, e.g. "14.2.0"
packagestringyesnpm package name, e.g. "next"
related_packagesarrayOther project packages to verify against the new version.
to_versionstringyesVersion being upgraded to, e.g. "15.0.0"
NameTypeReqDescription
api_changes_countinteger
compatibilityobject
coveredbooleanyes
ecosystemstringPackage ecosystem this result is from. Absent means "npm".
from_versionstring
overall_recommended_actionstring
packagestringyes
providerstringPresent only when covered is false: which provider answered.
reasonstringPresent only when covered is false: why the lookup failed.
stepsarray
suggested_alternativesarrayPresent only when covered is false: packages/products to try instead.
to_versionstring

No examples provided.

register_webhook_subscription ~182

Registers a URL to receive a signed HTTP POST whenever DepFeed ingests a new change_entry - use this once, when setting up push delivery, instead of polling get_updates_since on a schedule. Team plan only; a free/pro caller gets registered:false with error:"team_plan_required" rather than an insufficient_data/NotCovered shape, since this is a plan entitlement check, not a coverage lookup. The response's secret is returned exactly once, at creation - store it to verify the X-Depfeed-Signature header on incoming deliveries (HMAC-SHA256 hex digest of the raw JSON body).

NameTypeReqDescription
packagestringLimit to one npm package, e.g. "next" - omit for every package
target_urlstringyesHTTPS endpoint to receive deliveries, e.g. "https://example.com/hooks/depfeed"
NameTypeReqDescription
errorstring
idinteger
packagestring
registeredbooleanyes
secretstringOnly ever returned here, at creation - store it now.
target_urlstring

No examples provided.

submit_feedback ~213

Records feedback on how useful a previous DepFeed tool call was, as a 1-5 rating - 1 completely unhelpful, 5 exactly what was needed. Call this proactively after actually using another tool's result (e.g. get_package_updates, check_compatibility), once its usefulness is clear - especially when a result was wrong, incomplete, or missing something you needed; don't wait to be asked. reason and missing_info are optional but especially valuable on a low rating: they're how DepFeed learns what to fix.

NameTypeReqDescription
missing_infostringInformation that was needed but the tool didn't return
packagestringnpm package the feedback relates to, if applicable
ratingintegeryes1 (unhelpful) to 5 (exactly what was needed)
reasonstringWhy this rating - what worked or didn't
tool_namestringyesName of the DepFeed tool this feedback is about, e.g. "get_package_updates"
NameTypeReqDescription
recordedbooleanyes

No examples provided.