Skip to main content
Glama

Package Health Check

Check a package's health

check_package
Read-onlyIdempotent

Use this when the user asks whether an npm or PyPI package is vulnerable, maintained, deprecated or safe to use, or what license it has: "is lodash 4.17.15 vulnerable?", "is this npm package maintained?", "what license is this package?", "safer alternative to request". Pass the public package name, ecosystem (npm or pypi) and a version if the user gave one; otherwise the latest is checked. Returns the known vulnerabilities of that version with severity and fixed version, the license, any deprecation notice, last release date, releases in the last year, weekly downloads (npm) and dependents. It does not pick alternatives: for a deprecated or stale package, suggest candidates and check each one with this tool.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesPublic package name, such as "lodash", "@types/node" or "requests"
versionNoExact version, such as "4.17.15". Omit to check the latest.
ecosystemNonpm for JavaScript packages (the default), pypi for Python packages

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
statusYes
messageNo
versionNoThe version that was checked
licensesNo
ecosystemYes
dependentsNoPackages that depend on the latest version, directly or indirectly
deprecatedNoDeprecation or withdrawal notice for the checked version
maintenanceNoRelease recency: active within a year, slow within two, stale beyond; deprecated when the latest version is
unavailableNoParts of the answer that could not be read right now
latestVersionNo
lastReleasedOnNoDate of the most recent release, YYYY-MM-DD
vulnerabilitiesNoKnown advisories (OSV) that affect the checked version, most severe first, at most 15
weeklyDownloadsNonpm only
releasesLastYearNo
vulnerabilityCountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered structurally. The description adds genuinely useful behavior beyond that: it enumerates what the check yields (vulnerabilities with severity and fixed version, license, deprecation notice, last release date, releases in the last year, weekly downloads, dependents) and states the version-default rule. It does not cover error cases (unknown package, ambiguous ecosystem) or rate limits.

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?

Front-loaded with the trigger sentence, followed by example utterances, parameter guidance, return contents and the alternatives caveat. Every sentence earns its place, though the return-value enumeration overlaps with the existing output schema and makes the description longer than strictly necessary.

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 three-parameter, read-only lookup with an output schema and full annotation coverage, the description supplies trigger conditions, argument intent, output expectations and the sibling-handling caveat. Nothing an agent needs to call it correctly is missing.

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 name, version and ecosystem including defaults. The description restates that name/ecosystem/version should be passed and that the latest is checked when no version is given, which adds only marginal value over the schema's own 'Omit to check the latest.' Baseline 3 applies when the schema carries the load.

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?

Opens with a specific trigger and resource ('whether an npm or PyPI package is vulnerable, maintained, deprecated or safe to use, or what license it has'), then grounds it in real user utterances. It is clearly distinguishable from the sibling check_package_json, which operates on a local manifest rather than a published package.

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

Usage Guidelines5/5

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

Gives explicit when-to-use triggers via quoted example questions, and an explicit exclusion: 'It does not pick alternatives: for a deprecated or stale package, suggest candidates and check each one with this tool.' This tells the agent both the entry condition and how to chain calls when the tool is not sufficient.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources