One Email Verification Engine. Every Way to Use It.
MailValid is an email verification tool that checks if an address is real: valid, invalid, catch-all, or do-not-mail. It is the same engine whether you check one address by hand, upload a list, call the API, or run it through an AI agent.
How email verification works: 3 steps, every time
Every address goes through the same three checks. No shortcuts, no guessing.
Syntax check
Checks the address against RFC 5322 format rules. Catches typos fast.
Domain and MX check
Confirms the domain is real, and that it has mail exchange records set up to receive email.
Mailbox check
Runs an SMTP handshake to confirm the mailbox exists. We never send a real email to test it.
Every result includes 10+ data points
A plain "valid" or "invalid" is not enough to act on. Every verification includes a full breakdown.
status | valid, invalid, catch_all, unknown, or do_not_mail |
is_valid | simple true/false — safe to send? |
confidence_score | 0–100 confidence in the result |
status_reason | machine-readable reason, e.g. role_based, mailbox_confirmed |
provider | detected provider: google, microsoft, yahoo, apple, corporate, etc. |
is_disposable | flags temporary or throwaway email addresses |
is_role_based | flags role inboxes like info@ or support@ |
is_catch_all | flags catch-all domains that accept any address |
is_free_provider | flags free consumer mailboxes like Gmail or Yahoo |
syntax_valid / domain_valid / has_mx | pass/fail at each of the 3 check steps |
verification_time_ms | how long the check took |
cached | true if served from a recent cached result, at 0 credits |
Set your own policy on top of this using the status_reason
field — for example, allow role addresses but block disposable email addresses automatically.
Four ways to verify emails
Single verification
Checking one address
Instant result in the browser. Free, no account needed.
Bulk CSV upload
Cleaning an email list
Up to 10,000 addresses per job. Auto-detects the email column. Download as CSV or JSON.
REST API
Automated workflows
Single and bulk endpoints. JSON in, JSON out. Under 500ms average response.
MCP server
AI agents
8 tools for Claude, Cursor, or any MCP client. Same engine, same pricing, same credit balance.
Bulk email list cleaning
Drop a CSV or TXT file into your dashboard. MailValid checks up to 10,000 addresses per job and finds the email column automatically. No formatting needed.
Upload your file — no API key, no code.
MailValid verifies in the background — every address checked for validity, plus disposable, role-based, and catch-all flags.
Download clean results — export as CSV or JSON, ready to import anywhere.
Bulk jobs also run through the API — submit a list, then poll for status or get a webhook when it is done.
Webhooks for bulk verification jobs
Skip the polling. Provide a webhook_url
when you submit a bulk job, and MailValid posts the results when the job completes.
-
Every webhook includes an
X-Mailvalid-Signatureheader — an HMAC-SHA256 signature of the raw request body. - Verify it with your account's webhook secret before trusting the payload.
- Included from Starter upward.
Email verification REST API
One base URL. JSON in, JSON out. Built to integrate in minutes, in any language.
POST /verify/single | Verify one address in real time. 1 credit per fresh result. |
POST /verify/bulk | Queue up to 10,000 addresses. Reserves credits, final charge on completion. |
GET /verify/bulk/{job_id} | Check job status and progress. Free. |
GET /verify/bulk | List your bulk jobs. Free. |
DELETE /verify/bulk/{job_id} | Cancel a job, release reserved credits. Free. |
GET /verify/bulk/{job_id}/download | Download results as JSON or CSV. Free. |
GET /credits | Check balance and lifetime usage. Free. |
POST /webhooks/bounce | Submit real bounce and delivery events to improve future accuracy. Free. |
POST /api/demo/verify | A basic check, no API key, rate-limited. Free (no SMTP step). |
Example request
curl -X POST https://mailvalid.io/api/v1/verify/single \
-H "X-API-Key: mv_live_your_key" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'
Code examples ship in cURL, Python, JavaScript (Node.js), and PHP. Full documentation: mailvalid.io/docs
Bounce feedback loop
Send real delivery outcomes back to MailValid — hard bounces, soft bounces, complaints, unsubscribes — through the bounce webhook endpoint. This data feeds back into future email verification accuracy, at no extra cost, up to 1,000 events per request.
MCP server: 8 tools for AI agents
MailValid runs a remote MCP server so AI agents can verify emails directly, plus a stdio launcher for clients like Claude Desktop. Every tool runs on the same engine and credit balance as the REST API.
verify_email(email) | Verify one address. Needs an API key. |
submit_bulk_verification(emails, webhook_url) | Queue a list. Needs an API key. |
get_bulk_job(job_id) | Check job status and results. Needs an API key, free. |
list_bulk_jobs(...) | List your bulk jobs. Needs an API key, free. |
cancel_bulk_job(job_id) | Cancel a job, release credits. Needs an API key, free. |
get_credit_balance() | Check balance and usage. Needs an API key, free. |
verify_email_demo(email) | Syntax, disposable, role, and free-provider checks only, no SMTP step. No API key needed, free. |
get_api_discovery() | Machine-readable discovery URLs. No API key needed, free. |
Works with Claude Desktop, Claude Code, Cursor, and any MCP-compatible client. See the integrations.
Rate limits and job sizes by plan
| Plan | Rate limit | Max emails per bulk job |
|---|---|---|
| Free | 10 requests/min | 100 |
| Starter | 50 requests/min | 2,000 |
| Growth | 100 requests/min | 5,000 |
| Scale | 200 requests/min | 10,000 |
Smart, fair credit billing
- Only definitive results are billed — valid, invalid, catch-all, or do-not-mail. 1 credit each.
- Unknown results cost nothing. If MailValid cannot reach a confident verdict, you do not pay for it.
- Cached repeats are free. Re-checking a recently verified address costs 0 credits.
- Duplicates within a batch are free — only the first occurrence in a bulk job is charged.
- Credits never expire — free, plan, or pay-as-you-go.
Full pricing: mailvalid.io/pricing
Security and privacy built into every email verification
No plaintext email storage
Addresses are processed for the response, then discarded. Only a SHA-256 hash is kept for caching.
Short, result-based retention
Cached hashes expire in 7 days for valid results, 30 days for invalid and do-not-mail, and 1 day for catch-all. Unknown results are not cached at all.
Hashed credentials
Passwords hashed with bcrypt. API keys hashed before storage, shown in full only once.
HTTPS/TLS on every request
All traffic to and from the API and dashboard is encrypted in transit.
No data sold, rented, or traded
Shared only with DodoPayments for billing and AWS for hosting, or when legally required.
No tracking cookies
Only essential session and rate-limiting cookies.
Reliability
Backed by an accuracy guarantee: on a batch of 1,000+ verifications, if your real bounce rate comes in under 95%, MailValid credits your account for the misverified emails. See the refund policy for the full terms.
Frequently asked questions
What data does a MailValid email verification return?
Can I verify emails without writing any code?
How many emails can I verify in one bulk upload?
Does email verification send a real message to the address?
Which verification results actually get charged?
Does MailValid work with AI agents like Claude or Cursor?
verify_email_demo and get_api_discovery — need no API key.
How accurate is MailValid's email verification?
Does MailValid store the email addresses I submit for verification?
Can I get notified when a bulk verification job finishes?
webhook_url when you submit a bulk job, and MailValid posts the results when it completes, signed with an HMAC-SHA256 signature you can verify.
Try every feature free
Check one email free right now, or sign up for 100 free credits to test bulk upload, the API, and MCP.