Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

WhisperGraph

NPM · @WHISPER-SECURITY/WHISPER-GRAPH-MCP · 2 COMPONENTS · SCANNED SEP 20

The internet's infrastructure graph for AI agents - 46B nodes and edges, free trial via 2 HTTP calls

0 this week 92 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to whisper-sec/whisper-graph-mcp). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 63 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability73
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7451 tokens (~532/item across 14 items; 8 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "query" implies "execute" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the WhisperGraph MCP server?

WhisperGraph runs locally as an npm package, launched with npx -y @whisper-security/whisper-graph-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @whisper-security/whisper-graph-mcp

# add to Claude Code
claude mcp add whisper-sec-whisper-graph -- npx -y @whisper-security/whisper-graph-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "whisper-sec-whisper-graph": {
      "command": "npx",
      "args": [
        "-y",
        "@whisper-security/whisper-graph-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "whisper-sec-whisper-graph": {
      "command": "npx",
      "args": [
        "-y",
        "@whisper-security/whisper-graph-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add whisper-sec-whisper-graph -- npx -y @whisper-security/whisper-graph-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "whisper-sec-whisper-graph": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@whisper-security/whisper-graph-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add whisper-sec-whisper-graph --command npx --arg -y --arg @whisper-security/whisper-graph-mcp
# ~/.hermes/config.yaml
mcp_servers:
  whisper-sec-whisper-graph:
    command: "npx"
    args: ["-y", "@whisper-security/whisper-graph-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "whisper-sec-whisper-graph": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@whisper-security/whisper-graph-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add whisper-sec-whisper-graph -t stdio -c npx -a -y @whisper-security/whisper-graph-mcp
// mcp.json
{
  "mcpServers": {
    "whisper-sec-whisper-graph": {
      "command": "npx",
      "args": [
        "-y",
        "@whisper-security/whisper-graph-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 16 Sept 26 0
    • Stability: 0.97 → pass security
  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 −3
    • Stability: pass → 0.80 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@whisper-security/whisper-graph-mcp@0.2.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo whisper-sec/whisper-graph-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/whisper-sec/whisper-graph-mcp/.github/workflows/release.yml@refs/heads/main
Rekor log index 2195433163
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:c5c7cb82da0efc6d1e22ab44c8115f44119620278b7a5d40e8b1856484cf1ca6a91d41a2b49f93048c8d4ad6bfb50352c3fd4f56a9427e76d8eb1f53c

Background: How many MCP packages publish verified provenance →

Dependencies 96 packages
Packages resolved 96
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 8 exposed · ~3,502 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
describe_label ~179

Describe a single label: confirm it exists, get its node count, and enumerate the property keys observed on that label. Use this BEFORE writing a query that filters on a specific property. If you write WHERE h.fqdn = "..." but describe_label("HOSTNAME") returns properties = ["name", "threatScore", ...], your query will silently scan the entire label. Verify first. Argument: label (string, required) - uppercase letters, digits, and underscores only. Returns: {name, exists, count, properties[], edgesDoc}. Cached 5 minutes. Tip: edge types are NOT in the response - see the whisper://schema/relationships resource for which edges connect this label to others.

NameTypeReqDescription
labelstringyesLabel name. Uppercase letters, digits, underscores. Examples: HOSTNAME, IPV4, ASN.
NameTypeReqDescription
countnumber
edgesDocstring
errorstring
existsbooleanyes
namestringyes
propertiesarray
propertiesErrorstring
suggestionstring

No examples provided.

domain_variants ~392

Generate typosquatting / brand-protection variants of a domain or brand name and check which ones actually exist in WhisperGraph. Runs 14 mutation algorithms - character omission, repetition, transposition, QWERTY-adjacent replacement/insertion, vowel-swap, bitsquatting, homoglyph / Unicode confusables, hyphenation, dot insertion/omission, TLD-swap, TLD-addition, and subdomain-add. Unicode input is accepted (and expected) so IDN homoglyph lookalikes resolve correctly. Returns { rows: [...] }. Each row: { variant, method, exists, nodeId, label, confidence (0.3-0.9), confidenceLabel (low/medium/high) }. By default only variants that EXIST as nodes are returned - the registered lookalikes worth investigating. Note that "exists" means registered/observed, NOT malicious: pivot each hit through explain_indicator for a threat verdict. Arguments: - name (string, required) - the domain or brand to mutate, e.g. "google.com". Allowed characters: letters (including Unicode), digits, '.', '-', '_'. - label (string, optional, default HOSTNAME) - node label to check existence against. - includeNonExistent (boolean, optional, default false) - when true, also return generated variants that do NOT exist in the graph (larger, noisier result set). Performance: typically <150ms. Results are capped at 500 rows.

NameTypeReqDescription
includeNonExistentbooleanOptional. When true, also return generated variants that do not exist in the graph. Default: false.
labelstringOptional node label to check existence against. Default: HOSTNAME.
namestringyesDomain or brand to generate variants for. Examples: "google.com", "paypal.com". Unicode allowed.
NameTypeReqDescription
rowsarrayyes

No examples provided.

explain_indicator ~276

Run a comprehensive threat assessment on a single indicator. The indicator can be an IPv4, IPv6, hostname, CIDR network, or ASN - the procedure auto-detects the type. Returns a single structured row: { indicator, type, available, cached, found, score, level (NONE/INFO/LOW/MEDIUM/HIGH/CRITICAL), explanation, factors[], sources[] }. For ASN inputs the row also includes a `breakdown` object with composite sub-scores (threatDensityScore, graphMetricsScore, historicalScore, prefixAgeScore). For CIDR inputs the explanation field carries threat-density stats (listed IPs, density %). Prefer this tool over manual ASN→PREFIX→IP→LISTED_IN walks - those time out on large ASNs (AWS, GCP, Azure, Cloudflare). Performance: 3-25ms for IP/domain/network, up to ~80ms for ASN. Argument: indicator (string, required). Allowed characters: letters, digits, '.', '-', ':', '/', '_'. Cypher-special characters are rejected.

NameTypeReqDescription
indicatorstringyesIPv4 / IPv6 / hostname / CIDR / ASN. Examples: "185.220.101.1", "google.com", "3.64.0.0/12", "AS13335".
NameTypeReqDescription
rowsarrayyes

No examples provided.

list_labels ~121

List all node labels in WhisperGraph with their counts. Use this BEFORE writing a query when you're not sure which label to anchor on. It rules out hallucinated labels (e.g. there is no DOMAIN or FQDN - only HOSTNAME) and tells you which labels are large (HOSTNAME, IPV4) vs small (RIR, COUNTRY). Returns: an array of {label, count} rows. Cached server-side for 5 minutes. Tip: pair with describe_label to verify which properties exist on a label before referencing them in WHERE clauses.

Input schema present but exposes no named parameters.

NameTypeReqDescription
labelsarrayyes

No examples provided.

list_recipes ~358

List the whisper.security catalog of ready-made recipes - the full set exposed by this server. Two kinds: - `direct` recipes (keyless) are a single graph procedure: whisper.assess (threat posture), whisper.identify (vendor/operator), whisper.explain, whisper.variants (typosquats), whisper.origins (CDN de-cloak), whisper.history / whisper.history.whois (WHOIS timeline), whisper.walk, whisper.psl.*, whisper.asSet, whisper.lookupTorRelay, db.schema. These run WITHOUT an API key (rate-limited). - `flow` recipes (keyed) are curated multi-step investigations: attack-path, attack-surface, indicator-enrichment, infrastructure-mapping, subdomain-takeover, bgp-hijack-exposure, blast-radius, route-health, typosquat, nameserver-hijack-dns-consistency, map-supply-chain-concentration, discover-ai-agent-infrastructure, build-takedown-evidence-package, indicator, anycast-dns-root-sovereignty. These need a WhisperGraph API key. Each entry returns { slug, title, purpose, category, mode, access, requiresKey, inputs[], params[], columns[], docsUrl }. Run any of them with run_recipe(recipe=<slug>, ...). Optional filters: - mode ("direct" | "flow") - access ("keyless" | "keyed") The catalog is generated from the canonical whisper.security catalog, so this list stays in sync with what the platform ships.

NameTypeReqDescription
accessstringFilter to keyless (no API key) or keyed (API key required) recipes.
modestringFilter to only direct or only flow recipes.
NameTypeReqDescription
recipesarrayyes

No examples provided.

query ~1,391

Execute a Cypher query against WhisperGraph - the internet's largest infrastructure graph database (7.39B nodes, 39B edges, 5.6M threat intel edges). Returns JSON with columns, rows, and statistics. Use this tool for any question involving domains, hostnames, IPs, DNS, BGP, GeoIP, web links, email infrastructure, WHOIS, DNSSEC, or threat intelligence. NODE LABELS (20): HOSTNAME (2.6B), IPV4 (619M), IPV6 (820K), PREFIX (2.5M), ASN (116K), ASN_NAME (108K), ORGANIZATION (119M), CITY (54K), TLD (1.7K), COUNTRY (424), RIR (5), DNSSEC_ALGORITHM (8), TLD_OPERATOR (737), REGISTRAR (51K), EMAIL (237M), PHONE (60M), REGISTERED_PREFIX (326K, virtual), ANNOUNCED_PREFIX (1.4M, virtual), FEED_SOURCE (40, virtual), CATEGORY (18, virtual). All nodes have a "name" property. Threat-listed IPV4/IPV6/HOSTNAME nodes also carry: threatScore (Double), threatLevel (NONE/INFO/LOW/MEDIUM/HIGH/CRITICAL), threatSources, threatFirstSeen/threatLastSeen (epoch ms), and 13 boolean flags: isThreat, isAnonymizer, isC2, isMalware, isPhishing, isSpam, isBruteforce, isScanner, isBlacklist, isTor, isProxy, isVpn, isWhitelist. ANNOUNCED_PREFIX adds BGP-enrichment: isMoas, isAnycast, isWithdrawn, wasMoas, hasOriginChanged, threatScore, threatLevel, threatSourceCount, firstSeen, lastSeen. LISTED_IN edges carry firstSeen, lastSeen, weight. KEY EDGES: RESOLVES_TO (HOSTNAME→IPV4/IPV6, forward only), CHILD_OF (child→parent: HOSTNAME→HOSTNAME→TLD), ALIAS_OF (CNAME), NAMESERVER_FOR / MAIL_FOR (NS/MX → domain - to list a domain's MX use (domain)<-[:MAIL_FOR]-(mx)), SPF_INCLUDE/SPF_IP/SPF_A/SPF_MX/SPF_EXISTS/SPF_REDIRECT (SPF policy; SPF_IP targets IPV4|IPV6|PREFIX), LINKS_TO (web hyperlinks, 10.8B), BELONGS_TO (3 semantics: IPV4/IPV6→PREFIX, PREFIX→RIR, FEED_SOURCE→CATEGORY), LOCATED_IN (IPV4/IPV6→CITY only - for country, chain through HAS_COUNTRY), HAS_COUNTRY (ASN/CITY/IPV4/HOSTNAME/PHONE/ANNOUNCED_PREFIX/REGISTERED_PREFIX→COUNTRY), ANNOUNCED_BY (IPV4/IPV6→ANNOUNCED_PREFIX, then ROUTES→ASN), ROUTES (ASN/ANN…

NameTypeReqDescription
cypherstringyesCypher query string. Must include LIMIT for exploration queries. Use {name: "value"} property syntax for lookups.
NameTypeReqDescription
columnsarrayyes
errorstring
errorCodestring
retryableboolean
rowsarrayyes
statisticsobject
successbooleanyes
suggestionstring

No examples provided.

run_recipe ~526

Run a named whisper.security catalog recipe by its slug (see list_recipes for the full set). This is the highest-leverage tool for infrastructure & threat questions: instead of hand-writing Cypher, run the curated recipe. Arguments: - recipe (string, required) - the recipe slug, e.g. "assess", "identify", "indicator-enrichment", "infrastructure-mapping", "attack-path", "subdomain-takeover", "typosquat", "bgp-hijack-exposure". - inputs (object, optional) - the recipe's inputs keyed by name (see the recipe's inputs[] in list_recipes). Examples: {"v":"8.8.8.8"} for assess/identify; {"value":"github.com"} for indicator-enrichment / infrastructure-mapping; {"domain":"paypal.com"} for typosquat; {"country":"BR"} for anycast-dns-root-sovereignty; {"value":"paypal.com","other":"paypa1.com"} for attack-path. Omit to use the recipe's built-in example. - params (object, optional) - flow tuning params, e.g. {"level":"deep"} for attack-surface / infrastructure-mapping / attack-path, {"depth":3} for blast-radius, {"instanceType":"Global"} for anycast-dns-root-sovereignty. Behaviour: - `direct` recipes run keyless and return { success, recipe, mode:"direct", columns[], rows[], statistics }. - `flow` recipes need an API key (WHISPER_API_KEY over stdio, or the relayed X-API-Key / Authorization header over HTTP) and return { success, recipe, mode:"flow", steps[], totalLatencyMs } where each step carries { id, title, columns, rows }. - On an unknown slug or a keyless call to a keyed flow, returns { success:false, error, suggestion } - never throws. Prefer run_recipe over hand-written Cypher whenever a recipe fits the question; fall back to the query tool for bespoke traversals.

NameTypeReqDescription
inputsobjectThe recipe's inputs keyed by name, e.g. {"v":"8.8.8.8"} or {"value":"github.com"}.
paramsobjectOptional flow tuning params, e.g. {"level":"deep"} or {"depth":3}.
recipestringyesRecipe slug from list_recipes, e.g. "assess", "indicator-enrichment", "attack-path".
NameTypeReqDescription
columnsarray
errorstring
modestring
recipestring
rowsarray
statisticsobject
stepsarray
successbooleanyes
suggestionstring
totalLatencyMsnumber

No examples provided.

whisper_history ~259

Retrieve historical WHOIS or BGP data for a single indicator. The indicator can be an IPv4, IPv6, hostname, CIDR, or ASN - the procedure auto-detects the type. Returns shape varies by indicator type: - IP / prefix (type=routing): { origin, prefix, startTime, endTime, peersSeing } - Domain (type=domain): WHOIS snapshots - { queryTime, createDate, updateDate, expiryDate, registrar, nameServers } - ASN (type=asn): prefix announcement history (slow, ~9s for large ASNs) On upstream failure (the data source is rate-limiting or temporarily down), the row shape is: { available: false, error: "timeout" | ..., retryAfter: <seconds> }. Surface the retryAfter to the user - DO NOT loop on retry. Argument: indicator (string, required). Allowed characters: letters, digits, '.', '-', ':', '/', '_'.

NameTypeReqDescription
indicatorstringyesIPv4 / IPv6 / hostname / CIDR / ASN. Examples: "8.8.8.8", "google.com", "8.8.8.0/24", "AS15169".
NameTypeReqDescription
rowsarrayyes

No examples provided.

Common questions

What is the WhisperGraph MCP server?

WhisperGraph is an MCP server listed in the public MCP registry as io.github.whisper-sec/whisper-graph. The internet's infrastructure graph for AI agents - 46B nodes and edges, free trial via 2 HTTP calls. This page covers its npm package (@whisper-security/whisper-graph-mcp).

Is the WhisperGraph MCP server safe to use?

WhisperGraph scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the WhisperGraph MCP server expose?

WhisperGraph exposes 8 tools: query, list_labels, describe_label, explain_indicator, whisper_history, and 3 more. Their descriptions and schemas cost roughly 3,502 tokens of context every time the server is loaded.

Is the WhisperGraph MCP server still maintained?

WhisperGraph is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the WhisperGraph MCP server under?

WhisperGraph declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.