domain-health
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., "@domain-healthCheck why emails from my domain are going to spam and suggest fixes"
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.
Domain Health
Why is mail from this domain going to spam, and is the domain about to lapse? Domain Health checks a domain the way receiving mail servers and registries see it, and says what to fix:
SPF evaluated in full, as RFC 7208 defines it: the whole include tree, the count of DNS lookups against the limit of 10 (one more include silently breaks SPF for all your mail), void lookups, syntax, and for a sending IP the verdict a receiver would reach (pass, fail, softfail, neutral, permerror) with the mechanism that decided it.
DMARC found by walking up the DNS tree, so a subdomain shows the policy it inherits; DKIM keys with their type and size (a 1024-bit key still works, 2048 is recommended); MTA-STS, TLS-RPT, BIMI and CAA.
Gmail and Yahoo bulk-sender rules: whether SPF, DKIM and DMARC are in place. DKIM selectors cannot be listed from DNS, so a key not at common selectors is reported as not confirmed, never as missing.
Registration from the registry's own RDAP server: registrar, creation and expiry dates, days left, status codes, DNSSEC; availability of names you are thinking of registering.
domain_report answers most questions in one call, with findings ranked error, warning, info, each
with a fix. No account or key needed.
Built and maintained by Arhan Canli.
Install
Needs Node.js 20 or newer. No account or key.
Claude Code
claude mcp add domain-health -- npx -y domain-health-mcpClaude Desktop: download domain-health-mcp-<version>.mcpb from the latest release and open it. The bundle is signed; verify it with gh attestation verify <file> --repo arhancanli/domain-health-mcp.
Any other client (Windsurf, Zed, Cline, Continue and others), in its MCP config file:
{
"mcpServers": {
"domain-health": {
"command": "npx",
"args": [
"-y",
"domain-health-mcp"
]
}
}
}Docker
docker build -t domain-health-mcp https://github.com/arhancanli/domain-health-mcp.git && docker run -i --rm domain-health-mcpHosted (Streamable HTTP): node src/server.mjs --http serves stateless MCP at POST /mcp (port from PORT, default 3000).
Related MCP server: nslookup.io MCP Server
Example
An agent calls domain_report with:
{
"domain": "google.com"
}and gets back (recorded from the live server on 2026-09-26):
{
"domain": "google.com",
"registration": {
"registrar": "MarkMonitor Inc.",
"created": "1997-09-15",
"expires": "2028-09-14",
"days_left": 718,
"dnssec": false
},
"nameservers": [
"ns4.google.com",
"ns1.google.com",
"ns2.google.com",
"ns3.google.com"
],
"mx": [
"10 smtp.google.com"
],
"spf": {
"record": "v=spf1 include:_spf.google.com ~all",
"lookups": 1,
"all": "~all"
},
"dmarc": {
"policy": "reject",
"reports": 1
},
"mta_sts": true,
"tls_rpt": true,
"caa": [
"pki.goog"
],
"bulk_sender_dns": "SPF and DMARC meet the requirements; DKIM not confirmed (no key at common selectors)",
"findings": [
{
"level": "info",
"issue": "No DKIM key at 12 common selectors. Senders that sign use their own selector.",
"fix": "Check with check_dkim and the selector from a sent message (DKIM-Signature s=)."
}
]
}Tools
Tool | What it does |
| Looks up DKIM keys at the given selectors (or 30 common provider selectors): key type, size in bits, testing and revoked flags, problems. Selectors cannot be listed from DNS; the selector is in a sent message's DKIM-Signature (s=). |
| Evaluates a domain's SPF in full: the include tree, DNS lookups against the limit of 10, void lookups, syntax, and with ip the result a receiver would reach (pass, fail, softfail, neutral, permerror) and the mechanism that decided it. |
| DNS records of a name by type (default A, AAAA, MX, NS, TXT, CAA) with TTLs, from Cloudflare's resolver; compare: true also asks Google's and flags differences (propagation). Says when DNSSEC validated the answer. |
| Registration of up to 20 domains from each registry's RDAP server: registered or likely available, registrar, created and expiry dates, days left, status codes, DNSSEC, name servers. Subdomains resolve to their registrable domain. |
| One-call health check of a domain: registration and expiry, name servers, MX, SPF (lookups, policy), DMARC, DKIM at common selectors, MTA-STS, TLS-RPT, BIMI, CAA, DNSSEC, and whether it meets Gmail and Yahoo bulk-sender DNS rules, with ranked findings and fixes. |
How it behaves
Read-only and passive: it asks public resolvers and registries, and never connects to the domain being checked (no mail server probes, no web requests to it).
Network: HTTPS only. DNS goes to Cloudflare's and Google's DNS-over-HTTPS resolvers; RDAP goes only to the registry servers IANA's bootstrap file names (the RDAP client's allowlist is built from that file); the Public Suffix List comes from publicsuffix.org. Nothing else is contacted, and nothing is logged except unexpected failures (to stderr, without your inputs).
DNS answers are cached for 30 seconds, since people check right after changing records.
Results are compact JSON with a matching output schema. Long record lists say how many were left out.
Benchmark
Measured 2026-09-26 with gpt-5.4-mini, 13 fixed tasks graded by fixed checks (bench/tasks.json, raw results in bench/results/).
Server | Correct | Input tokens | Output tokens | Tool calls | Median time |
This server | 13/13 | 29631 | 583 | 18 | 2.8 s |
mcp-dns, the most-used DNS lookup server | 3/13 | 13058 | 734 | 29 | 2.6 s |
Performance
Measured 2026-09-26 from Dubai, home connection against the live upstream, Node 24.19.0 (bench/perf.json, scripts/perf.mjs in the factory).
Call | First call | Repeat | Result size |
domain_report: google.com | 2246 ms | 0.8 ms | 740 chars |
domain_report: intel.com (DMARC p=none) | 2413 ms | 0.5 ms | 1,444 chars |
check_spf: gmail.com for one of Google's sending IPs | 309 ms | 0.3 ms | 532 chars |
check_spf: gmail.com for an outside IP | 301 ms | 0.3 ms | 521 chars |
check_spf: oracle.com, at the 10-lookup limit | 737 ms | 0.5 ms | 3,895 chars |
check_dkim: github.com, named selectors | 262 ms | 0.3 ms | 248 chars |
check_dkim: stripe.com, 30 common selectors | 781 ms | 1 ms | 716 chars |
dns_lookup: github.com from two resolvers | 1172 ms | 0.3 ms | 2,594 chars |
domain_lookup: 5 names (subdomain, co.uk, unregistered, no RDAP) | 2702 ms | 0.3 ms | 1,713 chars |
First call: a fresh server process, including the TLS connection and the upstream's own time. Repeat: the same call again, answered from the in-process cache, so it shows this server's own overhead.
Tool definitions the model reads on every turn (name, description, input schema): 2,503 characters, against 254 for mcp-dns, the most-used DNS lookup server. The full tool list, with the output schemas and annotations clients use to validate results, is 4,239 characters (253 for the alternative).
Data sources
DNS: Cloudflare and Google public DNS over HTTPS.
Registration: each registry's RDAP server, found through IANA's RDAP bootstrap.
Registrable domains: the Public Suffix List (ICANN section).
More MCP servers by Arhan Canli
End of Life: Is this version still supported? EOL dates, latest patch and upgrade target for 470+ products.
Internet Standards: RFC sections, status, obsoleted-by chains, errata and IANA registries for coding agents.
Package Truth: Checks packages exist before install: version, deprecation, vulnerabilities, licence. 7 ecosystems.
Release Notes: What changed between two versions of a package: breaking changes, deprecations, security fixes.
Citation Check: Verifies citations: finds fabricated or mismatched references and retractions, returns clean BibTeX.
Drug Label: FDA drug label answers with section citations, RxNorm name resolution, recalls and shortages.
Recall Check: One recall check across CPSC, FDA and NHTSA: match by name, model number, UPC or VIN.
Satellite Imagery: Find the clearest Sentinel-2, Landsat, Sentinel-1 or NAIP scene for any place, with band links.
The whole collection, 3 more
License
MIT, Copyright (c) 2026 Arhan Canli.
Available Tools
5 toolscheck_dkimCheck DKIM keysARead-onlyIdempotent
Looks up DKIM keys at the given selectors (or 30 common provider selectors): key type, size in bits, testing and revoked flags, problems. Selectors cannot be listed from DNS; the selector is in a sent message's DKIM-Signature (s=).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | domain, e.g. example.com | |
| selectors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds valuable behavioral context by noting the selector sourcing limitation and the fallback to common selectors. This goes beyond the annotations, though it doesn't describe error handling or response shape, which is acceptable given the output schema exists.
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 sentences, no fluff. The first sentence front-loads the core function and output details; the second provides a crucial usage hint. Every clause earns its place.
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 read-only lookup with an output schema, the description covers purpose, selector sourcing, and parameter behavior. It omits explicit alternative routing, but the domain-specific nature and sibling names make it sufficiently complete for an agent to invoke correctly.
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 50%: the domain parameter is described in the schema, but the selectors array items are not. The description compensates by explaining that selectors are optional and default to 30 common provider selectors, clarifying the semantic role of the selectors parameter beyond the raw 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?
The description clearly states the tool's function: it looks up DKIM keys at specified selectors, detailing the key attributes it returns (type, size, flags, problems). It distinguishes itself from siblings like check_spf (SPF-specific) and dns_lookup (generic DNS) by focusing on DKIM and its selector-based lookup.
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 provides important usage context: it explains that selectors cannot be discovered via DNS and must come from a sent message's DKIM-Signature header. It also mentions the fallback to 30 common provider selectors when none are given. However, it doesn't explicitly compare to alternatives like check_spf or dns_lookup, though the domain-specific nature makes it clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_spfEvaluate SPFARead-onlyIdempotent
Evaluates a domain's SPF in full: the include tree, DNS lookups against the limit of 10, void lookups, syntax, and with ip the result a receiver would reach (pass, fail, softfail, neutral, permerror) and the mechanism that decided it.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | sending IP to evaluate | |
| domain | Yes | domain, e.g. example.com | |
| sender | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | |
| lookups | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral detail beyond that: it discloses that DNS lookups are checked against the limit of 10, that void lookups and syntax are examined, and that a provided IP changes the result to what a receiver would see. No contradictions.
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 that packs in every meaningful detail without fluff. Each listed element (include tree, DNS lookups, void lookups, syntax, result, mechanism) contributes directly to understanding tool behavior.
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?
Given the annotations already cover safety and the output schema presumably documents return values, the description is nearly complete. It fully scopes what is evaluated and the effect of the IP parameter. The only real gap is the sender parameter, which is left unexplained 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?
The schema covers 2 of 3 parameters (domain and ip), leaving sender undescribed. The description adds meaning to ip ('with ip the result a receiver would reach') and implies domain as the target, but does not explain sender's role at all. It partially compensates for schema gaps but not fully.
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 uses a specific verb ('Evaluates') and resource ('a domain's SPF'), then enumerates exactly what 'in full' means: include tree, DNS lookup count, void lookups, syntax, and the receiver result with an IP. This clearly distinguishes it from sibling tools like check_dkim or dns_lookup.
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 purpose is obvious from the name and description, but there is no explicit guidance about when to use this tool versus alternatives such as check_dkim or dns_lookup. No exclusions or alternative recommendations are given; 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.
dns_lookupDNS recordsARead-onlyIdempotent
DNS records of a name by type (default A, AAAA, MX, NS, TXT, CAA) with TTLs, from Cloudflare's resolver; compare: true also asks Google's and flags differences (propagation). Says when DNSSEC validated the answer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| types | No | ||
| compare | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| records | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds significant behavioral detail beyond annotations: it names Cloudflare as the resolver, explains that compare:true queries Google's resolver and flags propagation differences, and states that DNSSEC validation status is reported. These are concrete behaviors an agent needs to interpret results correctly, and there is no contradiction with 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?
The description is two sentences with no wasted words. The core action and default types are front-loaded, followed by the optional compare behavior and DNSSEC note. Every clause adds value, and the structure is highly readable for an agent scanning quickly.
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?
An output schema exists, so return-value structure is already defined. The description covers the essential behavioral facets: record types, TTLs, resolver, comparison mode, and DNSSEC validation. For a read-only, idempotent DNS lookup tool, this is complete—nothing an agent needs to invoke it correctly is missing.
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?
With schema description coverage at 0%, the description must carry the burden for parameters. It explains the 'types' parameter by listing the default set (A, AAAA, MX, NS, TXT, CAA) and the 'compare' parameter by describing its boolean effect (query Google and flag differences). The 'name' parameter is implicitly clear from 'of a name'. It does not enumerate all possible types from the enum, but that is not required; it adds meaning beyond the bare 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?
The description states the operation precisely: retrieving DNS records of a name by type, listing the default types (A, AAAA, MX, NS, TXT, CAA), and adding unique features like TTLs, resolver source, comparison, and DNSSEC status. This clearly distinguishes it from sibling tools like check_dkim and check_spf, which focus on email authentication, and domain_lookup/report which are broader domain queries.
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 makes the tool's purpose unambiguous—querying DNS records—so an agent can infer when to use it. However, it does not explicitly state when not to use it or mention alternatives (e.g., for DKIM/SPF checks use check_dkim). It gives clear context but no exclusions, which aligns with a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_lookupRegistration and availabilityARead-onlyIdempotent
Registration of up to 20 domains from each registry's RDAP server: registered or likely available, registrar, created and expiry dates, days left, status codes, DNSSEC, name servers. Subdomains resolve to their registrable domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavioral context: it queries each registry's RDAP server, handles up to 20 domains, and resolves subdomains to their registrable domain. No contradiction with 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?
The description is a single dense sentence, front-loaded with the core action and a colon-separated list of returned data. It is compact with no filler, though the subdomain behavior is tacked on at the end without a clear structural break.
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?
Given the simple read-only nature, an output schema exists (so return values are covered), and annotations handle safety, the description is largely complete. It still lacks guidance on error scenarios and sibling differentiation, but covers core behavior and input constraints well.
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 carries the burden for parameter meaning. It explains that the 'domains' array accepts domain names, that subdomains are normalized to registrable domains, and that up to 20 are allowed. This adds value beyond the raw schema constraints.
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 states the tool retrieves registration/availability data from RDAP, listing specific fields like registrar, dates, DNSSEC, and name servers. It is clear enough to distinguish from sibling tools (check_dkim, check_spf, dns_lookup), though 'Registration of' is slightly awkward phrasing and not an explicit verb like 'retrieves'.
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?
No explicit guidance is given about when to use this tool versus alternatives like dns_lookup or domain_report. The description implies a registration-info use case but does not state when to prefer it, what scenarios it should not be used for, or how it differs from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_reportDomain and email health reportARead-onlyIdempotent
One-call health check of a domain: registration and expiry, name servers, MX, SPF (lookups, policy), DMARC, DKIM at common selectors, MTA-STS, TLS-RPT, BIMI, CAA, DNSSEC, and whether it meets Gmail and Yahoo bulk-sender DNS rules, with ranked findings and fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | domain, e.g. example.com |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | |
| findings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds meaningful behavioral context by explaining the scope of the health check, that it aggregates many checks into one call, and that output includes ranked findings and fixes.
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?
The description is a single, tightly packed sentence that front-loads the tool's purpose ('One-call health check') before listing the included checks. Every item in the list earns its place, and there is no filler or redundant phrasing.
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 only one required parameter, full schema coverage, a rich output schema, and comprehensive annotations, the description covers the tool's scope and expected output thoroughly. Nothing critical for selecting or invoking the tool is missing.
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 100%, so the single 'domain' parameter is already fully documented with format and example. The description only restates that it operates on a domain and adds no new parameter-level meaning, so the baseline score of 3 is appropriate.
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 begins with a specific verb phrase 'One-call health check of a domain' and enumerates a precise list of checks it performs, ending with the deliverable 'ranked findings and fixes.' This clearly distinguishes it from the more granular sibling tools like check_dkim, check_spf, dns_lookup, and domain_lookup.
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 phrase 'One-call health check' strongly implies using this tool when a comprehensive domain and email setup review is needed, versus using the narrower sibling tools for individual checks. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent to route correctly.
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.
5 tool updates
v0.1.0- First observed
check_dkim - First observed
check_spf - First observed
dns_lookup - First observed
domain_lookup - First observed
domain_report
TDQS
Scored across 5 tools
Each tool targets a distinct aspect of domain health: DKIM keys, SPF evaluation, DNS records, registration data, and a comprehensive aggregate report. The only potential overlap is domain_report including the checks of the other tools, but it is clearly positioned as a summary endpoint, not a replacement.
Tool names follow a consistent lowercase_snake_case pattern with clear verb prefixes: check_ for protocol-specific validations, lookup for record/registration queries, and report for the aggregate. The naming scheme is predictable and unambiguous.
Five tools is a tight, well-scoped set for a domain-health server. Each tool addresses a distinct need without redundancy, and the count is well within the ideal range.
The tool set covers the major pillars of domain health: DNS, registration, SPF, DKIM, and an all-in-one report that includes DMARC, MTA-STS, BIMI, and bulk-sender compliance. The report tool fills gaps that individual checks might leave, so no critical missing operations exist.
Maintenance
Related MCP Connectors
One-call domain audit: MX receiving, SPF/DMARC/DKIM spoofing protection, disposable-address risk.
Scan and fix a domain's email deliverability (SPF, DKIM, DMARC, MTA-STS, BIMI, DNS blocklists).
Email security and AI discoverability scores for any domain, with the exact record or tag to fix.
Email posture for any domain: can it receive mail, can it be spoofed? MX, SPF and DMARC.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables DNS and email security analysis through passive and active scanning capabilities. Provides comprehensive domain security checks including SPF, DMARC, DNSSEC validation, MX record analysis, and SMTP connectivity testing.MIT
- AlicenseAqualityDmaintenanceProvides comprehensive tools for real-time DNS queries across 53 record types, global propagation checks, and SSL certificate analysis. It also enables domain security scans for SPF/DKIM/DMARC configurations and HTTP uptime monitoring.847 npm23Apache 2.0
- AlicenseAqualityAmaintenanceEnables auditing any domain's email deliverability and DNS health, including SPF, DKIM, DMARC, MX, mail provider, DNS blacklist status, catch-all, domain age, and a deliverability score.131 npm1MIT
- AlicenseNot gradedqualityCmaintenanceAudits email deliverability configuration for a domain, checking SPF, DKIM, DMARC, and MX records, returning a score and recommendations.MIT