MailAlign
Email header analyzer: SPF/DKIM/DMARC/ARC verdicts, domain alignment, hop delays. No lookups.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"mailalign": {
"url": "https://mailalign.mike-tusa.workers.dev/mcp"
}
}
}Remote endpoints
https://mailalign.mike-tusa.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (1)
🟢analyze_headers(headers, include_raw)
Analyze pasted raw email headers. Reports From / Return-Path / Reply-To / DKIM d= alignment (relaxed and strict), SPF / DKIM / DMARC / ARC verdicts as recorded by the receiving servers (Authentication-Results, ARC-*), the Received hop chain oldest first with per-hop delays and public IPs, and plain-English findings with severity and what each means or how to fix it. Makes no network or DNS calls and does not verify signatures. Header text is not stored. Read-only. Same engine as the MailAlign JSON API (POST /api/analyze).
Input Schema
{
"type": "object",
"properties": {
"headers": {
"type": "string",
"minLength": 1,
"maxLength": 60000,
"description": "The full raw header block of one email, e.g. \"Received: from ...\nAuthentication-Results: ...\nFrom: ...\". A body after the first blank line is ignored."
},
"include_raw": {
"type": "boolean",
"default": false,
"description": "Also return the full /api/analyze JSON (all findings and hops) in structuredContent.raw."
}
},
"required": [
"headers"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"pass",
"review",
"fail",
"unknown"
]
},
"fromDomain": {
"type": "string"
},
"spf": {
"type": "string"
},
"dkim": {
"type": "string"
},
"dmarc": {
"type": "string"
},
"arc": {
"type": "string"
},
"dkimAligned": {
"type": "object",
"properties": {
"strict": {
"type": "boolean"
},
"relaxed": {
"type": "boolean"
}
},
"required": [
"strict",
"relaxed"
]
},
"spfAligned": {
"type": "object",
"properties": {
"strict": {
"type": "boolean"
},
"relaxed": {
"type": "boolean"
}
},
"required": [
"strict",
"relaxed"
]
},
"hops": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hop": {
"type": "number"
},
"from": {
"type": "string"
},
"by": {
"type": "string"
},
"ip": {
"type": "string"
},
"ipScope": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"delaySeconds": {
"type": "number"
}
},
"required": [
"hop"
]
}
},
"hopsOmitted": {
"type": "number"
},
"totalDelaySeconds": {
"type": "number"
},
"publicIps": {
"type": "array",
"items": {
"type": "string"
}
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"critical",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
},
"required": [
"severity",
"code",
"title",
"detail"
]
}
},
"findingsOmitted": {
"type": "number"
},
"version": {
"type": "string"
},
"raw": {
"type": "object",
"description": "Full /api/analyze response (only when include_raw is true)"
}
},
"required": [
"verdict",
"findings",
"hops",
"version"
]
}Community
Evidence