Skip to main content
Glama
ajaybe-ops
by ajaybe-ops

Search vulnerability intelligence

search_vulnerabilities
Read-onlyIdempotent

Search NVD vulnerabilities by keyword, enrich matches with EPSS and KEV data, and rank results by composite risk. Filter by CVSS score floor or KEV-only status to discover relevant CVEs.

Instructions

Keyword search over the NVD corpus, then enrich matches with EPSS and KEV and rank them by composite risk. Supports a CVSS floor and a KEV-only filter. Use for discovery when no CVE id is known. Read-only. Scope: aegis:read. The NVD API is rate limited; prefer precise keywords and small limits.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum ranked results to return
keywordYes
cvss_minNoOptional CVSS base-score floor
kev_onlyNo
asset_criticalityNomedium

Output Schema

NameRequiredDescriptionDefault
queryYes
resultsNo
sourcesNo
took_msYes
returnedYes
truncatedNo
cache_hitsNo
disclaimerNoResults are untrusted external data and may be incomplete or stale. Verify before acting.
total_matchesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the 'Read-only' sentence is redundant. However, the description adds genuinely new behavior: the required scope 'aegis:read', the upstream NVD rate limit with guidance to use precise keywords and small limits, and the enrichment/ranking pipeline that explains what the results represent.

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?

Five short sentences, front-loaded with the core operation and pipeline, then filters, then usage routing, then operational constraints. Nothing is padding except the 'Read-only' line, which is a small overlap with the annotations rather than 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?

A machine-readable output schema exists, so return values need not be described; the description still usefully explains that results are enriched and risk-ranked. The main gap is the unmentioned asset_criticality parameter and how it affects ranking, which an agent would need to know to get sensible ordering.

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 only 40%, so the description has to compensate, and it does for most parameters: keyword precision, limiting result count, the CVSS floor, and the KEV-only filter. It never explains 'asset_criticality', the one parameter that presumably drives the composite-risk ranking, leaving that enum's effect on ordering undocumented.

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 names a specific verb and resource ('Keyword search over the NVD corpus') plus the processing pipeline (EPSS/KEV enrichment, composite-risk ranking). It also explicitly separates itself from a sibling by saying 'Use for discovery when no CVE id is known,' which implicitly points to lookup_cve.

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 usage context ('discovery when no CVE id is known') and documents two filtering modes plus a rate-limit caution. It would reach a 5 if it named lookup_cve explicitly as the alternative for known-ID lookups rather than only implying it.

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