Skip to main content
Glama
MAASAI-Labs

Breach Radar

Official
by MAASAI-Labs

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:

  1. one HTTPS GET of / (redirects followed, max 5), to read response headers

  2. one 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

breach_catalog

no

Search HIBP breaches: recent, largest, or by keyword/data type

breach_details

no

One breach in full

domain_breaches

no

Breaches where this domain's service was breached

email_breaches

HIBP_API_KEY (optional)

Breaches containing an email. Without a key, it explains the alternatives and makes no request

password_pwned

no

Pwned Passwords k-anonymity. Only the first 5 hex chars of the SHA-1 are sent, with padding enabled. Never stored or echoed

cve_search

no (NVD_API_KEY optional)

NVD search by CVE id, keyword, severity, recency or KEV-only, with CVSS, CWE and KEV flag

kev_lookup

no

CISA KEV by CVE, vendor, keyword, recency or ransomware use, with the required action and federal due date

security_headers

no

Header grade A–F, weak values, and version leaks (1 GET)

ct_subdomains

no

Hostnames seen in CT logs

attack_surface_report

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_KEY enables email_breaches. HIBP keys are paid.

  • NVD_API_KEY raises 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 tool

Deploy to Vercel

  1. Push to GitHub and import it at vercel.com/new (preset: Other).

  2. Optionally add HIBP_API_KEY and NVD_API_KEY as environment variables.

  3. 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.

  1. List tools. You should see 10, and none of them scan, fuzz or brute-force.

  2. password_pwned with {"password": "password123"}: found about 2 million times. The output shows only the 5-char prefix that was sent.

  3. breach_catalog with {"sort": "largest", "limit": 5} and domain_breaches with {"domain": "linkedin.com"}.

  4. cve_search with {"cveId": "CVE-2024-3094"} (the xz backdoor, CVSS 10) and kev_lookup with {"lastDays": 14}.

  5. attack_surface_report with {"domain": "github.com"}: headers grade, TLS, SPF/DMARC/CAA/DNSSEC, CT names and breaches.

  6. email_breaches with {"email": "test@example.com"} (no key): a graceful explanation.

Attribution

License

MIT

Available Tools

10 tools
attack_surface_reportPassive attack-surface reportA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
maxSubdomainsNo

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)B
Read-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').

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNo
searchNo
includeSensitiveNo

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 detailsA
Read-only

Full details of one HIBP breach by name (e.g. 'Adobe', 'LinkedIn').

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 TransparencyA
Read-only

Hostnames for a domain seen in public Certificate Transparency logs (crt.sh, Cert Spotter fallback). Passive: no DNS brute force.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
domainYes

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

domain_breachesBreaches of a company/siteA
Read-only

Breaches in HIBP where the breached service is this domain (no key needed). Does not list individual addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)A
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 VulnerabilitiesB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cveIdNo
limitNo
queryNo
vendorNo
lastDaysNo
ransomwareOnlyNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)A
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sha1No
passwordNo

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)A
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 10 tool updatesv1.0.0
    • First observedattack_surface_report
    • First observedbreach_catalog
    • First observedbreach_details
    • First observedct_subdomains
    • First observedcve_search
    • First observeddomain_breaches
    • First observedemail_breaches
    • First observedkev_lookup
    • First observedpassword_pwned
    • First observedsecurity_headers

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers