All posts

Connect ChatGPT to an Email Verification MCP Server and Check Leads in Chat

··7 min read

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.

  1. Open ChatGPT Plugins at chatgpt.com/plugins.
  2. Select the plus button, then Add custom MCP server.
  3. Enter a name (for example SimpleVerifier) and a description.
  4. Under Connection, choose a public endpoint and enter https://simpleverifier.com/api/mcp, including the /mcp path.
  5. Choose OAuth for authentication, review the risk warning and select I understand and want to continue.
  6. Select Create as a plugin and review the tools ChatGPT discovers.
  7. 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 action field is the machine form of the verdict with a fixed shape. Only valid ever gives send, and invalid always gives do_not_send.
  • "If done is false." A big batch can outlast the 45 second wait. The reply then has a job_id and get_job_results returns 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_format confirms 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 initialize and tools/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_email answers risky with a retry time and is not charged, and verify_emails holds 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.