Skip to main content

langchain-dnsdoctor

LangChain tools for DNS Doctor: scan, diagnose and fix a domain's email authentication (SPF, DMARC, DKIM), check a DNS change from six locations on four continents, audit an SPF include chain, test how a real email authenticates, and read monitoring alerts. Every verdict is deterministic and every record comes from a validating engine, never from a language model.

Twenty-five tools, the same set the hosted MCP server exposes. Tool names, descriptions and input schemas are generated from that server and shipped in tools.json; this package restates none of them.

Install

pip install langchain-dnsdoctor

Python 3.10+, langchain-core 1.x. No API key is needed for the eighteen anonymous tools.

Use

from langchain.agents import create_agent
from langchain_dnsdoctor import DnsDoctorToolkit

toolkit = DnsDoctorToolkit()
agent = create_agent(
    model="claude-sonnet-4-6",
    tools=toolkit.get_tools(),
    system_prompt=toolkit.instructions,
)
agent.invoke({"messages": [{"role": "user", "content": "Is example.com spoofable? Fix it."}]})

toolkit.instructions is the hosted server's own guidance and belongs in the system prompt: present records verbatim, a temperror status is transient and not a failure, not_registered: true is not health, SPF is diagnose-only, a human approves every DNS change. Two tool descriptions are longer than OpenAI's 1024-character limit for function descriptions; those are cut at a sentence boundary on the tool and carried in full in the instructions.

A subset, or a single tool:

from langchain_dnsdoctor import dnsdoctor_tools

scan, upgrade = dnsdoctor_tools(["scan_domain", "build_dmarc_upgrade"])
print(scan.invoke({"domain": "example.com"}))

Tools

Tool What it answers
scan_domain, get_report The full report: SPF, DKIM, DMARC, MX, DNS health, blacklists, domain and TLS expiry, with copy-paste fix records
build_dmarc_upgrade, generate_dmarc_record, validate_dmarc_record The next safe DMARC rung for a domain, a record from scratch, or a check of one you have
count_spf_lookups, audit_spf_includes The 10-lookup budget, and who can transitively send as the domain
check_dkim_selector, check_record, check_reverse_dns, check_propagation One selector, one record, one IP, or whether a change has gone global
parse_dmarc_report An aggregate report (XML, gzip or zip, base64-encoded) as a source table
build_parked_domain_records The three records that stop a non-sending domain being spoofed
lookup_registration Who a domain is registered with, when it expires, its nameservers and locks (RDAP)
check_lookalikes Which close look-alike names of a domain resolve or accept mail (DNS-only facts, never a verdict)
start_email_test, get_email_test How one real message authenticated: a single-use address to send to, then the SPF, DKIM, DMARC and blacklist verdicts and an itemized score
start_monitoring_signup A signup link that carries the domain into paid monitoring, for a human to open
get_alerts, get_readiness, get_lookalikes Monitoring reads: alerts, enforcement readiness, watched lookalikes with a threat %; need DNSDOCTOR_API_TOKEN
add_monitored_domain, check_domain_verification, get_domain_records Add a domain to the account's monitoring and read the records it still needs; need DNSDOCTOR_API_TOKEN
list_email_tests The account's recent email tests, newest first; needs DNSDOCTOR_API_TOKEN

Environment

Variable Effect
DNSDOCTOR_API_TOKEN Optional bearer token. Raises the anonymous rate limit and unlocks the seven account tools. Never prompted for.
DNSDOCTOR_API_BASE Override the API origin (default https://dnsdoctor.dev).

Past the free per-caller allowance the API answers 402 with an x402 offer (USDC on Base). This package does not pay; the tool returns the offer text so an agent with an x402 client can retry with payment, or wait.

Rules the tools follow

  • A transport failure (rate limit, 402, 503, 5xx, network) is returned as text that says it is not a verdict about the domain. It never raises.
  • Responses are relayed byte-for-byte. The package composes no record and no URL.
  • SPF is diagnose-only. The one SPF record the API ever emits is the constant -all inside the parked-domain pack, for a domain the server verified sends no mail.

Development

pip install -e ".[test]"
pytest                      # unit tests, offline
pytest tests/integration_tests -m integration   # one live call against dnsdoctor.dev

Apache-2.0.

Metadata

Release files for langchain-dnsdoctor 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchain-dnsdoctor 0.4.0
File Size Uploaded
langchain_dnsdoctor-0.4.0.tar.gz 28.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langchain-dnsdoctor 0.4.0
File Interpreter ABI Platform
langchain_dnsdoctor-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 56.8 kB

Release files / langchain_dnsdoctor-0.4.0.tar.gz

Download URL langchain_dnsdoctor-0.4.0.tar.gz
Size 28.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0f83bb227883f0d4331f330f40be4ed99204da23dda838a02edd5e759a05745b
BLAKE2b-256 checksum
How to use checksums
6b72f00ab06aac18c484f8595c890d9456b28e2a2d93852fd76b795efd6fe74b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Release files / langchain_dnsdoctor-0.4.0-py3-none-any.whl

Download URL langchain_dnsdoctor-0.4.0-py3-none-any.whl
Size 28.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5834e0dac3c059f60d1c5addfd13491642c76e588c66b31c01a2c4236def91c9
BLAKE2b-256 checksum
How to use checksums
4116dc266e55b69a2fe4e81d7e565d968cc8dbdbeb1bf255a2e3fcdf72fbcf0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page