Skip to main content
Glama

cisa-cybersecurity-mcp-server

Server Details

CISA KEV with BOD 26-04 deadlines, SSVC prioritization, and the ICS advisory corpus (CSAF). Keyless.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/cisa-cybersecurity-mcp-server
GitHub Stars
1
Server Listing
@cyanheads/cisa-cybersecurity-mcp-server

TDQS

A4.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct operation: CVE status lookup, advisory retrieval, feed listing, SSVC computation, vocabulary reference, and two search surfaces. The search tools are clearly separated by corpus (KEV vs ICS advisories), and the reference tool exists specifically to prevent input ambiguity.

Naming Consistency5/5

All tools share a consistent cisa_ prefix and follow a verb_noun pattern: check, get, list, and search. The verbs are semantically appropriate and the naming style is uniform throughout, with no mixed conventions.

Tool Count5/5

Seven tools is well-scoped for a CISA-specific server covering KEV lookup, advisory search and retrieval, alert feeds, SSVC data, and reference vocabulary. Each tool has a clear role and none feel redundant or gratuitous.

Completeness4/5

The core workflows are covered: lookup/search KEV, search/get ICS advisories, list recent alerts, compute SSVC timelines, and resolve reference vocabulary. The main gap is the lack of historical or searchable access to non-ICS CISA advisories beyond the rolling 30-item feed, but the primary domain is well served.

Available Tools

7 tools
cisa_check_cve_statuscisa_check_cve_statusA
Read-onlyIdempotent
Inspect

Check CVE IDs against the CISA Known Exploited Vulnerabilities catalog — up to 200 per call, served from a cached catalog snapshot at no upstream cost. Returns, per CVE, whether it is in KEV and if so the date added, the federal remediation due date, days remaining or days overdue, which binding operational directive the entry cites, the required action text, whether it is linked to ransomware campaigns, whether it falls in the three-day forensic-triage tier, CISA's own vendor and product labels, associated CWEs, and the reference URLs parsed from the entry's notes. A CVE that is not in KEV is a normal result, not an error. For a large batch, detail "summary" keeps only the triage fields — the deadline and overdue status, directive, ransomware and forensic-triage flags, and vendor and product labels — and drops the descriptive text, CWEs, and references, so a full batch stays compact. The CWE IDs returned chain directly into the cwe filter of cisa_search_kev and cisa_search_ics_advisories, and the parsed NVD reference gives the canonical record for scoring detail. For the reverse direction — which ICS advisories cover a CVE — pass it as cve to cisa_search_ics_advisories, or set inKev there to list the advisories covering any KEV CVE.

ParametersJSON Schema
NameRequiredDescriptionDefault
cveIdsYesCVE identifiers to check, up to 200 per call. The whole batch costs zero upstream requests, so a full CVE alias list from a dependency audit can be checked in one call — pair a large batch with detail "summary".
detailNofull returns every field of each in-KEV entry. summary returns only cveId, inKev, dateAdded, dueDate, daysUntilDue, overdue, directive, vendorProject, product, knownRansomwareCampaignUse, and forensicTriage — the triage view for a large batch. Not-in-KEV results are the same under both.full

Output Schema

ParametersJSON Schema
NameRequiredDescription
asOfNoThe UTC date daysUntilDue and overdue were computed against, YYYY-MM-DD.
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when none of the supplied CVE IDs are in the catalog.
catalogNoWhich catalog snapshot answered this call.
resultsNoOne result per requested CVE, in the order supplied.
foundCountNoHow many of the requested CVEs are in the catalog.
summaryNoteNoPresent only under detail "summary": which fields each in-KEV result omits and how to restore them.
notFoundCountNoHow many of the requested CVEs are not in the catalog.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description discloses that the catalog is a cached snapshot, that a full batch costs zero upstream requests, that not-in-KEV is a normal result rather than an error, and that summary mode drops specific fields. These are meaningful behavioral details an agent needs.

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 front-loaded with purpose and usage, and most sentences carry distinct value. It is somewhat long because it enumerates return fields in prose that the output schema already covers, but the density is justified by the tool's batching and cross-tool integration behavior.

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 the two-parameter schema, existing annotations, and output schema, the description covers batch limits, error semantics, detail-mode tradeoffs, and integrations with sibling tools. Nothing an agent needs to call the tool correctly seems missing.

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?

Even though the schema already documents both parameters, the description adds actionable context: cveIds can carry a full dependency-audit alias list because the batch is upstream-free, and detail='summary' is recommended for large batches with the exact retained triage fields enumerated.

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 first sentence states a specific verb and resource: checking CVE IDs against the CISA KEV catalog. It also adds scope details (up to 200 per call, cached snapshot) that distinguish this tool from the sibling search/advisory tools.

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 says when to use detail='summary' for large batches and explains the reverse direction through cisa_search_ics_advisories. It also names sibling tools and gives concrete routing rules for CWE chaining into cisa_search_kev and cisa_search_ics_advisories.

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

cisa_get_advisorycisa_get_advisoryA
Read-onlyIdempotent
Inspect

Read one CISA industrial control system advisory in full: affected products flattened from the CSAF product tree into vendor, product, and version ranges; per-CVE CVSS score, vector, and CWE; remediations with their category and vendor instructions; critical-infrastructure sectors; and the revision history. Large advisories return a section outline instead of the whole document, listing each section's size and the CVE IDs the vulnerabilities section holds — re-call with the sections you need, or with cves to read only those vulnerability entries. Republished vendor advisories carry the originating vendor's text; every response reports the source URL and attribution. Find advisory IDs with cisa_search_ics_advisories.

ParametersJSON Schema
NameRequiredDescriptionDefault
cvesNoNarrow the vulnerabilities section to these CVE IDs; the outline lists the ones the advisory holds. Alone, it selects the vulnerabilities section; with sections, that list must include "vulnerabilities".
sectionsNoSections to return. Omit for the whole document, or for its outline when the document overflows the inline budget.
advisoryIdYesAdvisory identifier, e.g. ICSA-26-260-07 or ICSMA-26-253-02, with an optional revision suffix: a single letter A-F or a numeric -N. Case, surrounding whitespace, and a trailing .json are normalized.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindNofull when the document is returned; outline when only the section listing is.
errorNoPresent when the call failed. Absent on success.
foundNoWhether an advisory with that ID is in the index.
summaryNoNarrative notes and sector classification.
advisoryNoAdvisory identity, dates, and attribution. Always kept, including on a section selection.
guidanceNoWhat to do instead, present when found is false: how current the index is, and whether the advisory may be newer than it.
productsNoAffected products and version ranges.
sectionsNoOutline arm — the sections available, largest first, with their byte sizes and, for vulnerabilities, its CVE IDs.
referencesNoDocument-level references.
outlineNoticeNoOutline arm — how to call cisa_get_advisory for specific sections.
acknowledgmentsNoAcknowledgment entries.
indexCheckpointNoPresent when found is false: the newest revision timestamp the index holds, or null if none.
revisionHistoryNoRevision history, oldest first as published.
vulnerabilitiesNoVulnerabilities the advisory covers, with scores, remediations, and product status.
indexLastSyncedAtNoPresent when found is false: when the index last completed a sync, ISO 8601, or null if never.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark it read-only and idempotent, and the description adds critical non-obvious behavior: large advisories return a section outline instead of the full document, re-calls with sections or cves are supported, republished vendor advisories retain the vendor text, and every response includes source URL and attribution. This goes well beyond the structured 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 dense but each sentence earns its place: main purpose and contents, large-advisory behavior, vendor-attribution note, and sibling routing. It is front-loaded with the core action and uses the remaining sentences for behavioral specifics without redundancy.

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 covers the tool's key behavioral edge cases, parameter-driven section selection, output expectations around source URL and attribution, and how to find advisory IDs. With an output schema present and read-only/idempotent annotations, no critical operational information 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, but the tool description adds meaning by explaining how sections and cves interact with the outline behavior and how to re-call selectively. It clarifies that cves selects the vulnerabilities section and that large documents require targeted section requests.

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: 'Read one CISA industrial control system advisory in full.' It enumerates the exact contents (affected products, CVSS data, remediations, sectors, revision history), which clearly distinguishes it from the sibling search and status tools. The mention of cisa_search_ics_advisories for finding IDs further differentiates its role.

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 primary use case explicit: retrieve a full advisory when you have an advisory ID, with an explicit pointer to cisa_search_ics_advisories for discovering IDs. It does not enumerate when not to use this tool relative to every sibling, but the context is clear and no exclusion is needed for the main alternative.

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

cisa_get_alertscisa_get_alertsA
Read-onlyIdempotent
Inspect

List what CISA has published recently — its combined advisory feed, its alerts feed, or its ICS advisory feed. Each feed is a rolling window of exactly 30 items with no history, no pagination, and no date-range query, so the window's coverage varies from about a week to about two months depending on the feed. For ICS advisory history beyond the window, use cisa_search_ics_advisories, which covers the full corpus back to 2010.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedNoWhich feed to read: advisories (all.xml, ~8 days of coverage), alerts (alerts.xml, ~8 weeks), or ics (ics-advisories.xml, ~2.5 weeks).advisories
limitNoMaximum items to return. The 30 ceiling is the upstream window, not a server choice.
sinceNoKeep only items published on or after this date, YYYY-MM-DD. Filters within the fetched window; it cannot reach back beyond it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied.
feedNoThe feed that was read.
errorNoPresent when the call failed. Absent on success.
itemsNoItems from the current window, newest first as published.
shownNoItems returned.
noticeNoGuidance when the since filter excluded every item.
windowNoWhat the fetched window covers.
feedUrlNoThe absolute feed URL this window came from.
feedTitleNoThe channel title the feed declares.
truncatedNoTrue when the limit capped the returned items.
windowCaveatNoThat the feed has no history, no pagination, and no date query.
effectiveQueryNoThe since filter as applied, and how many window items it excluded.

TDQS

A4.7/5.0
Behavior5/5

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

The description adds significant behavioral context beyond the readOnlyHint and idempotentHint annotations: each feed is a rolling window of exactly 30 items, there is no pagination or date-range query, and coverage varies by feed. This tells the agent exactly what limitations to expect without contradicting 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 two sentences, front-loads the core purpose, and then packs limitations and the alternative into the second sentence. Every sentence earns its place with no 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?

Given the readOnly/idempotent annotations, the fully documented schema, and the presence of an output schema, the description covers all essential decision-making context: what feeds exist, the rolling-window limitation, and the sibling tool for full-corpus ICS searches. An agent has everything needed to invoke it 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 description coverage is 100%, so the schema already documents all three parameters thoroughly, including the feed enum meanings, the limit ceiling, and the since format. The description reinforces the window limitation but does not add substantial parameter meaning 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?

The description states a specific verb ('List') and resource (CISA's published feeds), and immediately clarifies that the tool covers three distinct feeds. It differentiates itself from cisa_search_ics_advisories by noting the feed window limitation, so an agent can distinguish it from sibling tools.

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 the tool is appropriate ('what CISA has published recently') and when it is not ('no history, no pagination, and no date-range query'). It also names the alternative for ICS history beyond the window, cisa_search_ics_advisories, with coverage details.

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

cisa_get_ssvccisa_get_ssvcA
Read-onlyIdempotent
Inspect

Fetch the SSVC decision points CISA publishes per CVE as a CVE Authorized Data Publisher — Exploitation, Automatable, and Technical Impact — along with the CVSS score and CWE CISA contributes where present, and compute the BOD 26-04 remediation timeline those values imply for the asset exposure you supply. The computed timeline applies CISA's published decision table to CISA's published decision points and your stated exposure; it is not a compliance determination and it is not CISA's own due-date assignment, which is reported separately when the CVE is in KEV and can differ. Not every CVE is enriched — a miss returns found false with guidance rather than an error. Call cisa_list_reference with topic ssvc_values for the decision-point vocabulary.

ParametersJSON Schema
NameRequiredDescriptionDefault
cveIdsYesCVE identifiers to look up, up to 50 per call — lower than cisa_check_cve_status's 200-CVE cap because each CVE needs its own live enrichment lookup rather than a cached batch check.
assetExposureNoWhether the affected asset is reachable by unauthenticated or untrusted entities over public networks. The one BOD 26-04 decision point CISA cannot publish. "unknown" returns both arms so the spread is visible without guessing.unknown

Output Schema

ParametersJSON Schema
NameRequiredDescription
echoNoThe request as the server parsed it.
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when nothing was enriched, or when a decision timestamp predates KEV.
resultsNoOne result per requested CVE, in the order supplied.
foundCountNoHow many CVEs carry published SSVC decision points.
notFoundCountNoHow many CVEs do not.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description discloses important behaviors: misses return 'found false with guidance rather than an error,' the computed timeline is not CISA's own due-date assignment and can differ when the CVE is in KEV, and the lookup uses live enrichment per CVE. These are substantive behavioral details that help an agent set expectations correctly.

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 longer than a typical one-liner, but every sentence adds necessary context: core function, computed-timeline limitations, miss behavior, and vocabulary reference. It is front-loaded with the primary action and structured so caveats follow naturally.

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 the tool's complexity and the presence of an output schema, the description covers the essential context: what data is fetched, how the timeline is computed, what is excluded, how misses behave, and where to get supporting vocabulary. An agent has enough guidance to invoke the tool correctly and interpret unexpected results.

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 boosts understanding by explaining how assetExposure is the one BOD 26-04 decision point CISA cannot publish and that the supplied exposure drives the timeline computation. It also ties cveIds to per-CVE enrichment, reinforcing why the cap is lower than the sibling status tool.

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: 'Fetch the SSVC decision points CISA publishes per CVE' and 'compute the BOD 26-04 remediation timeline.' It clearly distinguishes the tool from siblings by focusing on SSVC enrichment plus timeline computation, not on generic CVE status, advisories, or KEV 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?

The description provides clear context for when to use the tool, including what it does and key caveats such as 'not every CVE is enriched' and 'not a compliance determination.' It also explicitly routes users to cisa_list_reference for decision-point vocabulary, but it does not contrast this tool with cisa_check_cve_status or cisa_search_kev as directly as it could.

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

cisa_list_referencecisa_list_referenceA
Read-onlyIdempotent
Inspect

Decode the vocabulary the other CISA tools take as input. Topics cover the BOD 26-04 remediation timeline table and what each tier means, the KEV record fields and their value domains, the SSVC decision points CISA publishes, the critical-infrastructure sector names as the advisory corpus spells them, advisory ID formats, CVSS severity bands, and the freshness of the data this server currently holds. Call this before constructing filters for cisa_search_kev or cisa_search_ics_advisories, and whenever another tool's recovery hint points here.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesWhich reference block to return: directives (BOD 26-04 Table 1 and its definitions), kev_fields, ssvc_values, sectors, advisory_id_formats, severity_bands, or sources (what this server currently holds).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
titleNoHuman-readable title for the topic.
topicNoThe topic that was decoded.
entriesNoThe decoded terms for this topic.
sourcesNoTopic sources only — what this server currently holds, read from in-process state.
summaryNoWhat this topic covers and when to reach for it.
supersedesNoTopic directives only — the directives BOD 26-04 supersedes and revokes.
definitionsNoTopic directives only — supporting definitions from the directive text.
timelineTableNoTopic directives only — all sixteen rows of BOD 26-04 Appendix A, Table 1.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful context beyond the annotations: the tool returns server-held reference data, tracks freshness, and one topic reports 'what this server currently holds.'

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: the first front-loads the purpose, and the second packs the topic list and usage triggers into one scannable sentence. Every clause earns its place; 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 single-parameter, read-only lookup with an output schema, the description is fully sufficient. It states what the tool returns, which reference blocks are available, and exactly when to call it, so no operational gaps remain.

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

Parameters3/5

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

Schema description coverage is 100% and the single topic parameter has a fully explained enum. The description echoes those enum values but does not add meaning beyond the schema, so the baseline of 3 is appropriate.

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 ('Decode') and names the resource ('the vocabulary the other CISA tools take as input'), then enumerates the concrete topic domains it covers. This clearly distinguishes it from the sibling search/get tools.

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 explicitly instructs the agent to call this tool before constructing filters for cisa_search_kev or cisa_search_ics_advisories, and whenever another tool's recovery hint points here. This is direct, actionable when-to-use guidance with named alternatives.

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

cisa_search_ics_advisoriescisa_search_ics_advisoriesA
Read-onlyIdempotent
Inspect

Search the CISA industrial control system advisory corpus — every CSAF 2.0 advisory covering PLC, HMI, SCADA, building-automation, and medical-device products from 2010 onward. Filter by vendor, product, CVE, CWE, CVSS range, severity band, critical-infrastructure sector, advisory series, publication date, revision date, or whether an advisory covers a CVE in the CISA Known Exploited Vulnerabilities catalog, and run full-text search over advisory titles and product names. Sector filtering reaches only advisories that carry a sector note, which begins in 2017; the response reports how many documents a sector filter can never match. Returns advisory IDs for cisa_get_advisory, the CVEs each advisory covers and which of them are in KEV, and the source URL and attribution every advisory response carries.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search over advisory titles, vendor names, and product names. Tokens are AND-combined; FTS5 operators in the input are neutralized rather than honored, and a token with no letter or digit is ignored. Needs at least one word or number.
cveNoExact CVE membership, e.g. CVE-2021-44228. Case and surrounding whitespace are normalized.
cweNoExact CWE identifier, e.g. CWE-787, matched against every vulnerability entry in the advisory. Case and surrounding whitespace are normalized. A parent class does not match its children.
inKevNotrue selects advisories covering at least one CVE in the CISA Known Exploited Vulnerabilities catalog; false selects advisories covering none. Checked against every CVE an advisory covers, not only the twenty listed per result.
limitNoMaximum advisories per page.
orderNoSort direction. Under relevance, desc means most relevant first.desc
cursorNoOpaque pagination cursor from a previous call. Omit for the first page.
sectorNoCritical-infrastructure sector, matched against the normalized sector set. Multiple is the sentinel the corpus uses for an advisory affecting many sectors.
seriesNoAdvisory series: ICSA industrial control system advisories, or ICSMA medical-device advisories, a small minority of the corpus.
sortByNoField to sort by. relevance requires q and ranks by FTS5 bm25.revised
vendorNoCase-insensitive substring of a vendor label, matched literally — % and _ are ordinary characters. Vendor names are unnormalized upstream — the same company appears under several spellings — so this is substring, not exact.
cvssMaxNoMaximum value of the advisory's maximum CVSS base score, inclusive.
cvssMinNoMinimum value of the advisory's maximum CVSS base score, inclusive.
productNoCase-insensitive substring of a product name, matched literally — % and _ are ordinary characters.
severityNoSeverity band of the advisory's maximum CVSS score.
publisherNocoordinator selects CISA-authored advisories; other selects vendor advisories CISA republished, over a quarter of the corpus.
revisedToNoLatest current release date, inclusive, YYYY-MM-DD.
publishedToNoLatest initial release date, inclusive, YYYY-MM-DD.
revisedFromNoEarliest current release date, inclusive, YYYY-MM-DD.
publishedFromNoEarliest initial release date, inclusive, YYYY-MM-DD.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe page limit that was applied.
errorNoPresent when the call failed. Absent on success.
shownNoAdvisories returned on this page.
cursorNoOpaque cursor for the next page. Absent when this is the last page.
mirrorNoWhich index state answered this call.
noticeNoGuidance when nothing matched — the filter that matches no advisory on its own and what dropping it restores, or the filters whose removal restores results and how many — when a page was capped, when KEV membership was not evaluated, or when a cwe result may be incomplete.
hasMoreNoWhether more matches exist beyond this page.
resultsNoMatching advisories for this page.
truncatedNoTrue when the page limit capped this result.
totalCountNoTotal matches before paging.
cvssCoverageNoDisclosure of derived-band and no-score coverage under a score filter.
appliedFiltersNoThe filters the server actually applied.
sectorCoverageNoDisclosure of how many advisories a sector filter can never match.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already signal a read-only, idempotent search, and the description adds materially beyond them: the sector-filter coverage gap (sector notes only begin in 2017 and the response reports how many documents can never match), plus the guarantee that every response carries source URL and attribution. No behavior contradicts 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?

Three dense sentences: scope, filter surface, then caveat and return contract. For a 20-parameter tool this is appropriately sized and front-loaded, 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?

Despite high complexity, everything an agent needs to decide and invoke correctly is present: corpus definition, filter categories, a critical coverage caveat, and output contract. The rich input/output schemas handle the remaining details.

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 carries nearly all parameter meaning; the description adds a high-level taxonomy of the filter dimensions. The one genuinely new semantic is the sector parameter's limitation, which is not expressed in 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 — search the CISA ICS advisory corpus — and further delimits the corpus by standard (CSAF 2.0), product families, and date range. It also states what the call returns (advisory IDs, CVEs, KEV flags, source URL/attribution), which separates it from sibling getter/search 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 gives clear context for when to call it: to search the whole ICS advisory corpus across many filter dimensions, and it wires the result into cisa_get_advisory. It does not explicitly name alternatives like cisa_search_kev or say when not to use this tool, so it misses the full when/when-not bar.

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

cisa_search_kevcisa_search_kevA
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedcisa_get_advisory5 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `mirror_not_ready`: The advisory index has never completed a full sync. `unknown_section`: A requested section is one this advisory does not carry. `cves_need_vulnerabilities_section`: cves is set but sections does not include \"vulnerabilities\", so there is nothing for cves to narrow. `unknown_cve`: A cves entry names a CVE this advisory does not cover. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `mirror_not_ready`: The advisory index has never completed a full sync. `mirror_unavailable`: The advisory index store cannot be opened: its location is not writable, is read-only, runs through a missing directory or a file, or holds a file that is not a SQLite database. `unknown_section`: A requested section is one this advisory does not carry. `cves_need_vulnerabilities_section`: cves is set but sections does not include \"vulnerabilities\", so there is nothing for cves to narrow. `unknown_cve`: A cves entry names a CVE this advisory does not cover. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "mirror_not_ready",
        -  "unknown_section",
        -  "cves_need_vulnerabilities_section",
        -  "unknown_cve"
        -]New value: +[
        +  "mirror_not_ready",
        +  "mirror_unavailable",
        +  "unknown_section",
        +  "cves_need_vulnerabilities_section",
        +  "unknown_cve"
        +]
      • changedOutput schema / properties / guidance / description
        Previous value: -"What to do instead, present when found is false."New value: +"What to do instead, present when found is false: how current the index is, and whether the advisory may be newer than it."
      • addedOutput schema / properties / indexCheckpoint
        Added value: +{
        +  "description": "Present when found is false: the newest revision timestamp the index holds, or null if none.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / indexLastSyncedAt
        Added value: +{
        +  "description": "Present when found is false: when the index last completed a sync, ISO 8601, or null if never.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedcisa_list_reference2 fields changed
      • addedOutput schema / properties / sources / properties / csafMirror / properties / unavailableReason
        Added value: +{
        +  "description": "Present only when the index cannot be opened: its location is not writable, is read-only, has a missing directory, runs through a file, or holds a file that is not a SQLite database. Fixed by CISA_CSAF_MIRROR_PATH, not by waiting.",
        +  "enum": [
        +    "not_writable",
        +    "read_only",
        +    "missing_directory",
        +    "not_a_directory",
        +    "not_a_database"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / sources / properties / kev / properties / refreshCron / description
        Previous value: -"Cron expression the refresh poll runs on."New value: +"Cron expression the refresh poll runs on, or off when it is disabled."
    • Changedcisa_search_ics_advisories7 fields changed
      • changedInput schema / properties / cve / description
        Previous value: -"Exact CVE membership, e.g. CVE-2021-44228. Case and surrounding whitespace are normalized. The corpus covers 12,321 distinct CVEs."New value: +"Exact CVE membership, e.g. CVE-2021-44228. Case and surrounding whitespace are normalized."
      • changedInput schema / properties / publisher / description
        Previous value: -"coordinator selects CISA-authored advisories (2,863); other selects republished vendor advisories (1,063)."New value: +"coordinator selects CISA-authored advisories; other selects vendor advisories CISA republished, over a quarter of the corpus."
      • changedInput schema / properties / series / description
        Previous value: -"Advisory series: ICSA (3,738 documents) or ICSMA medical devices (188)."New value: +"Advisory series: ICSA industrial control system advisories, or ICSMA medical-device advisories, a small minority of the corpus."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `mirror_not_ready`: The advisory index has never completed a full sync. `invalid_cvss_range`: cvssMin exceeds cvssMax. `invalid_date_range`: A From bound is later than its matching To bound. `relevance_sort_without_query`: sortBy is relevance but no q was supplied, so there is no bm25 rank to sort by. `empty_search_text`: q contains no word or number once quotes and punctuation are removed, so there is nothing to search for. `catalog_unavailable`: inKev is set, no KEV catalog snapshot is held, and the fetch from cisa.gov failed. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `mirror_not_ready`: The advisory index has never completed a full sync. `mirror_unavailable`: The advisory index store cannot be opened: its location is not writable, is read-only, runs through a missing directory or a file, or holds a file that is not a SQLite database. `invalid_cvss_range`: cvssMin exceeds cvssMax. `invalid_date_range`: A From bound is later than its matching To bound. `relevance_sort_without_query`: sortBy is relevance but no q was supplied, so there is no bm25 rank to sort by. `empty_search_text`: q contains no word or number once quotes and punctuation are removed, so there is nothing to search for. `catalog_unavailable`: inKev is set, no KEV catalog snapshot is held, and the fetch from cisa.gov failed. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "mirror_not_ready",
        -  "invalid_cvss_range",
        -  "invalid_date_range",
        -  "relevance_sort_without_query",
        -  "empty_search_text",
        -  "catalog_unavailable"
        -]New value: +[
        +  "mirror_not_ready",
        +  "mirror_unavailable",
        +  "invalid_cvss_range",
        +  "invalid_date_range",
        +  "relevance_sort_without_query",
        +  "empty_search_text",
        +  "catalog_unavailable"
        +]
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when nothing matched, when a page was capped, when KEV membership was not evaluated, or when a cwe result may be incomplete."New value: +"Guidance when nothing matched — the filter that matches no advisory on its own and what dropping it restores, or the filters whose removal restores results and how many — when a page was capped, when KEV membership was not evaluated, or when a cwe result may be incomplete."
      • changedOutput schema / properties / results / items / properties / maxCvss / description
        Previous value: -"Highest CVSS score across the advisory. Absent on the two advisories with no CVSS."New value: +"Highest CVSS score across the advisory. Absent when the advisory carries no CVSS score."
    • Changedcisa_search_kev2 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. 5 tool updates
    • Changedcisa_check_cve_status12 fields changed
      • changedInput schema / properties / cveIds / description
        Previous value: -"CVE identifiers to check, up to 200 per call. The whole batch costs zero upstream requests, so a full CVE alias list from a dependency audit can be checked in one call."New value: +"CVE identifiers to check, up to 200 per call. The whole batch costs zero upstream requests, so a full CVE alias list from a dependency audit can be checked in one call — pair a large batch with detail \"summary\"."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "full",
        +  "description": "full returns every field of each in-KEV entry. summary returns only cveId, inKev, dateAdded, dueDate, daysUntilDue, overdue, directive, vendorProject, product, knownRansomwareCampaignUse, and forensicTriage — the triage view for a large batch. Not-in-KEV results are the same under both.",
        +  "enum": [
        +    "full",
        +    "summary"
        +  ],
        +  "type": "string"
        +}
      • 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\"."
      • addedOutput schema / properties / summaryNote
        Added value: +{
        +  "description": "Present only under detail \"summary\": which fields each in-KEV result omits and how to restore them.",
        +  "type": "string"
        +}
    • Changedcisa_get_advisory3 fields changed
      • changedInput schema / properties / advisoryId / description
        Previous value: -"Advisory identifier, e.g. ICSA-26-260-07 or ICSMA-26-253-02. Case-insensitive; an optional revision suffix is a single letter a-f or a numeric -N. A trailing .json is stripped."New value: +"Advisory identifier, e.g. ICSA-26-260-07 or ICSMA-26-253-02, with an optional revision suffix: a single letter A-F or a numeric -N. Case, surrounding whitespace, and a trailing .json are normalized."
      • changedInput schema / properties / advisoryId / pattern
        Previous value: -"^\\s*ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[a-z]|-\\d+)?(?:\\.json)?\\s*$"New value: +"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[A-Z]|-\\d+)?$"
      • changedOutput schema / properties / advisory / properties / advisoryId / pattern
        Previous value: -"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[a-z]|-\\d+)?$"New value: +"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[A-Z]|-\\d+)?$"
    • Changedcisa_get_alerts1 field changed
      • changedOutput schema / properties / items / items / properties / advisoryId / pattern
        Previous value: -"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[a-z]|-\\d+)?$"New value: +"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[A-Z]|-\\d+)?$"
    • Changedcisa_search_ics_advisories3 fields changed
      • changedInput schema / properties / cve / description
        Previous value: -"Exact CVE membership. The corpus covers 12,321 distinct CVEs."New value: +"Exact CVE membership, e.g. CVE-2021-44228. Case and surrounding whitespace are normalized. The corpus covers 12,321 distinct CVEs."
      • changedInput schema / properties / cwe / description
        Previous value: -"Exact CWE identifier, e.g. CWE-787, matched against every vulnerability entry in the advisory. A parent class does not match its children."New value: +"Exact CWE identifier, e.g. CWE-787, matched against every vulnerability entry in the advisory. Case and surrounding whitespace are normalized. A parent class does not match its children."
      • changedOutput schema / properties / results / items / properties / advisoryId / pattern
        Previous value: -"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[a-z]|-\\d+)?$"New value: +"^ICS(A|MA)-\\d{2}-\\d{3}-\\d{2}(?:[A-Z]|-\\d+)?$"
    • Changedcisa_search_kev20 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\"."

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables prioritizing vulnerabilities by real-world exploitation evidence, combining CISA KEV, EPSS, CVSS, and SSVC to rank CVEs and package versions, and providing fix recommendations.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables CVE lookups and risk assessment by integrating CISA Known Exploited Vulnerabilities (KEV) data and CVSS metrics. It helps users prioritize patching efforts by ranking vulnerabilities based on exploitation status and calculated risk scores.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server to query and manage CISA Known Exploited Vulnerabilities catalog with EPSS overlay, enabling vulnerability checks and remediation deadline tracking.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.