Skip to main content
Glama

cisa-cybersecurity-mcp-server

cisa_get_advisory

cisa_get_advisory
Read-onlyIdempotent

Read one CISA industrial control system advisory: product definitions and relationship component references; per-CVE CVSS score, vector, and CWE; vendor remediations; sectors; and revision history. Large advisories return a section outline with byte sizes and vulnerability CVE IDs. Re-call with sections, cves for named vulnerabilities, or productIds for exact product definitions referenced by vulnerability status, scores, or remediations. Product IDs are case-sensitive; relationship selection does not expand components. Every response carries source URLs and attribution. Find advisory IDs with cisa_search_ics_advisories.

Input 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.
productIdsNoNarrow products to these IDs from vulnerability status, score, or remediation references. Alone selects products; combined with cves selects both sections. Explicit sections must include products.

Output Schema

NameRequiredDescriptionDefault
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changed
    • addedInput schema / properties / productIds
      Added value: +{
      +  "description": "Narrow products to these IDs from vulnerability status, score, or remediation references. Alone selects products; combined with cves selects both sections. Explicit sections must include products.",
      +  "items": {
      +    "description": "Exact case-sensitive CSAF product ID; surrounding whitespace is trimmed.",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • 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. `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."New value: +"Machine-readable failure mode. Declared by this tool: `product_ids_need_products_section`: productIds is nonempty but explicit sections omits products. `unknown_product_id`: productIds names an ID with no definition in this advisory. `mirror_busy`: A transient SQLite lock prevents the advisory index from opening. `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",
      -  "mirror_unavailable",
      -  "unknown_section",
      -  "cves_need_vulnerabilities_section",
      -  "unknown_cve"
      -]New value: +[
      +  "product_ids_need_products_section",
      +  "unknown_product_id",
      +  "mirror_busy",
      +  "mirror_not_ready",
      +  "mirror_unavailable",
      +  "unknown_section",
      +  "cves_need_vulnerabilities_section",
      +  "unknown_cve"
      +]
    • addedOutput schema / properties / products / properties / selected
      Added value: +{
      +  "description": "True when productIds selects only requested definitions; whole-document totals are retained.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / products / properties / shownProducts / description
      Previous value: -"Flattened version rows returned — equal to productCount except on a truncated copy."New value: +"Product definitions returned — equal to productCount except under productIds selection or on a legacy truncated copy."
    • changedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / description
      Previous value: -"Version entries under this product."New value: +"Product definitions grouped under this product label."
    • changedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / description
      Previous value: -"One affected version or version range."New value: +"One branch, standalone, or relationship product definition."
    • addedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / identificationHelper
      Added value: +{
      +  "description": "Lossless JSON text of upstream CSAF product identification metadata, when supplied.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / kind / description
      Previous value: -"CSAF branch category this entry came from, e.g. product_version or product_version_range."New value: +"CSAF branch category, or full_product_name or relationship for definitions outside branches."
    • addedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / name
      Added value: +{
      +  "description": "Exact full product name supplied upstream.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / productId / description
      Previous value: -"The CSAFPID token vulnerability entries reference — how a CVE maps to exact affected versions."New value: +"Exact opaque CSAF product ID referenced by vulnerability entries; case-sensitive and not restricted to CSAFPID tokens."
    • addedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / productReference
      Added value: +{
      +  "description": "First relationship component ID; not automatically expanded.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / relatesToProductReference
      Added value: +{
      +  "description": "Second relationship component ID; not automatically expanded.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / relationshipCategory
      Added value: +{
      +  "description": "CSAF relationship category supplied upstream.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / products / properties / vendors / items / properties / products / items / properties / versions / items / properties / value / description
      Previous value: -"The version or version-range expression."New value: +"Version/range expression for a branch row, or full name for a standalone or relationship definition."
  2. Changed5 schema 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"
      +  ]
      +}
  3. Changed3 schema 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+)?$"
  4. Changed7 schema fields changed
    • addedInput schema / properties / cves
      Added value: +{
      +  "description": "Narrow 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\".",
      +  "items": {
      +    "description": "One CVE identifier the advisory covers, e.g. CVE-2023-3935. Case and surrounding whitespace are normalized.",
      +    "pattern": "^CVE-[0-9]{4}-[0-9]{4,19}$",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • 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. 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. `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"
      -]New value: +[
      +  "mirror_not_ready",
      +  "unknown_section",
      +  "cves_need_vulnerabilities_section",
      +  "unknown_cve"
      +]
    • changedOutput schema / properties / products / properties / shownProducts / description
      Previous value: -"Flattened version rows actually returned."New value: +"Flattened version rows returned — equal to productCount except on a truncated copy."
    • changedOutput schema / properties / products / properties / truncated / description
      Previous value: -"True when the flattened version rows were capped."New value: +"True only on a copy stored by an older index build that capped product rows; the index re-ingests on its next start and then returns every row. Absent otherwise."
    • changedOutput schema / properties / sections / description
      Previous value: -"Outline arm — the sections available, largest first, with their byte sizes."New value: +"Outline arm — the sections available, largest first, with their byte sizes and, for vulnerabilities, its CVE IDs."
    • addedOutput schema / properties / sections / items / properties / cves
      Added value: +{
      +  "description": "On the vulnerabilities section only: the CVE IDs it holds, in document order. Pass any of them in cves to cisa_get_advisory to read just those entries.",
      +  "items": {
      +    "description": "One CVE identifier.",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  5. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/closed-world, so the bar is lower, yet the description adds genuine behavior: large advisories degrade to a section outline with byte sizes and CVE IDs, and every response carries source URLs and attribution. It also notes the non-expanding relationship selection. Not exhaustive on pagination/error behavior, but solid 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core read action and return contents come first, followed by narrowing mechanics and the search-tool pointer. Every sentence carries information, though it is on the longer side and repeats some schema-level detail.

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?

Given an output schema exists, return values needn't be spelled out, yet the description usefully previews them and explains the overflow/outline behavior that an agent needs to interpret large responses. Complete for the task; only minor gaps around error or revision-edge behavior.

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 schema already documents sections, cves, productIds, and advisoryId syntax in detail, so the baseline is 3. The description largely restates that behavior; the one real addition is 'relationship selection does not expand components' for productIds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one CISA industrial control system advisory') and enumerates the concrete content it returns (product definitions, CVSS score/vector/CWE, remediations, sectors, revisions). It also names the sibling used to find IDs, making it clearly distinguishable from cisa_search_ics_advisories.

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?

Explains how to narrow results (re-call with sections, cves, or productIds) and routes the agent to cisa_search_ics_advisories for discovering IDs. Clear contextual guidance, though it doesn't explicitly state when-not to use this tool versus other advisory tools like cisa_get_ssvc.

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.