Skip to main content
Glama

What an outdated project is missing

missing_changes
Read-onlyIdempotent

For a whole project's outdated report — npm/pnpm outdated --json (current → from, wanted, latest), ncu --format installedVersion, pip or uv pip list --outdated --format json (version → from, latest_version → latest), go list -m -u -json all (Version → from, Update.Version → latest), cargo outdated, dotnet list package --outdated, a Gradle versions report — pass each package with the version installed and, where the tool gives them, wanted and latest. Answers what the project is missing, most exposed first: per package, the security releases, CVE ids and fixes it does not have, split into toWanted (from → wanted: reachable by an update within the declared range, no manifest edit) and toLatest (→ latest: needs the range changed), with the cost of moving beside them (major bump, breaking mentions, removed/deprecated) and a few of the fixes themselves. Counts are deterministic over every tracked release; no model judged anything. Up to 100 packages a call. Pass repository (from the package's own package.json) for scoped or renamed packages; a Maven, Go or NuGet package goes by its purl. For the vendor's own breaking-change and migration sections, call upgrade_notes on the packages worth moving. A Maven, Go or NuGet package this server does not track is checked against deps.dev after the answer and counted; pass recordMisses: false for private packages.

Input Schema

NameRequiredDescriptionDefault
dependenciesYesUp to 100 per call; split a larger project.
recordMissesNoDefault true. A Maven, Go or NuGet package this server does not track is checked against deps.dev after the answer and counted per day, with nothing about the caller, to decide what to track next. Pass false for private packages.

Output Schema

NameRequiredDescriptionDefault
notesNo
summaryYes
dependenciesYesMost exposed first — CVEs, then security releases, then fixes, then releases behind; untracked last, in the order given.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / dependencies / items / properties / toLatest / properties / cost / description
      Previous value: -"What moving would cost — deterministic signals, no model's reading. upgrade_notes has the vendor's own breaking and migration sections."New value: +"What moving would cost. `breakingMentions` is the vendor's own wording, read deterministically; `removed` and `deprecated` count model-assigned change categories, stored when each release arrived. upgrade_notes has the vendor's own breaking and migration sections and the typed change records."
    • changedOutput schema / properties / dependencies / items / properties / toWanted / properties / cost / description
      Previous value: -"What moving would cost — deterministic signals, no model's reading. upgrade_notes has the vendor's own breaking and migration sections."New value: +"What moving would cost. `breakingMentions` is the vendor's own wording, read deterministically; `removed` and `deprecated` count model-assigned change categories, stored when each release arrived. upgrade_notes has the vendor's own breaking and migration sections and the typed change records."
  2. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent and open-world behavior, yet the description adds genuinely new traits: counts are deterministic over every tracked release with no model judgment, the call caps at 100 packages, and untracked Maven/Go/NuGet packages are checked against deps.dev afterwards with per-day counting that records nothing about the caller. That last detail matters for privacy-sensitive agents. It stops short of 5 because latency, rate limits and what a miss does to the answer are not described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense block of roughly 200 words with long parenthetical enumerations (six package managers, three field mappings) that must be parsed before the tool's purpose emerges. Nearly every clause carries information, but the ordering is wrong for an agent skimming for 'should I call this?' and the single-paragraph form makes the toWanted/toLatest distinction easy to miss.

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?

With an output schema, full annotations and 100% param coverage, the description's remaining job is routing and behavior, which it does: ecosystem inputs, purl/repository fallbacks, the sibling handoff to upgrade_notes, and the deps.dev miss path. Nothing an agent needs to invoke it correctly is missing, though the response shape itself is left entirely to the output schema.

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 baseline is 3, but the description adds real meaning: it maps each ecosystem's CLI output onto the fields (npm outdated current→from, wanted, latest; pip version→from, latest_version→latest; go Version→from, Update.Version→latest), which tells an agent where to source values, not just what a field is. It also clarifies precedence (purl over name and registry) and the from-is-a-version-not-a-range rule, going beyond the schema's field-level text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific outcome: it returns per-package security releases, CVE ids and fixes the project lacks, split into toWanted (reachable in-range) and toLatest (needs a manifest edit), plus migration cost. That is far more than a restatement of the name and clearly separates it from upgrade_notes, which is called out as the tool for vendor breaking-change text. It loses a point only because this core statement is buried mid-paragraph behind input-format guidance rather than front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Usage is explicit and actionable: pass repository for scoped or renamed packages, use purl for Maven/Go/NuGet, call upgrade_notes for migration sections, set recordMisses: false for private packages, and split projects over 100 packages. There is no explicit 'do not use this when…' exclusion, so it falls short of a 5, but the alternatives and preconditions are named rather than inferred.

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.

Resources