# MailVakt

> Use when email lands in spam: audits SPF, DKIM, DMARC, MX and returns the DNS records to fix it.

- name: com.mailvakt/mailvakt
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 87/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.mailvakt%2Fmailvakt
- tools: https://api.protogrid.dev/v1/servers/com.mailvakt%2Fmailvakt/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "mailvakt": {
      "type": "http",
      "url": "https://mcp.mailvakt.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-13d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 8 tools declare all four hints; missing: get_inbox_test (idempotentHint); analyze_email_headers (idempotentHint); generate_dns_records (idempotentHint); …
- pass `tools.token_cost`: about 1,723 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 10 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 1,723 tokens to load them all
- tool set hash: 1c4a2422cdc305467c88918e84024c6e
- tools last changed: 2026-10-06T18:03:45.486Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.mailvakt/mailvakt.svg)](https://protogrid.dev/servers/com.mailvakt/mailvakt)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-06 `get_dmarc_summary` changed (annotations)
- 2026-10-06 `list_domains` changed (annotations)
- 2026-10-06 `add_domain` changed (annotations)
- 2026-10-06 `get_inbox_test` changed (annotations)
- 2026-10-06 `start_inbox_test` changed (annotations)
- 2026-10-06 `generate_dns_records` changed (annotations)
- 2026-10-06 `analyze_email_headers` changed (annotations)
- 2026-10-06 `diagnose_domain` changed (annotations)
- 2026-10-04 `analyze_email_headers` changed (description, annotations)
  - before: Analyze raw email headers supplied by the user to investigate authentication or delivery issues. Returns the SPF, DKIM and DMARC results reported in those headers, alignment, sending IP and detected issues. Parses the supplied text without external DNS or HTTP lookups; it does not independently verify DKIM signatures or establish the receiving provider's exact spam-filter decision. Provide headers only, not the message body.
  - after: Analyze raw email headers supplied by the user to investigate authentication or delivery issues. Returns the SPF, DKIM and DMARC results reported in those headers, alignment, the sending IP, whether that IP and the From domain are on free public blocklists (not Spamhaus), and detected issues. It does not independently verify DKIM signatures or establish the receiving provider's exact spam-filter decision. Provide headers only, not the message body.
- 2026-10-04 `diagnose_domain` changed (description, inputSchema)
  - before: Audit a domain's SPF, DKIM, DMARC, MX, alignment, BIMI, MTA-STS and TLS-RPT configuration when troubleshooting email authentication or spam delivery. Takes a domain, optional checks and DKIM selectors, and fresh=true to bypass cached results. Returns a graded scorecard, findings, proposed DNS fixes and a public report permalink. Uses DNS and policy-file lookups; never changes DNS or guarantees inbox placement.
  - after: Audit a domain's SPF, DKIM, DMARC, MX, alignment, BIMI, MTA-STS and TLS-RPT setup and check it against free public blocklists (not Spamhaus) when troubleshooting email authentication or spam delivery. Takes a domain, optional checks and DKIM selectors, and fresh=true to bypass cached results. Returns a graded scorecard, findings, proposed DNS fixes and a public report permalink. Uses DNS and policy-file lookups; never changes DNS or guarantees inbox placement.

Full history: https://api.protogrid.dev/v1/servers/com.mailvakt%2Fmailvakt/changes

## Remotes

- https://mcp.mailvakt.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `add_domain`: Add a domain to the signed-in user's MailVakt account for DMARC report collection. Takes a domain; returns its DMARC reporting (rua) address and account entry. Repeated calls for the same account and domain return the existing entry. Requires domains:write permission. Does not verify domain ownership, modify DNS, or start receiving reports until the user publishes the reporting address in DNS.
- `analyze_email_headers`: Analyze raw email headers supplied by the user to investigate authentication or delivery issues. Returns the SPF, DKIM and DMARC results reported in those headers, alignment, the sending IP, whether that IP and the From domain are on free public blocklists (not Spamhaus), and detected issues. It does not independently verify DKIM signatures or establish the receiving provider's exact spam-filter decision. Provide headers only, not the message body.
- `diagnose_domain`: Audit a domain's SPF, DKIM, DMARC, MX, alignment, BIMI, MTA-STS and TLS-RPT setup and check it against free public blocklists (not Spamhaus) when troubleshooting email authentication or spam delivery. Takes a domain, optional checks and DKIM selectors, and fresh=true to bypass cached results. Returns a graded scorecard, findings, proposed DNS fixes and a public report permalink. Uses DNS and policy-file lookups; never changes DNS or guarantees inbox placement.
- `generate_dns_records`: Propose email-authentication DNS records and policy files for a domain using its DNS configuration and optional provider names or IDs. Supports baseline (monitoring) or enforce goals; baseline is the default. Returns typed SPF, DKIM, DMARC, MTA-STS and TLS-RPT proposals or provider setup instructions where applicable. Provider-specific values and reporting addresses may need user input. Uses public DNS/policy lookups, possibly cached. Does not publish records or change DNS.
- `get_dmarc_summary`: Summarize received DMARC aggregate reports for a domain already in the signed-in user's MailVakt account. Takes the domain and a 1-to-90-day window (default 7); returns report and message totals, DMARC pass/fail counts, and per-source SPF/DKIM alignment and receiver actions. Requires domains:read and reports:read permissions. Returns zero totals if no reports were received, or an error if the domain is not in the account. Does not add domains or generate report traffic.
- `get_inbox_test`: Read a MailVakt email-receipt test using the ID returned by start_inbox_test. Returns pending, received or expired status and, when processed, the received message's authentication, unsubscribe, content and deliverability findings. Reports processing failures as errors. Anyone with the test ID can retrieve it; use only an ID supplied by the user or created in this conversation. Does not measure placement at other mailbox providers.
- `list_domains`: List domains in the signed-in user's MailVakt account, including each domain's DMARC reporting address. Takes no input and requires domains:read permission. Returns an empty list if the account has no domains. Use to find the account's available domains before requesting DMARC summaries; does not enumerate domains belonging to other users.
- `start_inbox_test`: Create an email-receipt test in MailVakt. Takes an optional expected sender domain; returns a test ID, unique recipient address and expiry time. The user must send a test message to that address before expiry, then use get_inbox_test to read the result. Creates a new test on each call. Does not send email or measure inbox-versus-spam placement at Gmail, Outlook or other mailbox providers.
