Skip to main content
Glama
MRFrazer25

vulnerability-exposure-mcp

Distro patch check

distro_patch_check
Read-onlyIdempotent

Verifies whether an Ubuntu or Debian package version is affected by known CVEs using the distribution’s security data, accounting for backported fixes that leave upstream versions unchanged.

Instructions

Check an Ubuntu or Debian package version against the distro's own security data (via OSV.dev), which counts fixes the distro backports without changing the upstream version. Use it when Shodan lists distro_packages (e.g. OpenSSH_8.9p1 Ubuntu-3ubuntu0.6 gives package 'openssh', package_version '8.9p1-3ubuntu0.6'), or when the user gives an installed package version. Pass the version check's affected_cve_ids as cve_ids. release (e.g. '22.04', '12') is found automatically when possible. No key needed.

Input Schema

NameRequiredDescriptionDefault
distroYes
cve_idsNo
packageYes
releaseNo
package_versionYes
investigation_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, so the description's additional details are valuable: it names OSV.dev as the backend, says no API key is needed, and notes that release is auto-detected when possible. It does not describe rate limits or the exact result shape.

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 front-loaded with what the tool does and is dense with useful examples and usage conditions. Every sentence adds selection or invocation value, with no filler.

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 external security check, the description provides enough context to select and invoke it correctly, including the OSV.dev dependency and input chaining. Because there is no output schema, it could be stronger by briefly describing what the check returns, such as patched/not-patched status or affected CVE details.

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?

With 0% schema description coverage, the description does substantial work: it explains package and package_version with a concrete example, clarifies that cve_ids come from a version check's affected_cve_ids, and says release is auto-detected. It leaves investigation_id undocumented and only implicitly covers distro via the Ubuntu/Debian scope.

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 states a specific verb and resource: checking Ubuntu/Debian package versions against distro security data via OSV.dev. It also distinguishes the tool by explaining that it counts distro-backported fixes without upstream version changes, which differentiates it from generic CVE lookup tools.

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 clear usage contexts: when Shodan lists distro_packages or when the user provides an installed package version. It also explains how to chain from a version check by passing affected_cve_ids as cve_ids, though it does not explicitly state when not to use the tool.

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