Skip to main content
Menu

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.

OpenAPI
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