Skip to main content
Glama

check_package_vulns

Check a dependency's version against OSV.dev for known vulnerabilities and malicious-package advisories across PyPI, npm, Go, crates.io, Maven, RubyGems, NuGet, and Packagist.

Instructions

Query OSV.dev for known vulnerabilities AND known-malicious-package advisories (MAL-*) for a dependency. ecosystem: PyPI, npm, Go, crates.io, Maven, RubyGems, NuGet, Packagist. Empty result does not prove the package is real or intended.

Input Schema

NameRequiredDescriptionDefault
nameYes
versionNo
ecosystemYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does meaningful work: it names the upstream data source (OSV.dev), discloses that coverage includes MAL-* malicious-package advisories as well as CVEs, and warns that an empty result is not proof of legitimacy — an important false-negative caveat. It omits latency/failure behavior for the external call, keeping it below a 5.

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?

Two dense sentences, front-loaded with purpose and then the key caveat; the ecosystem enumeration earns its space because the schema has no enum. Mildly terse in places ('for a dependency') where a few more words would remove ambiguity.

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

Completeness3/5

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

For a 3-parameter query tool with no annotations and no output schema, the definition covers the source and the ecosystem vocabulary but leaves result shape, version-omission semantics, and lookup-failure behavior unaddressed. Adequate to start a call, incomplete for interpreting the answer.

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 coverage is 0%, so the description must compensate. It supplies the meaningful missing piece — the accepted ecosystem values (PyPI, npm, Go, crates.io, Maven, RubyGems, NuGet, Packagist) — but says nothing about what 'name' means (package vs. module), and leaves 'version' entirely unexplained, including whether omitting it queries all versions.

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 (Query) and resource (OSV.dev vulnerabilities + MAL-* advisories) scoped to 'a dependency', which is clearly distinct from CVE-centric siblings like lookup_cve. It stops short of explicitly naming which sibling to prefer, so the distinction is inferable rather than stated.

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?

Usage is implied rather than declared: an agent can infer this is the tool for vetting a dependency before use, and the closing caveat warns against over-reading an empty result. There is no explicit when-to-use versus check_known_exploited or search_security.

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