Connect ChatGPT to an Email Verification MCP Server and Check Leads in Chat
You can let ChatGPT check email addresses by adding SimpleVerifier as a custom MCP server. In ChatGPT's plugin settings, add a custom MCP server with the URL https://simpleverifier.com/api/mcp and choose OAuth. You sign in with your SimpleVerifier account, approve the consent screen, and ChatGPT gets six tools: verify one address, verify up to 100, read a job's results, check a phone number's format, check a domain, and read your usage. Then you can paste a list into chat and get a verdict per address.
Without a tool, ChatGPT can only guess from the shape of an address (what ChatGPT can and cannot verify). This guide covers the setup, the prompts that work, and the limits. If you use Claude or Cursor instead, see verify emails with Claude MCP and the Claude, Cursor MCP server guide.
What you need
- A SimpleVerifier plan with API and MCP access: Pro, Business or Agency. Pro is $39 a month and includes 10,000 API calls a month, then $1.50 per 1,000 on monthly billing. MCP tool calls count against the same calls as REST requests. Pro email verification also runs the first 100,000 checks a month at full speed, then slower, never cut off. See pricing.
- A ChatGPT account that allows custom MCP servers. OpenAI says account and workspace policies apply, so on Business, Enterprise or Edu an admin may need to allow it first.
Set it up
These steps follow the SimpleVerifier MCP docs, which in turn follow OpenAI's connect a server to ChatGPT guide.
- Open ChatGPT Plugins at chatgpt.com/plugins.
- Select the plus button, then Add custom MCP server.
- Enter a name (for example SimpleVerifier) and a description.
- Under Connection, choose a public endpoint and enter
https://simpleverifier.com/api/mcp, including the/mcppath. - Choose OAuth for authentication, review the risk warning and select I understand and want to continue.
- Select Create as a plugin and review the tools ChatGPT discovers.
- Sign in with Google on the SimpleVerifier screen and choose Allow.
OpenAI renames these menus from time to time. If a label is different, follow OpenAI's guide, which is the source of truth for ChatGPT's side.
The consent screen asks for two permissions: verify (run email, phone-format and domain checks on your plan) and usage (read your plan and usage). The connected app cannot see your uploaded lists, billing details or API keys.
The six tools ChatGPT gets
| Tool | What it does |
|---|---|
verify_email |
One address: valid, risky or invalid with a reason, plus action, risk, likely_invented and reason_code |
verify_emails |
Up to 100 addresses in one call, deduplicated. Waits up to 45 seconds, then returns every result or a job_id |
get_job_results |
Progress and per-address results of a verify_emails job, 500 rows at a time |
check_phone_format |
Format, E.164 form, country and numbering-plan line type. A format check only, never whether a number is in service |
check_domain |
MX, SPF and DMARC records, disposable status and an optional catch-all probe |
get_usage |
Your plan, what it includes and the rate limit |
Details and limits are in the MCP docs.
Prompt 1: check one address
Start a chat and enable the SimpleVerifier tool for it. Then:
Verify jane@company.com with SimpleVerifier. Tell me the status, the reason,
and the action field. Do not guess if the tool fails.
A valid reply looks like this in the tool result:
{
"email": "jane@company.com",
"status": "valid",
"reason": "Mailbox exists",
"action": "send",
"risk": "low",
"likely_invented": false,
"reason_code": "mailbox_exists"
}
Only valid means the mail server confirmed the mailbox, so only valid gives action: send.
Prompt 2: triage a pasted list
This is where chat is genuinely useful: a short list from a conference, a reply thread or a spreadsheet you copied from.
Use SimpleVerifier's verify_emails tool on the addresses below (max 100).
Then give me three lists, based only on the action field:
1. send: safe to email
2. send_with_care or retry_later: keep out of cold campaigns, tell me why
3. do_not_send: remove
If any result has likely_invented true, put it in list 3 and say it looks
made up. If done is false, call get_job_results with the job_id before
answering. Never add, fix or guess an address yourself.
jane@company.com
sam@acme.io
info@example-startup.com
Why the instructions matter:
- "Based only on the action field." The
actionfield is the machine form of the verdict with a fixed shape. Onlyvalidever givessend, andinvalidalways givesdo_not_send. - "If done is false." A big batch can outlast the 45 second wait. The reply then has a
job_idandget_job_resultsreturns the finished rows. Without this line ChatGPT may answer from partial data. - "Never add, fix or guess." Models love to repair typos silently. A repaired address is a different address that nobody verified.
Prompt 3: check a domain before you mail it
Use check_domain on acme.io. Does it have MX, SPF and DMARC? Is it a
disposable domain? Run the catch-all probe too.
The catch-all probe is one mailbox check on a random address the server generates, so it uses a little shared capacity. Pass check_catch_all: false in your prompt ("skip the catch-all probe") to avoid it. If the domain is catch-all, every address there looks accepted, which is why individual results on it come back risky. See what to do with catch-all emails.
Prompt 4: a reusable system note
If you use ChatGPT for outreach drafts, add this to your custom instructions or project instructions so it never emails an unchecked address:
Before drafting any cold email to a specific address, verify it with the
SimpleVerifier tool. Draft only for action = send. For send_with_care,
ask me. For retry_later, say the check was inconclusive and offer to retry.
For do_not_send, refuse and say why. Never invent an email address.
This pairs well with the thinking in email verification for AI SDR agents.
What not to ask a chat to do
- Do not loop over thousands of addresses. Each message has limits, and every check is an API call. Upload a CSV on the verify page: it runs the same checks in bulk and returns valid, risky and invalid files.
- Do not treat risky as bad. It means delivery is not confirmed (a catch-all domain, a role address, a provider that hides mailbox status, or a server that did not answer). Keep it for review.
- Do not ask it about phone lines.
check_phone_formatconfirms a number fits its country's numbering plan. It does not say whether a number is connected.
Limits and errors
- 120 requests a minute per connected app, and every MCP request counts, including
initializeandtools/list. A chat uses a handful at a time. - A single mailbox check can take up to 30 seconds when a mail server is slow.
- Mailbox checks share a daily capacity that resets at 00:00 UTC. When it runs out,
verify_emailanswers risky with a retry time and is not charged, andverify_emailsholds the remaining addresses until the reset.
| What ChatGPT shows | Cause | Fix |
|---|---|---|
| Sign-in loop or 401 | Token revoked or expired | Disconnect under Connected apps on the API keys page, then reconnect |
| 403 on a tool | The app was not granted that permission (verify or usage) | Reconnect and allow it |
| 402 | Starter plan, lapsed subscription | Upgrade or renew. See errors |
| 429 | More than 120 requests a minute | Wait and retry |
| Tool not available | Workspace policy blocks custom MCP servers | Ask your admin |
Disconnecting
Open the API keys page and use Disconnect under Connected apps. The app's access and refresh tokens stop immediately. API keys are revoked on the same page and keep working until you do.
What it costs
MCP calls and REST calls share the same allowance: 10,000 a month on Pro, then $1.50 per 1,000 on monthly billing. On yearly billing the included calls are a fixed monthly quota and more answer 402 until the 1st (UTC).
The short version
Add https://simpleverifier.com/api/mcp as a custom MCP server, choose OAuth, and sign in. Ask ChatGPT to branch only on action, to use verify_emails for up to 100 addresses, and never to guess. For anything bigger, upload a CSV. Compare with the REST route in the API docs and quickstart if you later want the same checks in a script.
Common questions
Can ChatGPT verify email addresses?
Not on its own. It cannot open a connection to a recipient's mail server, so without a tool it can only guess from the shape of an address. With a verification MCP server connected, it calls a real check and reports what the mail server said. We explain the difference in what ChatGPT can and cannot verify about an email address.
Do I need an API key to connect ChatGPT?
No. ChatGPT and claude.ai sign in with OAuth: you sign in with your SimpleVerifier account (Google) and approve a consent screen. API keys are for clients that take a custom header, such as Cursor or scripts.
Which plan do I need?
Pro, Business or Agency. Starter covers CSV verification in the dashboard and does not include API or MCP access, so the connection answers 402.
How many addresses can ChatGPT check at once?
verify_emails takes up to 100 addresses per call and waits up to 45 seconds for results. If it says done is false, the follow-up call get_job_results returns the rows, 500 at a time. Past a few hundred addresses, use a CSV upload.
How do I disconnect ChatGPT from my account?
Open the API keys page and use Disconnect under Connected apps. The app's access and refresh tokens stop working immediately. Your API keys are not affected.
Check your list before you send
Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.