Skip to main content
Glama

cisa-cybersecurity-mcp-server

cisa_search_kev

cisa_search_kev
Read-onlyIdempotent

Search the CISA Known Exploited Vulnerabilities catalog across every entry in the cached snapshot. Filter by vendor or product using CISA's own labels, by name substring, by CWE, by the date an entry was added, by due date, by overdue status, by ransomware linkage, by the three-day forensic-triage tier, or by which binding operational directive the entry cites. Results are paged and sortable by due date or date added. Vendor and product values are CISA's free-text labels, not CPE names — call cisa_list_reference for the field vocabulary before guessing one. The catalog records additions but carries no per-record modified timestamp, so dateAddedFrom answers "what is new since D" while a revised due date on an existing entry is not detectable from the feed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cweNoExact CWE identifier, e.g. CWE-362. Case and surrounding whitespace are normalized. Entries with no CWEs never match.
limitNoMaximum entries per page.
orderNoSort direction.desc
cursorNoOpaque pagination cursor from a previous call. Omit for the first page.
sortByNoField to sort by.dateAdded
overdueNoTrue selects entries whose due date is strictly before the echoed asOf date.
productNoCase-insensitive substring of CISA's own product label.
dueAfterNoEarliest due date, inclusive, YYYY-MM-DD.
directiveNoWhich directive the entry cites. "none" selects the entries citing neither.
dueBeforeNoLatest due date, inclusive, YYYY-MM-DD.
ransomwareNoTrue selects entries CISA has linked to ransomware campaigns.
cveIdPrefixNoYear scope for the CVE ID, e.g. CVE-2026. Case and surrounding whitespace are normalized.
dateAddedToNoLatest date added, inclusive, YYYY-MM-DD.
nameContainsNoStrict token match over the vulnerability name and short description: every token must appear. Matching folds case and accents, spells letters such as ß, æ, ø, þ, and ł as ss, ae, o, th, and l, and keeps only the letters a-z and the digits 0-9; a word carrying any other letter or digit, such as one in another script, loses those characters and the response names it, and a value left with none of them is rejected. No fuzzy fallback.
dateAddedFromNoEarliest date added, inclusive, YYYY-MM-DD.
vendorProjectNoCase-insensitive substring of CISA's own vendor label.
forensicTriageNoTrue selects the BOD 26-04 three-day forensic-triage tier.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe page limit that was applied.
asOfNoThe UTC date overdue and daysUntilDue were computed against, YYYY-MM-DD.
errorNoPresent when the call failed. Absent on success.
shownNoEntries returned on this page.
cursorNoOpaque cursor for the next page. Absent when this is the last page.
noticeNoGuidance when nothing matched, when a page was capped, or when nameContains dropped characters it cannot match.
catalogNoWhich catalog snapshot answered this call.
hasMoreNoWhether more matches exist beyond this page.
resultsNoMatching KEV entries for this page.
truncatedNoTrue when the page limit capped this result.
totalCountNoTotal matches before paging.
appliedFiltersNoThe filters the server actually applied, as it parsed them.
snapshotCaveatNoDisclosure that additions are queryable but revisions are not detectable.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / nameContains / description
      Previous value: -"Strict token match over the vulnerability name and short description: every token must appear. Matching folds case and accents and keeps only the letters a-z and the digits 0-9; a word carrying any other letter or digit, such as one in another script, loses those characters and the response names it, and a value left with none of them is rejected. No fuzzy fallback."New value: +"Strict token match over the vulnerability name and short description: every token must appear. Matching folds case and accents, spells letters such as ß, æ, ø, þ, and ł as ss, ae, o, th, and l, and keeps only the letters a-z and the digits 0-9; a word carrying any other letter or digit, such as one in another script, loses those characters and the response names it, and a value left with none of them is rejected. No fuzzy fallback."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `catalog_unavailable`: No KEV catalog snapshot is held and the fetch from cisa.gov failed. `invalid_date_range`: A From bound is later than its matching To bound. `empty_search_text`: nameContains holds no letter a-z or digit 0-9 once case and accents are folded and punctuation is removed, so there is nothing to search for. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `catalog_unavailable`: No KEV catalog snapshot is held and the fetch from cisa.gov failed. `invalid_date_range`: A From bound is later than its matching To bound. `empty_search_text`: nameContains holds no letter a-z or digit 0-9 once case, accents, and letters such as ß and ø are folded and punctuation is removed, so there is nothing to search for. Other values are possible when a failure originates below the handler."
  2. Changed20 schema fields changed
    • changedInput schema / properties / cveIdPrefix / description
      Previous value: -"Year scope for the CVE ID, e.g. CVE-2026."New value: +"Year scope for the CVE ID, e.g. CVE-2026. Case and surrounding whitespace are normalized."
    • changedInput schema / properties / cwe / description
      Previous value: -"Exact CWE identifier, e.g. CWE-362. Excludes the 175 entries with no CWEs."New value: +"Exact CWE identifier, e.g. CWE-362. Case and surrounding whitespace are normalized. Entries with no CWEs never match."
    • changedInput schema / properties / directive / description
      Previous value: -"Which directive the entry cites. \"none\" selects the 1,277 entries citing neither."New value: +"Which directive the entry cites. \"none\" selects the entries citing neither."
    • changedInput schema / properties / forensicTriage / description
      Previous value: -"True selects the BOD 26-04 three-day forensic-triage tier (58 entries)."New value: +"True selects the BOD 26-04 three-day forensic-triage tier."
    • changedInput schema / properties / nameContains / description
      Previous value: -"Strict token match over the vulnerability name and short description: every token must appear. No fuzzy fallback."New value: +"Strict token match over the vulnerability name and short description: every token must appear. Matching folds case and accents and keeps only the letters a-z and the digits 0-9; a word carrying any other letter or digit, such as one in another script, loses those characters and the response names it, and a value left with none of them is rejected. No fuzzy fallback."
    • changedInput schema / properties / product / description
      Previous value: -"Case-insensitive substring of CISA's own product label. 694 distinct values."New value: +"Case-insensitive substring of CISA's own product label."
    • changedInput schema / properties / ransomware / description
      Previous value: -"True selects entries CISA has linked to ransomware campaigns (360 entries)."New value: +"True selects entries CISA has linked to ransomware campaigns."
    • changedInput schema / properties / vendorProject / description
      Previous value: -"Case-insensitive substring of CISA's own vendor label. 283 distinct values."New value: +"Case-insensitive substring of CISA's own vendor label."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `catalog_unavailable`: No KEV catalog snapshot is held and the fetch from cisa.gov failed. `invalid_date_range`: A From bound is later than its matching To bound. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `catalog_unavailable`: No KEV catalog snapshot is held and the fetch from cisa.gov failed. `invalid_date_range`: A From bound is later than its matching To bound. `empty_search_text`: nameContains holds no letter a-z or digit 0-9 once case and accents are folded and punctuation is removed, so there is nothing to search for. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "catalog_unavailable",
      -  "invalid_date_range"
      -]New value: +[
      +  "catalog_unavailable",
      +  "invalid_date_range",
      +  "empty_search_text"
      +]
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when nothing matched."New value: +"Guidance when nothing matched, when a page was capped, or when nameContains dropped characters it cannot match."
    • changedOutput schema / properties / results / items / description
      Previous value: -"One KEV catalog entry, or a not-in-KEV result carrying only cveId and inKev."New value: +"One KEV catalog entry, or a not-in-KEV result carrying only cveId and inKev. Under cisa_check_cve_status detail \"summary\" an entry carries only cveId, inKev, the dates and deadline status, directive, vendor and product labels, and the ransomware and forensic-triage flags."
    • changedOutput schema / properties / results / items / properties / cwes / description
      Previous value: -"Associated CWEs. Empty on 175 entries, so a CWE filter excludes those."New value: +"Associated CWEs. Empty on some entries, and a CWE filter excludes those. Absent under detail \"summary\"."
    • changedOutput schema / properties / results / items / properties / directive / description
      Previous value: -"The binding operational directive the entry cites, or null when it cites neither — 1,277 of 1,716 entries name none, and none is never inferred from age."New value: +"The binding operational directive the entry cites, or null when it cites neither — most entries name none, and none is never inferred from age."
    • changedOutput schema / properties / results / items / properties / kevUrl / description
      Previous value: -"Absolute URL of the KEV catalog page for this CVE."New value: +"Absolute URL of the KEV catalog page for this CVE. Absent under detail \"summary\"."
    • changedOutput schema / properties / results / items / properties / notesCommentary / description
      Previous value: -"Free prose from the notes field, present when the entry opens with prose."New value: +"The prose segments of the notes field, verbatim with any URLs they contain; present when the notes carry prose. Absent under detail \"summary\"."
    • changedOutput schema / properties / results / items / properties / references / description
      Previous value: -"Reference URLs parsed from the notes field, each classified by kind."New value: +"Every reference URL in the notes field, in notes order, each classified by kind. Absent under detail \"summary\"."
    • changedOutput schema / properties / results / items / properties / requiredAction / description
      Previous value: -"CISA's required-action text for the entry, verbatim."New value: +"CISA's required-action text for the entry, verbatim. Absent under detail \"summary\"."
    • changedOutput schema / properties / results / items / properties / shortDescription / description
      Previous value: -"CISA's one-paragraph description."New value: +"CISA's one-paragraph description. Absent under detail \"summary\"."
    • changedOutput schema / properties / results / items / properties / vulnerabilityName / description
      Previous value: -"CISA's short name for the vulnerability."New value: +"CISA's short name for the vulnerability. Absent under detail \"summary\"."
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare readOnlyHint and idempotentHint, and the description adds materially useful behavior beyond that: it reveals the catalog is a cached snapshot and that no per-record modified timestamp exists. This disclosure defines exactly what dateAddedFrom can and cannot answer (what is new since D versus a revised due date), which is critical for correct agent interpretation and goes well beyond the annotation hints.

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 long but densely informative, front-loading the action and scope before enumerating filters and caveats. Every sentence contributes either operational facts, prerequisite guidance, or a data limitation. A slight structural improvement would be to break the filter list into bullets, but given the high parameter count, the paragraph is efficient and well ordered.

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 complex 17-parameter read-only search tool, the description covers all essential contextual needs: filter categories, paging/sorting, field vocabulary sourcing, and the key data freshness limitation. An output schema exists, so the description need not restate return values. Nothing an agent needs to invoke this 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 description coverage is 100%, so the baseline is 3. The description adds meaningful semantics on top: it clarifies that vendor and product are CISA's free-text labels rather than CPE names, and it explains the dateAddedFrom limitation regarding detectability of revised due dates. It also groups the many filters into comprehensible categories, aiding an agent in mapping intent to the 17 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: 'Search the CISA Known Exploited Vulnerabilities catalog across every entry in the cached snapshot.' It then enumerates the full set of filter dimensions and sorting capabilities, making the tool's scope and function unmistakable. The catalog identity ('KEV') and the mention of cached snapshot clearly distinguish it from sibling cisa_search_ics_advisories without ambiguity.

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 provides explicit guidance to call cisa_list_reference for the field vocabulary before guessing vendor or product values, which is a concrete when-to-use instruction for a related tool. It also implies its use case via the filter list, though it does not explicitly state when not to use this tool or name the preferred alternative for ICS advisories.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.