mcpbeat Sign in

drwho.me network and developer tools MCP Server

answering

drwho.me network and developer tools is answering right now. Last checked 3 min ago. It exposes 29 tools.

29 free tools: DNS, email auth (SPF, DKIM, DMARC), TLS, headers, WHOIS, dev utils.

The linked repository no longer exists on GitHub — it was deleted or made private.

Uptime history 47 days of history · worst day 71%
47 days agonow
100.0%
Uptime 24h
92 of 92 checks
29
Tools
read from the server
800 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 54

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 28 August 2026. No other catalogue keeps this.

17 Sep 21 tool descriptions were rewritten dns_lookup, dossier_ai_crawlers, dossier_cors and 18 more
17 Sep 21 tools changed the parameters they ask for dns_lookup, dossier_ai_crawlers, dossier_cors and 18 more
17 Sep 8 tools appeared base64_decode, base64_encode, dossier_summary and 5 more
17 Sep a tool disappeared dossier_full
28 Aug 3 tools appeared dossier_ai_crawlers, dossier_llms_txt, dossier_security_txt

drwho.me network and developer tools does not always answer

Over the last week it answered 95.6% of our checks. We check every 15 minutes, so you hear about the next outage within the hour — not from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 3 min ago.

run in your terminal
claude mcp add tools --transport http https://drwho.me/mcp/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "tools": {
      "url": "https://drwho.me/mcp/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.tools]
url = "https://drwho.me/mcp/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "tools": {
      "url": "https://drwho.me/mcp/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "tools": {
      "url": "https://drwho.me/mcp/mcp"
    }
  }
}

Available tools 29

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

dossier
dossier_ai_crawlers
Report what a domain's robots.txt says to the major AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, meta-externalagent): allowed, blocked or unspecified for each. Use to answer whether a site lets AI models train on or retrieve its content. A missing robots.txt is data, not an error: every crawler is then unspecified. One fetch, 10 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_cors
Send a CORS preflight (OPTIONS) to https://<domain>/ and return the access-control-* headers in the answer. Use to check whether a site accepts cross-origin requests from a given origin and method. One request, 5 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_ct_log
List subdomains of a domain that appear in Certificate Transparency logs. Use to map what hosts a domain has exposed through the certificates issued for it. Queries crt.sh, then certspotter if crt.sh fails; capped at 100 unique names, 10 s timeout. A name in the log is not proof the host still exists. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_dkim
Probe a domain for DKIM public keys at <selector>._domainkey.<domain>. Pass selectors when you know them; omit to probe a built-in list of common selectors used by large mail providers. A selector not on the list will not be found, so an empty result does not prove the domain has no DKIM. Distinguishes a selector that is absent from one that could not be resolved. Parallel Cloudflare DNS-over-HTTPS TXT queries. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_dmarc
Find and parse the DMARC policy at _dmarc.<domain> into its tags (p, sp, pct, rua, ruf, adkim, aspf). Use to see whether spoofed mail is rejected, quarantined or only reported. Queries Cloudflare DNS-over-HTTPS, 5 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_dns
Fetch a domain's A, AAAA, NS, SOA, CAA and TXT records in one call. Use as the first step of a DNS review; prefer dns_lookup for a single record type or for MX, CNAME and SRV. Sends six Cloudflare DNS-over-HTTPS queries in parallel, 5 s timeout each. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_dnssec
Check whether a domain's zone is signed with DNSSEC and validates: DS and DNSKEY records plus the resolver's AD (authenticated data) flag. Queries Cloudflare DNS-over-HTTPS with DO=1, 8 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_headers
Fetch https://<domain>/ and return every response header, so you can review Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy and Permissions-Policy. Returns the final URL after redirects and the headers as served. One GET, 5 s timeout. For the redirect hops themselves use dossier_redirects. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_llms_txt
Check whether a domain publishes an llms.txt, the markdown index some sites provide for AI agents. Requires a non-HTML content type and a leading markdown heading, so a catch-all page that answers 200 with HTML does not count. One fetch, 10 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_mta_sts
Fetch and validate a domain's MTA-STS policy (mode, mx, max_age). Use to confirm inbound mail to the domain must be delivered over TLS. Resolves the _mta-sts TXT record, then fetches https://mta-sts.<domain>/.well-known/mta-sts.txt, 10 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_mx
List a domain's MX (mail exchanger) records sorted by priority. Use to see where a domain's inbound mail goes, or before checking SPF and DMARC. Queries Cloudflare DNS-over-HTTPS, 5 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_redirects
Trace the redirect chain from https://<domain>/, one entry per hop with its status code and target, up to 10 hops. Use to debug redirect loops or confirm an HTTP to HTTPS or apex to www redirect. 5 s per hop. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_security_txt
Check whether a domain publishes /.well-known/security.txt (RFC 9116), the standard way to tell researchers where to report a vulnerability. Returns the Contact and Expires fields. Requires a non-HTML content type and a Contact field. One fetch, 10 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_spf
Find and parse a domain's SPF record into its mechanisms. Use to check which servers may send mail for a domain, or to debug delivery failures; pair with dossier_dmarc and dossier_dkim for the whole email-authentication picture. Reads TXT records over Cloudflare DNS-over-HTTPS. Reports records that contain v=spf1 but do not start with it (for example behind a hidden byte-order mark) as lookalikes that receivers discard, and treats more than one SPF record as an error, as RFC 7208 requires. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_summary
Run the nine DNS, email-authentication and TLS checks on a domain in parallel and return one graded line per check: DNS records, MX, SPF, DMARC, DKIM, DNSSEC, TLS-RPT, MTA-STS and the TLS certificate. Use it first when asked how a domain is set up or whether its email can be spoofed; then call the single dossier_* tool for any check you need the raw data for. Each line has the check id, its status, a severity (info, low, medium, high, critical) and a one-line reason, graded by the same rules as Domain Posture. It does not return raw records or fix instructions, and it leaves out the nine web and discovery checks; the full 18-check graded report is linked in the result. Returns JSON {domain, checks:[{id, status, severity, reason}], worst}. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_tls
Read the TLS certificate a domain presents on port 443: subject, issuer, validity dates, days remaining, subject alternative names, SHA-256 fingerprint and whether the chain validated. Use to check expiry or a name mismatch. It does not test cipher suites or protocol versions. One TLS handshake from the drwho.me server, 5 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_tlsrpt
Look up a domain's SMTP TLS Reporting policy at _smtp._tls.<domain>. Use to confirm the domain receives reports about failed TLS delivery of its inbound mail. Queries Cloudflare DNS-over-HTTPS. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_web_surface
Summarise a domain's public web surface: robots.txt, sitemap.xml and the home page's title, description, OpenGraph and Twitter card tags. Use for a quick SEO or link-preview review. Three parallel HTTPS fetches capped at 64 KB each. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
dossier_whois
Look up a domain's registrar, creation date, expiry date and registry statuses. Use for an ownership or expiry check. Tries WHOIS over TCP port 43, then RDAP over HTTPS when the registry refuses; returns not_applicable when neither answers, which is common for some country-code domains. 15 s timeout. Returns JSON with a status field: {status:"ok", data, fetchedAt} on success, {status:"not_applicable", reason} when the thing is genuinely absent, {status:"timeout", ms}, or {status:"error", message} when it could not be determined. Treat not_applicable as a finding and error as unknown.
base64
base64_decode
Decode base64 to UTF-8 text. Accepts the standard and the URL-safe alphabet, with or without padding or line breaks. Fails when the input is not valid base64 or does not decode to text (binary data is not returned). Runs locally.
base64_encode
Encode UTF-8 text as base64. Set url_safe for the URL-safe alphabet (- and _ in place of + and /, no padding), as used in JSON Web Tokens. Runs locally. Returns the encoded string.
url
url_decode
Decode percent-encoded text. Fails on a malformed sequence such as a lone % sign. A plus sign is left as a plus; replace it with a space first if the text came from an HTML form. Runs locally.
url_encode
Percent-encode text for use in a URL query value or path segment (encodeURIComponent rules: everything except letters, digits and - _ . ! ~ * ' ( ) is encoded). Runs locally. Returns the encoded string.
dns
dns_lookup
Resolve one DNS record type (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA or SRV) for a name and return the raw answers. Use for a quick, targeted lookup, including on subdomains and names such as _dmarc.example.com; prefer dossier_dns for a domain's main records in one call. Queries Cloudflare DNS-over-HTTPS. Returns a JSON array of {name, type, TTL, data}; an empty array means the name exists but has no record of that type.
json
json_format
Validate JSON and re-print it with an indent of 2 or 4 spaces, or minified with indent 0. Use to check whether a string is valid JSON or to make it readable. Runs locally. Returns the formatted JSON, or the parser's error message.
jwt
jwt_decode
Decode a JSON Web Token's header and payload. It does NOT verify the signature, so never treat the claims as trusted on the strength of this tool. Use to inspect claims such as exp, iss and aud while debugging. Runs locally; the token is not stored or sent anywhere. Returns JSON {header, payload, signature}.
lookup
ip_lookup
Look up an IPv4 or IPv6 address: city, region, country, coordinates, timezone and the network (ASN and organisation) that announces it. Use when you need location or ownership context for an address; it does not accept hostnames, so resolve those with dns_lookup first. Data comes from ipinfo.io and location is approximate. Returns JSON {ip, city, region, country, loc, org, timezone}.
user
user_agent_parse
Parse a User-Agent header into browser, operating system, device and rendering engine. Use when reading server logs or request headers. Runs locally with no network call. Returns JSON {browser:{name,version}, os:{name,version}, device:{type,vendor,model}, engine:{name}}; unknown fields are empty strings.
uuid
uuid_generate
Generate UUIDs. Version 4 is fully random. Version 7 starts with a millisecond timestamp, so values sort by creation time, which suits database keys. Runs locally with a cryptographic random source. Returns a JSON array of strings.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

dossier_full
removed 17 Sep 2026

Endpoints

URLTransportStateLatencyChecked
https://drwho.me/mcp/mcp streamable-http answering 687 ms 3 min ago

Alternatives to drwho.me network and developer tools

same job, measured the same way
Domainposture
by domainposture

Remote MCP server: 19 domain-hygiene and email-auth tools (DNS, SPF, DMARC, DKIM, TLS).

22 tools answering
Domain Security
by ortamarco

Audit a domain's email and web security: SPF, DKIM, DMARC, MTA-STS, DNSSEC, TLS, WHOIS. No API keys.

377 installs/wk local only
Vanmoose MCP Server
by codevanmoose

197 MCP tools from 74 developer APIs — screenshots, email, NLP, WHOIS, QR, PDF, and more.

28 installs/wk local only
AI-operated. Email authentication reader: six free tools, no key, no signup.
by workers-rjhsignaltech-ai

AI-operated. Free SPF (RFC 7208 count), DMARC, MTA-STS, DMARC rua/ruf readers. Paid audit $29.

11 tools answering
BlackVeil DNS & Email Security Scanner
by blackveilsecurity

DNS and email security scanner with 80 MCP tools for SPF, DMARC, DNSSEC, SSL, and brand audits.

80 tools answering
IntoDNS.ai DNS & Email Security Scanner
by intodns

DNS and email security: check SPF, DKIM, DMARC, DNSSEC, DANE and build the records. 45 tools.

156 installs/wk 45 tools answering
Pntr
by pntr

Free developer subdomains with DNS, catch-all email, and webhook capture, managed via MCP.

66 installs/wk local only
Deliverability Doctor
by integrity-os

Check if a domain can be email-spoofed: SPF, DMARC, DKIM, MX graded from public DNS. Authless.

2 tools answering

drwho.me network and developer tools — questions

Answers built from our own checks of this server.

What can drwho.me network and developer tools do?
It exposes 29 tools, read directly from the server on our last check. Among them: base64_decode, base64_encode, dns_lookup, dossier_ai_crawlers, dossier_cors, dossier_ct_log and 23 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is drwho.me network and developer tools mostly used for?
Its tools cluster around dossier, base64 and url. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is drwho.me network and developer tools working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 800 ms. The bar chart above shows every period we have measured.
Did drwho.me network and developer tools ever remove tools?
Yes. dossier_full is no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
Is drwho.me network and developer tools still maintained?
The linked repository no longer exists on GitHub — it was deleted or made private. We show this because it changes what you can expect: an unmaintained server may keep answering for months and then stop without warning.
How do I connect drwho.me network and developer tools?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does drwho.me network and developer tools need an API key?
No. drwho.me network and developer tools completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 29 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is drwho.me network and developer tools?
It answers our handshake in 800 ms on average, which is faster than 14% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.