{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json","name":"now.cve/cve-now","title":"cve.now","description":"A free CVE feed for agents: look up any CVE, GHSA or OSV entry, read feeds, search the catalog and check a lockfile's dependencies.","version":"1.0.0","websiteUrl":"https://cve.now","remotes":[{"type":"streamable-http","url":"https://mcp.cve.now/mcp"}],"tools":[{"name":"get_vulnerability","title":"Get vulnerability","description":"Get one vulnerability entry by CVE, GHSA or OSV id, as JSON. Includes CISA SSVC decision points (exploitation, automatable, technicalImpact) when CISA published them, and, when cve.now has read the vendor advisory, context (a plain sentence, sourced conditions, vendor severity, fix, FAQ) with exposure: Actively exploited, Default setups, Specific setups only or Unclear. fixedIn lists the fixed versions cve.now leads with: the vendor's own, without distro package builds or another product's versions. fixedInByProduct lists each affected product's fixed versions (product, versions), the entry's own product first, then products that ship the bug, such as Node.js on a Brotli CVE. fixStatus, when cve.now has registry data for an affected npm, PyPI, Go, Maven, crates.io or NuGet package, gives per package: status (fixed or none, meaning no fix is released), the fixed versions with their release dates and days from disclosure (negative when the fix shipped before the advisory), and the latest release with whether it is still affected. downloadExposure, for affected npm and crates.io packages, gives per package the share of its downloads that were affected versions: ecosystem, package, window (last-week on npm, 90d on crates.io), affectedShare (0 to 1), affectedDownloads, totalDownloads and asOf (when the counts were read). Counts are registry downloads, not users or installs: CI runs and mirrors inflate them."},{"name":"list_feed","title":"List feed","description":"List the newest items in a cve.now feed. Pass name for one stored feed (critical, all, kev, tech/<slug>, ecosystem/<eco>; critical when nothing is passed), or any of filter, tech and ecosystem to narrow it. Each of those takes one value or a list: an item must match any listed value of a field, and every field passed. Up to 16 combinations of values. fix: [\"none\"] lists only entries cve.now ranks whose affected package has no fix released (refused while cve.now's registry data is off)."},{"name":"check_stack","title":"Check dependencies","description":"Check exact package versions against cve.now's synced vulnerability catalog. Pass a lockfile, a package list, or the stack_id of a lockfile uploaded to cve.now. For a large lockfile, upload it instead of passing its contents: curl --data-binary @<file> -H 'X-Lockfile-Name: <file name>' https://cve.now/api/v1/stacks returns its id. A flake.lock is checked by the git commit each input pins, through OSV, and its nixpkgs package CVEs are not checked. No matches means none found, not a guarantee of safety."},{"name":"send_feedback","title":"Send feedback","description":"Send a private note to the cve.now team: a wrong summary, severity or affected version, a missing vulnerability or technology, a broken feed, or a feature request. Stored for a person to read, never shown publicly, and rate limited per caller. Include the entry id or page in page when the note is about one. contact is optional and only used to reply."},{"name":"get_leaderboard","title":"Get leaderboard","description":"Get the cve.now Index: the worst CVEs published or escalated this week, month or year, or of all time (window all: every CVE ever in KEV or with a Metasploit module, plus the past year), ranked by a 0-100 score (exploitation 40, exposure 25, reach 20, severity 10, no patch 5; methodology at https://cve.now/rankings/methodology; the page is https://cve.now/rankings). Narrow with tech, ecosystem and filter (critical, kev); a row matches any listed value of a field and every field passed. Pass week (YYYY-Www) instead, without tech, ecosystem or filter, for an archived week's top 25. Week rows carry movement since the previous week. view picks the board: exploited (default, the Index), worst-case (ranked by a 0-100 worst case score from severity, reach, exposure and exploit maturity, with no CISA confirmation needed; rows add worstCase) or trending (window week or month only; ranked by new PoC repos, new references and EPSS rise, with the Index unchanged; rows add trend)."},{"name":"search","title":"Search vulnerabilities","description":"Search cve.now's whole catalog of vulnerabilities and early warnings: the one tool for finding entries, by words or by fields. Pass q (free text, \"quoted phrases\" and ids, plus advisory.dev's query keys such as vendor:, package:, affects:lodash@4.17.20, severity:, cvss:>=9, kev:true, exploit:, epss:, published:<30d, type:cve|early_warning, tech:, confidence:, category: and sort:relevance|published|modified|cvss; terms are ANDed, commas OR values, a leading - excludes), the structured parameters, or both: each parameter is ANDed with q as its key term. With no words, results are newest first, so severity: [\"critical\"] lists the newest entries rated critical and kev: true the newest KEV entries. cve.now's stored feeds (critical, kev, tech/<slug>, ecosystem/<eco>) pick entries by their own rules, so read those with list_feed. Each entry's match says why it matched: the fields each word hit (title, description, identifiers) and the key terms it meets. query echoes what ran. With no matches, suggestions lists broader queries that do match; an empty answer is not evidence that no vulnerability exists. Unverified early warnings appear only with confidence:unverified. Pass next_cursor back as cursor for the next page."},{"name":"get_package","title":"Get package","description":"Get one package's vulnerability history on cve.now: every advisory naming it (newest first, each with severity, CVSS, KEV, its affected ranges, fix status from the registry's releases and, on npm and crates.io, the share of downloads that were affected versions), whether the latest release is affected, the newest stable release no advisory affects (the version to upgrade to; it doesn't count unplaced advisories and is null when truncated), affected version spans per advisory, and unplaced: advisories whose ranges can't be compared with versions (when only those could affect a release, its affected is null, meaning unknown), and truncated: more than 500 advisories name it, so only the newest are listed and no release is called clean, and weekly downloads and dependents. Pass version to ask whether that version is affected and by which advisories. The page is https://cve.now/packages/<ecosystem>/<name>. For many packages or a lockfile at once, use check_stack."}]}