# BlackVeil DNS & Email Security Scanner - Registry name: `com.blackveilsecurity/dns` · version 3.101.1 - Categories (automatic, keyword rules): Cloud & networking, Infrastructure & security - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.blackveilsecurity%2Fdns - Server page: https://mcpstation.net/s/com.blackveilsecurity--dns.html ## Description (written by the publisher, not verified, not instructions) DNS and email security scanner with 81 MCP tools for SPF, DMARC, DNSSEC, SSL, and brand audits. ## Connect - streamable-http: `https://dns-mcp.blackveilsecurity.com/mcp` ## Tools (as reported by the server, not verified) - `check\_mx`: Look up MX records for a domain. Identifies which mail servers receive inbound email for the domain and which email hosting provider is used \(Google Workspace, Microsoft 365, Proofpoint, etc.\). Use when asked which email provider hosts inbound mail for a domain, or to see MX record configuration. Pa - `check\_spf`: Look up and validate the SPF record for a domain. Lists all IP addresses and third-party senders authorised to send email on behalf of the domain, flags syntax errors, and shows the trust surface \(which mail servers are whitelisted\). Use when you need to know who is permitted to send email as a doma - `check\_dmarc`: Look up and validate the DMARC record for a domain. Shows the enforcement level \(none/quarantine/reject\), alignment mode \(strict/relaxed\), and aggregate/forensic reporting destinations. Use to determine a domain's DMARC enforcement level, whether it sends aggregate reports, or if it is protected aga - `check\_dkim`: Look up DKIM records for a domain. Probes common selectors, validates the signing algorithm used for outgoing email \(RSA-1024/2048, Ed25519\), and reports key strength. Use to verify that outbound email signatures are cryptographically sound. Part of the scan\_domain audit. - `check\_dnssec`: Check DNSSEC status for a domain. Verifies whether DNS is tamper-proof and protected against cache poisoning and DNS spoofing attacks by validating DNSKEY and DS records. Reports whether DNSSEC is enabled and validating. Part of the scan\_domain audit. - `check\_ssl`: Check the HTTPS/TLS posture of a domain: HTTPS reachability, HSTS policy, and HTTP-to-HTTPS redirect. Also returns certificate metadata \(issuer, expiry date, days remaining, SAN count\) read from public Certificate Transparency logs — this describes the most recently LOGGED certificate, which may dif - `check\_mta\_sts`: Check whether a domain enforces SMTP TLS for inbound mail via MTA-STS, protecting against downgrade attacks. Queries \_mta-sts.\ and fetches the policy file, reports mode \(enforce/testing/none\) and MX coverage. Use to verify whether inbound SMTP is protected against TLS downgrade or MITM — dis - `check\_ns`: Audit a domain’s nameserver delegation and redundancy. Identifies the DNS hosting provider and, when the infrastructure probe is available, directly compares parent and child NS sets, verifies authoritative AA responses, and checks required glue addresses. Use to detect stale registrar delegations, - `check\_caa`: Look up CAA records for a domain. Shows which Certificate Authorities are authorized to issue certificates. Part of the scan\_domain audit. - `check\_bimi`: Check the BIMI brand-logo record at default.\_bimi.\. Validates the logo URL \(l=\) and the presence of mark-certificate authority evidence \(a=\) — the a= tag is a bare URL, so the certificate type \(VMC or CMC\) is not determined — and verifies the DMARC enforcement prerequisite \(p=quarantine/reje - `check\_tlsrpt`: Check whether a domain has SMTP TLS Reporting \(TLS-RPT\) configured. Queries \_smtp.\_tls.\ for the v=TLSRPTv1 record and validates its reporting destination \(rua= mailto:/https:\), flagging a missing record, duplicate records, or an invalid/absent reporting URI. Complements MTA-STS by giving vis - `check\_http\_security`: Audit a domain's browser-facing HTTP security headers over HTTPS. Inspects Content-Security-Policy \(flagging unsafe-inline/unsafe-eval/wildcards\), X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, and the cross-origin isolation headers \(COOP/COEP/CORP\), and detects CDN/WA - `check\_dane`: Check DANE/TLSA certificate pinning for SMTP at port 25. Resolves the domain's MX hosts and looks up TLSA records at \_25.\_tcp.\, validating their syntax, usage/selector/matching-type fields and DNSSEC backing on the MX host's zone. The record is reported as present but UNVERIFIED: there is n - `check\_ptr`: Verify forward-confirmed reverse DNS \(PTR/FCrDNS\) for mail servers. Part of the scan\_domain audit. - `check\_dane\_https`: Verify DANE certificate pinning for HTTPS connections. Looks up TLSA records at \_443.\_tcp.\{domain\} \(port 443\) and validates their syntax, usage/selector/matching-type fields and DNSSEC backing. The record is reported as present but UNVERIFIED in every deployment: comparison against the certificate t - `check\_svcb\_https`: Validate HTTPS/SVCB records \(RFC 9460\) for modern transport capability advertisement. Part of the scan\_domain audit. - `check\_lookalikes`: Detect active typosquat and lookalike/homoglyph domains that impersonate your brand and could be used in phishing. Identifies character-substitution and visual-confusion domains registered by attackers. Distinct from check\_shadow\_domains \(TLD variants with auth gaps\) and discover\_brand\_domains \(legi - `check\_subdomailing`: Detect SubdoMailing risk: analyzes the SPF include chain for dangling or hijackable subdomains that could let an attacker send email as the domain. Use when you want to know if an SPF include chain can be hijacked through a dangling domain, or to detect subdomain mailing risk hidden in SPF includes. - `scan\_domain`: Run a full DNS and email security audit for a single domain. Aggregates every scan-included check in parallel \(SPF, DKIM, DMARC, DNSSEC, TLS/SSL, MTA-STS, CAA, BIMI, subdomain takeover, and more\) and returns an overall security score, NIST-aligned letter grade \(6-band A+/A/B/C/D/F\), maturity stage, - `batch\_scan`: Bulk-scan up to 10 domains in parallel. Runs a full security audit on each domain in the list and returns score, NIST-aligned letter grade \(6-band A+/A/B/C/D/F\), and finding counts per domain. Use when you want to audit multiple domains at once or do a bulk scan of several domains simultaneously — d - `batch\_scan\_start`: Start a durable asynchronous scan of 1–10 domains. Returns a stable job ID; replaying the same idempotency key with the same principal, normalized inputs, and scoring versions returns the same job. - `batch\_scan\_status`: Read the owner-scoped status of an asynchronous batch scan. - `batch\_scan\_findings`: Fetch owner-scoped findings for a completed asynchronous batch scan. - `compare\_domains`: Side-by-side security comparison of 2–5 domains. Shows relative scores, category gaps, and unique weaknesses for each domain. Use when comparing your security posture against a competitor, or doing a head-to-head comparison between multiple domains. - `compare\_baseline`: Compare a domain's current security configuration against a fixed policy baseline to determine compliance. Use to check whether a domain meets a policy requirement — not for tracking improvement/regression over time \(use analyze\_drift\) and not for comparing multiple domains \(use compare\_domains\). - `check\_shadow\_domains`: Find alternate TLD variants of a domain \(e.g. example.net, example.co\) that have weak or missing email authentication and could be used to spoof email. Use when asked about TLD variants with email auth gaps — distinct from check\_lookalikes which detects typosquat/homoglyph impersonation domains. - `check\_txt\_hygiene`: Audit TXT records for stale entries and SaaS exposure. - `check\_mx\_reputation`: Check whether the mail server \(MX\) IP addresses are listed on spam blocklists \(Spamhaus, Barracuda, SORBS, and other RBLs\). Also verifies reverse DNS for MX hosts. Use when you want to know if your mail server IP is blacklisted, or if your MX is on any blocklist — distinct from check\_rbl which check - `check\_srv`: Map a domain's DNS-visible service footprint by probing 19 common SRV record prefixes \(email, calendar, messaging, directory, web\) in parallel. Returns discovered services and flags insecure service advertisements — e.g. plaintext IMAP/POP3/LDAP without an encrypted variant. A domain with no matches - `check\_zone\_hygiene`: Audit DNS zone hygiene: identifies sensitive or forgotten subdomains exposed in DNS, stale SOA records, and zone propagation issues. Use to find any sensitive subdomains that should not be publicly visible, or to audit overall DNS zone cleanliness. - `generate`: Generate a DNS/email security remediation artifact. Artifact types: spf\_record \(build a new SPF record\), dmarc\_record \(create a DMARC policy\), dkim\_config \(DKIM key setup\), mta\_sts\_policy \(generate an MTA-STS policy file\), fix\_plan \(prioritized remediation plan for all findings\), or rollout\_plan \(ph - `get\_domain\_rank`: Rank a domain against its country or global cohort using the GSI benchmark corpus. Accepts a domain score \(from scan\_domain\) and optional country/sector; returns a percentile: "scores better than X% of peers". Owner-gate exempt — public cohort data only. - `get\_benchmark`: Get industry benchmark data: shows what percentile a domain's security score ranks at within its sector or country cohort, the mean score, and the most common DNS security failures across the industry. Use when asked how a score compares to the industry average, what percentile a score is in, or wha - `get\_provider\_insights`: Get security benchmarks and common configuration issues for a specific email or DNS service-provider cohort \(e.g. Google Workspace customers, Microsoft 365 customers\). Use when asked how an email service provider compares to competitors on security posture, or to see typical misconfigurations for a - `assess\_spoofability`: Compute a composite email spoofability risk score \(0–100, higher = more spoofable\) by combining SPF trust surface, DMARC enforcement, and DKIM coverage. Returns a risk level \(minimal→critical\), per-control sub-scores, and plain-language summary of how easy it would be to spoof email from the domain. - `check\_resolver\_consistency`: Check DNS consistency across 4 public resolvers. - `explain\_finding`: Explain a finding with impact and remediation. - `map\_supply\_chain`: Map DNS-visible third-party service dependencies for a domain. Correlates SPF, NS, TXT verifications, SRV services, and CAA records to reveal which third-party vendors can send email as the domain, control DNS, or access integrated services. Use when asked to map third-party or supply-chain dependen - `analyze\_drift`: Measure whether a domain's DNS security posture improved or regressed by comparing the current state against a prior scan snapshot. Returns a drift classification \(improving/stable/regressing/mixed\), score delta, and lists of improvements and regressions. Use to answer "did our security score improv - `validate\_fix`: Re-check a specific security control after applying a fix, to confirm the finding is now resolved. Use only when a fix has already been applied and you want to verify or confirm the remediation was successful — not for initial inspection of a record. - `resolve\_spf\_chain`: Trace the full SPF include chain for a domain. Recursively resolves all includes, shows lookup count, tree depth, and flags circular includes or exceeding the 10-lookup limit. - `discover\_subdomains`: Find subdomains of a domain using Certificate Transparency logs. Reveals shadow IT, forgotten services, and unauthorized certificate issuance. Returns a CT SAMPLE, not an asset inventory: the count is a lower bound, a host with no publicly-logged certificate never appears, and the result carries a p - `map\_compliance`: Map scan findings to compliance frameworks: NIST 800-177, PCI DSS 4.0, SOC 2, CIS Controls. Shows pass/fail/partial status per control. - `sge\_quickscan`: Answer, for ONE domain, whether it meets the New Zealand Secure Government Email \(SGE\) requirements agencies must satisfy by October 2026. Reports all seven SGE controls — DMARC p=reject, SPF -all, DKIM, SMTP transport TLS, MTA-STS enforce, TLS-RPT, full sub-domain coverage — each as satisfied, not - `prioritize\_portfolio\_leads`: Rank a brand’s portfolio \(or an explicit domain set\) into prioritized registrar-partner sales leads by product-gap value × severity. Multi-domain, paid. Reuses map\_registrar\_products per domain, then ranks. Distinct from map\_registrar\_products \(per-domain product mapping\) and batch\_scan \(raw scores\) - `simulate\_attack\_paths`: Analyze current DNS posture and enumerate specific attack paths an adversary could exploit, with severity, feasibility, steps, and mitigations. - `check\_dbl`: Check domain reputation against DNS-based Domain Block Lists \(Spamhaus DBL, URIBL, SURBL\). Returns listing status with decoded return codes. - `check\_rbl`: Check MX server IP reputation against 6 DNS-based Real-time Blocklists \(SpamCop, UCEProtect, Mailspike, Barracuda, PSBL\). Resolves MX hosts to IPs first. - `cymru\_asn`: Map domain IPs to Autonomous System Numbers via Team Cymru DNS. Returns ASN, prefix, country, registry, and organization for each IP. Flags high-risk hosting ASNs. - `rdap\_lookup`: Fetch domain registration data via RDAP \(modern WHOIS replacement\). Returns the domain registrar \(the company the domain was registered with\), registrant contact, creation/expiration dates, EPP status codes, and domain age. Use when asked who registered the domain, who the registrar is, or when the - `check\_realtime\_threat\_feed`: Check a domain against BlackVeil real-time threat intelligence \(curated intel-gateway feed\). Distinct from DNSBL checks. Operator-deploy only; degrades to info when unprovisioned. - `check\_nsec\_walkability`: Assess zone walkability risk by analyzing NSEC3PARAM configuration. Detects plain NSEC zones, weak NSEC3 parameters, and opt-out flags. - `check\_dnssec\_chain`: Walk the full DNSSEC chain of trust from the DNS root down to the target domain, tracing DS/DNSKEY records and algorithm usage at each zone level. Use when asked to trace the chain of trust from the DNS root, or to see the full DNSSEC delegation path step by step. - `check\_agent\_discovery`: Assess the security posture of IETF BANDAID agent-discovery records \(draft-mozleywilliams-dnsop-dnsaid\). Detects SVCB agent records under \_agents/\_index.\_\{protocol\}.\_agents, reports whether the discovery zone is DNSSEC-anchored \(unsigned = spoofable agent endpoints\), evaluates DANE/TLSA binding trus - `check\_llms\_txt`: Inspect a domain's published /llms.txt and /llms-full.txt for links and install instructions an AI agent could inherit from someone else. Parses and dedupes the links \(same-origin vs external\), sweeps external link hosts for dangling CNAMEs and deprovisioned-service fingerprints \(evidence of a dangl - `check\_dnskey\_strength`: Audit the cryptographic strength of DNSKEY signing algorithms used for DNSSEC. Reports which algorithm is used for DNSSEC signing keys \(RSA/SHA-1, RSA/SHA-256, ECDSA P-256, Ed25519, etc.\), flags deprecated algorithms \(RSA/SHA-1, DSA\), independent of whether the DNSSEC chain validates. Use when asked - `check\_fast\_flux`: Detect fast-flux DNS behavior: performs multiple rounds of A/AAAA queries and checks whether IP addresses are rotating rapidly on each DNS query \(a sign of botnet or malicious infrastructure\). Compares IP answer sets and TTLs across rounds to identify rapidly rotating infrastructure used to hide mal - `check\_subdomain\_takeover`: Sweep subdomains for dangling CNAMEs pointing to deprovisioned cloud services that could be claimed by an attacker \(subdomain takeover vulnerabilities\). Detects 16 provider families \(AWS S3/CloudFront, Azure Front Door/CDN/Blob/App Service, GCP Cloud Storage, Heroku, GitHub Pages, Vercel, Firebase, - `check\_authoritative\_dns\_infra`: Measure authoritative DNS infrastructure posture for a hostname over direct DNS-over-TCP/53 from a single vantage: TCP/53 reachability, the authoritative AA flag, recursion exposure, SOA serial consistency across nameservers, DNSKEY/RRSIG presence \(not validation\), IPv4/IPv6 answer parity, and unsup - `check\_root\_server\_set`: Query a rotating sample of 3 root servers per call and compare the priming NS set, glue, SOA serials, and cross-root consistency against the embedded official root hints. Uses BV\_INFRA\_PROBE when available; without it, returns the embedded hints as reference data only. - `discover\_brand\_domains`: Discover all domains that belong to a brand's portfolio by aggregating certificate, DNS, redirect, and mail-policy signals. Use when asked what domains are part of a brand portfolio, or to find all domains related to a brand. Pass the EXACT seed domain verbatim — do NOT normalize or substitute a can - `discover\_brand\_domains\_start`: Start an async brand-domain discovery for the EXACT seed domain provided \(the async sibling of discover\_brand\_domains, which can run \~24s and time out interactive clients\). Same args as discover\_brand\_domains. Returns \{ auditId, queuedAt, etaSeconds \} immediately; poll with discover\_brand\_domains\_st - `discover\_brand\_domains\_status`: Poll the status of an async brand-domain discovery started with discover\_brand\_domains\_start. Returns status \(queued \| running \| completed \| failed\) and progress. Owner-scoped — operationIds owned by other principals surface as notFound. - `discover\_brand\_domains\_findings`: Fetch the ranked candidate domains \(the discovery CheckResult\) for an async run started with discover\_brand\_domains\_start. Returns notReady while the discovery is still in-flight; the discovery result once complete. Owner-scoped. - `brand\_audit\_single`: Run a full brand audit on a single target with optional standard/deep discovery depth, brand aliases, and caller-supplied candidate domains. Discovers brand-related domains, looks up registrar + registrant for each candidate, and classifies each into consolidated, real registrar-sprawl shadowIt, aut - `brand\_audit\_batch\_start`: Enqueue an async brand audit across up to 50 target domains with optional standard/deep discovery depth, brand aliases, and caller-supplied candidate domains. Returns \{ auditId, queuedAt, targetCount, etaSeconds \} immediately; poll with brand\_audit\_status and fetch results with brand\_audit\_get\_repor - `brand\_audit\_status`: Poll the status of an enqueued brand audit. Returns audit-level status \(queued \| running \| completed \| failed\), progress 'N/M', and per-target statuses. Owner-scoped — auditIds owned by other principals surface as notFound. - `brand\_audit\_get\_report`: Fetch the result JSON for a completed brand audit. With \`target\` set, returns the per-target CheckResult; without, returns the audit-level aggregate. Returns notReady when polling an in-flight audit. When a rendered PDF sidecar exists, metadata includes pdfUrl — an authenticated /reports/ download l - `list\_brand\_audit\_watches`: Returns the caller's recurring brand-audit watches: watchId, domain, interval, webhook presence, last-run time, and active state. Owner-scoped. Read-only. - `register\_brand\_audit\_watch`: Creates a recurring brand-audit watch for a domain on a daily/weekly/monthly cadence. Each run enqueues a fresh brand\_audit\_batch\_start and \(when a webhook is configured\) POSTs a diff webhook on classification drift. Returns the new watchId. Owner-scoped; per-principal cap of 20 active watches. - `delete\_brand\_audit\_watch`: Permanently removes a recurring brand-audit watch by watchId. Owner-scoped — a watchId owned by another principal surfaces as notFound. Returns confirmation of deletion. - `scan\_buckets\_start`: Start an async cloud-bucket discovery scan for a target domain. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns a scanId immediately — poll progress with scan\_buckets\_status and retrieve results with scan\_buckets\_findings - `scan\_buckets\_status`: Poll the status of a cloud-bucket discovery scan by scanId. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns scan status \(running \| completed \| failed\) and progress metadata. - `scan\_buckets\_findings`: Retrieve findings from a completed cloud-bucket discovery scan by scanId. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. The scanId is required so reads can be owner-scoped; target and provider filters are optional. - `osint\_investigate\_domain\_start`: Start an async OSINT investigation for a domain. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint\_investigation\_status and retrieve results with osint\_investigation\_report. - `osint\_investigate\_infrastructure\_start`: Start an async deep-infrastructure OSINT investigation for a query \(domain, IP, or org\). Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint\_investigation\_status. - `osint\_investigate\_supply\_chain\_start`: Start an async supply-chain OSINT investigation for a query. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint\_investigation\_status. - `osint\_investigate\_username\_start`: Start an async OSINT investigation for a username \(cross-platform presence, breach correlation\). Owner/enterprise tier only — people-centric OSINT is restricted to prevent misuse. Returns an investigationId immediately — poll with osint\_investigation\_status and retrieve results with osint\_investigat - `osint\_investigate\_email\_start`: Start an async OSINT investigation for an email address \(breach exposure, account correlation\). Owner/enterprise tier only — people-centric OSINT is restricted to prevent misuse. Returns an investigationId immediately — poll with osint\_investigation\_status and retrieve results with osint\_investigati - `osint\_investigation\_status`: Poll the status of an OSINT investigation by investigationId. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns current status \(running \| completed \| failed\) and progress metadata. - `osint\_investigation\_report`: Retrieve the final report of a completed OSINT investigation by investigationId. For a deep\_infrastructure investigation the report also composes discover\_subdomains for the target \(a cached CT sample under \`ctDiscovery\`, never an inventory\). Operator-deploy only; targets must be operator-authorized Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html