MailAlign

Email header analyzer: SPF/DKIM/DMARC/ARC verdicts, domain alignment, hop delays. No lookups.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~622Tokens (tool definitions)
~5.4 KBTypical response size
Minimal attention impact (0.49% 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": {
    "mailalign": {
      "url": "https://mailalign.mike-tusa.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://mailalign.mike-tusa.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (1)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded1 tools