Check SPF/DKIM/DMARC of a domain, get a non-binding Fix & Verify quote, re-verify after the DNS fix.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Reads the public DNS of one domain and reports SPF, DKIM, DMARC, MX, MTA-STS and TLS-RPT findings, risks, unknowns and the exact DNS changes to fix them. Read-only; nothing is stored.
Domain name, e.g. example.com
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http agent-service-desk https://28in28.ai/mcp
Reads the public DNS of one domain and reports SPF, DKIM, DMARC, MX, MTA-STS and TLS-RPT findings, risks, unknowns and the exact DNS changes to fix them. Read-only; nothing is stored.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 3,
"description": "Domain name, e.g. example.com"
}
},
"additionalProperties": false
}Runs the email-authentication check of one domain and returns a machine-readable, NON-BINDING quote for Fix & Verify: price (EUR 99 net per domain), scope (exact DNS changes), acceptance criteria and the baseline to verify against later. Orders are not open: it creates no order, contract or payment and stores nothing. Keep the returned criteria and baseline to call verifyFixVerify after the records are published.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 3,
"description": "Domain name, e.g. example.com"
}
},
"additionalProperties": false
}Re-runs the check of the domain and compares it with the acceptance criteria and baseline of an earlier quoteFixVerify result: PASS when every criterion is resolved and no new critical or high finding appeared. Read-only; nothing is stored; a pass is not an invoice while orders are closed.
| Argument | Type | Description |
|---|---|---|
| token* | string | next.verify.arguments.token from the quote |
| domain* | string | The quoted domain |
| baseline* | array | baseline.risk_codes from the quote |
| criteria* | array | acceptance.criteria from the quote |
{
"type": "object",
"required": [
"domain",
"criteria",
"baseline",
"token"
],
"properties": {
"token": {
"type": "string",
"pattern": "^[0-9a-f]{32}$",
"description": "next.verify.arguments.token from the quote"
},
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 3,
"description": "The quoted domain"
},
"baseline": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9_]{1,48}$"
},
"maxItems": 40,
"description": "baseline.risk_codes from the quote"
},
"criteria": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9_]{1,48}$"
},
"maxItems": 40,
"description": "acceptance.criteria from the quote"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.