Skip to main content
Glama
0pstech

kr.ai.vdb/vdb

by 0pstech

vdb-mcp

mcp-name: kr.ai.vdb/vdb

MCP (Model Context Protocol) server for VDB — the AI-aware vulnerability database. Lets Claude Desktop, Claude Code, Cursor, Cline, Continue, and any MCP client check packages while generating code: known CVEs, slopsquatting (LLM-hallucinated package names an attacker may have registered), CISA KEV status, MCP-server trust profiles, and more.

Quick start

uvx vdb-mcp          # or: pipx run vdb-mcp

Claude Desktop (claude_desktop_config.json) / Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "vdb": { "command": "uvx", "args": ["vdb-mcp"] }
  }
}

No install at all — point any streamable-HTTP MCP client at the hosted endpoint:

{
  "mcpServers": {
    "vdb": { "url": "https://vdb.ai.kr/mcp" }
  }
}

That's it — the server talks to the hosted instance at https://vdb.ai.kr by default. Anonymous use gets a free per-IP trial; add an API key for unmetered access (free at https://vdb.ai.kr/signup):

{
  "mcpServers": {
    "vdb": {
      "command": "uvx",
      "args": ["vdb-mcp"],
      "env": { "VDB_API_TOKEN": "vdb_..." }
    }
  }
}

Related MCP server: GhostFree

Tools

Tool

What it does

vdb_check_package

Check one package (purl + optional version) for vulnerabilities, slop risk, KEV

vdb_check_packages

Bulk slopsquatting / risk check for a list of packages

vdb_lookup

Fetch one advisory by ID (CVE-…, GHSA-…, VDB-SLOP-…)

vdb_search

Free-text search over the vulnerability corpus

vdb_check_mcp_server

Trust tier + permission scopes of a community MCP server

vdb_list_slopsquatting

Current slopsquatting candidates per ecosystem

Environment

Variable

Default

Meaning

VDB_API_URL

https://vdb.ai.kr

VDB instance to query (set for self-hosted)

VDB_API_TOKEN

(empty)

vdb_… API key — unmetered, per-account quota

MCP_MODE

stdio

stdio or sse (long-running HTTP server)

MCP_PORT

7700

SSE port

Why

LLMs hallucinate package names; attackers register them (slopsquatting). LLMs also happily recommend packages with known RCEs. VDB gives your agent a guardrail: one tool call before npm install / pip install. See https://vdb.ai.kr/connect for the one-line prompt variant that needs no MCP at all.

License

Elastic License 2.0 — free to use, including inside commercial organizations and CI. The only restrictions: you may not offer this software to third parties as a hosted or managed service, or resell it as a product. Commercial licensing beyond that: dev@egdee.com. API usage is governed by the VDB service terms regardless of how you call it.

Available Tools

10 tools
vdb_check_mcp_serverA

BEFORE recommending a community/unofficial MCP server, check it here. Scope risk is evaluated independently of advisory risk — an unvetted publisher asking for shell or filesystem access is refused even with a clean record. Follow the returned agent_action.

ParametersJSON Schema
NameRequiredDescriptionDefault
server_idYese.g. 'mcp:community/shell-runner'

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it discloses meaningful behavior: scope risk is evaluated independently of advisory risk, and an unvetted publisher requesting shell/filesystem access is refused even with a clean record. It also instructs the agent to follow the returned `agent_action`, which is a direct behavioral directive.

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?

Three sentences, each essential: the trigger, the risk model, and the follow-up action. The core instruction is front-loaded with 'BEFORE recommending...' and there is 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 single-parameter check tool, the description covers when to use it and how to handle the result via `agent_action`. The lack of an output schema is partially mitigated by that instruction, though exact response fields beyond `agent_action` remain unspecified.

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 the schema already provides the server_id example. The description does not add parameter-level detail beyond implying that the server being checked is the MCP server under consideration.

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: before recommending a community/unofficial MCP server, check it here. The scope is clearly limited to MCP servers, distinguishing it from sibling tools like vdb_check_package and vdb_search.

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 an explicit trigger condition ('BEFORE recommending a community/unofficial MCP server'), making the when-to-use clear. It does not name alternative tools for other asset types, but the scope restriction implies when not to use it.

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

vdb_check_packageA

BEFORE recommending or installing any package, check it here. The response carries agent_action: REFUSE (do not add it — relay the because text to the user), CONFIRM (ask the user first), or PROCEED. A failed or rate-limited call also answers REFUSE; never proceed unchecked. Also returns the underlying advisories, slop risk, and KEV status as supporting data.

ParametersJSON Schema
NameRequiredDescriptionDefault
purlYesPackage URL, e.g. 'pkg:npm/lodash' or 'pkg:pypi/requests'
versionNoOptional version. If supplied, range matching is applied.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by explaining the agent_action response values and how to handle failed or rate-limited calls (treat as REFUSE). It also lists supporting data returned. It could go further by describing behavior on invalid input or authentication prerequisites, but the core operational behavior is well covered.

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 two sentences with the critical instruction front-loaded in the first word. It packs high-value behavioral guidance without redundancy, and every phrase contributes to correct tool usage.

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 simple two-parameter tool with no output schema, the description adequately explains how to interpret responses and what supporting data to expect. It could be more complete by detailing the exact response structure or error conditions, but the essential decision-making context is present.

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 documents purl and version, including examples and range-matching behavior. The description adds no parameter-level meaning beyond what the schema provides, so a baseline score of 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 clearly identifies the tool's purpose: checking a package before recommending or installing it, with a specific verb and resource. However, it does not explicitly differentiate from siblings like vdb_check_packages or vdb_lookup, relying on the name to imply singular vs. plural.

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 gives an explicit usage trigger: before recommending or installing any package. It also instructs never to proceed unchecked, which provides clear context. It does not, however, mention alternatives or when not to use it, so it stops short of full guidance.

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

vdb_check_packagesA

Bulk-check several packages in one call — always prefer this over repeated vdb_check_package. Each result carries its own agent_action (REFUSE / CONFIRM / PROCEED) plus a top-level agent_action for the batch. Follow them; relay because when refusing. Send names EXACTLY as written — do not correct a typo first, the call is the typo test.

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesYesList of PURLs or 'ecosystem/name' shorthand.

TDQS

A4.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the behavioral contract: each result carries an agent_action (REFUSE/CONFIRM/PROCEED), a top-level agent_action exists, and the agent must follow them and relay 'because' on refusal. It also explains that the call acts as a typo test. However, it doesn't explicitly state whether the operation is read-only or has side effects, though 'check' implies non-destructive. Slight gap, but the disclosed behavior is rich enough to guide correct invocation.

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?

Three sentences, no waste. The purpose and preference are front-loaded, followed by essential behavioral and parameter guidance. Every sentence earns its place; the description is both concise and information-dense.

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?

For a bulk-check tool with no output schema, the description provides sufficient context: it describes the result structure (per-item and batch agent_action), instructs on how to handle results (follow them, relay 'because'), and explains the typo-test nature. An agent has enough information to call this tool correctly and interpret responses, despite not knowing the exact JSON field names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter type and description are already present. The description adds critical semantic guidance: 'Send names EXACTLY as written — do not correct a typo first, the call is the typo test.' This is beyond the schema and is essential for correct usage, elevating the parameter understanding beyond a simple list.

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 clearly states the tool's purpose: bulk-checking multiple packages in one call, and explicitly differentiates it from the sibling vdb_check_package by recommending this over repeated calls. The verb 'bulk-check' and resource 'packages' are specific and unambiguous.

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

Usage Guidelines5/5

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

It gives an explicit directive to prefer this tool over vdb_check_package, which is a clear usage guideline. It also instructs the agent to send names exactly as written and not to correct typos, framing the call itself as the typo test. This provides both when-to-use and how-to-behave guidance.

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

vdb_hardenA

Decide whether attacker-controlled data can reach a dangerous operation through this file's transitive dependencies — with no CVE required. Use it on code that passes user input into a third-party API. The file is abstracted LOCALLY first (identifiers renamed, literals reduced to shapes, bodies dropped); only that abstraction and the lockfile are sent, never source text. Returns decided paths, a call-site fix that does not modify the dependency, and the residual risk the fix does not cover.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPython file to analyze.
manifest_pathYesuv.lock / poetry.lock / Pipfile.lock / requirements.txt / CycloneDX. Version ranges cannot be analyzed — the answer differs per resolved version.

TDQS

A4.8/5.0
Behavior5/5

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

Discloses important behavioral details beyond the schema: the file is abstracted locally, only the abstraction and lockfile are transmitted, source text is never sent, and the result includes a non-modifying call-site fix plus residual risk. Since annotations are absent, the description carries the full transparency burden and satisfies it.

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?

Three focused sentences: what it decides, when to use it, and how it behaves safely. Every sentence contributes distinct information with no filler, and the main purpose is front-loaded.

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?

For a tool with no output schema, it still summarizes the return value (decided paths, call-site fix, residual risk) and covers privacy, input constraints, and dependency resolution limitations. An agent has enough context to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaningful semantics beyond the schema, especially for manifest_path: it names the accepted lockfile formats and warns that version ranges cannot be analyzed because the answer depends on the resolved version. This prevents a common misuse that the schema alone would not catch.

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 analytic goal: deciding whether attacker-controlled data can reach a dangerous operation through transitive dependencies. The 'no CVE required' qualifier sharply distinguishes it from CVE-oriented sibling tools like vdb_lookup and vdb_scan_lockfile.

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?

Explicitly directs use to 'code that passes user input into a third-party API,' which tells an agent when to apply it. It does not name sibling alternatives by exclusion, but the use context is clear enough to guide selection.

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

vdb_harden_verifyA

After applying a fix returned by vdb_harden, re-abstract the local file and verify the originally issued path. Returns a signed evidence payload bound to the original analysis, the fixed IR fingerprint, and the dependency graph. This proves VDB's decision over the submitted abstraction, not that the abstraction matches a deployed binary.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFixed Python file.
path_idYesPath id issued by vdb_harden.
manifest_pathYesThe same resolved manifest used for vdb_harden.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does substantial work: it explains the signed payload, the binding to original analysis, IR fingerprint, dependency graph, and crucially clarifies the limitation ('not that the abstraction matches a deployed binary'). It does not state whether the tool modifies the local file or any side effects, but the read/verify nature is implied and the proof semantics are well disclosed.

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?

Three sentences with no wasted words. The first sentence front-loads the action and prerequisite, the second describes the output, and the third clarifies the proof's scope. Every sentence adds necessary meaning.

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?

Given no output schema and no annotations, the description explains the return payload contents and the intended interpretation. It ties to vdb_harden and the schema already covers parameter origins. The tool's purpose, workflow, output, and limitations are all addressed sufficiently for correct invocation.

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%: all three parameters (path, manifest_path, path_id) already have descriptions in the schema. The description adds workflow context (e.g., 'fixed file', 'same resolved manifest'), but does not add substantial parameter-level semantics beyond the schema, so baseline 3 applies.

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 action ('re-abstract the local file and verify the originally issued path') tied to a clear workflow step after vdb_harden. It distinguishes itself from siblings by referencing the exact fix-return flow and explicitly scoping what the verification does and does not prove.

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 context of when to use the tool ('After applying a fix returned by vdb_harden'), which orients the agent to the correct point in the workflow. It does not explicitly name alternative tools or list when-not-to-use conditions, but the context is strong enough for proper selection.

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

vdb_list_slopsquattingB

List packages currently flagged as slopsquatting candidates in a given ecosystem.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
ecosystemNonpm | PyPI | crates.io | Go | Maven

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden; 'List' and 'currently flagged' communicate a read-only snapshot of the current candidate set. It does not, however, mention authentication expectations, result ordering, or pagination behavior, so the transparency is only partial.

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 description is a single front-loaded sentence with no filler, making it very concise. It earns its place, though it is terse and omits explanatory structure that could have aided invocation.

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 simple list tool with two optional parameters, the core call is minimally covered and the schema supplies ecosystem choices and a default limit. The absence of output schema, pagination details, and explicit sibling guidance leaves the context incomplete but not severely so.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, and the description adds no parameter-level meaning beyond restating 'given ecosystem.' The limit parameter in particular receives no semantic explanation, and the allowed ecosystem values are left entirely to the schema.

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 clearly states the action ('List') and the target ('packages currently flagged as slopsquatting candidates') with an ecosystem scope, which separates it from the sibling check/scan/search tools. It does not explicitly name an alternative, so it stops short of full sibling differentiation.

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 guidance about when to use this tool versus vdb_search or vdb_check_package, and no exclusions or prerequisites are mentioned. The phrase 'currently flagged' hints that this is a current-snapshot listing, but that is not enough to guide tool selection.

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

vdb_lookupA

Fetch a single vulnerability by ID or alias (e.g. CVE-2024-1234, GHSA-xxxx-yyyy-zzzz, VDB-SLOP-…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states it fetches a single vulnerability, implying a read-only operation, but discloses nothing about behavior on not-found, error handling, authentication requirements, or the response structure. It is minimal and does not go beyond the basic action.

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 a single, efficient sentence that front-loads the action and resource, and immediately clarifies acceptable input formats. There is no wasted text; every word adds value.

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?

The tool is simple (one parameter, no output schema), but the description does not explain what the response looks like (e.g., full record, metadata) or how errors are handled. While not complex, it leaves some ambiguity about the return value, making a 3 appropriate.

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?

The schema only defines 'id' as a string with no description. The tool description compensates by explaining that the id can be a CVE, GHSA, or VDB-SLOP identifier, giving examples. This adds meaning beyond the raw schema, though the VDB-SLOP format is truncated with an ellipsis, leaving some ambiguity.

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 uses a specific verb 'Fetch' and names the resource 'a single vulnerability', explicitly stating it works by ID or alias with concrete examples (CVE, GHSA, VDB-SLOP). This clearly distinguishes it from siblings like vdb_search or vdb_check_package, which are for broader searches or package checks.

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 description implies usage when you have a specific identifier, but it does not explicitly contrast with alternatives or state when not to use it. It lacks explicit 'use this instead of X when...' guidance, though the intent is inferable from the tool name and the examples.

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

vdb_scan_lockfileA

BEFORE merging, scan the resolved lockfile. Checking the packages someone chose misses the transitive ones nobody did — which is usually where the risk is. Pass the file contents (package-lock.json, requirements.txt, uv.lock, go.sum, Cargo.lock, a CycloneDX SBOM, …). Returns agent_action: REFUSE means do not merge.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoLocal runs only (uvx vdb-mcp): read the file here instead of passing content.
contentNoThe file's text.
filenameYese.g. 'package-lock.json' — the format is detected from it

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool inspects transitive dependency risk and returns an `agent_action`, with REFUSE meaning do not merge. It stops short of describing other possible actions or side effects, but the key behavior is conveyed.

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 compact and front-loaded with the critical timing ('BEFORE merging'). Every clause adds context: the threat model, what to pass, format examples, and the actionable result.

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 3-parameter tool with no output schema, the description provides the scenario, input mode, and the key return value. It does not exhaustively list all lockfile formats or other possible agent_action values, but it is sufficient for correct invocation.

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 documents all parameters. The description adds useful examples of supported lockfile formats and reinforces that filename drives format detection, but it does not add much per-parameter meaning beyond the schema.

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 action ('scan the resolved lockfile') and a clear resource with timing ('BEFORE merging'). It also distinguishes the tool from package-level checks by explicitly calling out transitive dependencies, making its purpose unambiguous.

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 context: use before merging to audit transitive dependencies, and tells the agent to pass file contents. It doesn't explicitly name sibling alternatives, but the contrast with 'checking the packages someone chose' makes the selection rationale clear.

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

vdb_vexA

Given a project directory and its lockfile, work out which of its known advisories can actually be reached by attacker-controlled data, and return an OpenVEX document plus a shareable URL. Use this when a scan produced more findings than anyone can triage. Point path at the SOURCE TREE, not one file: a not_affected determination is only as wide as the code behind it, and a single-file run withholds them all. Reachability is decided at package granularity from static summaries — good for triage order, not proof of non-exploitability.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesProject source directory.
manifest_pathYesResolved lockfile for the same project.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and excels. It discloses that reachability is decided at package granularity from static summaries, that a single-file run withholds not_affected results, and that output is for triage order, not proof of non-exploitability. No side effects or mutation are implied, and nothing contradicts structured metadata.

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 description is a single paragraph with three sentences, each earning its place: purpose, usage trigger, and a critical caveat. It is slightly longer than minimal, but every clause adds value; no redundancy or filler. The most actionable instruction (source tree vs single file) is front-loaded in the middle, which is acceptable given the flow.

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?

For a tool with two parameters and no output schema, the description covers everything an agent needs: what it returns (OpenVEX document plus URL), when to use it, how to set parameters correctly, and the limitations of the analysis. It is self-contained and leaves no critical ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are described, but the description adds critical semantics beyond the schema: path must be the SOURCE TREE, not a single file, and this choice affects the breadth of not_affected determinations. This is exactly the kind of parameter-level context an agent needs that the schema does not provide.

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 uses a specific verb-resource pair: it 'works out' which advisories are reachable and returns an OpenVEX document plus a URL. It clearly distinguishes the tool's triage purpose from siblings by stating the trigger ('when a scan produced more findings than anyone can triage') and contrasts it with a single-file run, making the purpose unmistakable.

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

Usage Guidelines5/5

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

Provides explicit when-to-use context ('Use this when a scan produced more findings than anyone can triage') and detailed how-to-use guidance: point path at the source tree, not a single file, and explains why (not_affected determinations are as wide as the code behind it). It also clarifies the tool's limitation (good for triage order, not proof), giving clear boundaries.

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. 10 tool updatesv0.2.0
    • First observedvdb_check_mcp_server
    • First observedvdb_check_package
    • First observedvdb_check_packages
    • First observedvdb_harden
    • First observedvdb_harden_verify
    • First observedvdb_list_slopsquatting
    • First observedvdb_lookup
    • First observedvdb_scan_lockfile
    • First observedvdb_search
    • First observedvdb_vex

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single vs bulk package checks, lockfile scanning, vulnerability lookup vs search, MCP server vetting, slopsquatting listing, harden analysis, post-fix verification, and VEX generation. Even the two checking tools are cleanly separated by input cardinality and workflow stage. No ambiguity about which tool to select for a given task.

Naming Consistency5/5

All tool names follow the consistent `vdb_` prefix with snake_case verb_noun or verb patterns (e.g., check_package, scan_lockfile, harden_verify). The naming makes the action and target predictable across the entire set, with no style mixing or vague verbs.

Tool Count5/5

Ten tools is well within the ideal range for a vulnerability database and supply-chain security server. Each tool earns its place by covering a distinct stage—package vetting, bulk checks, lockfile analysis, lookup/search, MCP server risk, and remediation—without redundant or filler tools.

Completeness5/5

The tool surface provides full lifecycle coverage: check packages, scan lockfiles for transitive risk, look up and search vulnerabilities, vet MCP servers, list slopsquatting candidates, run reachability analysis, verify fixes, and generate VEX documents. There are no obvious gaps or dead ends for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that gives AI assistants the ability to check open-source packages for vulnerabilities, enrich findings with real-world exploit intelligence, and statically analyse whether vulnerable code is actually reachable in your project.
    3
    1
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    A local MCP server that scans repository dependencies for known vulnerabilities (CVEs) using OSV.dev, enriches findings with NVD and CISA KEV data, and supports triage, remediation, and accepted risk management directly from an AI coding assistant.
    6
    30 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that checks npm and PyPI package health, providing maintenance signals, version info, CVE counts, and alternative suggestions.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that verifies npm and PyPI packages before installation, checking for existence, known vulnerabilities, OpenSSF scorecard, and typosquatting, returning an ALLOW/WARN/BLOCK verdict.
    MIT