Skip to content
Eden Engine

CVE Change History: How an NVD Record Changed Over Time

nvd/cve-history

The change log of one CVE in the National Vulnerability Database: every event (initial analysis, modification, translation, reference tag update), who made it, when, and exactly which fields were added, changed or removed with their old and new values (a CVSS score revised, a CWE reassigned, a reference added). Oldest event first. Paged: 20 per call by default, up to 100. National Vulnerability Database data, passed through unmodified and served by Eden Engine; not an official NIST or NVD product.

activeper callv2

Price

$0.0026 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.

Data source

National Vulnerability Database (NIST)

This product uses data from the NVD API but is not endorsed or certified by the NVD. Data from the National Vulnerability Database (NVD), National Institute of Standards and Technology, U.S. Department of Commerce; NIST information is public and may be distributed or copied, per nist.gov/oism/copyrights. Served by Eden Engine; not an official NIST product.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "nvd/cve-history" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "nvd/cve-history" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "nvd/cve-history", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "nvd/cve-history", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0026
Updated
Oct 20, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "cve_id"
  ],
  "properties": {
    "cve_id": {
      "type": "string",
      "pattern": "^CVE-[0-9]{4}-[0-9]{4,19}$",
      "description": "The CVE id, upper case, for example CVE-2021-44228."
    },
    "start_index": {
      "type": "integer",
      "maximum": 1000000,
      "minimum": 0,
      "description": "Zero-based offset of the first record to return, for paging: ask again with start_index set to the previous start_index plus results_per_page. The response's `totalResults` says when to stop. Omit for the first page."
    },
    "results_per_page": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "How many change events to return, 1 to 100. Defaults to 20. A busy CVE has dozens of events, about 2 KB each."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "totalResults",
    "cveChanges"
  ],
  "properties": {
    "format": {
      "type": "string",
      "description": "The NVD response format name."
    },
    "version": {
      "type": "string",
      "description": "The NVD API version."
    },
    "timestamp": {
      "type": "string",
      "description": "When NVD produced this response (UTC, no offset suffix)."
    },
    "cveChanges": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "change"
        ],
        "properties": {
          "change": {
            "type": "object",
            "required": [
              "cveId"
            ],
            "properties": {
              "cveId": {
                "type": "string",
                "description": "The CVE this change belongs to."
              },
              "created": {
                "type": "string",
                "description": "When the change was made (UTC, no offset suffix)."
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "One field change.",
                  "additionalProperties": true
                },
                "description": "What changed: `action` (Added, Changed, Removed), `type` (the field), `oldValue` and `newValue`. Empty for an event that records only that analysis happened."
              },
              "eventName": {
                "type": "string",
                "description": "Kind of change, for example Initial Analysis, CVE Modified, CVE Translated or Reference Tags Update."
              },
              "cveChangeId": {
                "type": "string",
                "description": "NVD's UUID for the change."
              },
              "sourceIdentifier": {
                "type": "string",
                "description": "Who made the change."
              }
            },
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "description": "This page's events, oldest first; each is `{ change: {...} }`. Empty for an id NVD has no history for."
    },
    "startIndex": {
      "type": "integer",
      "description": "Zero-based offset of the first record on this page."
    },
    "totalResults": {
      "type": "integer",
      "description": "How many records match in all, across every page. 0 means nothing matched; that is an answer, not an error."
    },
    "resultsPerPage": {
      "type": "integer",
      "description": "How many records this page carries."
    }
  },
  "description": "The NVD change-history envelope: `totalResults` is the number of change events for the CVE, `cveChanges` holds this page.",
  "additionalProperties": true
}