Plumbline Get an API key

Email & phone validation

Check it before your agent sends it.

One call tells you whether an email address can receive mail, is a throwaway or a typo, and whether a phone number is real for its country. A REST API and a remote MCP server, built for AI agents and the apps they run in.

50 free checks/day$1 per 1,000 afterNo signup to try
// Press Check to call the live API (counts toward your 50 free daily checks).

What it checks

Plain answers, with the reasons

Every response has a verdict (valid, risky or invalid) and a list of reasons written for people, so an agent can explain its decision.

Email

  • valid_formatRFC-style syntax, length limits, legal characters and dots
  • domain_existsThe domain is registered and resolves in DNS
  • accepts_mailMX records exist; null-MX domains and dead domains are caught
  • disposableKnown throwaway inbox providers
  • role_accountShared inboxes like info@, sales@, support@
  • free_providerGmail, Yahoo, Outlook and other free mailboxes
  • suggestionLikely typos: gmial.com → gmail.com, yahoo.con → yahoo.com

Phone

  • validMatches an assigned number range for its country
  • e164Normalized to +E.164, plus international and national formats
  • countryDetected from the number, or from the country you pass
  • typeMobile, landline, toll-free, VoIP, premium rate and more
  • possibleRight length even when the range isn't assigned

What it doesn't do yet: it doesn't connect to the recipient's mail server to confirm the exact mailbox, and it doesn't check whether a phone line is currently active or which carrier it's on. Responses say so with "mailbox_checked": false and "line_checked": false.

REST API

One GET request

Send your key as Authorization: Bearer pl_…, an X-API-Key header, or ?key=. Leave it out to use the free daily allowance. Full spec: openapi.json.

curl

curl "https://plumbline-verify.pages.dev/v1/email?email=bob@gmial.com" \
  -H "Authorization: Bearer $PLUMBLINE_KEY"

curl "https://plumbline-verify.pages.dev/v1/phone?phone=020%207183%208750&country=GB"

curl -X POST https://plumbline-verify.pages.dev/v1/batch \
  -H "Content-Type: application/json" \
  -d '{"emails":["a@gmail.com"],"phones":["+14155550123"]}'

Response

{
  "email": "bob@gmial.com",
  "verdict": "invalid",
  "score": 25,
  "valid_format": true,
  "domain_exists": true,
  "accepts_mail": true,
  "disposable": false,
  "role_account": false,
  "suggestion": "bob@gmail.com",
  "mailbox_checked": false,
  "reasons": [
    "gmial.com has no mail (MX) records. Mail may still arrive through its website server, but this is unreliable.",
    "Possible typo. Did you mean bob@gmail.com?"
  ]
}

Errors are JSON with a plain message: 400 missing input, 401 unknown key, 402 out of credits or free allowance used (with a buy_url). Remaining checks come back in the X-Credits-Remaining header.

Remote MCP server

Give your agent the tools

Plumbline is a remote MCP server over Streamable HTTP. There's nothing to install. Add the URL to Claude, Cursor or any MCP client, with your key in the URL.

Claude Code

claude mcp add --transport http plumbline \
  "https://plumbline-verify.pages.dev/mcp?key=YOUR_KEY"

MCP client config (JSON)

{
  "mcpServers": {
    "plumbline": {
      "type": "http",
      "url": "https://plumbline-verify.pages.dev/mcp?key=YOUR_KEY"
    }
  }
}
validate_email

Verdict, score and reasons for one address. 1 credit.

validate_phone

Validity, country, line type and formats. 1 credit.

account_status

Credits left on the key, or the free allowance. Free.

Pricing

Prepaid credits. One check, one credit.

No subscription. Credits never expire. Pay by card through Stripe and your key is sent to you after checkout.

Free

$0

50 checks a day, no key or signup. Resets at midnight UTC.

Try it

Starter

$5 5,000 checks

$1.00 per 1,000. Enough to clean a list or power a small app.

Buy credits

Scale

$50 100,000 checks

$0.50 per 1,000. For high-volume pipelines.

Buy credits

Topping up an existing key? Add ?client_reference_id=YOUR_KEY to any buy link and the credits go onto that key. Payments are handled by Stripe.

Questions

Good to know

Do you store the emails and numbers I check?

No. Inputs are checked and discarded. We keep only API keys, credit balances and a daily count per (hashed) IP for the free allowance.

How fast is it?

Phone checks run instantly at the edge. Email checks need one or two DNS lookups and usually return in well under a second.

Why not just use a regex?

A regex can't tell you that a domain doesn't exist, has no mail servers, is a throwaway provider, or is one letter off from gmail.com. Those are the mistakes that cause bounces.

Can my agent use it without me?

Yes. Agents can call it with no key for the free allowance. With a key in the MCP URL, every tool call draws from your prepaid credits, and account_status lets the agent check the balance.

What happens when credits run out?

Requests return HTTP 402 with a message and a link to buy more. Nothing is charged automatically.

Who runs Plumbline?

Plumbline is operated by SilverQueen EOOD in Sofia, Bulgaria. Contact: sawhorsesites@gmail.com.