Install deptrust, a local package vulnerability checker and MCP server for AI agents.
Three tools with clear, action-oriented names (check_package, suggest_safe_version, compare_versions) and comprehensive descriptions (200-300 chars each). All tools have complete input schemas with typed parameters and descriptions. Ecosystem parameter uses a descriptive string rather than enum, which is a minor gap. Output schemas are not explicitly documented in the visible code. Error handling is present but generic. Tool composition is sound, each tool has a single responsibility and outputs chain naturally (check → suggest → compare workflow).
Vet a dependency before adding, installing, pinning, or recommending it. Checks whether a package version has known vulnerabilities across OSV and GitHub advisories and returns an install recommendation (allow, review, block, unknown). Use this for every new dependency or version bump, including popular packages.
Compare two versions of a package to confirm whether moving between them improves, worsens, or maintains risk. Returns whether the target version improves risk, resolved vulnerabilities, and new vulnerabilities.
Find a safe version to install when a requested version is blocked, unknown, or you need the newest non-vulnerable version. Returns the newest version with an allow recommendation and the versions checked.
Ecosystem parameter accepts free-form string instead of enum. Should constrain to: npm, pypi, cargo, go, rubygems, nuget, maven, packagist, pub, cocoapods, hex, hackage, github-actions. LLMs will hallucinate invalid ecosystems without enum constraint.
Output schemas not documented in tool definitions. LLMs cannot plan downstream operations or extract required fields (e.g., recommendation, advisory IDs) without knowing the response structure.
Error responses use generic toolError() without actionable recovery guidance. When a package is not found or a GitHub rate limit is hit, the LLM receives no hint about next steps (retry, skip, configure token).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2025-06-18+ | v2 |
Version parameter in check_package defaults to 'latest' but this is not enforced in the schema. Should document default behavior and validate that version is either a valid semver or the literal string 'latest'.
No tool annotations (readOnlyHint, idempotentHint) declared. All three tools are read-only and idempotent, these should be explicitly marked in the tool definition to guide agent planning.