Catch hallucinated and squatted packages before an AI agent installs them. MCP server + CLI, zero dependencies.
vetpkg provides two well-named, focused tools with clear descriptions and proper input schemas. Tool names (check_package, check_packages) follow verb_noun convention and clearly convey intent. Descriptions are concise (80-120 chars) and explain the security purpose. Input schemas are properly typed with required fields. However, output schemas are not documented in the MCP registration, the code shows rich return objects (verdict, risk, reasons, meta, similar) but these are not formally declared in the tool definitions. Parameter descriptions are minimal (single short phrases). Error handling is present in the implementation but not surfaced in tool documentation. The tools are read-only and well-scoped, but lack the output schema documentation and parameter detail expected of production-grade tools.
Verify that an npm package is real and safe before installing it. Detects hallucinated package names that do not exist, and slopsquats — attacker-registered packages whose names imitate popular ones. Call this before running any install command.
Verify several npm packages at once before installing them. Use when adding multiple dependencies in one step.
Output schemas not documented. Tools return complex objects (verdict, risk, reasons, meta, similar) but MCP tool definitions do not declare the response structure. LLMs cannot plan downstream operations or extract fields without seeing the schema.
Parameter descriptions are minimal. 'npm package names to check' for check_packages.names lacks detail on format (scoped vs unscoped), length limits, or invalid characters. LLMs cannot validate input without explicit constraints.
No error recovery guidance in tool descriptions. Implementation catches errors and returns {verdict: 'error', error: message}, but the tool description does not explain this behavior or guide the LLM on retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Missing tool annotations. Tools are read-only (no state modification) but lack readOnlyHint annotation in the MCP definition. This forces LLMs to infer safety from descriptions alone.