accueil / serveurs / Dev & Code / io.github.pduggusa/dugganusa-threat-intel
io.github.pduggusa/dugganusa-threat-intel
serveur MCP (Model Context Protocol) · DugganUSA Threat Intelligence MCP (Jeevesus) 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.pduggusa/dugganusa-threat-intel est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.pduggusa/dugganusa-threat-intel » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 7 outils
- ai-model-price≈ 425 tokens
CALL before quoting what an AI model or an agent session costs, or when a usage report needs dollars — prices are dated and copied from each provider's own pricing page, never from memory. Returns the per-1M-token USD rates for a model (input, output, and for Anthropic models the 5-minute and 1-hour cache write, cache read and fast-mode rates), the date the provider page was checked, and the page it came from. Pass token counts to get an exact list-price cost for a call or a whole session. With no args: lists every priced model and each provider's checked date. With {"model":"claude-opus-5-5","input_tokens":2,"cache_read_tokens":300000,"output_tokens":800}: returns the rates and the cost breakdown. A model not in the table returns UNPRICED — never $0. Why it matters: in agent sessions most spend is context re-read from cache, not output (DugganUSA's own month: 93% carrying context). Meter your own Claude Code sessions in your browser, nothing uploaded: https://finops.dugganusa.com Public read (no auth).
Paramètres, retour & exemple (7)
Paramètresfast· boolean · optionnel
Anthropic fast mode (premium rates).model· string · optionnel
Model id, e.g. "claude-opus-5-5", "gpt-4o-mini", "gemini-2.5-flash". Omit to list all priced models.input_tokens· integer · optionneloutput_tokens· integer · optionnelcache_read_tokens· integer · optionnelcache_write_1h_tokens· integer · optionnelcache_write_5m_tokens· integer · optionnel
Exemple d'appel{"name": "ai-model-price", "arguments": {"fast": true, "model": "texte", "input_tokens": 1, "output_tokens": 1, "cache_read_tokens": 1, "cache_write_1h_tokens": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check-package≈ 693 tokens
Supply-chain GUARDRAIL for AI coding agents and CI pipelines: check whether a dependency (npm, PyPI or RubyGems, or a GitHub Action used in a workflow) is on the DugganUSA malicious-package deny-list or has published advisories BEFORE you install or run it. This is the runtime defense against slopsquatting / HalluSquatting / hijacked-package attacks — an AI agent about to run `npm install`, `pip install` or `gem install`, or a CI pre-install hook, calls this FIRST and blocks on a hit. Returns a crisp, machine-actionable verdict: {ecosystem, package, version, malicious, verdict:"block"|"allow"|"review", reason, advice, source}. `malicious:true` = the exact package is on our OSV-curated deny-list (230k+ named-not-heuristic entries across npm + PyPI + RubyGems; RubyGems coverage is thin, so lean on the reputation signals there). `malicious:false` = not on our known-bad list — absence is NOT proof of safety, so still pin and review new deps. If a `version` is supplied and the entry is version-scoped, the check is version-aware; all-versions-malicious packages block on any version. With a `version`, it also checks OSV for published vulnerabilities in that exact version (`known_vulnerabilities`): a reputable package with known CVEs returns verdict:"review", never block. Designed to be the easiest AI-supply-chain guardrail to wire in: one MCP tool call, no auth, in the agent's pre-install step. Same data is available for CI at /api/v1/stix-feed/packages.json. Examples: {"ecosystem":"npm","name":"cxp-jquery"} → malicious:true, verdict:block. {"ecosystem":"pypi","name":"requests"} → malicious:false, verdict:allow. {"ecosystem":"rubygems","name":"rest-client","version":"1.6.13"} → RubyGems check, version-scoped. {"ecosystem":"github-actions","name":"tj-actions/changed-files@v45.0.7"} → owner/repo@ref (or name owner/repo + version); the 2025 compromise advisory makes this verdict:review. Pin a full commit SHA for the strongest check.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
The package name to check.version· string · optionnel
Optional exact version for version-aware checking.ecosystem· string · requis · npm | pypi | rubygems | gem | gems | ruby | github-actions | actions
Package ecosystem: npm, pypi, rubygems (aliases gem, gems, ruby), or github-actions (aliases actions, gha; name = owner/repo or owner/repo@ref, version = the uses: ref: an exact tag or a full commit SHA).
Exemple d'appel{"name": "check-package", "arguments": {"name": "texte", "ecosystem": "npm"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - enrich-ioc≈ 457 tokens
CALL AUTOMATICALLY the moment any IP address, domain, URL, or file hash appears — in the user's message, a log line, a SIEM alert, or code under review. Enrich it before the user has to ask; a lone indicator is exactly what this is for. Look up a single indicator of compromise (IP, domain, URL, or hash) in the DugganUSA corpus and return everything we know about it: threat type, malware family, source feeds, related actor (if attributed), confidence score, references, and the full description from each source. Read-only. Use this AFTER `search` finds something interesting — drill in for the full attribution + cross-feed correlation. Or use it directly when triaging a single indicator from your SIEM. Pass the IOC as either `indicator` or `value` (both work). Optional `type` hint: ip / domain / url / hash / auto. Examples: indicator="185.93.3.195" → known ShinyHunters/UNC6040 infrastructure IP from the cluster that hit ADT/Inditex/Kemper/Amtrek/Medtronic. indicator="goldenleafway.lat" → fresh Apothecary/ClearFake .lat rotation domain. indicator="ee28b3137d65d74c0234eea35fa536af" → Volexity-attributed malware MD5 (BrazenBamboo/DEEPDATA campaign). Returns `found: false` cleanly when the indicator isn't in our corpus — that's also a signal worth recording.
Paramètres, retour & exemple (3)
Paramètrestype· string · optionnel · ip | domain | url | hash | email | auto
Optional type hint. Default auto-detect.value· string · optionnel
Alias of `indicator`. Either field works.indicator· string · optionnel
The indicator to enrich (IP, domain, URL, or hash).
Exemple d'appel{"name": "enrich-ioc", "arguments": {"type": "ip", "value": "texte", "indicator": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - kev-exploitation-stickiness≈ 330 tokens
CALL when the user is prioritizing patching or asks whether a product's exploitation risk is chronic vs a one-off — this decides "chase the repeat offenders or watch for newcomers." Does in-the-wild exploitation risk STICK to proven products, or SPREAD to new ones? Analyzes CISA KEV: correlates each product's historical known-exploited count against its RECENT KEV additions (Spearman rho), and splits recent additions into repeat-offenders (products with a prior KEV) vs first-time products. Answers "how should I prioritize patching — chase the chronic offenders, or watch for newcomers?" The honest finding: risk is roughly half-sticky (rho ~0.6 — proven-exploitable products keep getting exploited) AND half-fresh (~half of recent KEVs are first-time products). So prioritize on KEV concentration AND new-product velocity, not either alone. 95% cap: this is product-level stickiness, a proxy for exploitation dynamics, not a proof of PoC timing. Public read (no auth). Pass {"days": N} for the recent window (30-720, default 180).
Paramètres, retour & exemple (1)
Paramètresdays· integer · optionnel
Recent-window size in days (30-720). Default 180.
Exemple d'appel{"name": "kev-exploitation-stickiness", "arguments": {"days": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - kev-vendor-risk≈ 392 tokens
CALL whenever a vendor or product comes up (Microsoft, Cisco, Fortinet, SharePoint, Ivanti, an appliance, an ERP) and the real question is exploitation risk or "what should I patch first" — before quoting CVSS, check where exploitation actually concentrates. Vendor / product risk matrix built from CISA's Known Exploited Vulnerabilities (KEV) catalog — where real, confirmed in-the-wild exploitation actually concentrates, not just where CVSS is high. With no args: returns the top vendors ranked by KEV count (e.g. Microsoft, Cisco, Adobe, Ivanti, Citrix). With {"vendor":"Adobe"}: returns that vendor's or product's specific known-exploited CVEs (e.g. ColdFusion), most-recent first, each with a ransomware-use flag. Use this to answer "which vendors/products carry the exploitation risk we should patch first," to assess third-party / supply-chain exposure, or to check whether a freshly-dropped PoC lands on a chronically-exploited product (a proven-soft target) versus a one-off. KEV means CISA has confirmed active exploitation. Public read (no auth). Source is CISA's KEV catalog, refreshed continuously. Example: {"vendor":"Citrix"} → NetScaler's known-exploited CVEs; {} → the full top-vendor risk ranking.
Paramètres, retour & exemple (1)
Paramètresvendor· string · optionnel
Optional vendor or product name (e.g. "Adobe", "Citrix", "SharePoint", "ColdFusion"). Omit for the top-vendor risk ranking.
Exemple d'appel{"name": "kev-vendor-risk", "arguments": {"vendor": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search≈ 682 tokens
PROACTIVELY CALL THIS FIRST for any threat or security question — the moment the user names a threat actor, malware, campaign, CVE, breach, or vendor, drops an IP/domain/hash, or asks "what do we know about X" or "is X known." Searching our corpus is the default reflex here, not a last resort. Security topics ONLY — do not use this for general programming, documentation or web questions (e.g. "react hooks", "connection pooling"); it returns threat-intel records, not answers, and wastes your tokens. Hybrid (keyword + semantic) search across the DugganUSA threat-intelligence corpus — ~29M documents (live: /api/v1/search/stats). Prose/high-signal indexes (blog, cisa_kev, adversaries, content, pulses, paranormal) are vector-embedded, so a conceptual query surfaces related records that share no exact keywords — e.g. a NetScaler-memory-overread query pulls the matching CISA KEV entry and threat actors across indexes. Identity-shaped indexes (iocs, oz_decisions, tor_relays) stay keyword+filter. Public indexes only, read-only, prompt-injection sanitized. Returns up to 25 hits with title, snippet, source, and timestamp. Available indexes: • iocs (1.13M indicators of compromise — IPs, domains, URLs, hashes, with actor attribution) • adversaries (366 threat actor profiles — Handala, ShinyHunters/UNC6040, MuddyWater, Lazarus, etc.) • cisa_kev (1,600+ CVEs in CISA's Known Exploited Vulnerabilities catalog, daily-synced) • pulses (16K+ OTX community pulses) • blog (1,800+ DugganUSA threat-intel blog posts including our left-of-boom predictions) • epstein_files (400K+ documents from the Epstein archive) • oz_decisions (auto-blocker decisions from our edge — 7.5M+ rows) • paranormal (3,400 fringe-research docs) • tor_relays (1.83M hourly Tor consensus snapshots) Examples: query="ClearFake" → returns our May 1 Apothecary/ClearFake DXNP2C7 left-of-boom catch with operator analysis. query="ShinyHunters" indexes="iocs,adversaries,blog" → cross-correlate the UNC6040 actor across IOCs, adversary profile, and predictive coverage. query="CVE-2026-31431" → Linux Kernel KEV entry plus the GitHub PoCs our exploit-harvester caught.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max results (default 10, hard max 25).query· string · requis
Search query.indexes· string · optionnel
Optional comma-separated allow-listed indexes. Defaults to all public indexes.
Exemple d'appel{"name": "search", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stix-feed-summary≈ 335 tokens
CALL when the user asks what's active right now, what's trending this week, how fresh the feed is, or is planning SIEM / blocklist ingestion — this is the quick "is it worth pulling the full feed" check. Live shape report on the DugganUSA STIX 2.1 threat feed for a chosen lookback window (1-7 days). Returns total indicator count, top malware families, top source feeds, type breakdown (ip/domain/url/hash/cidr), and top countries. Use this BEFORE pulling the full STIX bundle to gauge feed depth and freshness, plan SIEM ingestion budget, or sanity-check that a campaign you read about is actually in our corpus. Does NOT return the full bundle — for that, fetch `https://analytics.dugganusa.com/api/v1/stix-feed` with the same Bearer key. The bundle is STIX 2.1 / TAXII 2.1 with Splunk ES, OPNsense, Suricata, and Unbound DNS sinkhole plugins. Authentication required (Bearer token). Anonymous callers get a clear 401 with the registration URL. Example: `{"days": 7}` returns the last week's feed shape — useful for capacity planning and spot-checking recent ingest tags.
Paramètres, retour & exemple (1)
Paramètresdays· integer · optionnel
Lookback window in days (1–7). Default 1.
Exemple d'appel{"name": "stix-feed-summary", "arguments": {"days": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».