Vulnerability intelligence · AI agent · MCP
Vulnerability Exposure Analyzer
An AI agent that checks IP addresses, domains, CVEs and software versions for confirmed vulnerabilities and exposure across public threat-intelligence sources, then writes an evidence-based security assessment. By default, Cohere's Command A+ model decides which tools to run (Command A and Command A Reasoning can also be chosen), every finding is tied back to the source that produced it, and code checks the report against the data. The same checks are available as an MCP server for Claude, Cursor and VS Code.
- Python
- Streamlit
- Cohere Command A+
- MCP
- NVD
- CISA KEV
- FIRST EPSS
- OSV.dev
- Shodan
- VirusTotal
- AbuseIPDB
Screenshots
Screenshots from local runs against scanme.nmap.org (a server the Nmap project provides for testing security tools), PHP 8.3.10 and OpenSSH 8.9p1 Ubuntu-3ubuntu0.6, and of the MCP server in Claude. Click a screenshot to open it full size. Use the arrows, or select the gallery and press ← →.
How it works
- Classify the input as an IP, domain, CVE, software version or distro package build (such as
OpenSSH 8.9p1 Ubuntu-3ubuntu0.6), rejecting anything invalid or non-public. - Baseline lookups in code: for IPs and domains, DNS, Shodan (or its free InternetDB), VirusTotal, AbuseIPDB, the network owner, Spamhaus DROP, GreyNoise and SANS ISC run before the AI starts, so core coverage never depends on the model.
- Investigate: the agent chooses further tools (NVD version check, Ubuntu and Debian patch check, NVD lookup, CISA KEV, keyword search, subdomains) within a per-run budget. Duplicate calls are served from cache.
- Verify versions: a CVE counts as confirmed only when NVD's affected-version ranges include the exact version, re-checked locally. GitHub and PyPA advisories via OSV.dev cover packages NVD hasn't analysed yet, and for Ubuntu and Debian packages the distro's own data overrides NVD for CVEs it has already fixed.
- Report: code builds the Key facts, the severity chart and the CVE table. The model writes the summary, findings, details (Confirmed, Related, Needs Review, Ruled Out), recommendations and limitations, citing a source for every claim.
- Check: code compares the report with the data and warns about anything it doesn't support: CVE IDs no lookup returned (looked up in NVD to tell a real one from a made-up one), misquoted fix versions, unconfirmed or distro-fixed CVEs filed as confirmed, and exploit claims the data doesn't back.
Security decisions
- Per-session API keys. Keys come only from what each visitor types into the app. They stay in that browser session's server memory, never reach environment variables or disk, and are never shared between visitors.
- Safe rendering. Reports contain third-party text such as service banners, so raw HTML is never rendered and remaining
[,]and<are escaped. The only links are ones code builds from CVE IDs to NVD; URLs from third-party data are shown as plain text, and remote images that could leak a viewer's IP can't survive. - Prompt-injection hardening. Tool output reaches the model as data documents, with instruction-like text in banners, hostnames and registry records removed first. Results are size-capped, and the model can't change server-side limits or look up an IP the evidence never mentioned.
- Safe outbound requests. Lookups use HTTPS only, follow redirects by hand and refuse any that lead to private addresses, drop API keys when a redirect changes host, and cap response size.
- Input validation. Private, loopback, link-local and CGNAT addresses are rejected, and CVE IDs, domains and IPs are validated before any API call.
- No leaks in logs. Error messages are scrubbed of API key values, stack traces are hidden from visitors, usage stats are off, and analyzed targets aren't written to server logs.
- Facts separate from AI text. The Key facts, chart and CVE table come straight from the data, and the report check marks anything in the AI's text that the data doesn't support.