API, official Python and Node SDKs, and an MCP server for MailValidation.io email verification.
Standard library only. Waits for the result for you.
pip install https://mailvalidation.io/downloads/mailvalidation-0.1.0.tar.gz
from mailvalidation import MailValidation
mv = MailValidation(api_key="...", team="your-team-slug")
r = mv.validate("[email protected]")
print(r.is_valid, r.risk_level, r.did_you_mean)
# False 5 [email protected]
SHA-256 ef5afdd8487e574cedba3dd673284e3eb37f5a25ca13c98910f7eda746fc1829
No dependencies, TypeScript types included. Node 18+.
npm install https://mailvalidation.io/downloads/mailvalidation-0.1.0.tgz
const { MailValidation } = require("mailvalidation");
const mv = new MailValidation({ apiKey: "...", team: "your-team-slug" });
const r = await mv.validate("[email protected]");
console.log(r.is_valid, r.risk_level, r.did_you_mean);
SHA-256 beb2b754e11c5665f3bfc0f7ab2179c118c8e129c854b9e8af7fa4023a49b206
Create an API key in the app under Team → API Keys. Your team slug is the part after /a/ in your dashboard URL. Requests are authenticated with Authorization: Api-Key YOUR_KEY.
curl -X POST https://app.mailvalidation.io/a/YOUR_TEAM_SLUG/validate/api/validate/ \
-H "Authorization: Api-Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'
Each result includes is_valid, a rule-based risk_level from 0 to 5, did_you_mean when the domain looks like a typo, and flags for disposable, catch-all, role and free-provider addresses. Checks run asynchronously: if processing is true, fetch the result again. The SDKs do this for you. Full reference: API documentation and the OpenAPI explorer.
The Python package includes an MCP server, so an assistant can check addresses directly. It exposes two tools, validate_email and validate_emails (up to 25 at a time). Each completed check uses one validation from your plan.
pip install "mailvalidation[mcp] @ https://mailvalidation.io/downloads/mailvalidation-0.1.0.tar.gz"
{ "mcpServers": { "mailvalidation": {
"command": "mailvalidation-mcp",
"env": { "MAILVALIDATION_API_KEY": "...", "MAILVALIDATION_TEAM": "your-team-slug" } } } }
These work today with their generic HTTP/webhook steps, no dedicated app needed. To validate addresses in a workflow, add a Webhooks by Zapier (or HTTP) step that sends a POST to the endpoint above with your API key header and an email field, then read is_valid and risk_level from the response. To be notified when a bulk upload finishes or a widget blocks a signup, add a webhook in the app (Starter plan and above) and point it at a Zapier “Catch Hook” URL.
Every account starts with 250 free validations. Inconclusive results, such as timeouts, servers that blocked our probe, or providers that don't allow mailbox verification, are refunded automatically.