Agents
Everything on cve.now is free to read by machine: no key, no account. An optional cve.now API key gives your own rate limit instead of the shared one.
MCP
Add the MCP server
Streamable HTTP, no auth. Two tools: search finds an operation and execute runs it. The old tools (get_vulnerability, list_feed and the rest) still answer; they are deprecated and leave these docs on 2027-01-10.
Set up the cve.now MCP server for me. cve.now is a free, public CVE feed: no login, no API key. - Server name: cve-now - Transport: Streamable HTTP - URL: https://mcp.cve.now/mcp Add it the way you normally add MCP servers (your CLI command or your MCP config file), then confirm it connects and lists its two tools, search and execute. To finish, use them to run the cve.get operation on one recent CVE and summarize it for me.
Paste this into any coding agent. It adds the server with its own MCP setup.
- cve.list
- The newest CVEs and advisories, narrowed by priority slice, vendor, technology, ecosystem or fix status
- cve.get
- One CVE by id
- early-warning.list
- Early warnings
- early-warning.get
- One early warning by id: an SZB- id (a breach shares its SZB- id; use breach.get for one)
- breach.list
- Breaches and ransomware attacks, newest first
- breach.get
- One breach by id: an SZB- id
- vendor.list
- The vendors cve.now follows, with their CVE counts
- vendor.get
- One vendor by id: the vendor's slug
- package.list
- The packages that have advisories
- package.get
- One package by id: <ecosystem>/<name>, such as npm/lodash or npm/@babel/core
- tech.list
- The technologies cve.now follows
- tech.get
- One tech by id: the technology's slug
- entities.search
- Search cve.now's whole catalog of vulnerabilities and early warnings
- feed.read
- The items a /feed subscriber gets, as JSON Feed, newest first
- stack.check
- Check exact package versions against cve.now's synced vulnerability catalog
- leaderboard.get
- Get the cve.now Index
- feedback.send
- Send a private note to the cve.now team
REST
REST API
Every MCP operation has a REST twin that takes the same inputs and returns the same JSON.
- Get vulnerability by CVE, GHSA or OSV id
- GET /api/v1/entries/<id>
- Read vulnerability feed
- GET /api/v1/entries?name=<feed> (or tech, ecosystem, vendor, fix)
- Check dependencies
- POST /api/v1/check
- Send private feedback to the cve.now team
- POST /api/v1/feedback
- Get worst-CVE leaderboard (the cve.now Index)
- GET /api/v1/leaderboard
- Search vulnerabilities
- GET /api/v1/search
- Get a package's vulnerability history
- GET /api/v1/packages/<ecosystem>/<name>
- Every entry, newest first
- GET /api/v1/entries
- Upload a lockfile for stack.check or a stack feed
- POST /api/v1/stacks
- Sync and coverage status
- GET /api/v1/status
- Public usage counts
- GET /api/v1/stats
curl -L https://cve.now/api/v1/entries/CVE-2021-44228
Feeds
Feeds
RSS by default, or Atom and JSON Feed. Pick the types (CVEs, early warnings, breaches), then narrow by filter (critical, kev), technology or package ecosystem, or build a feed of only what affects your lockfile.
https://cve.now/feed?filter=critical&format=json
https://cve.now/feed?tech=nextjs,react
https://cve.now/feed?type=cve,early-warning&filter=critical
Docs
Docs for agents
Entry, day and browse pages also have a Markdown copy: add .md to the URL, or send Accept: text/markdown.
llms.txt · llms-full.txt · openapi.json · Entry schema · agent.json · mcp.json · Agent skill
Something wrong or missing? Run the feedback.send operation, POST /api/v1/feedback, or the form on the About page.
Changelog
Changelog, 2026-11-10
Old names answer with Deprecation and Sunset headers until 2027-01-09, then stop.
The MCP server lists exactly two tools that never change: search finds an operation and execute runs one. Every capability is an operation (cve.get, feed.read, stack.check, entities.search, <type>.list and <type>.get, with a REST twin each), so a new one never changes the tool list. The old tools (get_vulnerability, list_feed, check_stack and the rest) stay callable and are no longer listed: deprecated since 2026-11-11, removed from these docs on 2027-01-10.
Every entity type has a REST list and get in one shape (https://cve.now/openapi.json lists them): /api/v1/cves, /early-warnings, /breaches, /vendors, /packages and /tech answer { items, next_cursor, total? } and take the type's own filters, q on a catalog type, limit (1 to 200, default 30) and cursor. A parameter that is unknown or does not apply is a 400 (V7); a missing id is a 404 { error: "not_found", type, id }.
type (cve, early-warning, breach, package) is on every object: each entry, each row of /api/v1/entries and /api/v1/entries/<id>, and get_package. /api/v1/entries also reads type=cve|early-warning|breach, and serves its rows as items beside the old key entries, which stays. An entry copy the CDN holds from before this change gains type and url as the copies are rewritten.
kind is on every entry: /api/v1/entries/<id>, each row of /api/v1/entries and each search result carry vulnerability, breach, ransomware, malicious-package or outage. In a search result kind used to name the advisory database (cve, ghsa, osv...) and now names the entry's kind.
The entry schema is published at https://cve.now/schemas/entry.json, the same schema get_vulnerability declares as its outputSchema.
Every vulnerability entry names what its affected products are: vendors (the slug of /vendors/<slug>), products, packages and tech (the slug of /feed?tech=<slug> and the rule it matched on).
Search is one search, the same on cve.now and down.guide. type: (and the type parameter) takes entity types: cve, early-warning, breach, vendor, package and tech (early_warning, early warnings and breaches together, and all still work). date: is the shared name for published:, and filter:critical|kev|epss picks the priority slice. The response's items hold the matching entries and the vendors, technologies and packages the query names, each tagged with its type and an exact name match first; entries holds the entries alone, as before. facets gains type and confidence.
Confidence is labeled Confirmed, Corroborated or Unverified everywhere; the breaches tab that read Reported, not confirmed is Corroborated (?show=reported still selects it).
- category: (search)
- Now kind:: vulnerability, breach, ransomware, malicious-package or outage
- kind:cve, kind:ghsa, kind:malicious, kind:ecosystem and kind:osv (search)
- Now kind:vulnerability, or the kind of early warning: kind: now takes entry kinds
- type (each result in `entries`; `items[].type` is the entity type)
- Now kind
- category (each search result)
- Now kind