Signup checks · REST API & MCP server

Check every signup at the door.

One API call tells you if an email is throwaway, an IP is a datacenter or Tor exit, or a phone number is VoIP, with a clear verdict: admit, review or refuse. Built for developers, and for the AI agents they ship.

1,000 free checks a month · no card · prepaid credits never expire

Email check No. 000001

jane.doe+trial4@mailinator.com

  • Syntaxvalid
  • Domainmailinator.com
  • Disposableyes
  • Mail serversmail.mailinator.com
  • Canonicaljane.doe@mailinator.com
  • +tag aliasyes
Risk score90
  • disposable_domainmailinator.com hands out throwaway inboxes.
  • plus_addressedUses a +tag, so one inbox can sign up many times.

Live check, no signup. Example pre-filled.More free tools →

01 — What it catches

Every reason, in plain English.

Each check returns a 0–100 score, a verdict and the reasons behind it, so you can explain a decision to a customer, a teammate or an agent.

Email

Is this address real and permanent?

Throwaway inboxes, typos like gmial.com, domains with no mail server, brand-new domains, shared team inboxes, +tag aliases, and (optionally) whether the mailbox exists.

disposable_domainpossible_typono_mail_serverdomain_newrole_accountmailbox_not_found
1 credit
IP address

Is a person behind this connection?

Country and city, who owns the network, and whether it is a cloud server, a VPN-heavy network, a privacy relay or a Tor exit node.

tor_exit_nodedatacenter_ipvpn_networkprivacy_relay
1 credit
Phone

Can this number receive a code?

Valid ranges for 245 countries, E.164 formatting, line type (mobile, landline, VoIP, toll-free, premium) and original carrier.

invalid_numbervoip_numberpremium_rate_numbercountry_mismatch
1 credit
Domain

Is this company domain established?

Whether it exists, receives email, publishes SPF and DMARC, when it was registered, and whether its mail servers serve throwaway domains.

domain_not_founddomain_brand_newmx_shared_with_disposable
1 credit
Signup

Should this account get in?

All of the above in one call, plus cross-checks: a phone from one country and an IP from another, or a throwaway inbox arriving from a server.

phone_ip_country_mismatchautomation_pattern
3 credits
02 — How it works

One call. One verdict.

Send what you know about the signup. Read risk.verdict. Act on it. That's the whole integration.

  1. Send the details

    Email, the visitor's IP, a phone number: any combination, from your server.

  2. Read the verdict

    admit lets them in, review adds friction (verify email or phone), refuse blocks with a friendly message.

  3. Log the reasons

    Every reason has a stable code and a sentence, ready for your admin panel or your agent's explanation.

Signup check reference →

curl https://veqen-app.com/v1/signup/check \
  -H "Authorization: Bearer $VEQEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@mailinator.com", "ip": "185.220.101.1", "phone": "+14155552671"}'
import os, requests

r = requests.post(
    "https://veqen-app.com/v1/signup/check",
    headers={"Authorization": f"Bearer {os.environ['VEQEN_API_KEY']}"},
    json={"email": "jane@mailinator.com", "ip": "185.220.101.1", "phone": "+14155552671"},
    timeout=10,
)
result = r.json()
print(result["risk"]["verdict"], result["risk"]["reasons"])
const res = await fetch("https://veqen-app.com/v1/signup/check", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VEQEN_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"email": "jane@mailinator.com", "ip": "185.220.101.1", "phone": "+14155552671"}),
});
const result = await res.json();
console.log(result.risk.verdict, result.risk.reasons);
{
  "risk": {
    "score": 99,
    "level": "high",
    "verdict": "refuse",
    "reasons": [
      { "code": "disposable_domain", "impact": 90, "source": "email",
        "message": "mailinator.com hands out throwaway inboxes." },
      { "code": "tor_exit_node", "impact": 85, "source": "ip",
        "message": "This address is a Tor exit node." },
      { "code": "automation_pattern", "impact": 40, "source": "signup",
        "message": "A throwaway inbox from a server or Tor network is the classic bot-signup pattern." },
      { "code": "phone_ip_country_mismatch", "impact": 15, "source": "signup",
        "message": "The phone number is from US but the visitor is connecting from DE." }
    ]
  },
  "email": { "disposable": true, "did_you_mean": null, ... },
  "ip":    { "flags": { "tor": true, "hosting": false }, ... },
  "phone": { "valid": true, "line_type": "fixed_line_or_mobile", ... }
}
03 — For AI agents

Give your agent a sense of smell.

Veqen is an MCP server. Agents that qualify leads, onboard customers or clean CRM data can check every email, IP and phone number before they act, and explain why.

Claude, ChatGPT, CursorOAuth or API keySame credits as the API

Connect an agent →

{
  "mcpServers": {
    "veqen": {
      "type": "http",
      "url": "https://veqen-app.com/mcp",
      "headers": { "Authorization": "Bearer vq_live_..." }
    }
  }
}

Tools: check_email_address · check_ip_address · check_phone_number · check_domain_name · check_signup_risk · get_balance

04 — Pricing

Pay for checks, not seats.

Start free. Top up with prepaid credits when you need more. No subscription, no minimums, and credits never expire.

PackCreditsPricePer 1,000
FreeEvery month, after you confirm your email 1,000 $0 — Start free
StarterSide projects and launches 10,000 $10 $1.00 Buy
BuilderA growing signup flow 50,000 $40 $0.80 Buy
ScaleBusy products and list cleaning 250,000 $150 $0.60 Buy
VolumeHigh-traffic apps and platforms 1,000,000 $500 $0.50 Buy

Email, IP, phone and domain checks cost 1 credit. A full signup check costs 3. Mailbox verification adds 5. Full pricing →

07 — Questions

Straight answers.

What does Veqen check?

Email addresses (throwaway domains, typos, mail servers, domain age, mailbox), IP addresses (location, datacenter, VPN network, Tor), phone numbers (validity, line type, carrier) and domains. The signup check combines them into one verdict.

How much does it cost?

1,000 checks a month are free. After that you buy prepaid credits from $10 for 10,000 checks. Credits never expire and there is no subscription.

Can AI agents use it?

Yes. Veqen is an MCP server: connect it to Claude, ChatGPT, Cursor or any MCP client and the agent can run checks with your credits.

Do you store the emails and numbers I check?

We log which check ran and what it cost, for your usage page, not the addresses, IPs or phone numbers themselves. The one exception: if you send an Idempotency-Key, we keep that response for 24 hours so a retry gets the same answer. Domain facts (mail servers, registration date) are cached per domain.