Skip to main content
Glama

Vuln Priority

CI npm downloads OpenSSF Scorecard License: MIT

Which vulnerability do I fix first? A scanner hands an agent dozens of CVEs, sorted by CVSS, and CVSS says how bad an exploit would be, not whether anyone is exploiting it. Vuln Priority ranks vulnerabilities by the evidence that predicts harm:

Tier

Rule

act_now

Exploited in the wild: in CISA's Known Exploited Vulnerabilities catalog, or CISA's SSVC rates exploitation "active"

high

EPSS of 0.1 or more (a 10% or greater chance of exploitation in the next 30 days), or a public exploit that SSVC rates automatable

medium

EPSS of 0.01 or more, a public proof of concept, or CVSS 7 or higher

low

None of the above

Every row says why it landed in its tier, with the KEV dates (and whether ransomware groups use it), the EPSS score and percentile, the CVSS score and CISA's SSVC decision points. Give it CVE ids, GitHub, PyPI, Go or RustSec advisory ids, or package versions straight from a lockfile: for each package it returns the worst vulnerability, and the one upgrade that fixes all of them, checked against every advisory's affected ranges (a later branch can be affected again).

No account or key needed. Built and maintained by Arhan Canli.

Install

Install in Cursor Install in VS Code Install in Goose

Needs Node.js 20 or newer. No account or key.

Claude Code

claude mcp add vuln-priority -- npx -y vuln-priority-mcp

Claude Desktop: download vuln-priority-mcp-<version>.mcpb from the latest release and open it. The bundle is signed; verify it with gh attestation verify <file> --repo arhancanli/vuln-priority-mcp.

Any other client (Windsurf, Zed, Cline, Continue and others), in its MCP config file:

{
  "mcpServers": {
    "vuln-priority": {
      "command": "npx",
      "args": [
        "-y",
        "vuln-priority-mcp"
      ]
    }
  }
}

Docker

docker build -t vuln-priority-mcp https://github.com/arhancanli/vuln-priority-mcp.git && docker run -i --rm vuln-priority-mcp

Hosted (Streamable HTTP): node src/server.mjs --http serves stateless MCP at POST /mcp (port from PORT, default 3000).

Related MCP server: CVE Intelligence MCP Server

Example

An agent calls prioritize_vulns with:

{
  "ids": [
    "CVE-2021-44228",
    "CVE-2023-4863",
    "CVE-2024-3094",
    "CVE-2020-8203",
    "GHSA-jfh8-c2jp-5v3q",
    "CVE-2019-10744",
    "CVE-2099-99999",
    "not an id"
  ]
}

and gets back (recorded from the live server on 2026-09-26):

{
  "counts": {
    "act_now": 3,
    "high": 1,
    "medium": 2,
    "unknown": 2
  },
  "results": [
    {
      "id": "CVE-2021-44228",
      "tier": "act_now",
      "why": "in CISA KEV since 2021-12-10, used by ransomware",
      "kev_added": "2021-12-10",
      "kev_due": "2021-12-24",
      "ransomware": true,
      "epss": 0.99999,
      "epss_percentile": 1,
      "cvss": 10,
      "severity": "critical",
      "ssvc": "active/yes/total",
      "name": "Apache Log4j2 Remote Code Execution Vulnerability"
    },
    {
      "id": "GHSA-jfh8-c2jp-5v3q",
      "cve": "CVE-2021-44228",
      "tier": "act_now",
      "why": "in CISA KEV since 2021-12-10, used by ransomware",
      "kev_added": "2021-12-10",
      "kev_due": "2021-12-24",
      "ransomware": true,
      "epss": 0.99999,
      "epss_percentile": 1,
      "cvss": 10,
      "severity": "critical",
      "ssvc": "active/yes/total",
      "name": "Apache Log4j2 Remote Code Execution Vulnerability"
    },
    {
      "id": "CVE-2023-4863",
      "tier": "act_now",
      "why": "in CISA KEV since 2023-09-13",
      "kev_added": "2023-09-13",
      "kev_due": "2023-10-04",
      "epss": 0.99979,
      "epss_percentile": 0.9998,
      "cvss": 8.8,
      "severity": "high",
      "ssvc": "active/no/total",
      "name": "Google Chromium WebP Heap-Based Buffer Overflow Vulnerability"
    },
    {
      "id": "CVE-2024-3094",
      "tier": "high",
      "why": "EPSS 0.85974: 86% chance of exploitation within 30 days; not in CISA KEV",
      "epss": 0.85974,
      "epss_percentile": 0.9972,
      "cvss": 10,
      "severity": "critical",
      "ssvc": "none/yes/total",
      "name": "Xz: malicious code in distributed source"
... (29 more lines)

Tools

Tool

What it does

package_vulns

Checks up to 50 package versions (npm, PyPI, Go, Maven, crates.io, RubyGems, NuGet, Packagist, Pub, Hex) against OSV and ranks each package by its worst vulnerability (act_now, high, medium, low), with the smallest upgrade that fixes them all and each vulnerability's KEV, EPSS and CVSS.

prioritize_vulns

Ranks up to 100 CVE or advisory ids (GHSA, PYSEC, GO, RUSTSEC) by risk of exploitation: act_now (in CISA KEV or exploited), high, medium, low. Each row gives why, KEV dates, ransomware use, EPSS, CVSS and CISA's SSVC decision. Fix first what comes first.

recent_exploited

What CISA added to its Known Exploited Vulnerabilities catalog in the last N days, newest first, optionally only for a vendor or product (fortinet, chrome, exchange) or only ransomware-linked. Each row: CVE, vendor, product, name, date added, federal due date, EPSS.

vuln_details

Everything about one CVE or advisory id: priority tier and why, description, CWE, CVSS vector, CISA SSVC, KEV entry (required action, due date, ransomware), EPSS, affected products and versions, affected packages with fixed versions, and the key references (patches first).

How it behaves

  • Read-only: no tool changes anything outside this process. Package names and versions go to OSV, CVE ids to FIRST and the CVE Program; nothing about your project is sent anywhere else.

  • Network: HTTPS only, to the hosts listed in package.json under factory.allowHosts, with a deadline, a size cap and bounded retries. Nothing else is contacted, and nothing is logged except unexpected failures (to stderr, without your inputs).

  • The KEV catalog is kept for three hours, other answers for 30 minutes. CVE records come from the CVE Program's GitHub copy (about 0.2 s each), and from its API for records too new for the copy.

  • When OSV lists one CVE under several databases (a GHSA and a PYSEC advisory for the same Django flaw), it is one row, the GitHub advisory first, with the other ids under also.

  • Results are compact JSON with a matching output schema, worst first. Lists say how many items were left out.

Data sources

  • CISA Known Exploited Vulnerabilities (public domain), with its GitHub mirror as a fallback.

  • FIRST EPSS, the Exploit Prediction Scoring System, updated daily.

  • CVE records from the CVE Program, including CISA's Vulnrichment container (CVSS where the reporting organisation gave none, and SSVC decision points).

  • OSV, the open source vulnerability database (GitHub Advisories, PyPA, Go, RustSec and more), for package versions and fixes.

Tiers are a starting point for your own policy: CISA's SSVC guidance and FIRST's EPSS guidance describe how to set thresholds for your environment.

Benchmark

Measured 2026-09-26 with gpt-5.4-mini, 12 fixed tasks graded by fixed checks (bench/tasks.json, raw results in bench/results/).

Server

Correct

Input tokens

Output tokens

Tool calls

Median time

This server

12/12

25253

530

12

3.0 s

mukul975/cve-mcp-server, the most-starred vulnerability server (28 tools)

7/12

130333

1174

34

3.4 s

The same tasks against cve-mcp (41 tools), in a separate run: 10/12 correct with 222,717 input tokens, against 12/12 and 25,253 for this server (bench/results/2026-09-26-gpt-5.4-mini-cve-mcp.json). mukul975/cve-mcp-server ran from its repository at commit d666bac with the MCP Python SDK pinned below 2: its default install fails on SDK 2, where FastMCP was renamed.

Performance

Measured 2026-09-26 from Dubai, home connection against the live upstream, Node 24.19.0 (bench/perf.json, scripts/perf.mjs in the factory).

Call

First call

Repeat

Result size

prioritize_vulns: 8 ids (KEV, EPSS-only, advisory alias, unknown, not an id)

2684 ms

0.5 ms

1,933 chars

package_vulns: 4 packages (npm, Maven, PyPI, one clean)

2863 ms

3 ms

6,102 chars

vuln_details: CVE-2023-4863 (libwebp)

2213 ms

0.5 ms

2,829 chars

vuln_details: CVE-2024-3094 (xz, not in KEV)

2081 ms

0.4 ms

1,876 chars

vuln_details: a GHSA advisory

1386 ms

0.4 ms

3,429 chars

recent_exploited: last 30 days

635 ms

0.3 ms

5,196 chars

recent_exploited: Fortinet, ransomware only, 10 years

647 ms

0.5 ms

795 chars

recent_exploited: log4j, 10 years

587 ms

1.3 ms

475 chars

First call: a fresh server process, including the TLS connection and the upstream's own time. Repeat: the same call again, answered from the in-process cache, so it shows this server's own overhead.

Tool definitions the model reads on every turn (name, description, input schema): 2,298 characters, against 12,864 for mukul975/cve-mcp-server, the most-starred vulnerability server (28 tools). The full tool list, with the output schemas and annotations clients use to validate results, is 4,019 characters (16,964 for the alternative).

More MCP servers by Arhan Canli

  • Citation Check: Verifies citations: finds fabricated or mismatched references and retractions, returns clean BibTeX.

  • Domain Health: Email and domain checks: SPF lookup limits, DKIM keys, DMARC, DNS records, registration expiry.

  • Drug Label: FDA drug label answers with section citations, RxNorm name resolution, recalls and shortages.

  • End of Life: Is this version still supported? EOL dates, latest patch and upgrade target for 470+ products.

  • Internet Standards: RFC sections, status, obsoleted-by chains, errata and IANA registries for coding agents.

  • Package Truth: Checks packages exist before install: version, deprecation, vulnerabilities, licence. 7 ecosystems.

  • Recall Check: One recall check across CPSC, FDA and NHTSA: match by name, model number, UPC or VIN.

  • Satellite Imagery: Find the clearest Sentinel-2, Landsat, Sentinel-1 or NAIP scene for any place, with band links.

  • The whole collection, 1 more

License

MIT, Copyright (c) 2026 Arhan Canli.

Available Tools

4 tools
package_vulnsRank a project's package vulnerabilitiesA
Read-onlyIdempotent

Checks up to 50 package versions (npm, PyPI, Go, Maven, crates.io, RubyGems, NuGet, Packagist, Pub, Hex) against OSV and ranks each package by its worst vulnerability (act_now, high, medium, low), with the smallest upgrade that fixes them all and each vulnerability's KEV, EPSS and CVSS.

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countsYes
resultsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey read-only, idempotent, open-world, non-destructive behavior, so the description adds meaningful operational context: it queries OSV, supports up to 50 versions, uses specific severity labels, and includes upgrade and metric data. This goes beyond what annotations alone tell the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence with no filler: it front-loads the core action, then packs in the limit, ecosystems, data source, ranking output, upgrade recommendation, and supporting metrics. Every clause contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter, a rich output schema, and strong annotations. The description supplies the remaining operational context: input limits, supported ecosystems, severity taxonomy, upgrade behavior, and metric fields. No critical detail needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that the packages input should contain up to 50 package versions, lists possible ecosystems, and states what will be produced for each. It does not restate required fields like name, version, and ecosystem, but those are already clear in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource: it 'Checks up to 50 package versions' against OSV and 'ranks each package by its worst vulnerability' with severity categories. It also names the supported ecosystems, which clearly separates it from sibling tools like recent_exploited or vuln_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when the user supplies package versions and wants vulnerability severity, upgrade paths, and KEV/EPSS/CVSS details. It does not explicitly state when not to use it or name alternative sibling tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prioritize_vulnsRank vulnerabilities by real-world riskA
Read-onlyIdempotent

Ranks up to 100 CVE or advisory ids (GHSA, PYSEC, GO, RUSTSEC) by risk of exploitation: act_now (in CISA KEV or exploited), high, medium, low. Each row gives why, KEV dates, ransomware use, EPSS, CVSS and CISA's SSVC decision. Fix first what comes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesCVE or advisory ids

Output Schema

ParametersJSON Schema
NameRequiredDescription
countsYes
resultsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive behavior; the description adds useful context without contradicting them. It discloses the maximum input size, the risk classification logic, and the specific data returned per row (KEV dates, ransomware use, EPSS, CVSS, SSVC).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences lead with the core action, then detail output categories and fields, and end with a clear takeaway. No wasted words; every sentence contributes to selecting and invoking the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single input parameter, rich annotations, and an existing output schema, the description fully covers what an agent needs: the input format, size limits, risk ranking behavior, and the kind of information included. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single 'ids' parameter with 100% coverage万万, so the baseline is 3. The description adds beyond the schema by specifying the accepted ID formats (GHSA, PYSEC, GO, RUSTSEC) and clarifying the output categories, which helps an agent know what inputs are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Ranks') and a clearly defined resource: up to 100 CVE or advisory IDs. It explicitly names the output risk categories (act_now, high, medium, low) and the decision factors, making it easy to distinguish from the sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: when you have a list of vulnerability IDs and need them prioritized by exploitation risk. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to select it for ranking and prioritization tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recent_exploitedNewly exploited vulnerabilitiesA
Read-onlyIdempotent

What CISA added to its Known Exploited Vulnerabilities catalog in the last N days, newest first, optionally only for a vendor or product (fortinet, chrome, exchange) or only ransomware-linked. Each row: CVE, vendor, product, name, date added, federal due date, EPSS.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
ransomware_onlyNo
vendor_or_productNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
resultsYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds behavioral details beyond annotations: newest-first ordering, optional filters, and the specific row fields returned (CVE, vendor, product, name, date added, federal due date, EPSS). This gives the agent a clear expectation of output shape and ordering without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence front-loads the core purpose and filters; the second lists output fields. Every word contributes to the agent's understanding. This is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (4 optional parameters), existing output schema, and comprehensive annotations, the description covers the essential functional aspects: time window, filters, ordering, and output columns. No critical gaps for calling the tool correctly. Slight omissions like pagination or limit semantics are minor and covered by defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does: 'last N days' explains the days parameter, 'optionally only for a vendor or product' explains vendor_or_product with examples, and 'only ransomware-linked' explains ransomware_only. The limit parameter is not explicitly mentioned, but the default of 25 and the context of returning rows implies it. The examples (fortinet, chrome, exchange) add practical value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (retrieve CISA KEV additions) with a clear resource (the Known Exploited Vulnerabilities catalog) and time window (last N days). It distinguishes itself from siblings like package_vulns (package-specific) and vuln_details (details) by focusing on recent additions. The mention of filters and output fields further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies usage for recent CISA KEV entries with optional filtering. It doesn't explicitly exclude alternatives or name sibling tools, but the context makes it obvious this is for time-based catalog queries, not package or prioritization tasks. This is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vuln_detailsOne vulnerability in depthA
Read-onlyIdempotent

Everything about one CVE or advisory id: priority tier and why, description, CWE, CVSS vector, CISA SSVC, KEV entry (required action, due date, ransomware), EPSS, affected products and versions, affected packages with fixed versions, and the key references (patches first).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCVE or advisory id

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
whyYes
tierYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds a notable behavioral detail: references are ordered 'patches first,' which is not inferable from annotations. It also specifies the KEV entry includes required action, due date, and ransomware status, providing output-shaping context. No contradiction with annotations, and the description adds value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence that front-loads the core purpose ('Everything about one CVE or advisory id') before listing specific data categories. Every clause adds substantive information, and there is no fluff or redundancy. It is efficient and well-structured for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (many data fields), the output schema exists (as indicated), and annotations cover safety, the description is remarkably complete. It enumerates all major data types returned, including priority tier reasoning, CWE, CVSS, CISA SSVC, KEV details, EPSS, affected products/packages, and references. Nothing an agent needs to decide whether to call this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'id' parameter with 'CVE or advisory id' and length constraints (coverage 100%). The description does not elaborate on the parameter format, validation, or examples beyond what the schema provides. Baseline of 3 is appropriate since no additional semantic value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides 'everything about one CVE or advisory id' and enumerates specific data categories (priority tier, CWE, CVSS, EPSS, affected products, etc.). This is a precise verb+resource definition that distinguishes it from siblings like package_vulns (focused on packages) and prioritize_vulns (ranking), making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: you call this when you have a specific CVE or advisory ID and need comprehensive details. It doesn't explicitly contrast with alternatives, but the title 'One vulnerability in depth' and the single 'id' parameter make the context clear. No explicit when-not or alternative routing is given, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedpackage_vulns
    • First observedprioritize_vulns
    • First observedrecent_exploited
    • First observedvuln_details

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: package_vulns checks package versions, prioritize_vulns ranks CVE IDs, recent_exploited shows newly added KEV entries, and vuln_details provides deep dive on a single CVE. No two tools overlap in their primary function.

Naming Consistency3/5

Tool names mix conventions: 'prioritize_vulns' follows verb_noun, but 'package_vulns' and 'vuln_details' are noun phrases, and 'recent_exploited' is adjective+past participle. The naming is readable and consistent in style (lowercase underscores) but lacks a uniform verb_noun pattern.

Tool Count5/5

With 4 tools, the server is tightly scoped to its purpose of vulnerability prioritization. Each tool covers a distinct workflow step, and none feel redundant or unnecessary.

Completeness4/5

The surface covers the core workflows: checking packages, ranking CVEs, viewing recent exploited vulnerabilities, and retrieving detailed information. Minor gaps exist (e.g., no direct way to list all vulnerabilities for a package beyond the top 50), but agents can still accomplish the intended tasks without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables CVE lookups and risk assessment by integrating CISA Known Exploited Vulnerabilities (KEV) data and CVSS metrics. It helps users prioritize patching efforts by ranking vulnerabilities based on exploitation status and calculated risk scores.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables searching and analyzing CVEs and vulnerabilities from multiple sources, optimized for PR review scenarios to help developers identify the latest security issues.
    8
    2
    -