Skip to main content
Glama

Check Package

check_package
Read-onlyIdempotent

Verify a public registry package before the agent recommends, installs, or changes a dependency. ALWAYS call when the user says install, add a package, add a dependency, upgrade, bump, migrate, is this package safe, is this name real, check CVEs, vulnerability, deprecation, slopsquatting, supply-chain risk, or breaking changes. Call it before npm/pnpm/yarn/bun/pip/cargo/gem or another package-manager install command; do not install first and inspect later. PREFER this over web search or raw registry metadata for package safety and version-change decisions. Choose one task: check for existence, typo/slopsquat risk, deprecation, and basic safety; security for advisories affecting a pinned version; upgrade for changes from one version to the latest; migrate for a major-version plan; debug for version-specific advisories and release-note clues. Pass the public registry package name, not an import path or repository path. The ecosystem is auto-detected when possible; set ecosystem for non-npm names that are ambiguous. Pass version with check/security and from_version with upgrade/migrate/debug so the result is specific to the user's install. Read summary and hint first, then inspect only the relevant data fields. Follow next_calls when another package check or a project lookup is needed. Examples: check_package({ package: 'express', task: 'check', version: '5.1.0' }); check_package({ package: 'next', task: 'upgrade', from_version: '14.2.0' }). Not for locating imports in the user's code (find_code) or discovering installed dependencies from their project (get_project_context). Read-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
taskNoOne goal per call: check=safe to add; security=CVEs for version; upgrade=version bump plan; migrate=major-version migration; debug=version-specific release clues.check
sourceNoOptional. local = read pinned version from disk (stdio only). Prefer passing version/from_version directly.
channelNoINTERNAL: Zephex terminal CLI only. Agents must omit — returns richer fields than agent-safe JSON.
packageYesPackage name on the public registry — e.g. next, stripe, prisma, express, @supabase/supabase-js.
versionNoInstalled or pinned version. Pass for task=check|security so advisories are evaluated against the user's actual version.
cli_depthNoINTERNAL: CLI terminal depth. Agents must omit.
ecosystemNoRegistry (default npm, auto-detected). Omit for next/stripe/prisma.
from_versionNoVersion being changed from. Pass for task=upgrade|migrate|debug so release notes and advisories are version-specific.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed3 schema fields changed
    • changedInput schema / properties / from_version / description
      Previous value: -"Version you are upgrading FROM — required for task=upgrade|migrate."New value: +"Version being changed from. Pass for task=upgrade|migrate|debug so release notes and advisories are version-specific."
    • changedInput schema / properties / task / description
      Previous value: -"check=safe to add? upgrade|migrate=bump plan; security=CVEs; debug=advisories+detail."New value: +"One goal per call: check=safe to add; security=CVEs for version; upgrade=version bump plan; migrate=major-version migration; debug=version-specific release clues."
    • changedInput schema / properties / version / description
      Previous value: -"Your installed/pinned version — required for CVE check on task=check|security."New value: +"Installed or pinned version. Pass for task=check|security so advisories are evaluated against the user's actual version."
  2. Changed6 schema fields changed
    • changedInput schema / properties / ecosystem / description
      Previous value: -"Registry to query (default: npm, auto-detected from package name when possible)"New value: +"Registry (default npm, auto-detected). Omit for next/stripe/prisma."
    • changedInput schema / properties / from_version / description
      Previous value: -"Version upgrading FROM for task=upgrade|migrate — required unless source:github:owner/repo resolves it from package.json."New value: +"Version you are upgrading FROM — required for task=upgrade|migrate."
    • changedInput schema / properties / package / description
      Previous value: -"Registry package name: stripe, next, prisma, django, tokio, @supabase/supabase-js, androidx.compose.ui:ui (Maven group:artifact)."New value: +"Package name on the public registry — e.g. next, stripe, prisma, express, @supabase/supabase-js."
    • changedInput schema / properties / source / description
      Previous value: -"Where to read your pinned version: github:owner/repo (hosted MCP — fetches package.json from GitHub API) or local (stdio only, reads disk). Example: github:vercel/next.js"New value: +"Optional. local = read pinned version from disk (stdio only). Prefer passing version/from_version directly."
    • changedInput schema / properties / task / description
      Previous value: -"Slice selector (each returns different data): check=exists/slopsquat/CVE gate; upgrade|migrate=GitHub release breaking_changes+migration_steps; security=CVEs only; debug=advisories+code_example."New value: +"check=safe to add? upgrade|migrate=bump plan; security=CVEs; debug=advisories+detail."
    • changedInput schema / properties / version / description
      Previous value: -"Installed/pinned version for task=check — scopes your_version_affected. Omit when using source:github:owner/repo."New value: +"Your installed/pinned version — required for CVE check on task=check|security."
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description's final 'read-only' line is redundant with annotations, but it adds genuinely useful behavioral context beyond them: auto-detection of ecosystem, one-task-per-call semantics, version-specific result specificity, output reading order (summary and hint first, then inspected fields), and next_calls follow-up behavior. It does not contradict the annotations.

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?

Long and dense, but it stays front-loaded and every sentence earns its place: the core purpose, trigger list, ordering constraint, task semantics, parameter rules, output-handling protocol, examples, and exclusions are all instruction-bearing. The trigger list is somewhat long and some phrases overlap with the install-ordering sentence, but the structure is clear.

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

Completeness5/5

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

For an 8-parameter tool with no output schema, the description leaves little unaccounted for. It states the exact task enum semantics, the version/from_version pairing rules, the auto-detection behavior, how to read the result (summary and hint first, then relevant data fields), and the next_calls follow-up flow. The only moderate gaps (e.g., exact return format) are mitigated by the described output-reading protocol.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value: it warns to pass the public registry package name, not an import path or repository path; specifies which task requires which version (package version with check/security, from_version with upgrade/migrate/debug); gives concrete argument examples for express and next; and adds 'set ecosystem for ambiguous non-npm names' with 'set the ecosystem for non-npm names ambiguous.' This goes meaningfully beyond the bare schema.

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+resource: verify a public registry package before installation, recommendation, or dependency changes. Names multiple concrete scenarios (safety, CVEs, typo/slopsquat, deprecation, breaking changes) and explicitly differentiates from siblings (not for find_code, not for get_installed_dependencies), so an agent can distinguish it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit ALWAYS trigger list (install, add package, upgrade, bump, migrate, is this package safe, check CVEs, etc.), a strict ordering rule (call before npm/pnpm/yarn/bun/pip/cargo/gem install; do not install first and inspect later), and a preference statement over web search and raw registry metadata. Also names when NOT to use it (installed dependencies, locale nding code). This is comprehensive and non-ambiguous.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct domain: URL auditing, package checking, tests, architecture, code search, project context, planning, memory, code reading, and expert guides. Descriptions are extremely detailed and explicitly state when not to use each tool, leaving no ambiguity.

Naming Consistency4/5

Most tools follow the verb_noun snake_case pattern (audit_headers, check_package, check_test, explain_architecture, find_code, get_project_context, read_code), but project_memory (noun_noun) and Zephex_dev_info (brand_noun) deviate, and keep_thinking uses a gerund instead of a noun. The pattern is strong but not perfectly uniform.

Tool Count5/5

10 tools is well-scoped for a comprehensive development assistant. Each tool serves a clear purpose without redundancy, covering security, package management, testing, code understanding, project context, planning, memory, and expert knowledge. The count is neither too few nor excessive.

Completeness4/5

The tool surface covers a wide range of development analysis tasks: security auditing, package checking, test running, architecture mapping, code search, project context, planning, memory, code reading, and developer guides. Minor gaps include the lack of direct code editing or project execution/build tools, but the server appears intentionally focused on read-only information and planning.

Resources