Skip to main content
Glama

Check the packages an install command would fetch

check_install_command
Read-onlyIdempotent

Verify the packages a shell command would install against npm and PyPI registries before running it, flagging hallucinated, slopsquatted, or risky packages.

Instructions

Verify the packages a shell command would install or execute, before running it: npm install …, npx …, pnpm add, yarn add, bun add, pip install, uv add, poetry add and similar, including behind sudo, && chains and sh -c. Extracts the package names (npm and PyPI at once), checks each against its registry, and returns them worst-first. A command that installs nothing by name (a bare npm install from a lockfile, git, npm test, or npx <bin> of a tool already in node_modules) returns total 0 and costs no network call — use check_dependencies on the manifest in that case. Read-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cwdNoDirectory the command will run in. Lets "npx <bin>" of an already-installed tool be recognised as fetching nothing. Defaults to the server's working directory.
commandYesThe exact shell command about to run, e.g. "npm install express crossenv" or "pip install -U requests".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
totalYes
commandYes
resultsYesSorted worst-first.
blockingYesHow many results are HALLUCINATED or DANGER.
packagesYesWhat was recognised, per install command.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.2

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only and non-destructive hints, and the description's closing 'Read-only' echoes rather than contradicts them (no contradiction). Beyond annotations it adds genuine behavioral context: worst-first result ordering, the zero-network-cost guarantee for no-install commands, and registry-checking behavior. Slightly redundant on 'read-only' since the annotation already states it, but the added cost and ordering disclosures justify a 4.

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?

A single dense paragraph that front-loads purpose before listing command types, then behavior, then edge cases and the alternative. Every sentence earns its place — the command list, extraction behavior, worst-first ordering, and fallback routing are all load-bearing. Slightly long as one unbroken block, but nothing is wasteful.

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

Completeness4/5

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

For a tool with this complexity (multiple package managers, hidden sudo/&&/sh -c wrapping, edge cases) and an output schema to cover return values, the description is thorough: it covers scope, extraction, ordering, cost behavior, edge cases, and the sibling fallback. The only minor gap is that it doesn't describe the exact output shape, but that is the output schema's job.

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 both parameters (command, cwd) are already well documented with examples. The description adds some value by explaining cwd's role in recognizing npx-of-installed-tool as fetching nothing, which links the parameter to the behavioral edge case, but it doesn't need to compensate for any schema gap. Baseline 3 with marginal added meaning is appropriate.

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?

States a specific verb ('verify') and resource ('the packages a shell command would install or execute'), then enumerates the exact command types covered (npm, npx, pnpm, yarn, bun, pip, uv, poetry). It differentiates from siblings by explicitly routing the no-install case to check_dependencies, so an agent can pick this tool apart from its siblings without opening schemas.

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 guidance: lists the command patterns that install nothing by name (bare npm install from lockfile, git, npm test, npx of an already-installed tool) and directs the agent to 'use check_dependencies on the manifest in that case.' The alternative tool is named and the selection condition is concrete, leaving nothing to inference.

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