Home / Email Validation MCP Server, With Phone Validation Built In
Email Validation MCP Server, With Phone Validation Built In
Published 2026-10-13
Your agent is about to save a contact, send a message, or hand off a lead. Before it does, it should check two things. Is the email well formed, with a domain that has mail records? Does the phone number parse? ContactLint runs a hosted MCP server that answers both.
You connect once, to one URL, with one key. Your agent gets two tools, and each call uses one check. Get a free API key and you have 100 checks a month. No card needed.
One MCP server, two tools
The server is at https://contactlint.com/mcp. Clients reach it over streamable HTTP.
It exposes two tools.
validate_email
This one checks a single email address. It looks at:
- Practical RFC syntax
- MX and A records, looked up over DNS-over-HTTPS
- Whether the domain is on a disposable domain list
- Whether it is a role address, such as admin@ or info@
- Whether it uses a free mail provider
It never opens an SMTP connection to the mailbox. No mail goes out, and nothing reaches the person who owns the address. That also means ContactLint does not confirm that a mailbox exists or that someone will receive mail there.
validate_phone
This one checks a single phone number. You get back:
- Parsing based on libphonenumber metadata
- Valid and possible flags
- Line type and region, where the data supports it
- The number in E.164, national, and international formats
Carrier lookups are not offered today.
The OpenAPI 3.1 spec is at https://contactlint.com/openapi.json.
Connect your MCP client
Every client needs the same two settings:
- Server URL:
https://contactlint.com/mcp - Header:
Authorization: Bearer YOUR_KEY
Swap YOUR_KEY for the key from the signup page. You only see it once, so save it right away. ContactLint stores just a hash of it and cannot show it to you again.
Any streamable HTTP client
URL: https://contactlint.com/mcp
Header: Authorization: Bearer YOUR_KEY
Point any MCP client that supports streamable HTTP at that URL and send that header. Clients keep server settings in different places and formats, so check your client's documentation for where the URL and header go.
If your client only runs local stdio servers, you need a small local proxy that forwards to the HTTP endpoint.
Get a free API key. 100 free checks per month. No card required.
What each tool call costs
One tool call uses one check. It does not matter which tool.
| Tool | Checks per call |
|---|---|
| validate_email | 1 |
| validate_phone | 1 |
Email and phone checks come out of the same balance on the same key. A check is one API or MCP call to a validation tool, so the REST endpoints and the MCP tools share that balance as well.
| Plan | Checks | Price (USD) |
|---|---|---|
| Free | 100 per month | $0 |
| Credit pack | 5,000 | $9 |
| Credit pack | 25,000 | $35 |
| Credit pack | 100,000 | $99 |
The fine print:
- You get 100 free checks per key per calendar month. Unused free checks do not roll over.
- Credits kick in after the monthly free checks run out.
- Credits do not expire.
- Unused credits are refundable within 14 days of purchase. Email support@contactlint.com to ask for one.
To check your balance, call GET https://contactlint.com/v1/usage with the same key. It shows free checks used this month and your credit balance.
Errors your agent should handle
Agents often run with nobody watching, so decide ahead of time what they do when a call fails. ContactLint uses four error codes.
| Code | Meaning | What your agent should do |
|---|---|---|
| 401 | Missing or invalid key | Stop. Fix the header or the key. |
| 402 | Free checks used up and no credits | Stop calling. Buy credits or wait for next month. |
| 429 | More than 60 requests per minute on this key | Back off, then retry. |
| 400 | Bad input | Fix the value before calling again. |
Two lines worth putting in your agent's instructions: on 402, tell the user. On 429, pause before retrying.
Also build in this: results are best effort. They come from public DNS records, open-source lists, and phone metadata at the time of the check. A valid result does not mean an email will be delivered or a phone will be answered. An invalid result may be wrong. Don't let an agent treat a result as the only basis for a decision that seriously affects a person.
Where it fits: signup forms, CRM cleanup, agents
ContactLint is built for signup forms, CRM cleanup, and AI agents.
Signup forms. Catch malformed addresses, domains with no mail records, and disposable addresses before they reach your list.
CRM cleanup. Run old records through the tools. Flag role addresses and phone numbers that do not parse.
AI agents. Have the agent confirm contact data before it emails, texts, or saves a lead. This is the job the MCP server is for, since the agent can call a tool at the moment it needs one.
Not using an agent? The same checks run over the email and phone validation API, a simple HTTP API you can call from your own code.
Where the data comes from
- Disposable domains come from the disposable-email-domains project (CC0 1.0).
- Phone parsing uses libphonenumber-js (MIT).
- DNS lookups use Cloudflare DNS-over-HTTPS. The domain part of each email you check is sent to Cloudflare's DNS resolver.
The emails and phone numbers you check are processed only to return a result. They are not stored in the ContactLint database. The site does not use website analytics or tracking cookies.
FAQ
Does the ContactLint MCP server check email and phone in the same connection?
Yes. One server at https://contactlint.com/mcp exposes two tools: validate_email and validate_phone. Your agent connects once with one API key and can call either tool. You do not need a second server or a second account for phone numbers. Each call to either tool uses one check from the same balance.
Which MCP clients work with it?
Any MCP client that supports the streamable HTTP transport and lets you set a custom request header. Point it at https://contactlint.com/mcp and send Authorization: Bearer YOUR_KEY. Clients that only run local stdio servers need a bridge, such as a small local proxy that forwards to the HTTP endpoint.
How much does each tool call cost?
Each tool call uses one check, whether it is validate_email or validate_phone. You get 100 free checks per month with no card. After that you buy credit packs in USD: 5,000 checks for $9, 25,000 for $35, or 100,000 for $99. Credits do not expire, and unused credits are refundable within 14 days of purchase.
What happens when my agent runs out of checks or calls too fast?
ContactLint uses four error codes your agent can plan for. 402 means free checks are used up and there are no credits. 429 means more than 60 requests per minute on that key. 401 means the key is missing or invalid. 400 means the input was bad.
Does it send email to the address to test it?
No. ContactLint never opens an SMTP connection to the mailbox and never sends mail. It checks syntax, looks up MX and A records over DNS-over-HTTPS, and flags disposable domains, role addresses like admin@ and info@, and free mail providers. Nothing is sent to the person who owns the address.
Does ContactLint store the emails and phone numbers my agent checks?
No. The addresses and numbers you check are processed only to return a result, and they are not stored in the ContactLint database. For each check, ContactLint records which key made it, whether it was an email or phone check, whether it used a free check or a credit, and the time.
Get a free key
Get a key, add one URL and one header to your client, and your agent can check email and phone today.
- 100 free checks per month. No card required.
- No email is sent when you sign up. Your key is shown once on the next page.
- Disposable addresses are not accepted at signup.
Questions? Write to support@contactlint.com.
Read the privacy policy and terms.
Get a free API key. 100 checks per month, no card required.