<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Vincenzo Rubino</title>
    <description>The latest articles on Forem by Vincenzo Rubino (@depscope).</description>
    <link>https://forem.com/depscope</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3881381%2Fddb3cd30-dbce-4da9-8050-efced369013c.jpg</url>
      <title>Forem: Vincenzo Rubino</title>
      <link>https://forem.com/depscope</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/depscope"/>
    <language>en</language>
    <item>
      <title>The Hidden Cost of AI Coding Agents: Every Tool Is Fetching the Same Data</title>
      <dc:creator>Vincenzo Rubino</dc:creator>
      <pubDate>Mon, 20 Apr 2026 10:00:02 +0000</pubDate>
      <link>https://forem.com/depscope/the-hidden-cost-of-ai-coding-agents-every-tool-is-fetching-the-same-data-4fc1</link>
      <guid>https://forem.com/depscope/the-hidden-cost-of-ai-coding-agents-every-tool-is-fetching-the-same-data-4fc1</guid>
      <description>&lt;p&gt;Claude Code, Cursor, Copilot, Aider, Continue, Windsurf. Before any of them suggests &lt;code&gt;npm install express&lt;/code&gt;, they hit the npm registry. Before they suggest &lt;code&gt;pip install django&lt;/code&gt;, they hit PyPI. Before they warn about vulnerabilities, they hit OSV.&lt;/p&gt;

&lt;p&gt;Millions of agents. The &lt;strong&gt;same queries&lt;/strong&gt;. Over and over.&lt;/p&gt;

&lt;p&gt;Something is wrong with this picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Math of Waste
&lt;/h2&gt;

&lt;p&gt;Let's do some napkin math. Claude Code alone has tens of thousands of daily active users. Cursor has a million. Copilot has 15 million paid seats. Add the long tail of smaller agents, CI pipelines, and automated dependency checkers.&lt;/p&gt;

&lt;p&gt;Each of these agents, independently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Queries npm/PyPI/Cargo/Maven/… to verify package existence&lt;/li&gt;
&lt;li&gt;Fetches version metadata to avoid hallucinating wrong versions&lt;/li&gt;
&lt;li&gt;Checks OSV for vulnerabilities before recommending an install&lt;/li&gt;
&lt;li&gt;Re-downloads the same JSON responses, millions of times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The data doesn't change every millisecond. Express 5.2.1's health status is the same whether you ask at 09:00 or 09:05. &lt;strong&gt;But every agent asks independently.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This isn't just inefficient. It's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wasted bandwidth&lt;/strong&gt; for public registries (npm serves ~150B downloads/month — a meaningful fraction is just duplicated metadata checks)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasted tokens&lt;/strong&gt; — every LLM re-processes identical JSON responses it could have skipped entirely&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasted energy&lt;/strong&gt; — data centers running queries that return the exact same bytes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limiting pressure&lt;/strong&gt; on the public registries we all depend on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We ran into this ourselves while building an AI agent. We realized we were solving the wrong problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Inversion
&lt;/h2&gt;

&lt;p&gt;What if the answer isn't building &lt;em&gt;another&lt;/em&gt; tool that calls the registries, but building &lt;strong&gt;shared infrastructure&lt;/strong&gt; that calls them once?&lt;/p&gt;

&lt;p&gt;That's &lt;a href="https://depscope.dev" rel="noopener noreferrer"&gt;DepScope&lt;/a&gt;. Not a product. Not a SaaS. &lt;strong&gt;Infrastructure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The design is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One service fetches package metadata from all major registries&lt;/li&gt;
&lt;li&gt;It caches results in Redis (1h TTL for metadata, 6h for vulnerabilities)&lt;/li&gt;
&lt;li&gt;It persists everything in PostgreSQL&lt;/li&gt;
&lt;li&gt;Any AI agent — or any human — hits one endpoint and gets a structured answer
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/check/npm/express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns health score, vulnerabilities, latest version, alternatives, and a recommendation — all in one call.&lt;/p&gt;

&lt;p&gt;No auth. No API key. No signup. It's a public utility.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Actually Index
&lt;/h2&gt;

&lt;p&gt;We indexed &lt;strong&gt;14,744 packages across 17 ecosystems&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ecosystem&lt;/th&gt;
&lt;th&gt;Packages&lt;/th&gt;
&lt;th&gt;% with health &amp;lt; 60&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;8,632&lt;/td&gt;
&lt;td&gt;55%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyPI&lt;/td&gt;
&lt;td&gt;3,282&lt;/td&gt;
&lt;td&gt;56%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cargo&lt;/td&gt;
&lt;td&gt;1,219&lt;/td&gt;
&lt;td&gt;73%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RubyGems&lt;/td&gt;
&lt;td&gt;493&lt;/td&gt;
&lt;td&gt;71%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Composer&lt;/td&gt;
&lt;td&gt;484&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NuGet&lt;/td&gt;
&lt;td&gt;301&lt;/td&gt;
&lt;td&gt;37%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maven&lt;/td&gt;
&lt;td&gt;242&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;td&gt;68%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pub, Hex, Swift, CocoaPods, CPAN, Hackage, CRAN, Conda, Homebrew&lt;/td&gt;
&lt;td&gt;on-demand&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;8,334 packages out of 14,744 have a health score below 60/100.&lt;/strong&gt; That's the data your AI agent is recommending from, except it doesn't know.&lt;/p&gt;

&lt;p&gt;143 indexed packages are &lt;strong&gt;deprecated but still being suggested by AI agents every day&lt;/strong&gt; — &lt;code&gt;request&lt;/code&gt;, &lt;code&gt;mimic-fn&lt;/code&gt;, &lt;code&gt;path-is-absolute&lt;/code&gt;, &lt;code&gt;read-pkg-up&lt;/code&gt;, &lt;code&gt;camel-case&lt;/code&gt;. Ring a bell?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Numbers Behind "Free"
&lt;/h2&gt;

&lt;p&gt;People ask why this is free. The honest answer: it's cheaper to run it once for everyone than to have millions of agents doing the same thing.&lt;/p&gt;

&lt;p&gt;A single VM with 4GB of RAM serves the entire platform. Redis eats the repeat queries. PostgreSQL keeps the history. The actual cost scales with &lt;strong&gt;how many unique packages get queried&lt;/strong&gt;, not with how many agents query them.&lt;/p&gt;

&lt;p&gt;The marginal cost of serving the 1,000,000th request for &lt;code&gt;express&lt;/code&gt; is zero.&lt;/p&gt;

&lt;p&gt;So yes — free. No rate limit on cached data. No paywall on security info. No premium tier for "advanced features" that should be table stakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use It (Seriously, It's One Line)
&lt;/h2&gt;

&lt;p&gt;Whatever AI coding agent you're using, add this once. You never have to think about it again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; — in &lt;code&gt;CLAUDE.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;## DEPSCOPE — Before any install: curl depscope.dev/api/check/{eco}/{pkg}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt; — in &lt;code&gt;.cursorrules&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Before any &lt;span class="nb"&gt;install&lt;/span&gt;: curl depscope.dev/api/check/&lt;span class="o"&gt;{&lt;/span&gt;eco&lt;span class="o"&gt;}&lt;/span&gt;/&lt;span class="o"&gt;{&lt;/span&gt;pkg&lt;span class="o"&gt;}&lt;/span&gt; — no auth, free
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windsurf&lt;/strong&gt; — in &lt;code&gt;.windsurfrules&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Before any &lt;span class="nb"&gt;install&lt;/span&gt;: curl depscope.dev/api/check/&lt;span class="o"&gt;{&lt;/span&gt;eco&lt;span class="o"&gt;}&lt;/span&gt;/&lt;span class="o"&gt;{&lt;/span&gt;pkg&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Copilot&lt;/strong&gt; — in &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Before any &lt;span class="nb"&gt;install&lt;/span&gt;: curl depscope.dev/api/check/&lt;span class="o"&gt;{&lt;/span&gt;eco&lt;span class="o"&gt;}&lt;/span&gt;/&lt;span class="o"&gt;{&lt;/span&gt;pkg&lt;span class="o"&gt;}&lt;/span&gt; — free, no auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt; — search "DepScope" in the GPT Store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Any agent with HTTP access&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/check/npm/express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your agent now verifies packages before suggesting installs. No hallucinated versions. No deprecated libraries. No surprise vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Returns
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"package"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"express"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ecosystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"latest_version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5.2.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"health"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"risk"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"breakdown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"maintenance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"security"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"popularity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"maturity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"community"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"vulnerabilities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recommendation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"safe_to_use"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"express@5.2.1 is safe to use (health: 85/100)"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One request. Full picture. Cached in 50ms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side Effects That Matter
&lt;/h2&gt;

&lt;p&gt;The security angle is real — 402 vulnerabilities tracked, with filtering to show only those affecting the latest version (Django went from 272 historical "vulnerabilities" to the 1 that actually matters today).&lt;/p&gt;

&lt;p&gt;But the real story is &lt;strong&gt;systemic&lt;/strong&gt;: when one cache serves every agent, we stop hammering the public registries we all depend on. Fewer calls to npm. Fewer calls to PyPI. Less wasted data center compute. Less energy. Fewer tokens burned by agents processing duplicate JSON.&lt;/p&gt;

&lt;p&gt;It's the most boring optimization possible. It's also the one nobody was doing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Endpoints Worth Knowing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LLM-optimized plain text&lt;/strong&gt; — save ~74% tokens vs JSON when an agent reads the result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/prompt/npm/express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Public trending&lt;/strong&gt; — what the ecosystem is actually installing right now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/trending
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Compare packages&lt;/strong&gt; — rank them side by side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/compare/npm/express,fastify,hono
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Find alternatives&lt;/strong&gt; when something's deprecated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/alternatives/npm/request
&lt;span class="c"&gt;# Returns: axios, got, node-fetch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Scan a project&lt;/strong&gt; — POST your &lt;code&gt;package.json&lt;/code&gt; deps:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://depscope.dev/api/scan &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"ecosystem":"npm","packages":{"express":"*","lodash":"*"}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Just the health score&lt;/strong&gt; (fast):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/health/npm/react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Beyond package health
&lt;/h2&gt;

&lt;p&gt;In the last few days DepScope expanded from pure package health into adjacent verticals, still on the same free API and the same shared-infrastructure philosophy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error → Fix Database&lt;/strong&gt; — POST a stack trace or error snippet to &lt;code&gt;/api/error/resolve&lt;/code&gt; and get verified solutions with package+version context. No more agents re-searching the same &lt;code&gt;ERR_PACKAGE_PATH_NOT_EXPORTED&lt;/code&gt; for the millionth time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compatibility Matrix&lt;/strong&gt; — &lt;code&gt;/api/compat&lt;/code&gt; returns whether &lt;code&gt;Next 16 + React 19 + Prisma 6&lt;/code&gt; is a verified combo before you attempt the upgrade. Every agent that suggests a bump should hit this first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Known Bugs per version&lt;/strong&gt; — &lt;code&gt;/api/bugs/{ecosystem}/{package}&lt;/code&gt; returns non-CVE known issues affecting specific versions (regressions, production incidents, edge cases). The stuff that never reaches an advisory but still breaks your build.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three share the same infrastructure principle: &lt;strong&gt;cache the answer once, serve every agent&lt;/strong&gt;. Same endpoint convention, same free tier, same 200 req/min, no auth.&lt;/p&gt;

&lt;p&gt;Three verticals, one API. That's 12 MCP tools now covering package health, error resolution, and stack compatibility — so your AI agent has the full picture before it types &lt;code&gt;install&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do now
&lt;/h2&gt;

&lt;p&gt;If you use an AI coding agent: copy one line into your config. Done.&lt;/p&gt;

&lt;p&gt;If you build an AI agent or an IDE with AI features: integrate DepScope instead of hitting registries directly. Your users get faster responses, you save infrastructure cost, and you stop contributing to the problem.&lt;/p&gt;

&lt;p&gt;If you run a public registry: we'd love to hear from you. Fewer redundant calls = less load for you.&lt;/p&gt;

&lt;p&gt;It's not complicated. It's shared infrastructure. The oldest idea on the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://depscope.dev" rel="noopener noreferrer"&gt;depscope.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Docs&lt;/strong&gt;: &lt;a href="https://depscope.dev/api-docs" rel="noopener noreferrer"&gt;depscope.dev/api-docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAPI&lt;/strong&gt;: &lt;a href="https://depscope.dev/openapi.json" rel="noopener noreferrer"&gt;depscope.dev/openapi.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt; (12 tools): &lt;a href="https://www.npmjs.com/package/depscope-mcp" rel="noopener noreferrer"&gt;npm install -g depscope-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RapidAPI&lt;/strong&gt;: available on the hub
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Try it right now&lt;/span&gt;
curl https://depscope.dev/api/check/npm/express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;DepScope is MIT-licensed. Source, issues, and contributions welcome:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/cuttalo/depscope" rel="noopener noreferrer"&gt;github.com/cuttalo/depscope&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Action&lt;/strong&gt; (audit deps on push/PR):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cuttalo/depscope@main&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;ecosystem&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security disclosure&lt;/strong&gt;: &lt;a href="https://depscope.dev/security/disclosure" rel="noopener noreferrer"&gt;depscope.dev/security/disclosure&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built with FastAPI + PostgreSQL + Redis by Cuttalo srl. Feedback at &lt;a href="mailto:depscope@cuttalo.com"&gt;depscope@cuttalo.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>npm</category>
      <category>python</category>
    </item>
    <item>
      <title>The State of Package Health: Weekly Report #002</title>
      <dc:creator>Vincenzo Rubino</dc:creator>
      <pubDate>Mon, 20 Apr 2026 08:00:02 +0000</pubDate>
      <link>https://forem.com/depscope/the-state-of-package-health-weekly-report-002-5n7</link>
      <guid>https://forem.com/depscope/the-state-of-package-health-weekly-report-002-5n7</guid>
      <description>&lt;h1&gt;
  
  
  The State of Package Health — Weekly Report #002
&lt;/h1&gt;

&lt;p&gt;Snapshot date: &lt;strong&gt;2026-04-20&lt;/strong&gt;. Index: &lt;strong&gt;22,588 packages&lt;/strong&gt;, &lt;strong&gt;632 vulnerabilities&lt;/strong&gt; tracked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Health distribution
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Bucket&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Critical (&amp;lt; 40)&lt;/td&gt;
&lt;td&gt;3,564&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Poor (40–59)&lt;/td&gt;
&lt;td&gt;9,388&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fair (60–79)&lt;/td&gt;
&lt;td&gt;7,229&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good (80+)&lt;/td&gt;
&lt;td&gt;2,389&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unknown/unscored&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Popular packages with open vulnerabilities
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;82&lt;/strong&gt; packages with &amp;gt;1M weekly downloads have at least one tracked advisory.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ecosystem&lt;/th&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Vulns&lt;/th&gt;
&lt;th&gt;Weekly downloads&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;&lt;code&gt;next&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;34,757,357&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;&lt;code&gt;angular&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;524,838&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;conda&lt;/td&gt;
&lt;td&gt;&lt;code&gt;numpy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;425,437&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;lmdb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;893,100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;paddlepaddle&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;370,918&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;vllm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3,139,157&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;composio-core&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;102,346&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Pillow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;108,511,966&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pillow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;108,511,966&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;conda&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pillow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;235,364&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cargo&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rust-crypto&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;216,521&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pip&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;128,105,971&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;&lt;code&gt;react&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;125,187,902&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eslint-plugin-prettier&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;27,258,312&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ujson&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;21,698,954&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Zombie packages (deprecated, still installed)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;82 deprecated packages&lt;/strong&gt; with &amp;gt;1M weekly downloads — combined downloads: 941,010,272/week.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Weekly downloads&lt;/th&gt;
&lt;th&gt;Why it's deprecated&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mimic-fn&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;104,431,747&lt;/td&gt;
&lt;td&gt;Renamed to mimic-function&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pkg-dir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;78,705,523&lt;/td&gt;
&lt;td&gt;Renamed to &lt;code&gt;package-directory&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;path-is-absolute&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;76,082,652&lt;/td&gt;
&lt;td&gt;This package is no longer relevant as Node.js 0.12 is unmaintained.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;find-cache-dir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;42,672,386&lt;/td&gt;
&lt;td&gt;Renamed to &lt;code&gt;find-cache-directory&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@types/uuid&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;37,184,147&lt;/td&gt;
&lt;td&gt;This is a stub types definition. uuid provides its own type definitions, so you do not need this installed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;read-pkg-up&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;36,291,504&lt;/td&gt;
&lt;td&gt;Renamed to read-package-up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;node-domexception&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;35,298,273&lt;/td&gt;
&lt;td&gt;Use your platform's native DOMException instead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;no-case&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;34,918,820&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;change-case&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;p-finally&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;29,798,243&lt;/td&gt;
&lt;td&gt;Deprecated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;camel-case&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;28,182,607&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;change-case&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;param-case&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;27,221,685&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;change-case&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pascal-case&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;24,504,886&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;change-case&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;os-tmpdir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;24,464,495&lt;/td&gt;
&lt;td&gt;This is not needed anymore. &lt;code&gt;require('os').tmpdir()&lt;/code&gt; in Node.js 4 and up is good.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;snake-case&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;20,292,295&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;change-case&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lodash.isequal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;19,136,778&lt;/td&gt;
&lt;td&gt;This package is deprecated. Use require('node:util').isDeepStrictEqual instead.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Worst health scores among popular packages
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Health&lt;/th&gt;
&lt;th&gt;Weekly downloads&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;angular&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;524,838&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;level-concat-iterator&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;571,283&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;user-home&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;2,683,639&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;trim-right&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;3,089,154&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;crypto&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;1,537,680&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;bin-version-check&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;4,092,095&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;path-is-absolute&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;76,082,652&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;scmp&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;3,755,528&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;yaeti&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;1,263,002&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;p-finally&lt;/code&gt; (npm)&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;29,798,243&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Ecosystem comparison (avg health)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ecosystem&lt;/th&gt;
&lt;th&gt;Packages&lt;/th&gt;
&lt;th&gt;Avg health&lt;/th&gt;
&lt;th&gt;Deprecated&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;conda&lt;/td&gt;
&lt;td&gt;127&lt;/td&gt;
&lt;td&gt;69.3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pub&lt;/td&gt;
&lt;td&gt;169&lt;/td&gt;
&lt;td&gt;68.0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;composer&lt;/td&gt;
&lt;td&gt;912&lt;/td&gt;
&lt;td&gt;64.2&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;11,831&lt;/td&gt;
&lt;td&gt;60.5&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pypi&lt;/td&gt;
&lt;td&gt;3,482&lt;/td&gt;
&lt;td&gt;57.8&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nuget&lt;/td&gt;
&lt;td&gt;715&lt;/td&gt;
&lt;td&gt;56.1&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rubygems&lt;/td&gt;
&lt;td&gt;1,263&lt;/td&gt;
&lt;td&gt;54.7&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cargo&lt;/td&gt;
&lt;td&gt;1,272&lt;/td&gt;
&lt;td&gt;49.6&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hex&lt;/td&gt;
&lt;td&gt;302&lt;/td&gt;
&lt;td&gt;48.5&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;go&lt;/td&gt;
&lt;td&gt;422&lt;/td&gt;
&lt;td&gt;46.5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;maven&lt;/td&gt;
&lt;td&gt;502&lt;/td&gt;
&lt;td&gt;42.3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cran&lt;/td&gt;
&lt;td&gt;309&lt;/td&gt;
&lt;td&gt;42.0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cpan&lt;/td&gt;
&lt;td&gt;477&lt;/td&gt;
&lt;td&gt;41.0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cocoapods&lt;/td&gt;
&lt;td&gt;139&lt;/td&gt;
&lt;td&gt;40.7&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hackage&lt;/td&gt;
&lt;td&gt;300&lt;/td&gt;
&lt;td&gt;39.7&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;swift&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;33.7&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;homebrew&lt;/td&gt;
&lt;td&gt;290&lt;/td&gt;
&lt;td&gt;31.1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Breaking changes in popular packages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ansi-styles&lt;/strong&gt; (npm) &lt;code&gt;3.0.0 → 4.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — Add bright black color (#49)  fb5b656&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ansi-styles&lt;/strong&gt; (npm) &lt;code&gt;3.0.0 → 4.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — Require Node.js 8  aa974fb&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ansi-styles&lt;/strong&gt; (npm) &lt;code&gt;unknown → 3.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — ansiStyles.colors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ansi-styles&lt;/strong&gt; (npm) &lt;code&gt;unknown → 3.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — ansiStyles.modifiers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ansi-styles&lt;/strong&gt; (npm) &lt;code&gt;unknown → 3.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — ansiStyles.bgColors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;debug&lt;/strong&gt; (npm) &lt;code&gt;4.0.0 → 3.2.3&lt;/code&gt; &lt;em&gt;removed&lt;/em&gt; — &amp;gt; &lt;strong&gt;3.2.3 is DEPRECATED.&lt;/strong&gt; See &lt;a href="https://github.com/visionmedia/debug/issues/603#issuecomment-420237335" rel="noopener noreferrer"&gt;https://github.com/visionmedia/debug/issues/603#issuecomment-420237335&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This release mitigated the breaking changes introduced in `3.2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ms&lt;/strong&gt; (npm) &lt;code&gt;0.7.3 → 1.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — More suitable name for file containing tests: ee91f307a8dc3581ebdad614ec0533ddb3d8bf56&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ms&lt;/strong&gt; (npm) &lt;code&gt;0.7.3 → 1.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — Test on LTS version of Node: c9b1fd319f0f9198d85ecf4ba83e46cc1216be04&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ms&lt;/strong&gt; (npm) &lt;code&gt;0.7.3 → 1.0.0&lt;/code&gt; &lt;em&gt;removed&lt;/em&gt; — Removed browser testing: e818c3581aca3119c00d81901bfe8fe653bcfda4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ms&lt;/strong&gt; (npm) &lt;code&gt;0.7.3 → 1.0.0&lt;/code&gt; &lt;em&gt;breaking&lt;/em&gt; — Use &lt;code&gt;prettier&lt;/code&gt; and &lt;code&gt;eslint&lt;/code&gt;: 57b3ef8e3423cae6254f94c5564a11b4492cff43&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
curl -s https://depscope.dev/api/check/npm/next | jq '.health_score'&lt;br&gt;
curl -s https://depscope.dev/api/check/pypi/pydantic | jq '.deprecated'&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Your AI coding agent is suggesting packages from 2024 — the fix is a shared API</title>
      <dc:creator>Vincenzo Rubino</dc:creator>
      <pubDate>Thu, 16 Apr 2026 00:23:30 +0000</pubDate>
      <link>https://forem.com/depscope/i-built-a-free-api-that-checks-package-health-for-ai-agents-3ip8</link>
      <guid>https://forem.com/depscope/i-built-a-free-api-that-checks-package-health-for-ai-agents-3ip8</guid>
      <description>&lt;p&gt;AI coding agents — Claude, Cursor, ChatGPT, Copilot, Aider — recommend npm / PyPI / Cargo packages to millions of developers every day.&lt;/p&gt;

&lt;p&gt;Three things are broken at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Tokens burned at scale
&lt;/h2&gt;

&lt;p&gt;Every time your agent decides which package to install, it fetches raw registry JSON. For &lt;code&gt;express@5.2.1&lt;/code&gt; that's about 3 KB of keys the model mostly ignores: file hashes, nested maintainer metadata, deprecated publish configs, download counts from 2019, the schema versions of fields nobody uses.&lt;/p&gt;

&lt;p&gt;Your LLM pays for every one of those tokens as input, on every install decision, across every parallel session. Multiply by millions of AI-assisted developers and the model waste is enormous — plus the downstream energy cost on the compute side.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The model is suggesting packages from months ago
&lt;/h2&gt;

&lt;p&gt;Training cutoff was 6-12 months before the answer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recent CVEs are invisible (XZ backdoor, Log4Shell-class issues post-cutoff).&lt;/li&gt;
&lt;li&gt;Deprecated libraries still get recommended with enthusiasm (&lt;code&gt;request&lt;/code&gt;, &lt;code&gt;left-pad@0.x&lt;/code&gt;, ...).&lt;/li&gt;
&lt;li&gt;Sometimes the model hallucinates a package name that never existed in a registry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every &lt;code&gt;npm install&lt;/code&gt; based on a stale AI suggestion is a blind supply-chain bet.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. There's no shared layer
&lt;/h2&gt;

&lt;p&gt;Claude, Cursor, ChatGPT and Copilot each fetch the same metadata from the same public registries independently. Billions of redundant calls a day, hammering &lt;code&gt;registry.npmjs.org&lt;/code&gt;, &lt;code&gt;pypi.org&lt;/code&gt;, &lt;code&gt;crates.io&lt;/code&gt; with the same questions over and over.&lt;/p&gt;

&lt;p&gt;No shared cache. No shared source of truth. Each agent re-invents the lookup every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  DepScope: the shared layer
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://depscope.dev" rel="noopener noreferrer"&gt;DepScope&lt;/a&gt; is a single API that AI coding agents query &lt;em&gt;before&lt;/em&gt; suggesting a package install. Open infrastructure, MIT, EU-hosted.&lt;/p&gt;

&lt;p&gt;Three things it does:&lt;/p&gt;

&lt;h3&gt;
  
  
  A compact, token-efficient response
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/prompt/npm/express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns a short natural-language string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;express@5.2.1 is safe_to_use. Health 85/100 (risk: low).
0 known vulnerabilities on the latest version.
11.2M weekly downloads. Published 2 weeks ago by a maintainer
with 47 other npm packages. Alternatives: fastify, hono, koa.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Roughly 74% smaller payload than raw registry JSON&lt;/strong&gt; for the same install decision. Fewer tokens burned per query, no pre-processing the model has to do to extract the signal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Live OSV + GitHub Advisory Database
&lt;/h3&gt;

&lt;p&gt;CVEs are looked up in real time against &lt;a href="https://osv.dev" rel="noopener noreferrer"&gt;OSV.dev&lt;/a&gt; and the &lt;a href="https://github.com/advisories" rel="noopener noreferrer"&gt;GitHub Advisory Database&lt;/a&gt;, then filtered to show only vulnerabilities affecting the current release. Django has 272 historical vulnerability records on OSV; DepScope shows the &lt;strong&gt;one&lt;/strong&gt; that actually applies to &lt;code&gt;5.2.4&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No stale training data, no false positives from long-patched CVEs.&lt;/p&gt;

&lt;h3&gt;
  
  
  17 ecosystems in one endpoint
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;pypi&lt;/code&gt;, &lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;go&lt;/code&gt;, &lt;code&gt;maven&lt;/code&gt;, &lt;code&gt;nuget&lt;/code&gt;, &lt;code&gt;rubygems&lt;/code&gt;, &lt;code&gt;composer&lt;/code&gt;, &lt;code&gt;pub&lt;/code&gt;, &lt;code&gt;hex&lt;/code&gt;, &lt;code&gt;swift&lt;/code&gt;, &lt;code&gt;cocoapods&lt;/code&gt;, &lt;code&gt;cpan&lt;/code&gt;, &lt;code&gt;hackage&lt;/code&gt;, &lt;code&gt;cran&lt;/code&gt;, &lt;code&gt;conda&lt;/code&gt;, &lt;code&gt;homebrew&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;One API, one MCP server, one GitHub Action — covers the ecosystems your agent will realistically encounter.&lt;/p&gt;




&lt;h2&gt;
  
  
  Add it to your agent
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;Drop in &lt;code&gt;CLAUDE.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## DEPSCOPE — before suggesting any package install&lt;/span&gt;
Before recommending any package, call:
  curl https://depscope.dev/api/prompt/{ecosystem}/{package}

Use the returned health/CVE/deprecation info to decide.
No auth, 200 req/min, 17 ecosystems.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cursor / Windsurf
&lt;/h3&gt;

&lt;p&gt;In &lt;code&gt;.cursorrules&lt;/code&gt; or &lt;code&gt;.windsurfrules&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Before recommending or installing any package, call:
curl https://depscope.dev/api/prompt/&lt;span class="o"&gt;{&lt;/span&gt;ecosystem&lt;span class="o"&gt;}&lt;/span&gt;/&lt;span class="o"&gt;{&lt;/span&gt;package&lt;span class="o"&gt;}&lt;/span&gt;
Use the returned data to validate the suggestion.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  MCP (Claude Desktop, Cursor, Windsurf)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; depscope-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"depscope"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"depscope-mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;14 tools auto-registered. Your agent will call &lt;code&gt;check_package&lt;/code&gt;, &lt;code&gt;get_vulnerabilities&lt;/code&gt;, &lt;code&gt;find_alternatives&lt;/code&gt;, &lt;code&gt;resolve_error&lt;/code&gt; and others automatically when making install decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  CI (GitHub Actions)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cuttalo/depscope@main&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;ecosystem&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Audits your project's dependencies on every push / PR.&lt;/p&gt;

&lt;h3&gt;
  
  
  Any agent via HTTP
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://depscope.dev/api/prompt/pypi/django
curl https://depscope.dev/api/vulns/cargo/tokio
curl https://depscope.dev/api/alternatives/npm/request
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://depscope.dev/api/scan &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"ecosystem":"npm","packages":{"express":"*","lodash":"*"}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Open infrastructure
&lt;/h2&gt;

&lt;p&gt;Package intelligence is infrastructure, not a premium product. It should exist once, for everyone, not be reinvented by every single AI coding agent session.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://depscope.dev" rel="noopener noreferrer"&gt;depscope.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent setup&lt;/strong&gt;: &lt;a href="https://depscope.dev/agent-setup" rel="noopener noreferrer"&gt;depscope.dev/agent-setup&lt;/a&gt; — copy-paste snippets for every major agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API docs&lt;/strong&gt;: &lt;a href="https://depscope.dev/api-docs" rel="noopener noreferrer"&gt;depscope.dev/api-docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAPI&lt;/strong&gt;: &lt;a href="https://depscope.dev/openapi.json" rel="noopener noreferrer"&gt;depscope.dev/openapi.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server&lt;/strong&gt;: &lt;code&gt;npm install -g depscope-mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://github.com/cuttalo/depscope" rel="noopener noreferrer"&gt;github.com/cuttalo/depscope&lt;/a&gt; — MIT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built with FastAPI + PostgreSQL 17 + Redis. Hosted in the EU by &lt;a href="https://cuttalo.com" rel="noopener noreferrer"&gt;Cuttalo srl&lt;/a&gt;. Feedback at &lt;code&gt;depscope@cuttalo.com&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
