Skip to main content
Glama

Package Intel MCP — by Datakoot

Software supply-chain intelligence for AI agents — as MCP tools your agent can call mid-task, so it can vet a dependency before it installs it. Covers npm, PyPI and crates.io. No API keys.

Tools

Tool

What it does

Source

package_info

Metadata for a package: description, latest version, license, homepage & repo links

npm / PyPI / crates.io

package_versions

Full version history with release dates

npm / PyPI / crates.io

package_downloads

Download counts and popularity signal

npm / PyPI / crates.io

package_dependencies

Direct dependencies for a given version

deps.dev

package_health

Health signals: OpenSSF Scorecard, stars, dependents

deps.dev

package_search

Search for packages by keyword

npm / PyPI / crates.io

Every tool accepts an ecosystem of npm, pypi, or crates. No API keys required.

Related MCP server: DepHealth MCP

Quick start

claude mcp add --transport http package-intel https://package.datakoot.com/mcp

Or point any MCP client at https://package.datakoot.com/mcp.

Try it in 10 seconds — no key, no signup

Paste this into a terminal:

curl -s https://package.datakoot.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "package_health", "arguments": {"ecosystem": "npm", "name": "express"}}}'

You get a supply-chain health snapshot for the npm package express — versions, downloads, dependencies, maintenance signals — no API key, nothing to sign up for.

Or point any MCP client at the URL and just ask your agent, in plain language:

  • "How healthy is the npm package express?"

  • "Before I add left-pad, is it actively maintained and widely used?"

Data & attribution

Data comes from the public registry APIs for npm, PyPI and crates.io, plus deps.dev (Google Open Source Insights, CC-BY 4.0) for dependency graphs and OpenSSF Scorecard health signals. Package data is served from official public APIs and is informational.

Part of Datakoot — keyless intelligence APIs for AI agents.

Available Tools

6 tools
package_dependenciesPackage DependenciesA
Read-onlyIdempotent
Inspect

List the direct dependencies of a specific package version (defaults to latest), via deps.dev. Lets an agent understand what a package pulls in before adding it. Ecosystems: npm, pypi, cargo.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact package name as published in that registry, e.g. express for npm, requests for pypi, serde for cargo.
versionNoOptional; defaults to the latest/default version
ecosystemYesPackage registry to look in. One of: npm, pypi, cargo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
sourceNo
versionNo
ecosystemNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.
direct_dependenciesNo
dev_dependency_countNo
build_dependency_countNo
direct_dependency_countNo
required_dependency_countNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral facts: results come from deps.dev, the scope is direct (not transitive) dependencies, and version defaults to latest. It omits rate limits and result shape, but the output schema covers the latter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action before the rationale and supported ecosystems. Slightly redundant in re-listing 'npm, pypi, cargo' when the schema already enumerates them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with rich annotations, full schema coverage, and an output schema, the description supplies everything needed to select and invoke it correctly: source, scope, default behavior, and supported ecosystems.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear per-parameter descriptions and an enum for ecosystem, so the baseline is 3. The description only restates the version default and lists the ecosystems, adding nothing the schema does not already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (List) plus precise resource and scope: direct dependencies of a specific package version, sourced from deps.dev. The 'direct' qualifier separates it in spirit from a transitive-dependency or package_info sibling, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use context – understanding what a package pulls in before adding it – which tells the agent when this tool is relevant. It stops short of naming alternatives (package_info, package_health) or stating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_downloadsPackage DownloadsA
Read-onlyIdempotent
Inspect

Get popularity/download statistics for a package (recent download counts). Useful for judging how widely used and battle-tested a dependency is. Ecosystems: npm, pypi, cargo.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact package name as published in that registry, e.g. express for npm, requests for pypi, serde for cargo.
ecosystemYesPackage registry to look in. One of: npm, pypi, cargo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ecosystemNo
last_monthNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, open-world and non-destructive, so the safety profile is covered. The description adds only the notion of 'recent' download counts, without specifying the time window, data source, or rate limits — modest added value beyond structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with no filler; the purpose comes first and the ecosystem scope is confined to a single closing clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is not required, and the description covers purpose, scope and the ecosystem boundary. It is slightly thin on the 'recent' semantics, which matters for interpreting the returned numbers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema with examples and an enum, so the description need not compensate. It confirms the three supported ecosystems but adds no naming or format guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: retrieve popularity/download statistics for a package, with the qualifier 'recent download counts'. It implies separation from package_info/package_versions/package_health but never names or contrasts with any sibling, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for judging how widely used and battle-tested a dependency is' gives a clear decision context for choosing this tool, and the ecosystems list scopes it. It stops short of saying when to prefer it over package_health or package_info, or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_healthPackage HealthA
Read-onlyIdempotent
Inspect

A composite trust/health check for a package an agent is considering: latest-release recency, deprecation status, license present, maintainer count, dependency count, and any known security advisories (via deps.dev). Returns a summary an agent can act on. Ecosystems: npm, pypi, cargo.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact package name as published in that registry, e.g. express for npm, requests for pypi, serde for cargo.
ecosystemYesPackage registry to look in. One of: npm, pypi, cargo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
licenseNo
verdictNo
concernsNo
deprecatedNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.
repositoryNo
has_licenseNo
maintainersNo
advisory_idsNo
last_releaseNo
latest_versionNo
known_advisoriesNo
days_since_releaseNo
actively_maintainedNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds real behavioral context beyond that: the specific signals aggregated, the upstream data source (deps.dev), and that the result is an actionable summary. It stops short of noting latency/cost of a multi-source composite call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the purpose and the checklist of signals. The closing 'Returns a summary an agent can act on' is slightly filler and contributes little given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not explain return values, and it covers scope, signals checked, source, and supported ecosystems. Only minor operational details (composite-call latency, no auth/rate-limit notes) are absent, which is low-stakes for a read-only public lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two parameters, and the schema already documents both the exact-name convention and the ecosystem enum. The description's ecosystem list ('npm, pypi, cargo') merely repeats the enum, adding no new meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (package) and verb-like scope (composite trust/health check), then enumerates exactly what is checked: recency, deprecation, license, maintainers, dependency count, advisories. The 'composite' framing and the six-signal list distinguish it from the single-facet siblings such as package_dependencies and package_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'A composite trust/health check for a package an agent is considering' gives a clear context for use (pre-adoption vetting). It does not, however, name any sibling alternative or state when a narrower tool like package_info or package_dependencies should be preferred instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_infoPackage InfoA
Read-onlyIdempotent
Inspect

Get core metadata for a package: latest version, description, license, homepage, source repository, maintainers, and whether it is deprecated. Use before an agent installs or recommends a dependency. Ecosystems: npm, pypi, cargo.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPackage/crate name
ecosystemYesPackage registry to look in. One of: npm, pypi, cargo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
licenseNo
versionNo
homepageNo
ecosystemNo
publishedNo
deprecatedNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.
repositoryNo
descriptionNo
maintainersNo
version_countNo
requires_pythonNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is fully covered. The description adds the deprecation flag and the cross-registry scope, but the field list largely duplicates what the output schema would document. With rich annotations and an output schema, the incremental behavioral disclosure is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the payload is front-loaded, the ecology scope closes it out, and there is no redundant or filler text. Every clause carries information an agent needs to call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only lookup with full schema coverage, rich annotations, and an output schema, this is essentially complete; the description needn't explain return values. The only omission is guidance pointing to sibling tools when the agent needs health, downloads, or dependency data instead.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, and the enum constrains ecosystem. The description only restates the ecosystem list ('npm, pypi, cargo') and adds no format guidance for 'name' (e.g., scoped packages, case sensitivity). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get core metadata for a package') and enumerates the exact fields returned (version, description, license, homepage, repo, maintainers, deprecated flag), which implicitly separates it from siblings like package_downloads or package_dependencies. However, no sibling is named explicitly, so the agent must infer the boundary against package_health and package_versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use before an agent installs or recommends a dependency' gives a clear, actionable trigger condition for when this tool applies. There are no exclusions or named alternatives (e.g., when to prefer package_health or package_versions), so the routing guidance stops short of the explicit when-not framing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_versionsPackage VersionsA
Read-onlyIdempotent
Inspect

List recent released versions of a package with release dates (most recent first). Helps an agent pick a version or check how actively it is maintained. Ecosystems: npm, pypi, cargo.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact package name as published in that registry, e.g. express for npm, requests for pypi, serde for cargo.
limitNoMaximum number of results to return.
ecosystemYesPackage registry to look in. One of: npm, pypi, cargo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
latestNo
versionsNo
ecosystemNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered by structured data. The description adds useful behavioral context (result ordering, maintenance-check framing, supported ecosystems) but says nothing about pagination, truncation at the limit, or behavior for unknown packages.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and scope, then usage rationale, then ecosystems. The ecosystem list is mildly redundant with the schema enum, but there is no padding or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it correctly focuses on scope, ordering, and the maintenance-check use case. The only gap is the absence of any tie-breaker guidance against the five sibling package tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters, including the enum values and the limit default. The description repeats the ecosystem list and does not add format or syntax detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List recent released versions of a package'), adds the sort order ('most recent first'), and names the result fields (release dates). It is clearly distinct from package_downloads or package_dependencies, though it does not explicitly contrast itself with sibling tools like package_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers implied usage ('pick a version or check how actively it is maintained'), which tells the agent the intent behind the call. However, there is no explicit when-to-use vs when-not guidance and no mention of alternatives such as package_info or package_health, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv2.1.0
    • First observedpackage_dependencies
    • First observedpackage_downloads
    • First observedpackage_health
    • First observedpackage_info
    • First observedpackage_search
    • First observedpackage_versions

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct aspect of package intelligence (downloads, metadata, versions, dependencies, health, search), so selection is generally clear. There is mild overlap between package_info and package_health, since health reports a superset of info fields like license and deprecation, but the composite/actionable framing of health distinguishes it.

Naming Consistency5/5

All six tools use a uniform package_<noun> snake_case pattern (package_info, package_versions, package_dependencies, etc.), making names highly predictable. No mixing of conventions or verb styles.

Tool Count5/5

Six tools is well-scoped for a package-intelligence server, with each tool earning its place across popularity, metadata, versions, dependencies, health, and search. Nothing feels redundant or missing in size.

Completeness4/5

The surface covers a full evaluation lifecycle: discover (search), inspect (info, versions), assess risk (downloads, dependencies, health). Minor gap: package_search only works for npm and cargo, and there is no reverse-dependency or license-compatibility operation, but core workflows are covered.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Open source intelligence for AI agents — GitHub project-health scoring, package dependency-risk analysis, trending repositories, license checks, and side-by-side package comparison.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Package intelligence for AI coding agents that checks npm and PyPI package health, deprecation, vulnerabilities, bundle size, and compares alternatives.
    5
    MIT