Breach Radar
OfficialIntegrates with Cloudflare DNS-over-HTTPS for DNS lookups used in passive attack-surface checks, including SPF, DMARC, CAA, and DNSSEC record validation.
Provides breach intelligence via Have I Been Pwned: search the breach catalogue, retrieve breach details, look up breaches affecting a domain, check email addresses when HIBP_API_KEY is configured, and check passwords using Pwned Passwords k-anonymity.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Breach Radarrun a passive attack surface report on mycompany.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Breach Radar (MCP server)
Live MCP URL (Streamable HTTP): https://breach-radar-mcp.vercel.app/mcp
Health check: https://breach-radar-mcp.vercel.app/health
Breach Radar is security intelligence for Grok Bot (or any MCP client):
Have I Been Pwned: the breach catalogue, breaches of a company/domain, email checks (with an optional API key), and Pwned Passwords via k-anonymity.
NIST NVD CVE search and the CISA Known Exploited Vulnerabilities catalogue.
A passive attack-surface report for a domain: security headers, TLS, SPF/DMARC/CAA/DNSSEC, Certificate Transparency subdomains, and HIBP breaches.
Passive only, by design
Breach Radar does not scan ports, crawl, fuzz, brute-force subdomains, attempt logins, or send exploit or vulnerability probes. Its only contact with a target domain is:
one HTTPS GET of
/(redirects followed, max 5), to read response headersone TLS handshake on port 443, to read the certificate and protocol
Everything else comes from public third parties: DNS-over-HTTPS (Cloudflare), Certificate Transparency logs (crt.sh, with Cert Spotter as fallback), HIBP, NVD and CISA. Even so, only assess domains you own or are authorised to assess.
Related MCP server: data-breach-detector
Tools
Tool | Key needed? | What it does |
| no | Search HIBP breaches: recent, largest, or by keyword/data type |
| no | One breach in full |
| no | Breaches where this domain's service was breached |
|
| Breaches containing an email. Without a key, it explains the alternatives and makes no request |
| no | Pwned Passwords k-anonymity. Only the first 5 hex chars of the SHA-1 are sent, with padding enabled. Never stored or echoed |
| no ( | NVD search by CVE id, keyword, severity, recency or KEV-only, with CVSS, CWE and KEV flag |
| no | CISA KEV by CVE, vendor, keyword, recency or ransomware use, with the required action and federal due date |
| no | Header grade A–F, weak values, and version leaks (1 GET) |
| no | Hostnames seen in CT logs |
| no | All passive checks in one report, with key findings |
Example prompts
"Has my password 'Summer2024!' been leaked?" (only a hash prefix leaves the server)
"What are the biggest breaches added to HIBP recently?" / "Was Canva ever breached?"
"Which vulnerabilities did CISA add to KEV this week? Any Ivanti ones?"
"Find critical OpenSSL CVEs from the last 90 days."
"Run a passive security check on mycompany.com."
Configuration (optional)
HIBP_API_KEYenablesemail_breaches. HIBP keys are paid.NVD_API_KEYraises NVD's keyless limit (about 5 requests per 30 s) to 50.
Caching and limits
HIBP catalogue, KEV and Pwned Passwords ranges: 6 h.
NVD: 15 min.
Email lookups: 15 min, in memory only.
DNS: 5 min.
CT: 6 h. crt.sh is often slow; after a 15 s timeout it falls back to Cert Spotter's free tier.
Errors: a 429 is retried once. Upstream failures in the combined report show as "unavailable" rather than failing the whole report.
Run locally
npm install && npm test && npm run build
npm start # http://localhost:3000/mcp
npm run start:stdio
npm run smoke # live calls to every toolDeploy to Vercel
Push to GitHub and import it at vercel.com/new (preset: Other).
Optionally add
HIBP_API_KEYandNVD_API_KEYas environment variables.The MCP URL is
https://<project>.vercel.app/mcp.
The TLS check needs outbound TCP 443, which Vercel Node functions allow.
Testing instructions for marketplace reviewers
No credentials needed. Email lookups show a clear "needs HIBP_API_KEY" message.
List tools. You should see 10, and none of them scan, fuzz or brute-force.
password_pwnedwith{"password": "password123"}: found about 2 million times. The output shows only the 5-char prefix that was sent.breach_catalogwith{"sort": "largest", "limit": 5}anddomain_breacheswith{"domain": "linkedin.com"}.cve_searchwith{"cveId": "CVE-2024-3094"}(the xz backdoor, CVSS 10) andkev_lookupwith{"lastDays": 14}.attack_surface_reportwith{"domain": "github.com"}: headers grade, TLS, SPF/DMARC/CAA/DNSSEC, CT names and breaches.email_breacheswith{"email": "test@example.com"}(no key): a graceful explanation.
Attribution
Breach data: Have I Been Pwned, CC BY 4.0.
CVE data: NIST NVD. This product uses data from the NVD API but is not endorsed or certified by the NVD.
CT: crt.sh and Cert Spotter.
License
MIT
Available Tools
10 toolsattack_surface_reportPassive attack-surface reportARead-only
One passive report for a domain the user owns or is authorised to assess: security headers (1 GET), TLS certificate/protocol, SPF/DMARC/CAA/DNSSEC, Certificate Transparency subdomains, and HIBP breaches of the domain. No scanning or probing.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| maxSubdomains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context beyond that: the operation is passive with 'No scanning or probing', and it discloses request load ('1 GET' for headers). Good added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core value proposition ('One passive report for a domain...') followed by the component list. Dense but every clause earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an aggregator tool with no output schema, the description does the necessary work of listing what the report contains, so an agent knows the return payload shape. The only notable omission is the maxSubdomains parameter, which is undocumented in both schema and description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Two parameters with 0% schema description coverage, so the description must compensate. It partially defines 'domain' via the ownership/authorization context, but says nothing about maxSubdomains, its 1-500 range, or its effect on results. The gap is significant for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: a passive attack-surface report for a domain, then enumerates the exact components it aggregates (security headers, TLS, SPF/DMARC/CAA/DNSSEC, CT subdomains, HIBP breaches). An agent can tell it apart from single-purpose siblings, though the description never explicitly says 'use this instead of the individual tools'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the authorization precondition ('a domain the user owns or is authorised to assess') and a scope guard ('No scanning or probing'), which is real guidance. However, it never states when to prefer this bundle over the component siblings like security_headers, ct_subdomains, or domain_breaches, so the routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
breach_catalogBreach catalogue (HIBP)BRead-only
Search the Have I Been Pwned breach catalogue (no key needed): most recent, largest, or by keyword/data type (e.g. 'passwords', 'crypto', 'health').
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | ||
| search | No | ||
| includeSensitive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds a genuinely useful behavioral fact not in structured data: no API key is required for this lookup. It still omits rate limits, pagination, and how sensitive results are handled (relevant given includeSensitive), but the auth disclosure is real added value over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence, verb and resource first, with the no-key fact and the example terms appended efficiently. It is compact and wastes nothing, though packing four concepts into one clause-chain makes it slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with 0% schema description coverage and no output schema, the description leaves notable gaps: limit semantics, the sensitive-breach toggle, and the third sort enum value are undocumented. An agent could still make a basic call, but not a fully informed one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry all four parameters. It only partially does: 'search' is well illustrated via examples ('passwords', 'crypto', 'health') and 'sort' is partly covered ('most recent, largest' but not 'breachDate'), while 'limit' and the important 'includeSensitive' flag are never explained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Search the Have I Been Pwned breach catalogue', with the added scope note that it needs no API key. It implicitly differs from siblings like breach_details (single breach) and email_breaches/domain_breaches (account-scoped), but never names or contrasts with them, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the offered query modes ('most recent, largest, or by keyword/data type'), which tells the agent what this tool is good for. There is no explicit when-to-use versus the sibling breach tools (breach_details, email_breaches, domain_breaches) and no stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
breach_detailsBreach detailsARead-only
Full details of one HIBP breach by name (e.g. 'Adobe', 'LinkedIn').
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety and external-data profile is covered, and the description reinforces that the data is HIBP-sourced. It adds nothing about lookup behavior, e.g. exact-match requirements or case sensitivity. Against an annotation-backed baseline this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource, scope, and parameter meaning in the fewest possible words. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what 'Full details' returns. It signals comprehensiveness but does not characterize the payload (breach metadata, affected accounts, data classes), leaving an agent to guess at the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source of parameter meaning. It correctly identifies 'name' as a breach identifier and supplies two example values ('Adobe', 'LinkedIn'), which is genuine added value, but it doesn't specify match semantics or format constraints beyond what the schema implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Full details'), a specific resource ('one HIBP breach'), and the lookup key ('by name'), so an agent knows exactly what comes back. It stops short of explicitly distinguishing itself from siblings like breach_catalog or domain_breaches, which an agent might otherwise confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: retrieve detail for a known breach name. There is no statement of when to prefer this over breach_catalog (listing) or the domain_breaches/email_breaches variants, and no mention of what happens if the name is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ct_subdomainsSubdomains from Certificate TransparencyARead-only
Hostnames for a domain seen in public Certificate Transparency logs (crt.sh, Cert Spotter fallback). Passive: no DNS brute force.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds genuinely new context by naming the upstream sources, disclosing the passive/no-brute-force behavior, and noting a fallback path. It stops short of mentioning rate limits or result truncation behavior for large domains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence plus a short qualifier: what it returns, from where, and the passive caveat all arrive immediately with zero filler. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing results; it says results are hostnames but not their shape, ordering, or handling of duplicates/truncation, and neither parameter is documented. Adequate for orientation, incomplete for correct invocation at scale.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across two parameters, with no prose in the description explaining either. The meaning of 'limit' (max 1000) and any default or impact on result ordering is left entirely undocumented, so the description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the concrete resource (hostnames/subdomains for a domain) and the exact data source (Certificate Transparency logs via crt.sh with Cert Spotter fallback), which is far more specific than the sibling recon tools. No explicit verb (list/enumerate) and no direct sibling callout, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Passive: no DNS brute force' implies the intended mode of use and implicitly contrasts with active subdomain enumeration, but it never states when to pick this over attack_surface_report or security_headers, nor any prerequisites. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cve_searchCVE search (NVD)ARead-only
Search the NIST National Vulnerability Database: by CVE id, keyword (product/vendor), severity, recency, or KEV-listed only. Returns CVSS, CWE and KEV status. Keyless (rate-limited); optional NVD_API_KEY raises limits.
| Name | Required | Description | Default |
|---|---|---|---|
| cveId | No | ||
| limit | No | ||
| kevOnly | No | ||
| keyword | No | ||
| lastDays | No | ||
| severity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds genuinely useful operational context that annotations cannot convey: it is keyless but rate-limited, and NVD_API_KEY raises limits. It stops short of describing pagination or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what it searches, what it returns, and the auth/rate-limit caveat. The purpose is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter read-only search with no output schema, the description covers filters, return fields (CVSS, CWE, KEV status), and authentication. The undocumented limit parameter is the only material gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load, and it does: cveId, keyword (clarified as product/vendor), severity, recency, and kevOnly all map to parameters with added meaning. Only the limit parameter (and why it caps at 30) is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (NIST National Vulnerability Database) and enumerates the query dimensions, which cleanly distinguishes it from siblings like kev_lookup and breach_catalog. An agent can identify the tool's domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the searchable modes (CVE id, keyword, severity, recency, KEV-listed only), which implies usage, but it never states when to prefer this tool over the sibling kev_lookup for KEV data or when a single-CVE lookup is the right call. No exclusions or explicit alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_breachesBreaches of a company/siteARead-only
Breaches in HIBP where the breached service is this domain (no key needed). Does not list individual addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint, openWorldHint), and the description adds two genuinely new facts: no API key/auth is required, and results exclude individual addresses. Return shape, pagination, and result limits remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the scoping definition and the auth note front-loaded. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the definition covers what the tool returns conceptually and what it excludes. A brief note on returned fields (breach names/dates) or pagination would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'domain' parameter, so the description must carry the burden. 'Where the breached service is this domain' does clarify that the argument is the breached service's domain rather than an email domain, but adds nothing about format, validation, or the 3-253 character constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (breaches) and scopes it precisely: breaches in HIBP where the breached service is this domain. That scope word ('service is this domain') implicitly separates it from email-based siblings, though no sibling is named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The exclusion 'Does not list individual addresses' usefully tells the agent this is a site-level, not person-level, lookup, and 'no key needed' signals availability. But there is no explicit routing guidance against breach_details or email_breaches, so the agent must infer which to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_breachesBreaches for an email (needs HIBP key)ARead-only
Breaches containing an email address. Requires the server operator to set HIBP_API_KEY; otherwise explains alternatives. Only check addresses the user owns or is authorised to check.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and openWorldHint, and the description adds operational context they cannot carry: the server-side HIBP_API_KEY prerequisite and the degraded/alternative behavior when it is absent. The ethical-use constraint on whose addresses may be checked is likewise beyond the annotation set. It still omits rate-limit behavior for the external HIBP call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information (what it returns, the key prerequisite and fallback, the authorization constraint) with the resource statement front-loaded. Slightly telegraphic phrasing ('otherwise explains alternatives') costs a little clarity but not length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description never indicates what a result contains (breach names, dates, exposed data classes) or the shape of an empty/unauthorized response. For a single-param read tool the prerequisites and constraints are well covered, but the return contract is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter at 0% schema description coverage, so the schema shows type and format but no meaning. The description implies a single owned/authorised address but adds no format, normalization, or multi-address guidance, leaving most parameter semantics to the format hint alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific resource (breaches) and the selector (an email address), so an agent knows this is the email-keyed breach lookup. It does not differentiate itself from the close sibling domain_breaches or breach_details, leaving the agent to infer that this one keys on an address rather than a domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an authorization condition ('Only check addresses the user owns or is authorised to check') and notes a fallback when no API key is configured, which is real usage guidance. However, it never states when to pick this over domain_breaches or breach_catalog, so the choice among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kev_lookupCISA Known Exploited VulnerabilitiesBRead-only
Search the CISA KEV catalogue (vulnerabilities exploited in the wild): by CVE, vendor, keyword, recency, or ransomware use. Includes CISA's required action and due date.
| Name | Required | Description | Default |
|---|---|---|---|
| cveId | No | ||
| limit | No | ||
| query | No | ||
| vendor | No | ||
| lastDays | No | ||
| ransomwareOnly | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and external-data profile is covered. The description adds useful result context ('required action and due date'), but says nothing about pagination, default ordering, limits, or rate behavior for an open-world external catalogue.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the resource and scope front-loaded, followed by a colon-delimited list of query axes. No filler, though the clause after the colon mixes filter inputs with result fields, which slightly blurs the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 optional parameters, no output schema, and only safety annotations, the description is adequate but incomplete: it hints at returned fields but omits the 'limit' parameter, default result count, and any pagination or empty-result behavior. An agent could call it, but not predict the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must carry the burden. It loosely labels five of them (cveId, vendor, query, lastDays, ransomwareOnly) but leaves 'limit' unexplained and gives no format hints (e.g. CVE-YYYY-NNNN string form, day-range semantics). Partial compensation, not full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (CISA KEV catalogue), and scopes it precisely with 'vulnerabilities exploited in the wild', which meaningfully separates it from the sibling cve_search. It stops short of naming that sibling, so the agent must infer the distinction from the scope phrase alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the query axes (CVE, vendor, keyword, recency, ransomware use), which implies how to invoke it but never says when to prefer it over cve_search or what preconditions exist. Usage is implied rather than stated, and there are no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
password_pwnedPwned Passwords (k-anonymity)ARead-onlyIdempotent
Check if a password appears in known breaches using HIBP Pwned Passwords k-anonymity: the password is SHA-1 hashed locally and only the first 5 hex characters are sent. Accepts the password or its SHA-1. The password is never stored, logged or echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| sha1 | No | ||
| password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld/idempotent annotations by disclosing the privacy contract: local SHA-1 hashing, only the first 5 hex characters leaving the machine, and the guarantee that the password is never stored, logged, or echoed. That is exactly the behavioral context an agent needs before routing a secret into this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, no filler, with the operation front-loaded and the privacy mechanism immediately following. Every clause earns its place by adding either purpose or behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description ideally would say what comes back (pwned flag and breach count), and it is silent on the return shape and on any API-key/auth requirement. It compensates well on the input and privacy side, leaving only the response contract as a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does clarify the key semantic: either the plaintext password or its SHA-1 may be supplied, and the plaintext is hashed locally. It omits the 40-hex format constraint and the 1-256 length bounds, which the schema covers by pattern/maxLength.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check if a password appears in known breaches') plus the mechanism (HIBP Pwned Passwords k-anonymity). This is unmistakably distinct from every sibling, which operate on emails, domains, CVEs, headers, or subdomains rather than credentials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for credential-exposure checks, and the description contrasts with the email/domain breach siblings by operating on passwords. However, it never states when to prefer it (e.g., password audit vs. account breach lookup) or any exclusions, so it stays at minimum-viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_headersHTTP security headers (1 GET)ARead-only
Grade a site's HTTP security headers from a single GET of its homepage (HSTS, CSP, X-Content-Type-Options, frame protection, Referrer-Policy, Permissions-Policy, COOP) and flag version-leaking headers. Passive.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply readOnlyHint=true and openWorldHint=true, so safety is partly covered. The description adds real behavioral limits beyond that: the check is passive and derived from one GET of the homepage only, so the agent knows it will not crawl subpages or probe actively. It still does not say what the grade scale is or how version-leaking headers are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence stating scope, evidence source, and the concrete header list. The parenthetical enumeration is long but earns its place by telling the agent exactly what the grade covers; only the trailing "Passive." is terse to the point of ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must hint at returns, and it does (a grade plus flagging of version-leaking headers). Combined with the explicit header set and the single-GET scope limit, an agent has enough to call it correctly; only the grade scale and result shape remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage, so the description must carry the load. "A site's ... homepage" conveys that the input is a site/domain rather than a full URL, but it gives no format, scheme, or subdomain guidance for the domain string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (grade) plus specific resource (HTTP security headers) with the exact header set enumerated, so the agent knows precisely what is inspected. Nothing in the sibling list (breach/cve/subdomain tools) overlaps, and the tool is immediately distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Passive" and "from a single GET of its homepage" imply the context (non-intrusive check of one page), but there is no explicit when-to-use statement, no stated preconditions, and no named alternative. With no sibling covering header assessment, usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
attack_surface_report - First observed
breach_catalog - First observed
breach_details - First observed
ct_subdomains - First observed
cve_search - First observed
domain_breaches - First observed
email_breaches - First observed
kev_lookup - First observed
password_pwned - First observed
security_headers
TDQS
Scored across 10 tools
Most tools have clearly distinct targets: breach_catalog (search HIBP by keyword), breach_details (one breach by name), domain_breaches, email_breaches, and password_pwned each address a different query type. Mild overlap exists between the aggregate attack_surface_report and its component tools (security_headers, ct_subdomains, domain_breaches), and cve_search's KEV filter partially overlaps kev_lookup, but descriptions clarify the boundaries.
All names use lowercase snake_case with a consistent noun-centric pattern (breach_catalog, domain_breaches, cve_search), so the set reads predictably. Minor deviations like the abbreviated ct_subdomains and adjective form password_pwned slightly break the otherwise uniform convention, but nothing is confusing.
Ten tools is well-scoped for a passive security/breach reconnaissance server, with each tool covering a meaningful slice (breach lookup, vulnerability lookup, surface exposure). No redundant or trivial tools inflate the count.
The surface covers the core domain well: breach lookup across catalogue/domain/email/password, vulnerability search via NVD and KEV, and surface exposure via headers, TLS/CT, and DNS records in the aggregate report. Minor gaps remain, such as no standalone DNS/email-auth tool (only bundled in attack_surface_report) and no IP-reputation or non-CT subdomain enumeration, but these are workable for a passive-only design.
Maintenance
Related MCP Connectors
Enrich, search, assess, and manage threat intelligence through 80+ typed MCP tools.
Breach intelligence API: email search, domain monitoring, passwords and stealer logs.
OSINT lookups across breach, people, domain, crypto, and image sources, paid per lookup.
CVE, KEV, EPSS, SBOM and advisory lookups; per-CVE exposure from Shodan data (© Shodan). Keyless.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables external reconnaissance activities including DNS enumeration, subdomain discovery, email security analysis, and SSL certificate inspection against a target domain.13-
- AlicenseAqualityAmaintenanceA read-only breach-intelligence MCP server that checks domain breaches, provides recent breach news, and assesses threat text from public feeds.754 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceEnables passive OSINT reconnaissance by providing search dorking and open-source intelligence collection tools through MCP, without requiring active interaction with target systems.MIT
- AlicenseNot gradedqualityCmaintenanceProvides safe network reconnaissance through DNS resolution, TLS inspection, HTTP security header grading, and bounded port scanning over the stateless MCP protocol.MIT