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.

entities.search
Search cve.now's whole catalog of vulnerabilities and early warnings
entities.get
One entity by id, any type
entities.list
One page of one entity type
feed.read
The items a /feed subscriber gets, as JSON Feed, newest first
rankings.list
Every ranking the site has, with its id, title, the entity type it ranks, its periods
rankings.get
One ranking's rows, ranked
feedback.send
Send a private note to the cve.now team
stack.check
Check exact package versions against cve.now's synced vulnerability catalog
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
leaderboard.get
Get the cve.now Index

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

Latest changes

Dates are UTC. The full changelog is also JSON and an RSS feed.

Full changelog

AddedCLI

The CLI checks only what a pull request adds

cve.now check --base <ref> lists and fails on only the findings that are new since a commit or branch. --ignore-dev keeps development-only packages from failing the run, and --format github adds GitHub Actions annotations and a job summary.

  • An entry already on a package at <ref>, at any version, is counted and not listed.
  • Base lockfiles are read with your local git; only package names, versions and ecosystems are sent, as before.
FixedWeb · API · MCP · Feed

Entries load faster when many requests ask at once

Requests that name several entries now share one lookup, and one slow lookup no longer sends the next seconds of requests down the slower path. /api/v1/entries/<id>, feeds, pages and the MCP server answer faster under load.

  • A request that loads many entries starts with one, then two, four and eight at a time, so one slow entry holds up a few reads, not the whole list.
  • Lists (/api/v1/entries, feeds) keep their shape and order.
  • Nothing changes while entries load normally.
ChangedWeb · API · MCP · Feed

Every CVE has one headline on every surface

An entry's title is the same headline on the page, the feed, REST, MCP and the .md copy. sourceTitle carries the CNA's own title and titleTags lists what the headline dropped.

  • Titles that were cut at 140 characters are re-derived from the whole CNA title.
  • A CVE that affects several products is named by its vendor instead of the first product listed.

AddedWeb · API · Feed

The changelog has its own page, JSON and feed

/changelog lists every change as one entry with its date, kind and surfaces. /changelog.json and /changelog.xml (RSS, or ?format=atom and ?format=json) carry the same list.

  • /agents shows the latest five entries and links to the full list.
  • A response that carries a renamed name now sends a Link header to /changelog instead of /agents#changelog.
FixedWeb · API · Feed

After one slow entry load, the rest of a request fails fast

Once one entry is slow to load, the rest of that request does not wait for more: /api/v1/entries/<id>, packages and stacks answer 503 with Retry-After: 5 at once, not after another 20 seconds.

  • Lists (/api/v1/entries, feeds) keep their shape and order, and an item that could not be checked stays as the last sync wrote it.
  • A page or route serves the last good copy of an entry when it has one.
  • From 2026-11-13 this also holds when a request loads several entries at once, not only after the first slow one.
  • Nothing changes while entries load normally.