MCP Server

scan.mx Email Diagnostics

mx.scan/diagnostics
Developer Tools Public & reachable MCP 2025-11-25

What this MCP does

Checks domain email deliverability through MX, SPF, DKIM, DMARC, DNS health, SMTP probing, and blacklist status.

check_blacklist
Check blacklists
Check whether the domain and its mail server IPs are listed on the Spamhaus (ZEN, DBL, ZRD, AuthBL), SpamCop, GBUdb and PSBL blocklists.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 1, 'description': 'The domain to check, e.g. example.com. No scheme or path.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'message'], 'properties': {'id': {'type': 'string'}, 'rfc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'details': {'anyOf': [{}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'section': {'type': 'string'}, 'severity': {'type': 'string'}}, 'additionalProperties': False}}, 'domain': {'type': 'string'}, 'provider': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sections': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}}, 'additionalProperties': False}}, 'selector': {'type': 'string'}, 'permalink': {'type': 'string'}, 'smtp_note': {'type': 'string'}, 'created_at': {'type': 'number'}, 'expires_at': {'type': 'number'}, 'updated_at': {'type': 'number'}, 'smtp_status': {'type': 'string'}, 'poll_after_seconds': {'type': 'number'}}, 'additionalProperties': False}
check_dkim
Check DKIM
Check DKIM signing keys for a domain. Without a selector, common provider selectors are probed. Pass an explicit selector to look up that exact key at selector._domainkey.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 1, 'description': 'The domain to check, e.g. example.com. No scheme or path.'}, 'selector': {'type': 'string', 'pattern': '^[a-z0-9_.-]+$', 'maxLength': 63, 'description': 'An explicit DKIM selector to look up (e.g. "google", "s1").'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'message'], 'properties': {'id': {'type': 'string'}, 'rfc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'details': {'anyOf': [{}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'section': {'type': 'string'}, 'severity': {'type': 'string'}}, 'additionalProperties': False}}, 'domain': {'type': 'string'}, 'provider': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sections': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}}, 'additionalProperties': False}}, 'selector': {'type': 'string'}, 'permalink': {'type': 'string'}, 'smtp_note': {'type': 'string'}, 'created_at': {'type': 'number'}, 'expires_at': {'type': 'number'}, 'updated_at': {'type': 'number'}, 'smtp_status': {'type': 'string'}, 'poll_after_seconds': {'type': 'number'}}, 'additionalProperties': False}
check_dmarc
Check DMARC
Check the domain DMARC policy at _dmarc: presence, policy strength (none/quarantine/reject), and reporting.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 1, 'description': 'The domain to check, e.g. example.com. No scheme or path.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'message'], 'properties': {'id': {'type': 'string'}, 'rfc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'details': {'anyOf': [{}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'section': {'type': 'string'}, 'severity': {'type': 'string'}}, 'additionalProperties': False}}, 'domain': {'type': 'string'}, 'provider': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sections': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}}, 'additionalProperties': False}}, 'selector': {'type': 'string'}, 'permalink': {'type': 'string'}, 'smtp_note': {'type': 'string'}, 'created_at': {'type': 'number'}, 'expires_at': {'type': 'number'}, 'updated_at': {'type': 'number'}, 'smtp_status': {'type': 'string'}, 'poll_after_seconds': {'type': 'number'}}, 'additionalProperties': False}
check_domain
Full email deliverability check
Run the full email and DNS deliverability check for a domain: MX, SPF, DKIM, DMARC, DNS health, provider detection, and blacklists. Returns a letter grade (A+ to F, where specific weaknesses cap the grade), a 0 to 100 score, and every individual check with its RFC reference. Set include_smtp to also run a live SMTP probe of the mail servers: the probe is non-blocking, so when smtp_status is "pending" or "running" call this tool again (poll_after_seconds hints how long to wait) until smtp_status is "complete" and the SMTP checks appear in checks.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 1, 'description': 'The domain to check, e.g. example.com. No scheme or path.'}, 'include_smtp': {'type': 'boolean', 'default': False, 'description': 'Also run a live SMTP connectivity probe of the MX hosts. Non-blocking: poll by re-calling until smtp_status is complete.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'message'], 'properties': {'id': {'type': 'string'}, 'rfc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'details': {'anyOf': [{}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'section': {'type': 'string'}, 'severity': {'type': 'string'}}, 'additionalProperties': False}}, 'domain': {'type': 'string'}, 'provider': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sections': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}}, 'additionalProperties': False}}, 'selector': {'type': 'string'}, 'permalink': {'type': 'string'}, 'smtp_note': {'type': 'string'}, 'created_at': {'type': 'number'}, 'expires_at': {'type': 'number'}, 'updated_at': {'type': 'number'}, 'smtp_status': {'type': 'string'}, 'poll_after_seconds': {'type': 'number'}}, 'additionalProperties': False}
check_mx
Check MX records
Check the MX records of a domain: presence, hostnames, resolution, null-MX, and common misconfigurations.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 1, 'description': 'The domain to check, e.g. example.com. No scheme or path.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'message'], 'properties': {'id': {'type': 'string'}, 'rfc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'details': {'anyOf': [{}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'section': {'type': 'string'}, 'severity': {'type': 'string'}}, 'additionalProperties': False}}, 'domain': {'type': 'string'}, 'provider': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sections': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}}, 'additionalProperties': False}}, 'selector': {'type': 'string'}, 'permalink': {'type': 'string'}, 'smtp_note': {'type': 'string'}, 'created_at': {'type': 'number'}, 'expires_at': {'type': 'number'}, 'updated_at': {'type': 'number'}, 'smtp_status': {'type': 'string'}, 'poll_after_seconds': {'type': 'number'}}, 'additionalProperties': False}
check_spf
Check SPF
Check the domain SPF policy: presence, syntax, the all qualifier, and the 10-lookup limit.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 1, 'description': 'The domain to check, e.g. example.com. No scheme or path.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'message'], 'properties': {'id': {'type': 'string'}, 'rfc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status': {'type': 'string'}, 'details': {'anyOf': [{}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'section': {'type': 'string'}, 'severity': {'type': 'string'}}, 'additionalProperties': False}}, 'domain': {'type': 'string'}, 'provider': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sections': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'number'}}, 'additionalProperties': False}}, 'selector': {'type': 'string'}, 'permalink': {'type': 'string'}, 'smtp_note': {'type': 'string'}, 'created_at': {'type': 'number'}, 'expires_at': {'type': 'number'}, 'updated_at': {'type': 'number'}, 'smtp_status': {'type': 'string'}, 'poll_after_seconds': {'type': 'number'}}, 'additionalProperties': False}
Added
check_dkim
Sept. 17, 2026, 12:54 p.m.
Added
check_blacklist
Sept. 17, 2026, 12:54 p.m.
Added
check_dmarc
Sept. 17, 2026, 12:54 p.m.
Added
check_spf
Sept. 17, 2026, 12:54 p.m.
Added
check_mx
Sept. 17, 2026, 12:54 p.m.
Added
check_domain
Sept. 17, 2026, 12:54 p.m.