DomainRef - domain and email security check

Pay-per-call domain and email security check: SPF, DKIM, DMARC, TLS, DNSSEC, BIMI, with exact fixes.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
80%
Poisoning risk
60%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin domain_check
  • MEDIUMTool description contains URL to non-standard domainin domain_age

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,133Tokens (tool definitions)
~3.6 KBTypical response size
Moderate attention impact (0.89% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "domainref": {
      "url": "https://domainref.dev/mcp"
    }
  }
}

Remote endpoints

https://domainref.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (2)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢domain_check(domain, api_key)

PAID ($0.01). Use when mail lands in spam, before an email campaign, for vendor due diligence or to confirm a Microsoft 365 tenant: graded SPF, DKIM, DMARC, MX, MTA-STS, DNSSEC, CAA, TLS and domain age, plus BIMI and blocklist info, each with the exact fix record. Non-intrusive. $0.01 per domain. Returns a 0-100 score and, per check (spf, dkim, dmarc, mx, tls = website certificate, m365, registration, mta_sts, tls_rpt, dnssec, caa, bimi, dnsbl = UCEPROTECT blocklist), a pass/warn/fail/info grade, the finding and the exact record or step that fixes it. Info checks do not move the score. Invalid, nonexistent or private-only domains are refused free. MCP: pass api_key (an Afriref key, card credit at https://afriref.dev/pricing); per-call x402/MPP payment is HTTP only, so without a key the result is an api_key_required error naming the HTTP endpoint.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain or hostname, e.g. example.com (no URL, no IP)"
    },
    "api_key": {
      "description": "API key (bypasses x402; metered for invoicing)",
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "error": {
      "description": "Present on a free refusal or error; no charge"
    },
    "explanation": {},
    "no_charge": {
      "type": "boolean"
    },
    "how_to_pay": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "http_endpoint": {
      "type": "string"
    },
    "price_usd": {
      "type": "number"
    },
    "fix": {
      "type": [
        "string",
        "null"
      ]
    },
    "diagnosis": {},
    "domain": {
      "type": "string"
    },
    "checked_at": {
      "type": "string"
    },
    "score": {
      "type": "number"
    },
    "letter": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "checks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "check": {
            "type": "string"
          },
          "grade": {
            "type": "string"
          },
          "finding": {
            "type": "string"
          },
          "fix": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": {}
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": {},
  "description": "Domain and email security report: 0-100 score, letter, summary and one entry per check with grade, finding and fix. A refusal (invalid or unknown domain, broken DNS, api_key_required) is isError with error and explanation; nothing is charged"
}
🟢domain_age(domain, api_key)

PAID ($0.005). Not for registries without RDAP, e.g. .za/.co.za, .me, .de, .io, .eu: refused free (422). Use when you need to know which registrar holds a domain, how old it is, and whether it is a risky newly-registered domain. $0.005. From the registry's RDAP: registrar name and IANA ID (no registrant or contact data), created, expires, last changed, status flags, DNSSEC delegation, nameservers; fail under 30 days old or expired, warn under 180 days, expiring within 30 days or on hold. A registry without RDAP is refused free. MCP: pass api_key (an Afriref key, card credit at https://afriref.dev/pricing); per-call x402/MPP payment is HTTP only, so without a key the result is an api_key_required error naming the HTTP endpoint.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain or hostname, e.g. example.com (no URL, no IP)"
    },
    "api_key": {
      "description": "API key (bypasses x402; metered for invoicing)",
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "error": {
      "description": "Present on a free refusal or error; no charge"
    },
    "explanation": {},
    "no_charge": {
      "type": "boolean"
    },
    "how_to_pay": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "http_endpoint": {
      "type": "string"
    },
    "price_usd": {
      "type": "number"
    },
    "fix": {
      "type": [
        "string",
        "null"
      ]
    },
    "diagnosis": {},
    "domain": {
      "type": "string"
    },
    "checked_at": {
      "type": "string"
    },
    "grade": {
      "type": "string"
    },
    "finding": {
      "type": "string"
    },
    "registration": {},
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": {},
  "description": "Registration from the registry's RDAP: grade, finding, fix and registrar, created, expires, status and nameservers. A refusal (invalid domain, registry without RDAP, api_key_required) is isError with error and explanation; nothing is charged"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded2 tools