vulnerability_history
Get the timeline of events for a specific CVE.
What this tool does
Returns the dated events known to SecDB for a CVE, most recent first:
published: publication of the CVE
nvd: NVD changes (CVSS, CPE, CWE, references, description)
advisory: security advisories that mention the CVE
nasl: NASL detection plugins that cover the CVE
cisa-kev, eu-kev: addition to a Known Exploited Vulnerabilities catalog
poc: public proof-of-concept repositories on GitHub
exploitdb: Exploit-DB entries
alias: public disclosure under a known name
Every event carries the date of the event itself, not the date it reached SecDB. Sources without a date are not included. EPSS changes are not included: use epss_timeseries.
When to use this tool
Use this tool when the user asks:
"What changed on CVE-XYZ since last week?"
"When was this CVE added to KEV?"
"When did the first PoC or detection plugin appear?"
For the current state of a CVE, use vulnerability_info.
Inputs
cve_id: valid CVE identifier (
CVE-YYYY-NNNNN).types: only return these event types (default: all).
since: only return events from this date, included (
YYYY-MM-DD).
Outputs
cve_id: CVE identifier.
returned: number of events returned.
counts: number of events for each type. It follows
sincebut nottypes, so it also shows whattypesleft out.events: each with
type,timestamp, andchange. The fields ofchangedepend on the type:published: none
nvd:
source,event,action,type,old,newadvisory:
advisory_type,advisory_id,advisory_severity,advisory_titlenasl:
plugin_id,plugin_vendor,plugin_namecisa-kev:
vulnerability_name,due_dateeu-kev:
vulnerability_name,patched_sincepoc:
name,description,urlexploitdb:
id,description,filealias:
alias
LLM usage guidelines
The response is not paginated and can be very large for well-known CVEs, mostly because of
pocandnaslevents: usetypesandsinceto request only what you need.An event dated before
sincecan still be new to SecDB: do not use this tool to prove that nothing changed.Do not guess dates or events: use what the tool returns.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"cve_id": "<cve_id>"
},
"name": "vulnerability_history"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Only events from this date, included (YYYY-MM-DD) | |
| types | No | Event types to return (default: all) | |
| cve_id | Yes | CVE identification (CVE-YYYY-NNNNN) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| counts | Yes | Events for each type | |
| cve_id | Yes | CVE identification | |
| events | Yes | Events, most recent first | |
| returned | Yes | Events returned |