Skip to main content
Glama
K4PXD

cve-mcp-server

by K4PXD

cve-mcp-server

Realtime CVE intelligence over the Model Context Protocol. Gives an LLM one place to look up a vulnerability and get details, exploitation signals, and public proof-of-concepts aggregated from five authoritative sources:

Source

What it provides

NIST NVD (API v2.0)

Description, CVSS v2/v3.1/v4 scores + vectors, CWE weaknesses, affected-product CPEs, references

CISA KEV

Confirmed active-exploitation status, remediation due dates, ransomware-use flag

FIRST.org EPSS

Probability a CVE is exploited in the next 30 days (+ percentile)

GitHub Security Advisories

Package-level impact: ecosystem, vulnerable version ranges, first patched version

nomi-sec PoC-in-GitHub + Exploit-DB

Public proof-of-concept repos (ranked by stars) and exploit references, with optional repo-content retrieval

Metasploit + Nuclei

Packaged, ready-to-run tooling: Metasploit modules (Rapid7, with reliability rank) and Nuclei templates (ProjectDiscovery) referencing the CVE

Tools

Tool

Purpose

cve_triage

Prioritization verdict fusing CVSS + EPSS + KEV + PoC into ACT NOW → LOW.

cve_batch_triage

Triage up to 25 CVEs in one call, returned ranked by priority (turn a scan/findings list into a fix-first queue).

cve_watchlist

Vendor/product digest: recently published CVEs + that vendor's CISA KEV entries in one call.

cve_get_details

Full enriched detail for one CVE (NVD + KEV + EPSS, with triage banner).

cve_search

Search NVD by keyword, CPE, severity, KEV status, date range.

cve_recent

Recently published CVEs (realtime monitoring, up to 120-day look-back).

cve_get_pocs

Discover public PoC / exploit references for a CVE.

cve_fetch_poc_code

Fetch a PoC repo's file listing + README.

cve_get_exploit_tooling

Packaged Metasploit modules + Nuclei templates for a CVE (with run strings).

cve_get_kev

CISA KEV single lookup or catalog browse.

cve_get_epss

EPSS scores for one or many CVEs.

cve_get_advisories

GitHub Security Advisories for a CVE.

All tools are read-only and support response_format: "markdown" (default) or "json".

Related MCP server: Cybersecurity Threat Intelligence MCP

Setup

Requires Node.js 18+.

npm install
npm run build

Optional environment variables

All are optional but recommended — they raise rate limits and coverage:

  • NVD_API_KEYrequest one here (NVD throttles hard without it).

  • GITHUB_TOKEN — any GitHub PAT; raises the GitHub API limit for advisories and PoC fetching.

  • TRANSPORTstdio (default) or http.

  • PORT — HTTP port when TRANSPORT=http (default 3000, bound to 127.0.0.1).

Connecting a client

Claude Code

claude mcp add cve --env NVD_API_KEY=xxx --env GITHUB_TOKEN=ghp_xxx -- node /home/k4p/cve-mcp-server/dist/index.js

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "cve": {
      "command": "node",
      "args": ["/home/k4p/cve-mcp-server/dist/index.js"],
      "env": {
        "NVD_API_KEY": "your-nvd-key",
        "GITHUB_TOKEN": "ghp_your_token"
      }
    }
  }
}

Example prompts

  • "Tell me everything about Log4Shell, including whether it's actively exploited."

  • "What critical CVEs were published this week that are in the CISA KEV catalog?"

  • "Find public PoCs for CVE-2024-3400 and show me what's in the top repo."

  • "Is there a Metasploit module or Nuclei template for EternalBlue?"

  • "Rank CVE-2021-44228, CVE-2023-23397, and CVE-2024-3400 by EPSS exploitation likelihood."

  • "Here are 12 CVEs from last night's scan — triage them and tell me what to patch first."

  • "What's new for Fortinet this month, and which of theirs are actively exploited?"

  • "Which Maven packages does CVE-2021-44228 affect and in what version was it fixed?"

Safety note

PoC and exploit tools surface already-public security research artifacts and are intended for authorized defensive testing, detection engineering, and vulnerability triage. cve_fetch_poc_code retrieves repository contents (file listing + README, size-bounded) and cve_get_exploit_tooling links to public Metasploit/Nuclei source; use them only against targets you are authorized to test.

Triage scoring

cve_triage (and the banner on cve_get_details) turns four signals into one verdict:

Priority

Trigger

🔴 ACT NOW

In CISA KEV (confirmed exploited), or composite score ≥ 85

🟠 HIGH

Score ≥ 70

🟡 ELEVATED

Score ≥ 50

🔵 MODERATE

Score ≥ 30

LOW

Score < 30

Composite score (0-100): CVSS contributes up to 50, EPSS up to 40, and exploit availability up to 15. Availability is a gradient (strongest signal wins, not additive): a weaponized Metasploit exploit module → 15, other packaged tooling (auxiliary module / Nuclei template) → 12, a public PoC → 10, none → 0. KEV membership hard-pins to 100. Each verdict comes with a plain-English rationale — including an explicit "severe on paper but low real-world signal → deprioritize" note when CVSS is high but EPSS/KEV/PoC/tooling are all cold.

Resilience

  • Retries with backoff on 429/502/503/504 and network blips (honors Retry-After) — so NVD's strict unauthenticated rate limit doesn't fail a triage mid-run.

  • CVE-detail lookups cached 15 min in-process (the same CVE is queried repeatedly across cve_get_details / cve_triage / cve_get_pocs).

Evaluations

evals/ holds a 10-question suite (cve-mcp-evals.xml, mcp-builder format) plus a ground-truth checker that asserts each answer is still retrievable from the live sources:

npm run verify:evals

See evals/README.md for details. Answers are chosen to be stable over time (CVSS/CWE, KEV dates, GHSA patched versions, classic Metasploit paths).

Notes

  • The CISA KEV catalog is cached in-process for one hour to avoid re-downloading the full feed on every call.

  • The Metasploit metadata (~11 MB) and Nuclei CVE index (~2 MB) feeds are fetched once and cached in-process for six hours, then indexed by CVE for instant lookups.

  • NVD caps date-range queries at 120 days; cve_recent clamps to that.

  • Responses are truncated at 25,000 characters; use pagination or json format for more.

Available Tools

12 tools
cve_batch_triageBatch triage CVEs (ranked)A
Read-onlyIdempotent

Triage a list of CVEs in a single call and get them back ranked by priority — turn a scan or findings list into an ordered "fix this first" queue without one tool call per CVE.

Each CVE is scored exactly as cve_triage does (CVSS + EPSS + CISA KEV + optional PoC/tooling), then results are sorted highest-priority first. EPSS is fetched for the whole batch in one request; unknown IDs are reported separately rather than failing the call.

Args:

  • cve_ids (string[]): 1-25 CVE identifiers.

  • check_pocs (boolean, default false): Add public-PoC availability (one extra lookup per CVE).

  • check_tooling (boolean, default true): Add Metasploit/Nuclei tooling (cached feeds; cheap across a batch).

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { requested, triaged, not_found[], results[] } where each result is { cve_id, priority, score, signals, description } sorted by score descending.

Examples:

  • "Rank these scan findings by what to patch first" -> cve_ids=[...].

  • "Triage this list but skip the PoC lookups" -> check_pocs=false.

Errors:

  • Malformed IDs are rejected up front; unresolvable-but-valid IDs come back in not_found[].

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idsYesCVE identifiers to triage in one call (1-25), e.g. a scanner's findings list.
check_pocsNoAlso factor public PoC availability into each verdict (one extra lookup per CVE; off by default to keep batch runs fast).
check_toolingNoFactor packaged exploit tooling (Metasploit/Nuclei) into each verdict (feeds are cached, so this is cheap across a batch).
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations, the description discloses meaningful behavior: EPSS is fetched once per batch, unknown IDs are returned separately instead of failing, malformed IDs are rejected up front, and results are sorted by priority. This gives an agent an accurate model of how the call behaves and fails.

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 well structured with Args, Returns, Examples, and Errors sections, and the core purpose is front-loaded in the first sentence. Every section adds useful information without unnecessary repetition or filler.

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?

Despite lacking an output schema, the description defines the return shape, sorting behavior, error handling, and example invocations. Combined with safety annotations, this provides everything an agent needs 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.

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters and defaults. The description mostly paraphrases the schema, though it adds useful context about lookup costs and cached tooling feeds; this is nice but not a substantial semantic addition.

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 and resource: triage a list of CVEs in a single call and return them ranked by priority. It clearly differentiates from sibling tools by emphasizing batch behavior and explicitly invoking cve_triage as the per-CVE scoring equivalent.

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 makes the batch use case clear with examples like ranking scan findings and skipping PoC lookups, and contrasts with performing one tool call per CVE. It does not explicitly state when to prefer cve_triage for a single CVE, but the context strongly implies it.

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

cve_fetch_poc_codeFetch PoC repository contentsA
Read-onlyIdempotent

Fetch the actual proof-of-concept material from a GitHub repository: its top-level file listing plus the decoded README (bounded in size).

Use after cve_get_pocs to inspect a specific PoC. Intended for authorized security research and defensive validation. Set GITHUB_TOKEN to raise rate limits and access more repos.

Args:

  • repo (string): 'owner/repo' or a full github.com URL.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { fullName, htmlUrl, files[], readme, readmeTruncated }.

Examples:

Errors:

  • "GitHub rate limit exceeded (429)" — set GITHUB_TOKEN.

  • "GitHub has no record for that identifier (404)" — repo not found or private.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesGitHub repo as 'owner/repo' or a full github.com URL (typically from cve_get_pocs).
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint annotations, the description discloses important runtime behavior: rate-limit errors and the GITHUB_TOKEN remedy, 404 behavior for missing/private repos, bounded README retrieval, and exact return fields. These are meaningful behavioral details an agent needs before invoking.

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 the core behavior, then organized into Args, Returns, Examples, and Errors sections. Every section earns its place and there is no filler or repetition of annotation data.

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 two params, 100% schema coverage, and no output schema, the description fully compensates by documenting return fields, error cases, authentication guidance, and concrete examples. Nothing essential for correct invocation is missing.

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 practical meaning: repo can be 'owner/repo' or a full github.com URL, examples are given for both forms, and the response_format default and behavior are clarified. This goes beyond the schema's property descriptions.

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 explicitly states the action: fetching top-level file listing plus decoded README from a GitHub repository, which clearly distinguishes it from sibling tools like cve_get_pocs or cve_get_details. It names the exact resource and scope, and even mentions bounded README size.

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 explicitly says 'Use after cve_get_pocs to inspect a specific PoC,' giving clear sequencing against a sibling tool. It also adds intended-use context for authorized security research, though it does not enumerate exclusions for all other sibling tools.

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

cve_get_advisoriesGet GitHub Security AdvisoriesA
Read-onlyIdempotent

Retrieve GitHub Security Advisories (GHSA) that reference a CVE — the best source for package-level impact (ecosystem, affected version ranges, first patched version).

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): array of { ghsaId, summary, severity, cveId, htmlUrl, publishedAt, vulnerabilities: [ { ecosystem, packageName, vulnerableVersionRange, firstPatchedVersion } ] }.

Examples:

  • "Which npm/Maven packages does CVE-2021-44228 affect and when was it fixed?" -> cve_id="CVE-2021-44228".

Notes:

  • Returns an empty list when no advisory references the CVE. Set GITHUB_TOKEN to raise rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. 'CVE-2021-44228'.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare read-only and idempotent behavior, and the description adds genuine operational context: empty-list behavior when no advisory references the CVE, the GITHUB_TOKEN rate-limit dependency, and the markdown/json output contract. There is no contradiction with annotations; the only minor ambiguity is that Returns (json) is stated while markdown is the default format.

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 organized into purpose, args, returns, examples, and notes with the key purpose front-loaded. While the returns block is detailed, it earns its place because the tool has no output schema, and there is no filler.

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 two-parameter read-only tool with no output schema, the description provides the full return shape, empty-list behavior, rate-limit/auth note, and a working example. Nothing needed to call the tool correctly is missing.

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 schema documents both parameters. The description adds value by giving a concrete example question tied to cve_id and clarifying what the response_format choices mean operationally. This goes slightly beyond the baseline schema semantics.

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 and resource: Retrieve GitHub Security Advisories that reference a CVE. It also frames its differentiating value as the best source for package-level impact, so an agent can distinguish it from siblings like cve_get_details or cve_get_pocs.

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 line and example question clearly signal when to use this tool: when package-level impact (ecosystem, versions, first patched version) is needed. It does not explicitly name alternative tools or give when-not-to-use conditions, but the context is strong enough for correct selection.

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

cve_get_detailsGet CVE detailsA
Read-onlyIdempotent

Retrieve complete, authoritative details for a single CVE from the NIST NVD, enriched with real-time exploitation signals.

Combines: NVD description, CVSS v2/v3.1/v4 base scores + vectors, CWE weakness types, affected-product CPE strings, and reference URLs — plus (by default) CISA KEV actively-exploited status and the EPSS exploitation-probability score.

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • include_kev (boolean): Add CISA KEV status (default: true).

  • include_epss (boolean): Add EPSS score (default: true).

  • response_format ('markdown' | 'json'): Output format (default: 'markdown').

Returns (json): { id, published, lastModified, vulnStatus, descriptions, cvss[], cwes[], references[], cpe[], kev, epss }.

Examples:

  • "Tell me everything about Log4Shell" -> cve_id="CVE-2021-44228".

  • "Is CVE-2023-23397 being exploited?" -> include_kev=true, include_epss=true.

Errors:

  • "Invalid CVE ID ..." if the ID is malformed.

  • "No NVD record found for " if the CVE does not exist in NVD.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. 'CVE-2021-44228'.
include_kevNoEnrich with CISA KEV (actively-exploited) status.
include_epssNoEnrich with the EPSS exploitation-probability score.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag read-only/idempotent behavior, and the description adds real behavioral detail: NVD as source, optional KEV/EPSS enrichment defaulting to true, two output formats, the full JSON return shape, and expected error strings. It doesn't mention rate limits or auth, but those are not essential given the annotations.

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 structured into purpose, args, returns, examples, and errors, with the purpose front-loaded. It is slightly redundant with the input schema in the Args block, but the return shape and error strings are valuable and not otherwise present.

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 single-record lookup with four parameters and no output schema, this is complete: it defines the required identifier, optional enrichment flags, output format, default behavior, return fields, and failure modes. An agent can call it correctly without additional context.

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 the schema already fully documents all four parameters and defaults. The description restates these in Args and adds illustrative query mappings, but no new parameter-level semantics or constraints beyond what the schema provides.

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?

Opens with 'Retrieve complete, authoritative details for a single CVE from the NIST NVD' – a specific verb, resource, and single-record scope. The combination list (NVD description, CVSS, CWE, CPE, references, KEV, EPSS) clearly differentiates it from focused sibling tools like cve_get_kev or cve_get_pocs.

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 single-CVE scope and examples ('Tell me everything about Log4Shell' -> cve_id; 'Is CVE-2023-23397 being exploited?' -> include flags) make intended use concrete. It does not explicitly name alternatives or state when not to use it, so it stops short of a full 5.

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

cve_get_epssGet EPSS exploitation scoresA
Read-onlyIdempotent

Retrieve EPSS (Exploit Prediction Scoring System, by FIRST.org) scores for one or more CVEs.

EPSS estimates the probability (0-100%) that a CVE will be exploited in the wild within the next 30 days, plus a percentile ranking across all scored CVEs. Useful for prioritizing patching beyond raw CVSS severity.

Args:

  • cve_ids (string[]): 1-100 CVE identifiers.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { count, scores: [ { cve, epss, percentile, date } ] } (epss/percentile as fractions 0-1).

Examples:

  • "EPSS for CVE-2021-44228" -> cve_ids=["CVE-2021-44228"].

  • "Rank these three by exploitation likelihood" -> cve_ids=[...].

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idsYesOne or more CVE IDs to score (1-100).
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnly/openWorld/idempotent/destructive behavior. The description adds useful behavioral context: the 30-day exploitation window, percentile ranking, date field, and return values expressed as fractions 0-1. No contradiction with annotations.

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 well-structured with purpose, background, args, return shape, and examples. It is slightly longer than strictly necessary because it duplicates schema details, but it is front-loaded and every section serves a clear purpose.

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 two-parameter read-only tool with no output schema, the description adequately explains the return structure and includes usage examples. It does not cover error behavior or handling of invalid/unknown CVE IDs, which is a minor gap but not blocking.

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 both parameters are already well described in the schema. The description repeats the parameter definitions and adds helpful examples, but it does not add substantial semantic meaning beyond what the schema provides.

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 a specific action: retrieve EPSS scores for one or more CVEs, and explains what EPSS is (exploitation probability and percentile). It does not explicitly contrast itself with sibling tools like cve_get_kev or cve_get_details, 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 Guidelines4/5

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

The description gives clear when-to-use context: 'useful for prioritizing patching beyond raw CVSS severity.' It does not name alternatives or state when not to use the tool, so it lacks explicit exclusions.

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

cve_get_exploit_toolingGet exploit tooling (Metasploit + Nuclei)A
Read-onlyIdempotent

Find packaged, ready-to-run exploit and scan tooling for a CVE: Metasploit Framework modules (Rapid7) and Nuclei templates (ProjectDiscovery).

This is distinct from cve_get_pocs (raw proof-of-concept repos). For an operator, packaged tooling is usually more actionable: a Metasploit exploit module is point-and-shoot (use <module>), and a Nuclei template gives repeatable, at-scale detection (nuclei -id <cve> -u <target>). Each module/template comes with its reliability/severity, disclosure date, msfconsole/nuclei run string, and GitHub source link.

Intended for authorized penetration testing, detection engineering, and vulnerability triage.

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { cveId, metasploit: [ { fullname, name, type, rank, rankLabel, disclosureDate, hasCheck, sourceUrl } ], nuclei: [ { id, name, severity, cvssScore, filePath, sourceUrl } ] }.

Metasploit rank: 0 Manual, 100 Low, 200 Average, 300 Normal, 400 Good, 500 Great, 600 Excellent. Type "exploit" is weaponized; "auxiliary" is typically a scanner/check.

Examples:

  • "Is there a Metasploit module for Log4Shell?" -> cve_id="CVE-2021-44228".

  • "Can I scan for CVE-2024-3400 with Nuclei?" -> cve_id="CVE-2024-3400".

Notes:

  • Returns empty lists (not an error) when no packaged tooling references the CVE.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. 'CVE-2021-44228'.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds valuable behavioral context: it returns empty lists rather than errors when no tooling exists, explains the Metasploit rank scale, and distinguishes weaponized 'exploit' modules from 'auxiliary' scanner/check modules. No contradiction with annotations.

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 the core purpose and then organized into labeled sections: Args, Returns, rank explanation, Examples, and Notes. Every section contributes selection or invocation guidance, with no filler.

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 no output schema present, the description fully compensates by defining the JSON return shape for metasploit and nuclei entries, explaining rank values and exploit type semantics, and noting empty-list behavior. The examples and intended-use note make the tool self-contained for an agent.

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% for both parameters, so the baseline bar is lower; the description still adds useful examples mapping natural-language requests to cve_id and clarifies response_format values. It mostly repeats the schema, hence 4 rather than 5.

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 opens with a specific verb and resource: 'Find packaged, ready-to-run exploit and scan tooling for a CVE: Metasploit Framework modules ... and Nuclei templates.' It clearly separates itself from cve_get_pocs by stating it returns tooling rather than raw proof-of-concept repos, so an agent can select it with confidence.

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?

The description explicitly names the sibling alternative cve_get_pocs and draws the when-not boundary: 'This is distinct from cve_get_pocs (raw proof-of-concept repos).' It also states intended use cases ('authorized penetration testing, detection engineering, and vulnerability triage') and gives natural-language examples, leaving little ambiguity about when to invoke it.

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

cve_get_kevCISA KEV lookup / catalogA
Read-onlyIdempotent

Query the CISA Known Exploited Vulnerabilities (KEV) catalog — the authoritative list of CVEs confirmed to be actively exploited in the wild.

Two modes:

  • Single lookup: pass cve_id to check whether a specific CVE is KEV-listed (with remediation due date and ransomware-use flag).

  • Catalog list: omit cve_id to browse the catalog, newest additions first, with optional vendor / ransomware filters.

Args:

  • cve_id (string, optional): Single-CVE lookup.

  • vendor (string, optional): Vendor/product substring filter (list mode).

  • ransomware_only (boolean, default false): Only known-ransomware entries (list mode).

  • limit (1-100, default 25), offset (default 0): Pagination (list mode).

  • response_format ('markdown'|'json', default 'markdown').

Returns (single): a KEV entry object, or a "not listed" message. Returns (list, json): { catalogVersion, dateReleased, total, count, startIndex, entries[] }.

Examples:

  • "Is CVE-2024-3400 known-exploited?" -> cve_id="CVE-2024-3400".

  • "Recent ransomware-linked KEV entries" -> ransomware_only=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page when listing (1-100).
cve_idNoLook up a single CVE's KEV entry. Omit to list the catalog.
offsetNoPagination offset when listing.
vendorNoFilter the catalog by vendor or product substring.
ransomware_onlyNoList only entries with known ransomware-campaign use.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context: newest-first ordering, the 'not listed' message for single lookup, the exact JSON list structure, and the response_format switch. No contradictions.

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 well organized with a purpose statement first, then modes, args, returns, and examples. It is longer than minimal but every section serves a purpose for a 6-parameter tool with two modes. No fluff.

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?

Without an output schema, the description fully specifies return shapes for both single and list modes, including the JSON structure. Examples clarify exact invocations. An agent has all necessary information to call the tool correctly.

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 already has a clear description. The description re-lists all args and adds mode-scoping context (e.g., list mode for vendor and ransomware_only), but this is largely redundant with the schema. It meets the baseline without adding substantial new meaning.

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 exactly what the tool does: queries the CISA Known Exploited Vulnerabilities catalog, the authoritative list of actively exploited CVEs. It clearly describes two modes (single lookup vs catalog list), distinguishing this tool from siblings like cve_search and cve_get_details.

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?

Explicit guidance is given for mode selection: pass cve_id for single lookup, omit it to browse the catalog. Concrete examples map natural-language queries to parameter settings. It does not name sibling tools or state when not to use it, but the mode differentiation is clear.

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

cve_get_pocsDiscover CVE proof-of-conceptsA
Read-onlyIdempotent

Discover public proof-of-concept (PoC) and exploit references for a CVE.

Aggregates the nomi-sec "PoC-in-GitHub" index (public GitHub repos tagged to the CVE, ranked by stars) and, by default, Exploit-DB / exploit-tagged references from the NVD record. Returns links and metadata only — use cve_fetch_poc_code to retrieve a specific repo's contents.

Intended for authorized defensive testing, detection engineering, and vulnerability triage.

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • include_nvd_exploits (boolean): Include NVD exploit references (default: true).

  • max_results (1-100, default 30): Cap on references returned.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { cve_id, count, pocs: [ { source, name, url, description, stars, createdAt, updatedAt } ] }.

Examples:

  • "Find PoCs for Log4Shell" -> cve_id="CVE-2021-44228".

  • "Any exploits for CVE-2024-3400?" -> include_nvd_exploits=true.

Notes:

  • Returns an empty list (not an error) when no public PoCs are indexed.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. 'CVE-2021-44228'.
max_resultsNoMaximum PoC references to return (1-100).
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown
include_nvd_exploitsNoAlso include Exploit-DB / exploit-tagged references from the NVD record.

TDQS

A4.9/5.0
Behavior5/5

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

Even though annotations already include readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, the description adds substantial behavioral context: it aggregates two indexes, ranks GitHub repos by stars, returns only links and metadata, and notes that an empty list (not an error) is returned when no PoCs exist. This clarifies the operational behavior well beyond the annotations.

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 long but every section earns its place: purpose, data sources, sibling differentiation, intended use, args, return shape, examples, and an edge-case note. It is well-structured with clear labels and front-loads the core purpose before diving into details. No redundant filler or repetition.

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?

The description is complete for an agent to correctly call this tool: it defines all parameters, gives the JSON return shape, explains the empty-list edge case, provides examples, and clarifies why it differs from cve_fetch_poc_code. Given the rich annotations and full schema coverage, nothing necessary for correct invocation is missing.

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 description coverage is 100%, which already documents all four parameters thoroughly. The description adds value with concrete natural-language examples mapping user requests to parameters, such as 'Find PoCs for Log4Shell' -> cve_id='CVE-2021-44228'. This helps the agent infer parameter values from user intent, but otherwise the parameter semantics are already well covered by 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 opens with a specific verb and resource: 'Discover public proof-of-concept (PoC) and exploit references for a CVE.' It goes beyond a simple restatement by naming the exact data sources (nomi-sec PoC-in-GitHub, NVD exploit references) and clearly distinguishes itself from cve_fetch_poc_code by noting it 'returns links and metadata only.' This makes the tool's scope unmistakable even before inspecting 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 Guidelines5/5

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

The description explicitly tells the agent when to use a sibling instead: 'use cve_fetch_poc_code to retrieve a specific repo's contents.' It also frames the intended context ('authorized defensive testing, detection engineering, and vulnerability triage'), giving the agent clear guidance on when this tool is appropriate.

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

cve_recentList recent CVEsA
Read-onlyIdempotent

List CVEs published within a recent look-back window — for real-time monitoring of newly disclosed vulnerabilities.

Args:

  • days (1-120, default 7): How far back to look (NVD caps ranges at 120 days).

  • severity ('LOW'|'MEDIUM'|'HIGH'|'CRITICAL'): Optional severity filter.

  • kev_only (boolean, default false): Only CVEs in the CISA KEV catalog.

  • limit (1-50, default 20), offset (default 0): Pagination.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { total, count, offset, has_more, next_offset, results[] }, newest first by publish date.

Examples:

  • "What critical CVEs dropped this week?" -> days=7, severity="CRITICAL".

  • "New known-exploited vulns in the last month" -> days=30, kev_only=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days (1-120; NVD caps ranges at 120 days).
limitNoResults per page (1-50).
offsetNoPagination offset.
kev_onlyNoReturn only recently-modified CVEs in the CISA KEV catalog.
severityNoFilter by CVSS v3 base severity.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful runtime context beyond those annotations: results are newest first by publish date, NVD caps look-back at 120 days, and the JSON response shape includes pagination fields like total, has_more, and next_offset. This gives an agent clear expectations without overstating side effects.

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 well-structured with a front-loaded purpose statement, a compact Args list, return info, and examples. It includes some redundancy with the schema, but the repetition is acceptable because it makes the definition self-contained. Every section earns its place, and there is no filler or vague prose.

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 tool with six optional parameters and no output schema, the description is quite complete: it documents return fields, ordering, pagination, example queries, and KEV filtering. The only notable gap is the absence of explicit sibling guidance, especially the relationship to cve_get_kev and cve_search, which would make tool selection even more robust. Overall, an agent has enough information to call this tool correctly.

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 schema already documents all six parameters; the baseline is therefore 3. The description adds value by restating the parameters in a compact action-oriented list and, more importantly, providing example mappings from user intent to parameter values, such as 'critical CVEs this week' -> days=7, severity='CRITICAL'. It does not introduce new syntax but does help an agent translate requests into parameters.

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 opens with a specific verb and resource: 'List CVEs published within a recent look-back window.' This clearly distinguishes the tool from detail, search, and exploit-related siblings by emphasizing the time-bounded, monitoring-oriented scope. The phrase 'real-time monitoring of newly disclosed vulnerabilities' makes the intended purpose immediately recognizable.

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 provides an explicit use case: real-time monitoring of newly disclosed vulnerabilities, and it gives two natural-language example queries with mapped parameter settings. However, it does not explicitly say when NOT to use this tool versus siblings like cve_search or cve_get_kev, leaving some routing to inference.

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

cve_triageTriage a CVE (prioritization verdict)A
Read-onlyIdempotent

Produce a single prioritization verdict for a CVE by fusing every exploitation signal: CVSS severity, EPSS 30-day exploitation probability, CISA KEV (confirmed in-the-wild use / ransomware), and public proof-of-concept availability.

Answers "should I drop everything for this, or can it wait?" — the judgment call an analyst otherwise makes by hand across four tools.

Priority levels: ACT NOW (KEV / score ≥85) > HIGH (≥70) > ELEVATED (≥50) > MODERATE (≥30) > LOW. KEV membership always pins to ACT NOW. Score (0-100): CVSS up to 50, EPSS up to 40, and exploit availability up to 15 (weaponized Metasploit exploit module 15 > other packaged tooling 12 > public PoC 10).

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • check_pocs (boolean): Include PoC availability (default: true; one extra lookup).

  • check_tooling (boolean): Include Metasploit/Nuclei tooling (default: true; one extra lookup).

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { cve_id, priority, score, rationale[], signals{ cvssScore, cvssSeverity, epss, epssPercentile, kevListed, kevRansomware, kevDueDate, pocCount, msfModuleCount, nucleiTemplateCount, weaponized }, tooling{ metasploit, nuclei }, description }.

Examples:

  • "Should we patch CVE-2024-3400 this weekend?" -> cve_id="CVE-2024-3400".

  • "Triage this from the scan, skip the PoC check" -> check_pocs=false.

Errors:

  • "No NVD record found for " if the CVE is unknown/unpublished.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. 'CVE-2021-44228'.
check_pocsNoFactor public PoC availability into the verdict (one extra lookup).
check_toolingNoFactor packaged exploit tooling (Metasploit modules / Nuclei templates) into the verdict.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.7/5.0
Behavior5/5

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

Despite already having readOnlyHint=true and idempotentHint=true, the description adds substantial behavioral detail: exact priority thresholds, the 50/40/15 scoring weights, KEV pinning behavior, conditional extra lookups, the structured return shape, and the expected error message. This gives an agent an unusually complete picture of runtime behavior.

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 long but every section earns its place: decision question, priority levels, scoring formula, arguments, return shape, examples, and errors. It is front-loaded with the core purpose and carefully structured with labels, making complex scoring logic easy for an agent to parse.

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?

Even though there is no output schema, the description explicitly enumerates the JSON return fields, signal sub-object, tooling sub-object, and error string. Given the tool's algorithmic complexity, the description is sufficiently complete for an agent to select and invoke it correctly without guessing.

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 input schema already covers all 4 parameters at 100%, so the schema carries the baseline burden. The description adds useful practical value beyond the schema, such as the 'one extra lookup' cost for check_pocs, the default behavior for check_tooling, and a concrete example of using check_pocs=false. That is enough to rise above baseline 3.

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: 'Produce a single prioritization verdict for a CVE' by fusing exploitation signals. It also differentiates itself from siblings by presenting the tool as the fused judgment call an analyst would otherwise make across four signals, which clearly separates it from cve_get_details, cve_get_epss, cve_get_kev, and similar getter 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?

The description explicitly frames when to use the tool: it answers 'should I drop everything for this, or can it wait?' and gives relatable examples with cve_id. It does not explicitly state exclusions or route the agent to cve_batch_triage for multi-CVE workflows, so it stops short of perfect guidance.

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

cve_watchlistVendor/product CVE watchlistA
Read-onlyIdempotent

Monitor a vendor or product for new and known-exploited vulnerabilities in one call — a digest that fuses NVD recent-publications with the CISA KEV catalog.

Answers "what's new and what's on fire for right now?" without running cve_recent, cve_search, and cve_get_kev separately and cross-referencing by hand.

Args:

  • vendor (string): Vendor/product to watch, e.g. "fortinet", "apache struts". Matched against NVD descriptions and KEV vendor/product fields.

  • days (1-120, default 30): Look-back window for newly published CVEs.

  • severity ('LOW'|'MEDIUM'|'HIGH'|'CRITICAL'): Optional minimum severity for the recent list.

  • include_kev (boolean, default true): Also list this vendor's KEV entries (newest first; items added within the window are flagged 🆕).

  • limit (1-50, default 25): Max recently-published CVEs.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { vendor, window_days, since, recent: { total, count, results[] }, kev: { total, entries[] }, kev_in_window }. Each recent result carries a kev_listed flag.

Examples:

  • "What's new for Fortinet this month, and what's actively exploited?" -> vendor="fortinet".

  • "Critical Ivanti CVEs in the last two weeks" -> vendor="ivanti", days=14, severity="CRITICAL".

Errors:

  • "NVD rejected the request (400)" if filters are invalid.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days for newly published CVEs (1-120; NVD caps ranges at 120).
limitNoMax recently-published CVEs to return (1-50).
vendorYesVendor or product to watch, e.g. 'fortinet', 'apache struts', 'cisco ios'. Matched against NVD descriptions and the CISA KEV vendor/product fields.
severityNoOnly include recently-published CVEs at/above this CVSS v3 severity.
include_kevNoAlso surface this vendor's CISA KEV (actively-exploited) entries, newest first.
response_formatNoOutput format: 'markdown' (default, human-readable) or 'json' (full structured data).markdown

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare the operation is read-only, open-world, idempotent, and non-destructive. The description goes further by explaining the fusion behavior, the matching mechanism against NVD descriptions and KEV fields, the return JSON structure, the 🆕 flag semantics for in-window KEV entries, and the NVD 400 error case. This adds meaningful behavioral context beyond annotations.

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 well-structured with clear sections: a one-sentence purpose, an alternatives note, Args, Returns, Examples, and Errors. Every section contributes to correct invocation, and the key differentiator is front-loaded. It is detailed without being bloated.

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 6 parameters and no output schema, the description covers the return structure, parameter semantics, error behavior, and usage examples. It also states the NVD 120-day cap and the default values. Nothing essential for selecting or invoking the tool is missing.

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 schema already documents all parameters. The description adds value by clarifying that severity is a minimum threshold, showing realistic examples tied to parameter values, and noting that KEV entries added within the window are flagged. This goes slightly beyond a bare schema repeat.

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 opens with a specific verb and resource: 'Monitor a vendor or product for new and known-exploited vulnerabilities in one call — a digest that fuses NVD recent-publications with the CISA KEV catalog.' It clearly distinguishes itself from siblings by naming cve_recent, cve_search, and cve_get_kev as the alternatives it replaces.

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?

The description explicitly states when to use this tool: to answer 'what's new and what's on fire for <vendor> right now?' and to avoid running cve_recent, cve_search, and cve_get_kev separately. It also provides concrete examples ('Critical Ivanti CVEs in the last two weeks' maps to vendor='ivanti', days=14, severity='CRITICAL'), giving the agent clear decision guidance.

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. 12 tool updatesv1.0.0
    • First observedcve_batch_triage
    • First observedcve_fetch_poc_code
    • First observedcve_get_advisories
    • First observedcve_get_details
    • First observedcve_get_epss
    • First observedcve_get_exploit_tooling
    • First observedcve_get_kev
    • First observedcve_get_pocs
    • First observedcve_recent
    • First observedcve_search
    • First observedcve_triage
    • First observedcve_watchlist

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: details, search, recent, PoCs, exploit tooling, KEV, EPSS, advisories, triage, batch triage, and vendor watchlist are all separated by explicit intent. Even potentially overlapping tools like cve_get_pocs vs cve_get_exploit_tooling are carefully delineated.

Naming Consistency4/5

All tools share the cve_ prefix and mostly follow a verb_noun pattern. Minor deviations exist: cve_recent and cve_watchlist are noun/adjective-style rather than verb-led, and cve_batch_triage modifies cve_triage rather than using a uniform verb. Overall still highly predictable.

Tool Count5/5

12 tools is well-scoped for a CVE intelligence server. Each tool covers a distinct aspect of vulnerability lookup, enrichment, and prioritization without redundancy, and the count feels appropriate for the domain.

Completeness5/5

The surface covers the full CVE workflow: discovery (search, recent, watchlist), detail retrieval (get_details, advisories), enrichment (KEV, EPSS, PoCs, tooling), and action (triage, batch triage). No significant gap in the stated purpose of providing comprehensive CVE intelligence and prioritization.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search and analyze vulnerabilities and exploits from multiple intelligence sources, including NVD, CISA KEV, ExploitDB, Metasploit, and more, with tools for CVE research, exploit analysis, and report generation.
    17
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides live CVE data from NVD and EPSS without API key, enabling AI assistants to look up CVSS scores, search vulnerabilities, and check product CVEs.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides CVE lookup, search, and exploit intelligence from public vulnerability sources (NVD, CISA KEV, EPSS) for AI agents to produce remediation guidance without consuming LLM tokens for data fetching.
    1
    MIT