Open Source Supply Chain Risk

by apifyforge

122 downloads
Not rated
GitHub Website

About

Open source supply chain risk analysis via MCP — give your AI agent direct access to CVE records, CISA KEV exploits, maintainer bus-factor scores, and typosquat detection across 7 live intelligence sources.

Details

Author
apifyforge
Downloads
122
Categories
Other

- Typed OSS dependency network graph with 7 node types
- Maintainer bus-factor scoring with abandonment decay model
- CVE blast radius estimation via BFS graph traversal
- CISA KEV cross-referencing with active exploitation factor
- Levenshtein typosquat detection across discovered repository names
- 5-factor weighted supply chain risk scoring (0–1)
- Parallel queries across all 7 data sources (under 30 seconds)
- 5-minute in-process cache per session query

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Open Source Supply Chain Risk
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Add the server to your MCP client (e.g., Claude Desktop, Cursor, Windsurf) using the Streamable HTTP endpoint https://open-source-supply-chain-risk-mcp.apify.actor/mcp with your Apify API token in the Authorization: Bearer header. Start with the generate_oss_risk_report tool on a package or repository name.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "open source supply chain risk": {
            "open-source-supply-chain-risk-mcp": {
                "url": "https://ryanclinton--open-source-supply-chain-risk-mcp.apify.actor/mcp"
            }
        }
    }
}

McpServers

{
    "open-source-supply-chain-risk-mcp": {
        "url": "https://ryanclinton--open-source-supply-chain-risk-mcp.apify.actor/mcp"
    }
}

Open Source Supply Chain Risk MCP

> View on ApifyForge | Use on Apify Store

---

Quick Start

Add to your MCP client (Claude Desktop, Cursor, Windsurf):

{
  "mcpServers": {
    "open-source-supply-chain-risk-mcp": {
      "url": "https://ryanclinton--open-source-supply-chain-risk-mcp.apify.actor/mcp"
    }
  }
}

---

Open source supply chain risk analysis via MCP — give your AI agent direct access to CVE records, CISA KEV exploits, maintainer bus-factor scores, and typosquat detection across 7 live intelligence sources. Built for security engineers, DevSecOps teams, and AI-assisted workflows that need SBOM-grade risk intelligence without leaving their AI client.

This MCP server exposes 8 specialized tools that query GitHub, NVD, CISA KEV, Hacker News, StackExchange, ArXiv, and Censys in parallel — then merge results into a typed OSS dependency network graph. A 5-minute in-process cache means repeated queries on the same package cost nothing extra, making it practical for interactive AI sessions that circle back to the same library during a conversation.

What data can you access?

| Data Point | Source | Example |
|------------|--------|---------|
| 📦 Repository metadata, stars, forks, language | GitHub | pallets/flask, 68k stars, Python |
| 🔒 CVE records with CVSS scores | NVD | CVE-2024-45805, CVSS 9.1, critical |
| 🚨 Actively exploited vulnerabilities | CISA KEV | CVE-2021-44228 (Log4Shell), CISA BOD 22-01 binding |
| 👤 Maintainer identity and bus factor | GitHub | 1 active maintainer, last push 18 months ago |
| ⚠️ Typosquat candidates | GitHub cross-ref | reqeusts vs requests, Levenshtein distance 1 |
| 💬 Supply chain incident discussions | Hacker News | "xz-utils backdoor discovered in 5.6.0" |
| ❓ Developer migration and adoption signals | StackExchange | "migrating from requests to httpx — security concerns" |
| 🔬 Academic security research papers | ArXiv | "Typosquatting in PyPI: a systematic study (2024)" |
| 🌐 Internet-facing infrastructure exposure | Censys | Hosts running vulnerable Log4j versions |
| 📊 Dependency network graph | All sources | Nodes + edges: repo, maintainer, CVE, KEV, discussion |
| 🏥 Community health index | GitHub + HN + SE | Fork/star sentiment, issue response ratio, 0-1 score |
| 📋 SBOM-aware risk report | All 7 sources | Categorized findings with severity + CISA remediation steps |

Why use Open Source Supply Chain Risk MCP?

Manual OSS supply chain audits are expensive and slow. A security engineer reviewing 50 transitive dependencies by hand — cross-referencing NVD, checking GitHub commit history, scanning PyPI for lookalikes — takes 2-3 days. CISA KEV updates daily. ArXiv publishes new vulnerability research weekly. No team keeps pace manually.

This MCP automates the entire process. Your AI agent calls one tool and gets a scored, graph-backed risk assessment from 7 live sources in under 30 seconds. A complete due-diligence workflow on a single package — risk score, blast radius, maintainer health — costs $0.105. Commercial alternatives charge far more.

- Always-current data — queries live APIs at call time; 5-minute TTL cache prevents duplicate charges within a session
- API access — connect from Claude Desktop, Cursor, Windsurf, Cline, or any HTTP MCP client
- Parallel execution — all 7 data sources run concurrently via Promise.all; typical response under 30 seconds
- Monitoring — Apify platform alerts on failed runs; Webhooks notify Slack on critical KEV detections
- Integrations — connect to Zapier, Make, LangChain, LlamaIndex, or direct HTTP calls from any language

Features

- Typed OSS dependency network graph — constructs a graph with 7 node types (repo, maintainer, cve, kev, package, discussion, paper, host) and 6 edge types (depends_on, maintains, affects, discusses, researches, hosts) from merged multi-source data; up to 80 repositories, 60 CVEs, and 40 KEVs per run
- Maintainer bus-factor scoring — counts confirmed maintains edges per repository; bus factor = min(1, maintainerCount / 5); combines with activity recency via a 730-day abandonment decay model using pushedAt/updatedAt metadata
- CVE blast radius estimation — BFS graph traversal up to depth 6 from each CVE/KEV node through all edge types; counts reached repo: prefixed nodes; reports blastRadius as a 0-1 proportion of total tracked repositories
- CISA KEV cross-referencing — KEV nodes receive fixed severity 0.95 and trigger active_exploitation factor weight of 0.9 in the multi-factor risk score; generates CISA BOD 22-01 remediation guidance automatically
- 5-factor weighted supply chain risk scoring — vulnerability exposure (30%), bus factor (20%), active exploitation (20%), popularity/attack surface (15%), community signal (15%); risk levels at thresholds 0.75/0.50/0.25
- Levenshtein typosquat detection — O(n²) pairwise edit distance across all discovered repository short names; flags pairs with distance 1-2 and star ratio below 0.3 as high-suspicion; suspicion formula: (1 - dist/3) 0.5 + (1 - starRatio) 0.5; threshold 0.6 to count as "suspicious"
- Community health indexing — fork-to-star ratio as sentiment proxy, issue-to-star ratio for response quality, and Hacker News/StackExchange discussion volume combined into a single 0-1 health index per repository
- Security research landscape tracking — extracts 13 security topic keywords from ArXiv titles and HN posts; trend score = recent papers (last 90 days) / total papers; surfaces pre-disclosure threat research typically 4-8 weeks before formal CVE assignment
- SBOM-aware report generation — categorizes findings into Known Exploited Vulnerabilities, Critical CVEs (CVSS ≥ 9.0), and Bus Factor Risk (≤ 1 maintainer); sorted by severity with per-finding evidence strings and actionable remediation recommendations
- 5-minute in-process cacheMap-based TTL cache keyed by source:query; multiple tool calls on the same package within a session reuse upstream data and return near-instantly
- Dual MCP transport — SSE transport (/sse + /messages) for legacy clients; Streamable HTTP (/mcp) for modern clients; /health endpoint for readiness probes
- Per-tool source configuration — every tool accepts a sources array; defaults are tuned per tool (all 7 for generate_oss_risk_report; arxiv + hackernews + stackexchange for assess_research_security_landscape)

Use cases for open source supply chain risk

DevSecOps pipeline security gates

A platform engineering team integrates this MCP with their Claude-based code review agent. Before merging a PR that adds a new npm dependency, the agent calls score_supply_chain_risk on the package name. A score above 0.6, or any linked KEV node, blocks the PR until the security lead approves. The entire gate runs in under 30 seconds and costs $0.035 per check — far cheaper than a false-positive incident.

SBOM audit and vendor risk management

A procurement team evaluating a SaaS vendor asks their AI assistant to run generate_oss_risk_report on the vendor's declared key dependencies. The report surfaces CISA KEV-listed vulnerabilities in third-party libraries, single-maintainer repositories at abandonment risk, and SBOM remediation steps aligned with CISA BOD 22-01. Due diligence that previously took a week of manual research completes in one AI conversation.

Incident response triage

When a new critical CVE drops — a Log4Shell-class event — the incident response team calls detect_vulnerability_propagation with the CVE identifier. The blast radius analysis shows which internal repositories depend on affected packages and the propagation depth through the dependency graph. The team immediately knows which systems need emergency patching and in what priority order.

Package vetting before adoption

An engineering lead evaluating three candidate libraries calls assess_maintainer_risk on each. Two show bus factors above 0.4 and recent activity. One has a single maintainer with a last push 18 months ago and abandonment risk of 0.82. The team chooses one of the healthier alternatives. The $0.105 total cost is a fraction of the engineering time saved.

Supply chain attack early warning

A security research team monitoring OSS ecosystems runs weekly calls to assess_research_security_landscape for their technology stack keywords. When a new ArXiv paper on npm supply chain attacks trends, or Hacker News discussion volume spikes around a specific package, they get an alert before formal CVE disclosure. Research papers precede CVE assignment by weeks on average.

Typosquat monitoring for package registries

A registry security team uses detect_typosquat_indicators to scan recently published packages against their catalog of popular packages. The Levenshtein engine finds candidates like colourama (vs colorama) or reqeusts (vs requests) with high suspicion scores. Flagged packages are quarantined for manual review before reaching developer machines.

How to connect this MCP server

1. Get your Apify API token. Sign up at apify.com and copy your token from Account Settings. The free plan includes $5 of monthly credits — enough for roughly 140 tool calls.

2. Add the server to your MCP client. Use the Streamable HTTP endpoint: https://open-source-supply-chain-risk-mcp.apify.actor/mcp. Pass your token in the Authorization: Bearer header. See the client-specific configs in the API section below.

3. Start with generate_oss_risk_report. Call it with the package or repository name you want to assess. The report queries all 7 sources and returns severity-sorted findings in one call.

4. Drill down with focused tools. If the report surfaces a high-risk maintainer, follow up with assess_maintainer_risk. If a KEV is present, call detect_vulnerability_propagation to understand blast radius. Each focused call reuses the cached upstream data from step 3.

MCP tools

| Tool | Price | Default sources | Description |
|------|-------|-----------------|-------------|
| map_dependency_network | $0.035 | github, cve, kev, hackernews | Map OSS dependency graph: nodes, edges, connection counts |
| assess_maintainer_risk | $0.035 | github, cve, kev, hackernews | Bus factor, abandonment risk, last activity date per repo |
| detect_vulnerability_propagation | $0.035 | github, cve, kev, hackernews | CVE/KEV blast radius via BFS through dependency graph |
| analyze_community_health | $0.035 | github, cve, kev, hackernews | Fork/star sentiment, issue response, discussion volume |
| score_supply_chain_risk | $0.035 | github, cve, kev, hackernews, stackexchange | 5-factor weighted risk score with per-factor breakdown |
| detect_typosquat_indicators | $0.035 | github, cve, kev, hackernews | Levenshtein + star ratio pairwise typosquat analysis |
| assess_research_security_landscape | $0.035 | arxiv, hackernews, stackexchange | ArXiv paper trends + community discussion signals |
| generate_oss_risk_report | $0.035 | All 7 sources | Comprehensive SBOM-aware report with findings and recommendations |

Tool parameters

Every tool accepts the same two parameters:

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| query | string | Yes | — | Package name, repository slug, or OSS project to investigate (e.g., log4j, pallets/flask, numpy) |
| sources | array of enum | No | Varies by tool | Data sources to query. Options: github, cve, kev, hackernews, stackexchange, arxiv, censys |

Input examples

Single package risk score (most common):

{
"query": "log4j",
"sources": ["github", "cve", "kev", "hackernews", "stackexchange"]
}

Full SBOM risk report across all sources:

{
"query": "com.fasterxml.jackson.core:jackson-databind",
"sources": ["github", "cve", "kev", "hackernews", "stackexchange", "arxiv", "censys"]
}

Fast typosquat check (GitHub only):

{
"query": "requests",
"sources": ["github"]
}

Research landscape for a technology ecosystem:

{
"query": "npm supply chain",
"sources": ["arxiv", "hackernews", "stackexchange"]
}

Input tips

- Use exact package nameslog4j-core returns more precise CVE matches than generic terms like java logging
- Start with score_supply_chain_risk — it gives a 0-1 score with factor breakdown to decide whether deeper analysis is needed
- Add censys for KEV-confirmed packages only — Censys queries are slower than the other sources; reserve them for packages where active exploitation is already confirmed
- Use arxiv for pre-disclosure threat hunting — research papers on specific ecosystems (npm, PyPI, Maven) often appear 4-8 weeks before formal CVE assignment
- Structure AI sessions to group calls on the same package — the 5-minute cache means a second tool call on the same query within a session reuses upstream data and costs only the $0.035 event charge

Output examples

score_supply_chain_risk response

{
  "assessments": [
    {
      "entity": "apache/log4j",
      "riskScore": 0.8125,
      "riskLevel": "critical",
      "factors": [
        { "factor": "vulnerability_exposure", "weight": 0.30, "score": 1.0 },
        { "factor": "bus_factor",             "weight": 0.20, "score": 0.6 },
        { "factor": "popularity",             "weight": 0.15, "score": 0.12 },
        { "factor": "active_exploitation",    "weight": 0.20, "score": 0.9 },
        { "factor": "community_signal",       "weight": 0.15, "score": 0.3 }
      ]
    },
    {
      "entity": "apache/log4j-extras",
      "riskScore": 0.4830,
      "riskLevel": "high",
      "factors": [
        { "factor": "vulnerability_exposure", "weight": 0.30, "score": 0.4 },
        { "factor": "bus_factor",             "weight": 0.20, "score": 0.8 },
        { "factor": "popularity",             "weight": 0.15, "score": 0.35 },
        { "factor": "active_exploitation",    "weight": 0.20, "score": 0.1 },
        { "factor": "community_signal",       "weight": 0.15, "score": 0.7 }
      ]
    }
  ],
  "avgRisk": 0.6478,
  "criticalCount": 1
}

generate_oss_risk_report response

{
  "overallRisk": "critical",
  "reposScreened": 14,
  "findings": [
    {
      "category": "Known Exploited Vulnerabilities",
      "finding": "2 CISA KEV-listed vulnerability(ies) in OSS dependencies",
      "severity": "critical",
      "evidence": "CVE-2021-44228, CVE-2021-45046",
      "recommendation": "Immediate dependency update or mitigation per CISA BOD 22-01"
    },
    {
      "category": "Critical CVEs",
      "finding": "3 critical vulnerability(ies) affecting tracked repositories",
      "severity": "critical",
      "evidence": "CVE-2021-44228, CVE-2022-23302, CVE-2019-17571",
      "recommendation": "Emergency patching and dependency lockfile review"
    },
    {
      "category": "Bus Factor Risk",
      "finding": "5 repo(s) with single-maintainer bus factor",
      "severity": "high",
      "evidence": "log4j-extras, log4j-scan, log4j-detector",
      "recommendation": "Identify backup maintainers or fork critical single-maintainer dependencies"
    }
  ],
  "recommendations": [
    "SBOM audit and KEV remediation",
    "Automated dependency scanning in CI/CD",
    "Maintainer diversity programme for critical dependencies"
  ]
}

detect_typosquat_indicators response

{
  "indicators": [
    {
      "package": "reqeusts",
      "similarTo": "requests",
      "editDistance": 1,
      "starRatio": 0.0002,
      "suspicionScore": 0.8332
    },
    {
      "package": "colourama",
      "similarTo": "colorama",
      "editDistance": 2,
      "starRatio": 0.0041,
      "suspicionScore": 0.6620
    }
  ],
  "totalChecked": 28,
  "suspiciousCount": 2,
  "avgSuspicion": 0.4812
}

detect_vulnerability_propagation response

{
  "propagations": [
    {
      "cve": "CVE-2021-44228",
      "severity": 1.0,
      "affectedRepos": 11,
      "propagationDepth": 4,
      "blastRadius": 0.7857
    },
    {
      "cve": "CVE-2022-23302",
      "severity": 0.88,
      "affectedRepos": 3,
      "propagationDepth": 2,
      "blastRadius": 0.2143
    }
  ],
  "totalVulns": 5,
  "criticalCount": 2,
  "avgBlastRadius": 0.3820
}

Output fields

score_supply_chain_risk

| Field | Type | Description |
|-------|------|-------------|
| assessments[].entity | string | Repository name (max 50 chars) |
| assessments[].riskScore | number | Weighted composite risk score, 0-1 |
| assessments[].riskLevel | string | low / medium / high / critical |
| assessments[].factors[].factor | string | Factor name: vulnerability_exposure, bus_factor, popularity, active_exploitation, community_signal |
| assessments[].factors[].weight | number | Factor weight in composite score |
| assessments[].factors[].score | number | Factor raw score, 0-1 |
| avgRisk | number | Mean risk score across all assessed repositories |
| criticalCount | number | Count of repositories at critical risk level |

generate_oss_risk_report

| Field | Type | Description |
|-------|------|-------------|
| findings[].category | string | Finding category (e.g., Known Exploited Vulnerabilities) |
| findings[].finding | string | Human-readable finding summary |
| findings[].severity | string | low / medium / high / critical |
| findings[].evidence | string | Supporting CVE IDs or repository names |
| findings[].recommendation | string | Actionable remediation step |
| overallRisk | string | Aggregate report risk level |
| reposScreened | number | Count of repositories analyzed |
| recommendations | array | Top-level remediation recommendations list |

detect_typosquat_indicators

| Field | Type | Description |
|-------|------|-------------|
| indicators[].package | string | The suspected typosquat package name |
| indicators[].similarTo | string | The popular package it resembles |
| indicators[].editDistance | number | Levenshtein edit distance (1 or 2) |
| indicators[].starRatio | number | stars(suspect) / stars(popular), 0-1 |
| indicators[].suspicionScore | number | Combined suspicion score, 0-1 |
| totalChecked | number | Total repository names compared |
| suspiciousCount | number | Count with suspicionScore above 0.6 |
| avgSuspicion | number | Mean suspicion score across all indicators |

detect_vulnerability_propagation

| Field | Type | Description |
|-------|------|-------------|
| propagations[].cve | string | CVE or KEV identifier |
| propagations[].severity | number | CVSS-derived severity, 0-1 |
| propagations[].affectedRepos | number | Downstream repos reachable via BFS |
| propagations[].propagationDepth | number | BFS depth reached (max 6) |
| propagations[].blastRadius | number | affectedRepos / totalRepos, 0-1 |
| totalVulns | number | Total CVE + KEV nodes analyzed |
| criticalCount | number | Propagations with severity above 0.8 |
| avgBlastRadius | number | Mean blast radius across all vulnerabilities |

assess_maintainer_risk

| Field | Type | Description |
|-------|------|-------------|
| risks[].repo | string | Repository name |
| risks[].maintainerCount | number | Confirmed maintainer relationships |
| risks[].busFactor | number | min(1, maintainerCount / 5), 0-1 |
| risks[].lastActivity | string | ISO date of last push (YYYY-MM-DD) |
| risks[].abandonmentRisk | number | Combined bus factor and recency score, 0-1 |
| totalRepos | number | Total repositories assessed |
| highRiskCount | number | Repos with abandonmentRisk above 0.6 |
| avgBusFactor | number | Mean bus factor across all repos |

map_dependency_network

| Field | Type | Description |
|-------|------|-------------|
| entries[].entity | string | Node name (repo, CVE, maintainer, etc.) |
| entries[].type | string | Node type: repo, maintainer, cve, kev, package, discussion |
| entries[].connections | number | Total edge count (in + out) |
| entries[].stars | number | Star count (repos only; 0 for other types) |
| entries[].severity | number | CVSS severity 0-1 (CVE/KEV nodes only) |
| totalEntities | number | Total nodes in the network |
| totalEdges | number | Total edges in the network |
| avgConnections | number | Mean edge degree across all nodes |

analyze_community_health

| Field | Type | Description |
|-------|------|-------------|
| assessments[].repo | string | Repository name |
| assessments[].discussionVolume | number | Count of Hacker News/StackExchange discussions linked to this repo |
| assessments[].sentimentScore | number | Fork-to-star ratio proxy, 0-1 |
| assessments[].issueResponseTime | number | Inverse issue-to-star ratio proxy, 0-1 |
| assessments[].healthIndex | number | Composite health score, 0-1 |
| totalAssessed | number | Total repositories assessed |
| unhealthyCount | number | Repos with healthIndex below 0.3 |
| avgHealth | number | Mean health index across all repos |

assess_research_security_landscape

| Field | Type | Description |
|-------|------|-------------|
| topics[].topic | string | Security topic keyword |
| topics[].paperCount | number | Total papers and discussions mentioning this topic |
| topics[].recentActivity | number | Papers/discussions published in the last 90 days |
| topics[].trendScore | number | recentActivity / paperCount, 0-1 |
| topics[].keyFindings | array | Up to 3 representative paper/discussion titles |
| totalPapers | number | Total papers and discussions analyzed |
| trendingCount | number | Topics with trendScore above 0.5 |
| avgTrend | number | Mean trend score across all topics |

How much does it cost to run open source supply chain risk analysis?

This MCP uses pay-per-event pricing — you pay $0.035 per tool call. Platform compute costs are included.

| Scenario | Tool calls | Cost per call | Total cost |
|----------|-----------|---------------|------------|
| Quick test (single package risk score) | 1 | $0.035 | $0.035 |
| Full risk report (all 7 sources) | 1 | $0.035 | $0.035 |
| Complete due diligence (score + maintainer + blast radius) | 3 | $0.035 | $0.105 |
| Daily monitoring of 20 packages | 20 | $0.035 | $0.70 |
| Weekly full audit of 100 dependencies | 100 | $0.035 | $3.50 |

You can set a maximum spending limit per run to control costs. The actor stops when your budget is reached, preventing unexpected charges during long AI sessions.

Compare this to Snyk at $25-98/month or Mend (WhiteSource) at $10k+/year for enterprise teams — most users running OSS supply chain checks with this MCP spend under $5/month with no subscription commitment. Apify's free tier includes $5 of monthly credits, covering roughly 140 tool calls per month.

How to connect using the API

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "open-source-supply-chain-risk": {
      "url": "https://open-source-supply-chain-risk-mcp.apify.actor/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}

Python

import httpx, json

MCP_URL = "https://open-source-supply-chain-risk-mcp.apify.actor/mcp"
TOKEN = "YOUR_APIFY_TOKEN"

payload = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "generate_oss_risk_report",
"arguments": {
"query": "log4j",
"sources": ["github", "cve", "kev", "hackernews", "stackexchange", "arxiv", "censys"]
}
},
"id": 1
}

response = httpx.post(
MCP_URL,
json=payload,
headers={"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"},
timeout=60
)

result = response.json()
report = json.loads(result["result"]["content"][0]["text"])

print(f"Overall risk: {report['overallRisk']}")
print(f"Repos screened: {report['reposScreened']}")
for finding in report["findings"]:
print(f"[{finding['severity'].upper()}] {finding['category']}: {finding['finding']}")

JavaScript

const MCP_URL = "https://open-source-supply-chain-risk-mcp.apify.actor/mcp";
const TOKEN   = "YOUR_APIFY_TOKEN";

const response = await fetch(MCP_URL, {
method: "POST",
headers: {
"Authorization": Bearer ${TOKEN},
"Content-Type": "application/json"
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "score_supply_chain_risk",
arguments: {
query: "axios",
sources: ["github", "cve", "kev", "hackernews", "stackexchange"]
}
},
id: 1
})
});

const data = await response.json();
const result = JSON.parse(data.result.content[0].text);

for (const assessment of result.assessments) {
console.log(${assessment.entity}: ${assessment.riskLevel} (${assessment.riskScore.toFixed(3)}));
}
console.log(Critical packages: ${result.criticalCount});

cURL

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.