Skip to main content
Glama

Wisco Labs: developer tools

Server Details

Check PyPI and npm upgrades: known vulnerabilities, the safe version, and what each upgrade breaks.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Each tool targets a distinct compatibility axis (native binaries, Node engines, peer deps, TS types, Python wheels, vulnerabilities, breaking changes), so an agent can usually pick correctly. The one soft boundary is upgrade_check, which bundles vulnerability flagging and breakage reporting across a whole project and therefore overlaps with vulnerabilities and what_changed for single packages; the descriptions clarify the project-vs-package scope but the distinction still requires reading.

Naming Consistency4/5

Six of nine tools follow a clear <domain>_check pattern (native_check, node_check, peer_check, types_check, wheel_check, upgrade_check), which is predictable and readable. The remaining three (package_info, vulnerabilities, what_changed) each break the pattern in a different way, a minor but noticeable deviation.

Tool Count5/5

Nine tools is well within the ideal range and each one maps to a distinct pre-upgrade question a developer actually asks. No tool feels redundant or bolted on; the set is tightly scoped to dependency-upgrade risk analysis.

Completeness4/5

The surface covers npm platform/engine/peer/type concerns, Python wheel availability, vulnerability lookup, and breaking-change analysis — a coherent lifecycle for 'is this upgrade safe'. Minor gaps remain: there is no Python analogue of node_check (python_requires support), no transitive dependency-tree resolution, and no tool that actually applies an upgrade, though agents can work around these.

Available Tools

9 tools
native_checkWill my npm dependencies install on this platform without compiling?A
Read-onlyIdempotent
Inspect

Before building on Alpine, Linux ARM, Windows ARM, a Mac or Lambda, checks which npm dependencies contain native code and whether a prebuilt binary exists for the target platform. For those that would compile from source (needing a C/C++ toolchain and Python) or fail, gives the nearest newer version that ships a prebuilt for that platform, with that upgrade's risk.

NameRequiredDescriptionDefault
limitNoMax breaking changes shown for each suggested fix5
platformYesTarget platform: os-cpu[-libc], e.g. linux-x64-glibc, linux-arm64-musl, darwin-arm64, win32-arm64; or alpine, alpine-arm64, linux, linux-arm64, lambda, lambda-arm64, windows, win-arm64, mac, mac-intel
requirementsYesThe project's dependencies: the contents of package-lock.json (best), package.json, or one 'name@version' per line

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds genuine context beyond that: it discloses the two failure modes it reports (would compile from source needing a C/C++ toolchain and Python, or would fail) and that it returns an upgrade suggestion annotated with the upgrade's risk. It does not discuss latency or result size, but nothing is contradicted.

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?

Two sentences, front-loaded with the scenario and followed by the result shape, with no filler. The second sentence is dense but each clause carries information (compile requirement, failure case, upgrade suggestion, risk).

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 three parameters, full schema coverage, and annotations already handling safety, the description covers what an agent needs: what it computes, when to run it, and rough shape of the answer. Since there is no output schema, it could have gone further in describing the returned recommendation format, but it is adequate for a read-only analysis tool.

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 coverage is 100%, so all three parameters are documented in the input schema, and the baseline of 3 applies. The description adds little syntax or format detail beyond the schema; its only marginal contribution is implying that 'limit' controls how much of each upgrade's risk is surfaced, which the schema already states as 'max breaking changes shown'.

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 gives a concrete verb and resource: it checks which npm dependencies contain native code and whether a prebuilt binary exists for a target platform. That is specific enough to separate it from siblings like types_check or peer_check. It does not explicitly differentiate itself from upgrade_check, even though it also surfaces 'the nearest newer version' with upgrade risk, leaving some overlap for the agent to infer.

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?

The opening clause 'Before building on Alpine, Linux ARM, Windows ARM, a Mac or Lambda' gives a clear situational trigger for when to call this tool. There is no explicit when-not guidance and no sibling tool is named as an alternative, so the agent must infer the boundaries itself.

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

node_checkWill my npm dependencies run on this Node.js version?A
Read-onlyIdempotent
Inspect

Before moving a project to a new Node.js version (e.g. off Node 20 to 22 or 24), checks each npm dependency's declared Node support (its engines field). For each that doesn't support the target, gives the smallest newer release that does, with that upgrade's risk. Works from a package-lock.json without installing anything.

NameRequiredDescriptionDefault
nodeYesTarget Node.js version: a major like 24 (means the latest 24.x) or an exact 22.11.0
limitNoMax breaking changes shown for each suggested fix5
requirementsYesThe project's dependencies: the contents of package-lock.json (best), package.json, or one 'name@version' per line

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish that this is read-only, idempotent, non-destructive, and closed-world. The description adds meaningful behavior: it works from package-lock.json without installing anything, inspects declared engines support rather than runtime behavior, and returns the smallest newer compatible release with upgrade risk. It does not explain how 'risk' is determined, which is a minor gap.

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

Conciseness5/5

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

The description is three tight sentences, front-loads the primary use case, and avoids redundant or filler wording. Each sentence adds useful information about when to use the tool, what it checks, and how it operates.

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 read-only analysis tool with fully documented parameters and annotations covering safety, the description is largely complete. It explains the input source, the check performed, and the shape of the recommendation. It could more explicitly define what 'risk' means or mention the limit parameter's effect, but those are secondary details.

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 the schema already explains node, requirements, and limit. The description reinforces the target-version and package-lock use cases but does not add syntax or meaning beyond what the schema provides. Baseline 3 is appropriate.

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 uses a specific verb and resource: it checks each npm dependency's declared Node support (engines field) for a target Node.js version and suggests newer compatible releases. It is clear what the tool does, though it does not explicitly distinguish itself from related siblings like upgrade_check or native_check.

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?

It gives a clear usage context: 'Before moving a project to a new Node.js version.' That tells an agent when to reach for it. It does not name alternatives or state when not to use it, so it falls short of full when/when-not guidance.

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

package_infoBasic facts about a packageC
Read-onlyIdempotent
Inspect

Latest and latest stable version, repository, release count, and where its release notes come from.

NameRequiredDescriptionDefault
nameYesPackage name
ecosystemNoPyPI or npmPyPI

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorldHint=false, so the safety profile is fully carried by structured data. The description's only added value is disclosing what is returned (version/repo/release count/release-notes source), which matters because no output schema exists, but it says nothing about lookup failures, missing packages, or ecosystem-dependent behavior.

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 compact sentence with no filler, and the most important returned fields are front-loaded. It is a grammatical fragment with no leading verb, which slightly reduces immediate clarity about the action being taken.

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

Completeness3/5

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

For a two-parameter read-only lookup with no output schema, describing the returned fields is the right instinct and mostly sufficient. However, with eight similar siblings and an ecosystem switch, the agent is not told what 'latest stable' means per ecosystem, nor how to handle a package that has no repository or release notes.

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%, with 'name' (example 'flask') and 'ecosystem' (default PyPI, PyPI or npm) both documented in the schema. The description adds no meaning beyond that—it never mentions that the returned fields vary by ecosystem or how the package name is resolved.

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

Purpose3/5

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

The description enumerates returned data fields (versions, repository, release count, release-notes source) but never states a verb or resource action, so the agent must infer from the tool name and title that this is a package-metadata lookup. It also does nothing to separate itself from siblings such as what_changed or vulnerabilities, which also concern package data.

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

Usage Guidelines2/5

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

There is no indication of when to call this versus the eight siblings (native_check, peer_check, types_check, upgrade_check, etc.). The agent gets a list of outputs but no routing criteria, prerequisites, or exclusions.

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

peer_checkWill my npm packages accept this upgrade? (peer dependencies)A
Read-onlyIdempotent
Inspect

Before upgrading a core npm package (react, typescript, eslint, vite...), checks every dependency in the project that declares it as a peer dependency: does the installed version accept the new version, and if not, the smallest release that does, with that upgrade's risk. Also checks the new version's own peer requirements against what's installed. Answers the questions behind npm's ERESOLVE errors without running npm.

NameRequiredDescriptionDefault
limitNoMax breaking changes shown for each suggested fix5
upgradeYesThe package and version to upgrade to: react@19 (newest stable 19.x), react@19.1.0 (exact), or react (latest stable)
requirementsYesThe project's dependencies: the contents of package-lock.json (best), package.json, or one 'name@version' per line

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to add genuine behavioral context — that no npm process is executed, that the analysis is bidirectional (dependents' peer ranges plus the new version's own peer requirements), and that suggestions include risk and the smallest acceptable release. It does not describe result shape or how 'risk' is graded, which is the only remaining gap.

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?

The trigger condition is front-loaded, and the second sentence ('Answers the questions behind npm's ERESOLVE errors without running npm') efficiently justifies the tool's existence. The first sentence is long and clause-heavy with parenthetical examples, but no sentence is filler, so it stays readable.

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 no output schema, the description carries the burden of describing returns and does so: acceptance per dependency, the smallest release that does accept, that upgrade's risk, plus the new version's own peer requirements. What is missing is the shape of that output (how risk is expressed, what 'limit' truncates), which matters for a 3-parameter analytical tool whose result the agent must interpret.

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 interpretation: it explains how the 'requirements' blob is actually consumed (filtered down to packages declaring the target as a peer dependency) rather than merely restating its accepted formats. It does not explain 'limit' or how it interacts with the risk output, leaving one parameter to the schema alone.

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?

The description names a concrete operation — check whether every dependency that declares the upgraded package as a peer dependency accepts the new version — and bounds it to a specific ecosystem (npm peer deps) and trigger (pre-upgrade of react/typescript/eslint/vite). Combined with the title, an agent can tell this apart from upgrade_check, node_check, and native_check 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 Guidelines4/5

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

It states the usage context clearly: 'Before upgrading a core npm package' and 'Answers the questions behind npm's ERESOLVE errors without running npm', which tells the agent both the moment to call it and why to prefer it over shelling out to npm. It does not explicitly name a sibling alternative or an exclusion case, so it stops short of a 5.

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

types_checkWhich npm dependencies need @types packages, and which version?A
Read-onlyIdempotent
Inspect

For a TypeScript project: which dependencies ship their own type declarations, which need a DefinitelyTyped @types package (and the version that matches the installed library), and which installed @types packages describe a different major version than the library.

NameRequiredDescriptionDefault
requirementsYesThe project's dependencies, including any @types packages: the contents of package-lock.json (best), package.json, or one 'name@version' per line

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint:false and openWorldHint:false, so the safety profile is covered. The description adds value beyond that by disclosing the shape of the analysis output (three distinct verdict categories, including version-mismatch detection), which matters since no output schema exists.

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 sentence with the scope qualifier front-loaded and three parallel clauses that each carry distinct information; no filler. It is dense but readable, and nothing could be cut without losing one of the three result categories.

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 one-parameter, read-only analysis tool with full schema coverage and rich annotations, the description covers the essential question (what the tool determines) and the results it returns. It lacks only sibling differentiation and any note on input edge cases, which are minor given the schema's explicit format guidance.

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%: the single 'requirements' parameter is documented with accepted formats (package-lock.json best, package.json, or name@version lines) and a concrete example. The description adds no additional meaning about the parameter, so the baseline of 3 applies.

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 uses a clear framing ("For a TypeScript project") and enumerates the three concrete answers the tool produces: self-shipped declarations, needed DefinitelyTyped @types packages with matching versions, and mismatched @types major versions. This is far more specific than the name 'types_check' alone, though it never names a sibling (e.g., native_check, node_check) to distinguish scope explicitly.

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

Usage Guidelines3/5

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

The "For a TypeScript project" qualifier implies the usage context (projects with TypeScript dependencies) and the mention of a matching-version check hints at the post-install/audit use case. However, there is no explicit when-to-use versus when-not guidance and no routing to alternatives among the many sibling check tools.

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

upgrade_checkCheck a whole project's dependenciesA
Read-onlyIdempotent
Inspect

Give it a project's dependencies: a requirements.txt or pip freeze output for Python, or a package-lock.json, package.json, or name@version lines for npm. Flags malicious packages and versions with known vulnerabilities (with the smallest safe version to move to, preferring a low-risk patch), then reports what each upgrade breaks, removes, or deprecates, ranked into remove_now / fix_now / no_fix_available / upgrade_first / safe / review / needs_care.

NameRequiredDescriptionDefault
limitNoMax items shown per category for each package5
ecosystemNoPyPI or npm. A package.json or package-lock.json is recognized as npm automatically.PyPI
requirementsYesPython: requirements.txt contents, one 'package==version' per line. npm: the contents of package-lock.json (best), package.json, or one 'name@version' per line. Lines without one exact version are listed but can't be assessed.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, closed-world), and the description goes well beyond them by disclosing what the tool actually computes: malicious-package detection, vulnerability flags with the smallest safe target version preferring low-risk patches, and a breakage/removal/deprecation report. Since there is no output schema, this prose is the only source of return-value expectations, and it delivers them.

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?

Two sentences with the input contract front-loaded ahead of the behavioral payoff, which is the right ordering. The second sentence is dense, packing four analytical claims plus a seven-category ranking list into one clause chain, which reduces scannability slightly.

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 complex, multi-ecosystem audit tool with no output schema, the description covers inputs, detection behavior, and the shape of results. What remains unexplained is the meaning of several ranking buckets (needs_care, review, upgrade_first) and how the limit parameter shapes the report, so an agent could not fully predict the response structure.

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 the parameters are already documented at the field level. The description adds a little context by naming concrete input formats (pip freeze output, name@version lines) and echoing the partial-data caveat, but it says nothing about the limit parameter's effect or about precedence between ecosystem and the supplied content.

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 and object ('check a whole project's dependencies') and immediately scopes it to project-wide auditing rather than a single package, which implicitly separates it from per-package siblings like package_info or vulnerabilities. It also enumerates the accepted input formats and the ranked categories returned, so an agent knows exactly what class of tool this is.

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?

The opening imperative ('Give it a project's dependencies: ...') tells the agent precisely what to supply, and the ecosystem parameter description notes that package.json/package-lock.json are auto-detected as npm. There is no explicit when-not guidance or named alternative (e.g. use vulnerabilities for a single pinned package, what_changed for diffs), so the routing logic must be inferred.

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

vulnerabilitiesKnown vulnerabilities in a package versionA
Read-onlyIdempotent
Inspect

Is this exact version of a package affected by known security advisories? Returns each vulnerability (with CVE ids and severity), the versions that fix it, and the smallest safe upgrade.

NameRequiredDescriptionDefault
nameYesPackage name
versionYesThe exact version you're using
ecosystemNoPackage ecosystem (OSV naming)PyPI

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds real value by describing the return payload (CVE ids, severity, fixing versions, smallest safe upgrade), which matters since there is no output schema. However, it says nothing about behavior for unknown packages, unsupported ecosystems, or empty results.

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?

Two sentences, front-loaded with the core question and followed by the return contents; no wasted wording. The question form is slightly less scannable than a declarative verb-resource statement but is compact and purposeful.

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 no output schema, the description carries the burden of explaining return values and does so adequately in one clause. For a three-parameter read-only lookup it is nearly complete, with only edge-case behavior (no advisories found, unknown ecosystem) left unaddressed.

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 coverage is 100% and every parameter already carries a description, including the example values and the PyPI default, so the schema does the heavy lifting. The description's emphasis on 'exact version' marginally reinforces that version must be pinned rather than a range, but adds no new semantics for ecosystem or name.

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?

Names a specific verb-and-resource question ('is this exact version of a package affected by known security advisories') and previews the return content. An agent can distinguish it from node_check or types_check easily, though it doesn't explicitly separate itself from upgrade_check, which superficially overlaps via the 'smallest safe upgrade' output.

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

Usage Guidelines3/5

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

Usage is implied by the phrasing 'this exact version of a package' and the required name/version pair, so an agent can infer this is a per-version security lookup. There is no explicit when-to-use vs when-not guidance, no mention of when to prefer a sibling like upgrade_check or package_info, and no prerequisites stated.

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

what_changedWhat changed between two versions of a packageA
Read-onlyIdempotent
Inspect

What breaks, gets removed, is deprecated, or gains a security fix when upgrading one package between two versions, with an overall upgrade risk.

NameRequiredDescriptionDefault
toYesThe version you want to upgrade to (use latest_version from package_info if unsure)
fromYesThe version you're on now
nameYesPackage name, e.g. flask (PyPI) or express or @babel/core (npm)
limitNoMax items shown per category15
ecosystemNoPyPI or npmPyPI

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so safety is covered. The description adds real value by disclosing the shape of the result: four change categories plus an overall upgrade risk, which substitutes for the absent output schema. It does not say what happens when changelogs are unavailable or how the risk rating is derived.

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 sentence with no filler, and the output categories are front-loaded. It reads as a noun-phrase fragment rather than a sentence, which slightly hurts scannability, but nothing is wasted.

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 five-parameter read-only tool with full schema coverage and no output schema, the description covers both scope and the categorical result set, which is the main gap it needed to fill. Minor omissions remain around the limit truncation and default ecosystem behavior, both of which the schema already documents.

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%, with each parameter documented including examples and the 'use latest_version from package_info' hint, so the description adds nothing beyond it. Baseline 3 applies since the schema carries the full burden.

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 names a specific analysis: breaking changes, removals, deprecations, security fixes, plus an overall risk rating for a package upgrade between two named versions. That is concrete and distinguishable from siblings like package_info or vulnerabilities, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

The 'when upgrading one package between two versions' framing implies the use case, but there is no explicit routing guidance versus upgrade_check, vulnerabilities, or package_info. An agent must infer on its own which of the eight siblings to pick for adjacent questions.

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

wheel_checkWill pip find prebuilt wheels for this platform?A
Read-onlyIdempotent
Inspect

For each pinned Python package, whether a prebuilt wheel exists for a target Python version and platform (Windows ARM, Alpine/musl, Linux ARM, macOS, a new Python version). Without one, pip builds from source, which usually fails without a compiler for packages with C extensions. For each that's missing, gives the nearest newer version that has a wheel, with that upgrade's risk.

NameRequiredDescriptionDefault
limitNoMax breaking changes shown for each suggested upgrade5
pythonYesTarget Python version, e.g. 3.13
platformYesTarget platform: manylinux_x86_64 or manylinux_aarch64 (glibc Linux, e.g. Debian/Ubuntu; assumes glibc 2.36, or give an exact tag like manylinux_2_28_x86_64), musllinux_x86_64 or musllinux_aarch64 (Alpine), win_amd64, win_arm64, win32, macosx_arm64, macosx_x86_64
requirementsYesrequirements.txt contents or pip freeze output, one 'package==version' per line

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, and the description still adds real behavioral content: what happens downstream when a wheel is missing, and that missing entries are accompanied by the nearest newer version with a wheel plus that upgrade's risk. It doesn't describe output shape, per-package error handling, or how partial/unparseable requirement lines are treated.

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?

Two dense sentences with no filler, and the core answer (does a wheel exist) is front-loaded before the consequence. Minor cost: 'For each that's missing' has a loose antecedent and requires a re-read to bind to the packages just mentioned.

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 no output schema, the description does carry return-value burden, and it covers the main payloads: per-package wheel availability and, for misses, the nearest wheeled version plus upgrade risk. Given four well-documented parameters, the remaining gap — what a lockfile with unresolvable/loosely-pinned entries yields — is modest but not covered.

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 coverage is 100% and each parameter carries its own description with examples, so the schema does the heavy lifting. The description adds only indirect meaning — the 'nearest newer version with that upgrade's risk' behavior implicitly explains the `limit` parameter's role — without naming or elaborating any parameter.

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?

Names the specific resource (pinned Python packages) and the specific check (prebuilt wheel availability for a target Python version and platform), with concrete platform examples in parentheses. An agent can distinguish it from node_check/node_check-style siblings because the description is explicit about 'pip' and 'Python packages'. It never names a sibling directly, so it stops short of full differentiation.

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

Usage Guidelines3/5

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

Usage is implied by the stated consequence ('without one, pip builds from source, which usually fails without a compiler'), which tells the agent the scenario this tool serves: pre-flight install planning on uncommon platforms. There is no explicit when-to-use vs. when-not, and no routing to native_check, upgrade_check, or package_info for adjacent questions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updates
    • First observednative_check
    • First observednode_check
    • First observedpackage_info
    • First observedpeer_check
    • First observedtypes_check
    • First observedupgrade_check
    • First observedvulnerabilities
    • First observedwhat_changed
    • First observedwheel_check

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Translates a lockfile diff into a human-readable upgrade plan. For every dependency bump (npm or PyPI) returns semver class, breaking changes from GitHub release notes, CVEs fixed in the range, migration guide links, and a clear per-package recommendation. Bulk tool ranks up to 50 package changes in parallel by risk (security > caution > review > likely-safe > safe).
    2
    113 npm
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI coding agents to vet an npm release against the package's own history — publisher, provenance, install scripts, new dependencies, code changes — before installing or upgrading it. Returns an ALLOW / REVIEW / BLOCK verdict with supporting evidence, what other checks say, and the safe version to install instead.
    7
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources