MCP server
Email, phone and IP validation for AI assistants — built around the one thing an agent needs and a person does not: being told, unmistakably, when the answer is not known.
Install
{
"mcpServers": {
"proofwire": {
"command": "npx",
"args": ["-y", "@proofwire/mcp"]
}
}
}Works in Claude Desktop, Claude Code, Cursor, and anything else that speaks MCP. That configuration needs no account: 40 checks that read public records are free and unauthenticated.
Why an agent needs this more than you do
An autonomous agent is the worst possible consumer of a binary validator. A person told an address is valid still hesitates before sending. An agent does not — that is what it is for. So the standard failure of every validator that answers valid-or-invalid stops being a bad row in a spreadsheet and becomes mail actually sent.
The specific failure is catch-all domains. A large minority of business mail servers accept every address you ask about, existing or not. Most validators turn that into "valid" and invoice you. Your agent then writes to a mailbox nobody established exists, and you find out when it bounces.
What comes back instead
UNKNOWN - j.smith@thecompany.com
INCONCLUSIVE - do not treat this as valid, and do not treat it as
invalid either. The evidence does not settle whether this email
address works. Acting as though it does is the mistake this verdict
exists to prevent.
Confidence: 52% Risk: 10/100
Charged: 0 credits - inconclusive verdicts are not billed
Evidence, and how much each signal moved the verdict:
[syntax] Address is syntactically well formed. (+0.80)
[mx] 1 MX record published. (+1.90)
[smtp] Control probe: the server also accepted an address that
cannot exist, so its acceptance carries no information. (-1.40)The verdict arrives as an instruction rather than a state, because a model handed a state invents a policy for it — and the policy it invents is usually "close enough to valid". The control probe is the line worth reading: before trusting an acceptance, the server is asked about an address that cannot exist. If that is accepted too, accepting the real one meant nothing, and the verdict says so.
Tools
| Tool | Needs a key | What it does |
|---|---|---|
| proofwire_verify_email | yes | Syntax, domain records, and a live probe of the mail server |
| proofwire_verify_phone | yes | Numbering plan, line type, and a live carrier query |
| proofwire_verify_ip | yes | Operator, datacentre, Tor exit — from ranges the operators publish |
| proofwire_free_check | no | Any of the public-record checks: MX, SPF, DMARC, DKIM, and the rest |
| proofwire_list_free_checks | no | The catalogue, with an example input for each |
| proofwire_account | no | Balance, plan, and what is currently configured |
Adding a key
{
"mcpServers": {
"proofwire": {
"command": "npx",
"args": ["-y", "@proofwire/mcp"],
"env": { "PROOFWIRE_API_KEY": "pk_live_..." }
}
}
}Create one — 100 credits, no card, no expiry. A pk_test_ key answers from fixed sandbox fixtures and is never billed, which is what makes it usable in a test suite.
What it costs
Credits, and only for answers. Inconclusive verdicts are free. Repeats inside the cache window are free. A landline is never charged for a mobile-network query it could not have been in. Every response says what it charged and why.
The full price list is public, and the accuracy benchmark comes with its dataset so you can rerun it rather than take our word for the number.
Source and issues: github.com/Perseo1988/proofwire-mcp. MIT licensed.