{
  "markdown": "# dugganusa-cli\n\n**1.5M+ IOCs. ~38M+ documents. Two binaries. One install. The MCP we'd audit.**\n\n## What's New (v1.5.1)\n\n- **Supply-chain scanning leveled up.** The corpus now ingests OSV malicious-package feeds for **both npm and PyPI** — named-malicious packages, zero-heuristic, daily — alongside daily GitHub Hunt detections of malware-staging repos and install-time execution signatures. Pipe a lockfile or `--file package.json` and known-bad packages surface next to network IOCs. This is the CI angle: catch a poisoned dependency before it ships.\n- **Four live, no-auth, deploy-durable validation endpoints** now prove feed quality:\n  - **Novelty** — [feed-uniqueness](https://analytics.dugganusa.com/api/v1/feed-uniqueness): ~75%+ of what we publish ThreatFox doesn't have (measured live).\n  - **Timeliness** — [kev-lead](https://analytics.dugganusa.com/api/v1/kev-lead): a live ledger of how far ahead of CISA KEV we flagged each exploited CVE — positive leads, same-day, and no-receipt all shown honestly, with receipts.\n  - **Accuracy** — [spamhaus-validation](https://analytics.dugganusa.com/api/v1/spamhaus-validation): Spamhaus independently corroborates our first-hand contributions.\n  - **Liveness** — [feed-efficacy](https://analytics.dugganusa.com/api/v1/feed-efficacy): opt-in consumer reports of when our indicators actually fire on real traffic — proof the feed is operationally live, not just large.\n\n```bash\n# Scanner — block bad IOCs in your stack\nnpx dugganusa-cli 185.39.19.176\n\n# MCP server — wire DugganUSA into Claude Desktop / Cursor / Claude Code\nnpx -y -p dugganusa-cli dugganusa-mcp\n```\n\nA two-person Minnesota LLC. A Bloom filter for novelty checks. Meilisearch cross-index correlation. A github-hunt cron that runs at 08:15 UTC every day.\n\nThat's the stack that named **TeamPCP** 45 days before CISA added LiteLLM CVE-2026-42208 to KEV. That named **Handala** 28 days before they exfiltrated 6 petabytes from Dubai. That named **NGINX-UI** as actively exploited 20 days before the same agency caught up.\n\nThis is the CLI that puts the same corpus in your terminal.\n\n> **Bin rename (since v1.3.0):** the scanner bin was `dugganusa-lookup` in v1.2.0. It is now `dugganusa-cli`. The old `dugganusa-lookup` package is dead — use `dugganusa-cli`. The MCP bin (`dugganusa-mcp`) is unchanged. Update any pinned scripts.\n\n## Install\n\n```bash\n# Run without installing\nnpx dugganusa-cli 185.39.19.176\nnpx -y -p dugganusa-cli dugganusa-mcp --help\n\n# Or install globally — both bins on PATH\nnpm install -g dugganusa-cli\n```\n\n## Scanner usage\n\n```bash\n# Single lookup\ndugganusa-cli 185.39.19.176\ndugganusa-cli welcome.supp0v3.com\ndugganusa-cli CVE-2026-21643\n\n# Multiple indicators\ndugganusa-cli 185.39.19.176 welcome.supp0v3.com CVE-2026-21643\n\n# Scan a file for IOCs\ndugganusa-cli --file config.js\ndugganusa-cli --file terraform/main.tf\n\n# Pipe stdin (works with any tool)\ncat firewall.log | dugganusa-cli --stdin\ngrep -r \"http\" src/ | dugganusa-cli --stdin\n\n# Batch lookup (one IOC per line)\ndugganusa-cli --batch iocs.txt\n\n# AIPM audit (AI presence + brand exposure)\ndugganusa-cli --aipm crowdstrike.com\n\n# Output formats\ndugganusa-cli --format json 185.39.19.176\ndugganusa-cli --format markdown --file report.md\ndugganusa-cli --format table 185.39.19.176  # default\n\n# Only show matches (suppress clean results)\ndugganusa-cli --file app.js --quiet\n\n# With API key (higher rate limits)\ndugganusa-cli --key dugusa_YOUR_KEY 185.39.19.176\n# Or set env var\nexport DUGGANUSA_API_KEY=dugusa_YOUR_KEY\n```\n\n## Output\n\n```\n  !!    12  185.39.19.176                                 IOC: Cobalt Strike C2 (via SSLBL) | Blocked 47x | 3 OTX pulse(s)\n  OK     0  8.8.8.8                                       clean\n\n  1 threat indicator(s) found in 2 checked.\n  Full enrichment: https://analytics.dugganusa.com/api/v1/search/correlate?q=<indicator>\n  Free API key: https://analytics.dugganusa.com/stix/register\n```\n\n## Exit codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | All clean — no threat indicators found |\n| 1 | Threat indicator(s) found — use in CI to fail builds |\n| 2 | Error (network, invalid input, etc.) |\n\nExit 1 on match is the whole point. Block deployments containing known-bad indicators before they ship.\n\n## CI/CD examples\n\n```yaml\n# GitHub Actions — block deploys containing live IOCs\n- name: Scan for threat indicators\n  run: npx dugganusa-cli --file config/production.json --quiet\n```\n\n```bash\n# Shell pipeline\nif npx dugganusa-cli --file deploy.conf --quiet; then\n  echo \"Clean — deploying\"\n  ./deploy.sh\nelse\n  echo \"BLOCKED — threat indicators found\"\n  exit 1\nfi\n```\n\n## API key\n\nThe STIX feed is API-key-enforced: anonymous requests get `401`, an unregistered Bearer gets `429`. The **free tier is a free *registered* key** — not anonymous. Register here: [analytics.dugganusa.com/stix/register](https://analytics.dugganusa.com/stix/register)\n\nFree tier: 500 queries/day. Set the key via `--key` flag or `DUGGANUSA_API_KEY` env var.\n\n## What's in the index\n\n1.5M+ indicators sourced from 15 external feed sources (OTX, abuse.ch SSLBL, URLhaus, Spamhaus, CISA KEV, OSV malicious-package feeds for npm + PyPI, and more), plus DugganUSA original research, our exploit harvester, daily GitHub Hunt detections, and our edge honeypots. Cross-correlated across 65 indexes covering ~38M+ documents. The same feed pulled daily by 275+ consumers in 46 countries — including Microsoft, AT&T, and Starlink.\n\nYou are getting the receipts the big platforms get. Same corpus, your terminal.\n\n---\n\n## MCP server (dugganusa-mcp)\n\nLocal STDIO MCP server. Wire it into any MCP client, your AI assistant gets the DugganUSA threat-intel corpus as read-only tools.\n\nThis is the MCP we wrote because the ones we audited were dangerous.\n\n### Three tools, that's it\n\n- **search** — full-text across IOCs, pulses, blog, adversaries, CISA KEV, Epstein files, and 40+ indexes. 38M+ documents.\n- **enrich-ioc** — IP enrichment: country, ASN, threat type, malware family, cross-index correlations.\n- **stix-feed-summary** — index stats + pointers to our STIX 2.1 / TAXII 2.1 feeds.\n\nNo tools that write. No tools that touch your filesystem. No tools that exec. Read-only, all the way down.\n\n### Wire it into Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"dugganusa\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"dugganusa-cli\", \"dugganusa-mcp\"],\n      \"env\": {\n        \"DUGGANUSA_API_KEY\": \"your-registered-key\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. Three tools appear in the picker. Same pattern works for Cursor, Windsurf, Claude Code, or any MCP client that speaks STDIO.\n\n### Local policy enforcement: `--dredd-gate`\n\n```bash\ndugganusa-mcp --dredd-gate\n```\n\nPre-flights every tool call: validates tool name, required arguments, logs allowed calls to stderr. Read the verdict function in `mcp/lib/serve.js` (function `dreddVerdict`). This is the hook where you wire stricter policy: deny lists, IP allow-lists, per-tool rate limits, or a remote dredd verdict endpoint.\n\nDefault is off. Turn it on if your environment is anything more than your laptop.\n\n### Why this MCP exists\n\nOn April 20, 2026 we published **\"Anthropic's MCP Has a Critical RCE Vulnerability. We Don't Use MCP. Here's Why.\"** ([dugganusa.com](https://www.dugganusa.com/post/anthropic-s-mcp-has-a-critical-rce-vulnerability-we-don-t-use-mcp-here-s-why))\n\nWe named the affected vendors three weeks before they hit the headlines: **MCP Inspector, LibreChat, Windsurf, LiteLLM, Langchain-Chatchat, NGINX-UI**. The architectural problem was that MCP trusts the transport — STDIO gives an AI model a pipe to execute commands on the host, and the path from \"tool definition\" to \"command execution\" had no gate.\n\nWe meant it. We still don't trust other people's MCPs without auditing them first. The coherent answer is to ship the MCP we'd audit:\n\n- Read-only tool surface only — no write, no exec\n- No third-party MCP SDK dependency (every line is in this repo)\n- Customer owns the binary, runs it locally, sees every request before it leaves the machine\n- Optional `--dredd-gate` local policy hook\n- Zero npm runtime dependencies\n\nThis is that MCP.\n\n### Auditing the binary\n\nRead the bytes you're running:\n\n```bash\n# install\nnpm install -g dugganusa-cli\n\n# audit\ngrep -rnE 'child_process|require\\(.*shell|require\\(.*child|exec\\(|spawn\\(|eval\\(' \"$(npm root -g)/dugganusa-cli\"\n```\n\nShould return nothing.\n\nSource layout under `mcp/`:\n\n- `mcp/serve.js` — bin entry, argv parser (~45 LOC)\n- `mcp/lib/serve.js` — JSON-RPC 2.0 over STDIO (~125 LOC)\n- `mcp/lib/tools.js` — three tool schemas + handlers (~80 LOC)\n- `mcp/lib/upstream.js` — HTTPS request to analytics.dugganusa.com (~40 LOC)\n\nTests:\n\n```bash\nnpm run test:mcp\n```\n\n10 tests covering the dispatch surface and live network calls. Every release runs them in CI before publishing.\n\n### Provenance\n\nReleases ≥ v1.3.0 are published via npm Trusted Publishing (GitHub Actions OIDC) with `--provenance`. Verify:\n\n```bash\nnpm audit signatures dugganusa-cli\n```\n\nYou get signed attestation that the published bytes came from a specific commit in a specific GitHub workflow run. No long-lived tokens involved.\n\n---\n\n## Receipts\n\nThe platform behind this CLI runs left-of-boom on adversary infrastructure:\n\n| Adversary | We named them | Vendor / agency caught up | Days early |\n|---|---|---|---|\n| **TeamPCP** (Trivy / LiteLLM / Telnyx supply chain) | Mar 24, 2026 | CISA KEV adds CVE-2026-42208 May 8 | **45 days** |\n| **NGINX-UI** (actively exploited MCP) | Apr 20, 2026 | CISA KEV adds May 8 | **20 days** |\n| **Lynx ransomware** vs ACN Healthcare | indexed | Microsoft published | **43 days** |\n| **Handala** (Iran/MOIS-aligned) vs Dubai | indexed | Disclosure | **28 days** |\n| **Medtronic** vish chain | flagged | Microsoft published | **39 days** |\n\nFive entries in the quantified ledger as of May 10, 2026. The pattern is not luck. The pattern is the methodology.\n\nRead the math: [dugganusa.com/post/45-days-early-on-litellm-20-days-early-on-nginx-ui-cisa-caught-up-today-1](https://www.dugganusa.com/post/45-days-early-on-litellm-20-days-early-on-nginx-ui-cisa-caught-up-today-1)\n\n---\n\n## Part of the DugganUSA ecosystem\n\n- [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=DugganUSALLC.dugganusa-threat-intel)\n- [STIX Feed](https://analytics.dugganusa.com/api/v1/stix-feed) — pulled daily by 275+ consumers in 46 countries\n- [AIPM Security](https://aipmsec.com) — AI presence audits\n- [dugganusa.com](https://www.dugganusa.com) — 1,655+ blog posts, methodology, receipts\n\n## License\n\nMIT — [DugganUSA LLC](https://www.dugganusa.com), Minneapolis, MN.\n\nFree tier means free. Audit it. Fork it. Tell us when we got something wrong.\n\n---\n\n<!-- DUGGANUSA-FAMILY-FOOTER-V1 -->\n## DugganUSA Defender Family\n\nSame threat corpus, surfaced wherever you live. Open source, MIT licensed, receipts on every repo.\n\n| Plugin | Surface |\n|---|---|\n| [dugganusa-scanner-core](https://github.com/pduggusa/dugganusa-scanner-core) | Core IOC scanning engine |\n| [dugganusa-vscode](https://github.com/pduggusa/dugganusa-vscode) | VS Code extension |\n| [dugganusa-splunk](https://github.com/pduggusa/dugganusa-splunk) | Splunk Technology Add-on |\n| [dugganusa-slack](https://github.com/pduggusa/dugganusa-slack) | Slack bot |\n| [dugganusa-raycast](https://github.com/pduggusa/dugganusa-raycast) | Raycast extension |\n| [dugganusa-sentinel](https://github.com/pduggusa/dugganusa-sentinel) | Microsoft Sentinel TAXII connector |\n| [dugganusa-obsidian](https://github.com/pduggusa/dugganusa-obsidian) | Obsidian plugin |\n| [dugganusa-nvim](https://github.com/pduggusa/dugganusa-nvim) | Neovim plugin |\n| [dugganusa-elastic](https://github.com/pduggusa/dugganusa-elastic) | Elastic / OpenSearch integration |\n| [dugganusa-edge-shield](https://github.com/pduggusa/dugganusa-edge-shield) | Cloudflare Worker |\n| **dugganusa-cli** _(this repo)_ | CLI scanner + local STDIO MCP server |\n| [dugganusa-chrome](https://github.com/pduggusa/dugganusa-chrome) | Chrome extension |\n| [dugganusa-action](https://github.com/pduggusa/dugganusa-action) | GitHub Action |\n| [dredd-mcp](https://github.com/pduggusa/dredd-mcp) | Pre-flight MCP security judge |\n\nBacked by the live DugganUSA threat intel platform: [analytics.dugganusa.com](https://analytics.dugganusa.com).\n\n_Jeevesus saves. Dredd judges._\n",
  "bytes": 12426,
  "sha": "e28f49f8d91d4026c87a571b20246907a959aa3e3405b9df51f0cad7922f5eb8",
  "repo_slug": "pduggusa/dugganusa-cli",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_pduggusa_dugganusa_cli_a64159d7/readme"
}