Skip to main content
Glama

get_vulnerability_paths

Read-only

Trace each vulnerable transitive Maven dependency back to the direct dependency that pulls it in by mapping shortest root-to-node paths using deps.dev and OSV.dev.

Instructions

Show the dependency path from a project root Maven GAV to each vulnerable transitive node. Fetches the deps.dev transitive graph, checks every unique node for known CVE/GHSA advisories via OSV.dev, and returns the shortest root-to-node path for each vulnerable dependency found — so a CVE deep in the tree can be traced back to which direct dependency pulls it in. An empty vulnerabilityPaths list means no known vulnerability was found in the graph; it is not a safety guarantee (same OSV coverage caveat as get_dependency_vulnerabilities). Partial results are flagged when deps.dev/OSV is unreachable, the graph is truncated by the node cap, or the unique-dependency count is truncated before querying OSV.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
groupIdYesMaven group ID of the project root
versionYesMaven version of the project root
artifactIdYesMaven artifact ID of the project root

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNo
groupIdYes
partialYes
versionYes
truncatedYes
artifactIdYes
vulnerabilityPathsYes
capabilityUnavailableNo
unreachableVulnerabilitiesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only supply readOnlyHint and openWorldHint; the description adds substantial context beyond them: an empty vulnerabilityPaths list means no known vulnerability rather than a safety guarantee, partial results are flagged under three specific failure conditions (deps.dev/OSV unreachable, node-cap truncation, unique-dependency count truncated before OSV querying). That is exactly the kind of caveat an agent needs to interpret results correctly.

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 core behavior is front-loaded in the first sentence, with caveats trailing afterward. It is dense but each clause carries information (mechanism, output meaning, partial-result conditions); only minor trimming is possible.

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?

With an output schema present, the description need not explain the return shape, and it correctly focuses on interpretation semantics (empty list meaning, partial-result flags) and external dependency caveats. For a 3-param read-only tool with rich annotations, nothing material is missing.

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% and all three required GAV parameters are documented in the schema, so the baseline of 3 applies. The description characterizes the input as a 'project root Maven GAV' but adds no per-parameter syntax, format, or constraint detail beyond what the schema already states.

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 precise verb and resource — 'Show the dependency path from a project root Maven GAV to each vulnerable transitive node' — and names the exact mechanism (deps.dev graph + OSV.dev advisories). It is clearly distinguishable from siblings like get_transitive_graph (raw graph) and get_dependency_vulnerabilities (flat list), since the output is a shortest root-to-node path per vulnerable dependency.

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 description frames the use case crisply ('so a CVE deep in the tree can be traced back to which direct dependency pulls it in') and cross-references the sibling get_dependency_vulnerabilities for the shared OSV coverage caveat. It stops short of an explicit 'use this instead of X when Y' statement, so it is clear context without formal alternatives guidance.

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