Vigía
Server Details
Verified, dated facts on npm/PyPI versions, deprecations, per-version vulnerabilities and AI models.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct scope: manifest-level batch audit (check_dependencies), package-level latest info (package_status), exact-version audit (version_status), name search (find_package), AI model catalog (model_info), and a changelog feed (recent_changes). The package_status vs. version_status boundary is the only potential overlap, but descriptions make the distinction (package-level vs. one exact version) explicit.
All names are snake_case, which is consistent, but the convention mixes verb_noun (check_dependencies, find_package) with noun_noun (model_info, package_status, recent_changes, version_status). Readable and predictable enough, with only minor stylistic deviation.
Six tools is well-scoped for a dependency and model status server, with no filler. Each tool covers a distinct query granularity or resource and clearly earns its place.
The surface covers search, package overview, exact-version audit, batch manifest evaluation, AI model info, and recent changes, forming a coherent lifecycle for dependency auditing. Minor gaps exist, such as no explicit version-comparison or upgrade-planning tool, but agents can work around these with the existing tools.
Available Tools
6 toolscheck_dependenciesCheck dependenciesARead-onlyInspect
Evaluates a full package.json (npm) or requirements.txt (pypi): for each dependency returns the latest version, whether the declared range includes it (up_to_date / outdated / outdated_major), whether the package is deprecated, and known vulnerabilities (OSV IDs) of the lowest version the range allows. Use when opening a project or before upgrading dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes | Full content of the manifest file | |
| ecosystem | Yes | Package ecosystem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so safety and network reach are already covered. The description adds real behavioral substance beyond that: it discloses that it queries latest versions, OSV vulnerability IDs, and specifically audits the lowest version the declared range allows, which is a non-obvious anti-false-negative choice. It stops short of stating rate limits or how large manifests are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, but every clause earns its place: scope, per-dependency outputs, the lowest-version auditing rule, and the usage trigger are all front-loaded with no filler. Slightly long as one unbroken sentence, which costs a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 return-value burden and does it well by naming the four result fields. Inputs, scope, and outputs are all covered; only operational details such as the 200k manifest cap and whether large manifests are partially processed are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the schema already documents 'manifest' and the npm/pypi enum. The description confirms the manifest accepts the full file content and that both ecosystems are supported, but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (evaluates) plus the exact resource (a full package.json or requirements.txt) and enumerates the four result categories returned. This clearly separates it from the single-package siblings (find_package, package_status, version_status) which operate on one package rather than a whole manifest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggers: 'Use when opening a project or before upgrading dependencies.' That is an explicit when-to-use, but it names no alternatives or exclusions, so the agent has no routing guidance against the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_packageFind packageARead-onlyInspect
Finds packages or models by name prefix, ordered by popularity. Use when the exact name is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| ecosystem | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read. The description usefully adds that matching is prefix-based and results are popularity-ordered, but says nothing about result limits, pagination, or how the ecosystem scope affects the search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and mechanism, with the usage condition second. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only search tool with no output schema, the description covers what it searches, how it matches, and when to reach for it. Only the ecosystem scoping and any result-count limits are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It clarifies that 'query' is a name prefix rather than a substring or exact match, which is valuable, but the 'ecosystem' parameter (npm/pypi/ai) is never mentioned or explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Finds') and resource ('packages or models'), plus the matching mechanism ('by name prefix') and ordering ('by popularity'). This clearly separates it from siblings like package_status or model_info, though it doesn't explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger condition: 'Use when the exact name is unknown.' This tells the agent when this discovery tool is appropriate rather than a lookup-by-exact-name path, but it stops short of naming the sibling tool to use once the exact name is known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_infoAI model infoARead-onlyInspect
Price per million tokens, context window, max output and retirement date of AI models (OpenRouter catalog). Use before writing a model ID in code or estimating costs. With model_id returns one model; with provider or query returns a list.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| model_id | No | Exact ID in provider/model form, e.g. "anthropic/claude-x" | |
| provider | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation covers the safety profile, so the description's added value is the returned field set (pricing, context window, max output, retirement date) and the catalog source, which help the agent judge result usefulness. It stops short of pagination, result limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the returned data, followed by the usage trigger and the mode-dependent result shape. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and low parameter coverage, the description does the necessary work of listing return fields and explaining parameter-driven result shapes. Minor gaps remain around query matching semantics and list size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (query and provider have no descriptions), so the description must compensate: it explains that model_id yields a single model while provider or query yields a list, which is the key semantic distinction. It does not clarify match behavior for query (substring vs. exact) or provider filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (AI models) and the exact attributes returned — price per million tokens, context window, max output, retirement date — plus the data source (OpenRouter catalog). This clearly separates it from the package-oriented siblings such as find_package or package_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use trigger: 'before writing a model ID in code or estimating costs.' No exclusions or named alternatives are offered, but the guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
package_statusPackage statusARead-onlyInspect
Latest stable version, publish date, deprecation/yank status, runtime requirements (engines/python), peer dependencies, license and advisories of an npm or PyPI package. Use before recommending, installing or pinning a package version.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact package name, e.g. "next", "@types/node", "requests" | |
| ecosystem | Yes | Package ecosystem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuine behavioral value by specifying the returned facets (yank/deprecation status, advisories, runtime requirements), which is important since no output schema exists. It omits any mention of caching, rate limits, or behavior when the package is unknown, but that 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both dense and front-loaded: the return contents come first, the usage trigger second. Every listed item (version, publish date, yank status, engines, peer deps, license, advisories) earns its place, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, fully-required read-only lookup with no output schema, the description compensates by enumerating exactly what comes back, and the usage sentence covers the decision context. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both params documented and the ecosystem enum constrained, so the schema carries the parameter burden. The description only echoes 'npm or PyPI package' and adds no syntax, scoping, or edge-case guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (an npm or PyPI package) and enumerates the specific facts returned: latest stable version, publish date, deprecation/yank status, engine requirements, peer dependencies, license and advisories. An agent can distinguish this from siblings like find_package (search) or check_dependencies (dependency analysis), though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use trigger: 'Use before recommending, installing or pinning a package version.' That frames the decision context well, but it offers no explicit when-not condition and does not route the agent to find_package or check_dependencies for related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_changesRecent changesBRead-onlyInspect
Latest detected changes: new releases, deprecations, removed packages, AI model price changes or retirement announcements. Optionally filtered to one package or model.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | If set, history of that package or model | |
| limit | No | ||
| ecosystem | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read. The description usefully adds the domain of changes covered and the filtering behavior, but says nothing about ordering, time window, or pagination behavior for what is presumably a recency-ordered feed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the change types and ending with the filter behavior. No filler, though the terse phrasing leaves several behaviors unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what comes back, and it only partly does (change types, not the shape, ordering, or recency window). Combined with 33% param coverage, it is adequate but leaves real gaps for an agent to work around.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It clarifies the name parameter ('filtered to one package or model'), but limit and ecosystem are left entirely to the schema — ecosystem's enum is undocumented in prose and the default/max on limit is unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (latest detected changes) and enumerates the change types: new releases, deprecations, removed packages, AI model price changes, retirement announcements. This distinguishes it from siblings like find_package and package_status, though the verb is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only notes optional filtering to one package or model; it never says when to use this feed versus package_status or model_info, nor when not to. No prerequisites or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
version_statusVersion status and vulnerabilitiesARead-onlyInspect
For one exact version of an npm or PyPI package: whether it exists, when it was published, whether it was deprecated/yanked, how far behind latest it is, its known vulnerabilities (OSV) and the nearest version that fixes all of them. Use before keeping, pinning or recommending a specific version, or when auditing a lockfile entry.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact package name | |
| version | Yes | Exact version, e.g. "4.17.1" | |
| ecosystem | Yes | Package ecosystem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description goes further by disclosing the external data source (OSV) and the fact that it reports existence, deprecation, staleness and a remediation version, which tells the agent what to expect from a call. It omits any mention of rate limits or behavior for a nonexistent version, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but well-structured sentence listing the returned facets, followed by one usage sentence. Front-loaded with the scope ('one exact version'), and no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does it well by enumerating each field an agent will receive, including the remediation version and the existence flag that covers the failure case. Nothing needed to call or interpret this three-parameter read tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, version and ecosystem are already documented, including the enum for ecosystem. The description reinforces that the version must be exact and that the ecosystem is npm or PyPI, but adds no syntax or format detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (report on one exact version of an npm/PyPI package) and enumerates the exact facets returned: existence, publish date, deprecation/yank status, staleness vs latest, OSV vulnerabilities, and nearest fixing version. This clearly separates it from sibling package_status, which by name covers the package rather than a single pinned version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the triggering situations: before keeping, pinning or recommending a specific version, or when auditing a lockfile entry. It gives no exclusions or named alternatives (e.g. when to prefer package_status or check_dependencies instead), 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
version_status
5 tool updates
- First observed
check_dependencies - First observed
find_package - First observed
model_info - First observed
package_status - First observed
recent_changes
Related MCP Connectors
Latest versions, LTS windows, and EOL dates for 300+ products. Fresh ground truth for stale models.
npm & PyPI freshness for AI agents: latest version, deprecations, dated breaking-change diffs.
Real-time Python package and vulnerability data for AI coding agents.
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
Related MCP Servers
- AlicenseAqualityCmaintenanceChecks npm and PyPI packages for outdated versions, deprecation status, and breaking changes with cited sources, enabling AI agents to verify dependency freshness.17 npmISC
- AlicenseNot gradedqualityBmaintenanceProvides software supply-chain intelligence for AI agents, enabling them to query package metadata, versions, downloads, dependencies, and health signals for npm, PyPI, and crates.io packages without API keys.MIT

EVIDIQ Lineageofficial
AlicenseNot gradedqualityBmaintenanceDeterministic supply-chain provenance, SBOM/AI-BOM generation, and dependency risk analysis for npm and PyPI packages, with 14 security rules and verifiable reports.1MIT- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to identify exactly what broke between two dependency versions, with citations for every claim, and to verify package existence to catch typosquatting, all without requiring an API key.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.