Zovo Dependency Audit
Server Details
Audit a dependency list for known vulnerabilities, licenses and outdated versions.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
The two tools target clearly different inputs: audit_dependencies takes an entire manifest of up to 150 packages, while check_package takes exactly one name and version. The descriptions explicitly contrast them (bulk list vs. one specific version), so an agent should have no trouble selecting the right one even when a manifest happens to contain a single entry.
Both names follow a consistent snake_case verb_noun pattern (audit_dependencies, check_package). The verbs 'audit' and 'check' are near-synonyms, which slightly weakens the predictability, but the noun distinguishes scope clearly.
Only two tools is thin, even for a narrowly scoped dependency scanner. That said, the pair covers the two main entry points (bulk manifest vs. single package) without redundancy, so it is defensible rather than excessive or arbitrary.
The surface covers bulk and single-package vulnerability/license/outdated lookups for npm and PyPI, which is the stated core. However, obvious gaps remain: no transitive dependency resolution, no lockfile support, no fix/remediation guidance, and no coverage of other ecosystems, so agents hitting those needs will dead-end.
Available Tools
2 toolsaudit_dependenciesAudit dependenciesARead-onlyIdempotentInspect
Use this when the user pastes a dependency manifest for npm or PyPI (package.json, requirements.txt, or one name@version / name==version per line) and wants known vulnerabilities with fixed-in versions, licenses and outdated packages, as a Markdown report for a pull request plus CSV and PDF. Reads live OSV.dev and deps.dev records. Up to 150 packages and 400 distinct advisories per call (a larger list is refused with a plan of smaller calls); ranges are checked at their stated minimum version. Does not resolve transitive dependencies, read lockfiles, scan source code or fix code. Do not use for Go, crates.io, Maven or Gradle, container images or operating system packages.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes | The manifest text exactly as in the file, e.g. the full package.json, or lines like lodash@4.17.15. Up to 60,000 characters and 150 packages. | |
| ecosystem | Yes | Package ecosystem: npm (package.json or name@version lines) or PyPI (requirements.txt or name==version lines). Go, crates.io and Maven are not supported. | |
| include_dev | No | Include development and test dependencies (npm devDependencies), e.g. true. Default true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| format | Yes | |
| source | Yes | |
| summary | Yes | |
| packages | Yes | |
| downloads | Yes | |
| ecosystem | Yes | |
| packages_shown | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, and the description adds substantial context beyond them: live OSV.dev/deps.dev data sources, hard caps of 150 packages and 400 advisories, refusal behavior with a plan for splitting into smaller calls, and the caveat that ranges are evaluated at their stated minimum version. It also discloses what the tool does not do (no transitive resolution, no lockfiles, no source scanning, no fixes), which is exactly the kind of scope boundary the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded with the trigger condition and every sentence carries information about inputs, limits, semantics or exclusions. It is a single dense paragraph though, and the limits and exclusions would read faster as separate structured clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described in detail, yet the description still names the report artifacts (Markdown for a PR, plus CSV and PDF). For a three-parameter tool with full schema coverage and rich annotations, everything an agent needs to decide to call it and to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description earns an increment by clarifying semantics the schema only hints at, such as the 150-package ceiling interacting with the manifest parameter and the minimum-version range evaluation rule. It does not explain the include_dev default beyond what the schema already states, so it stops short of full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('audit a dependency manifest') and immediately specifies supported ecosystems (npm, PyPI) and concrete inputs (package.json, requirements.txt, name@version lines). It also states the three deliverables (vulnerabilities with fixed-in versions, licenses, outdated packages) and output formats, so an agent can distinguish it from a single-package check without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening clause gives a clear triggering condition ('when the user pastes a dependency manifest ... and wants known vulnerabilities'), and the closing sentence enumerates explicit exclusions (Go, crates.io, Maven, Gradle, container images, OS packages). It does not, however, name the sibling check_package or explain when a single-package lookup should be preferred over a full manifest audit, so alternatives are left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_packageCheck one packageARead-onlyIdempotentInspect
Use this when the user asks whether one specific package version has known vulnerabilities, which version fixes them, its license, or how outdated it is (for example lodash 4.17.15 on npm or django 3.2.0 on PyPI). Reads live OSV.dev and deps.dev records and returns Markdown, CSV and PDF reports. Needs one specific version, not a range. Does not check transitive dependencies or scan code. npm and PyPI only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Package name as published on npm or PyPI, e.g. lodash, @babel/core or django. | |
| version | Yes | One exact version, e.g. 4.17.15. | |
| ecosystem | Yes | Package ecosystem: npm (package.json or name@version lines) or PyPI (requirements.txt or name==version lines). Go, crates.io and Maven are not supported. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| format | Yes | |
| source | Yes | |
| summary | Yes | |
| packages | Yes | |
| downloads | Yes | |
| ecosystem | Yes | |
| packages_shown | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description adds real value on top: the data sources ('reads live OSV.dev and deps.dev records'), the output formats produced ('Markdown, CSV and PDF reports'), and the operational boundaries (exact version required, no transitive deps, no code scanning, only npm/PyPI). That is behavior an agent could not infer from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the trigger case, then data sources and outputs, then the two hard constraints. No filler, and each sentence carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a single-package lookup: trigger, inputs, data sources, outputs, unsupported ecosystems, and what it will not do. An output schema exists, so the absence of a return-value breakdown is appropriate rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds meaning by stressing 'one specific version, not a range' and by tying ecosystem values to real-world contexts ('lodash 4.17.15 on npm'). It does not add syntax detail for the version or name fields, which the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('whether one specific package version has known vulnerabilities... its license, how outdated it is') and anchors it with concrete examples ('lodash 4.17.15 on npm or django 3.2.0 on PyPI'). The scope limits ('npm and PyPI only') make it distinguishable from a general audit tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use this when the user asks whether one specific package version...') plus exclusions ('Needs one specific version, not a range', 'Does not check transitive dependencies or scan code') and documented ecosystem limits. It stops short of naming the sibling audit_dependencies as the alternative for transitive/dependency-tree work, so the routing signal is implied rather than explicit.
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.
2 tool updates
- First observed
audit_dependencies - First observed
check_package
Related MCP Connectors
Scan packages and lockfiles (npm, PyPI, Go, Maven, Cargo, NuGet) for vulnerabilities and malware.
Check a dependency list against CISA's live Known Exploited Vulnerabilities catalog.
Check an npm or Python package, or a package.json, for vulnerabilities and upkeep.
Check npm, PyPI, Go and Maven packages or lockfiles against OSV.dev: CVEs, CVSS, fixed versions.
Related MCP Servers
- AlicenseAqualityDmaintenanceAudits project dependency licenses for compatibility issues, flags GPL/AGPL conflicts, and generates compliance reports.136 npmMIT
- AlicenseBqualityDmaintenanceAudits package lockfiles for vulnerabilities, supporting npm, yarn, and pnpm. Runs via CLI or as an MCP server over stdio.15 npm78MIT
- AlicenseNot gradedqualityAmaintenanceEnables auditing npm, Yarn, and pnpm lockfiles from local project directories or remote Git repositories and returning unified vulnerability reports with configurable severity thresholds, dev-dependency skipping, and text or JSON output.5 npmMIT
- -licenseNot gradedqualityBmaintenanceAudits npm dependencies for license compatibility, catching copyleft and source-available traps before shipping.-
Glama MCP Gateway
Add one secure layer between your agents and this server.