protogrid

Search / com.domaincanary/mcp

DomainCanary

R0· no sign-in

Check a domain's DMARC, SPF and DKIM, build SPF records, explain bounces, read DMARC reports.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality96strong
Trust82of 100
Uptime, 30 days99%
Latency p50202 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "domaincanary": {
      "type": "http",
      "url": "https://domaincanary.com/mcp"
    }
  }
}
claude mcp add --transport http domaincanary https://domaincanary.com/mcp
[mcp_servers.domaincanary]
url = "https://domaincanary.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "domaincanary": {
      "type": "remote",
      "url": "https://domaincanary.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "domaincanary": {
      "type": "http",
      "url": "https://domaincanary.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=domaincanary&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZG9tYWluY2FuYXJ5LmNvbS9tY3AifQ%3D%3D"
}
{
  "servers": {
    "domaincanary": {
      "type": "http",
      "url": "https://domaincanary.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "domaincanary": {
      "httpUrl": "https://domaincanary.com/mcp"
    }
  }
}
extensions:
  "domaincanary":
    enabled: true
    name: "domaincanary"
    type: streamable_http
    uri: "https://domaincanary.com/mcp"
    timeout: 300

Quality 96 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations4 of 4 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 1,217 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

4 tools, about 1,217 tokens to load them all · tool set e80a5c92a392 · checked 2026-10-20 11:08 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 82 / 100

no-repository
provenance55
liveness99
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-99% +updated-17d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://domaincanary.com/mcp streamable-httpnoneyes99%202 ms2026-07-282026-10-20

Tools (4)

analyze_reportread-onlyUse this when someone has a DMARC aggregate report and wants to know which senders passed and which failed. The report is the XML, .gz or .zip file that receivers such as Google and Yahoo email to the address in a domain's rua tag. In ChatGPT, pass the uploaded file. Elsewhere, pass the report XML as text. Returns totals per report and each sending IP address with its SPF, DKIM and DMARC results. The result gives a next step for the report's domain and a link to a live check of that domain's DNS records. Nothing from the report is stored.
build_spfread-onlyUse this when someone lists the services that send their email and wants the SPF record to publish, or wants a sender added to the SPF record they already have. Takes provider names such as Google Workspace or Mailchimp, include terms such as include:spf.example.com, or IP addresses, and returns one merged record with its count of DNS lookups against the limit of ten. Pass the domain when you know it, so the result includes the senders already in its published record.
check_domainread-onlyUse this when someone asks whether a domain's email authentication is set up correctly, why mail from a domain fails DMARC, SPF or DKIM, or which DNS records to publish for it. Reads the domain's live DMARC, SPF and DKIM records and returns what is wrong with each, plus the records to add or change. Pass a DKIM selector when you know it. Without one, common selectors are tried. Takes a domain name only, not a mailbox address or an IP address.
explain_bounceread-onlyUse this when someone pastes a bounce message, an SMTP reply such as 550 5.7.26, or an Authentication-Results header and asks what it means or how to fix it. Returns what the receiving server refused, what to change, when it clears, and the page that explains it. Works from the pasted text alone and reads no DNS records.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.domaincanary/mcp",
  "title": "DomainCanary",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://domaincanary.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://domaincanary.com/guides/check-your-domain-from-chatgpt-or-claude",
  "description": "Check a domain's DMARC, SPF and DKIM, build SPF records, explain bounces, read DMARC reports."
}