Verifly
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Email verification for AI agents — verify, clean & validate emails; self-onboard + crypto pay
| Author | email.verifly |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2482 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Verifly": {
"url": "https://verifly.email/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (17)
get_startedread-onlyCall this FIRST if you have no Verifly API key. Returns how Verifly works and how to get access with no human: pay-as-you-go email verification API, 100 free credits on self-registration, no monthly fee. No API key required to call this tool.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
verify_email_demoread-onlyVerify one email address with NO account or API key, so you can evaluate Verifly before registering. Rate-limited per IP (a few checks). Returns the same deliverability verdict and flags as the full API. For real volume, call register_account for a key + 100 free credits, then use verify_email.
Parameters:
email(required) — string — The email address to verify, e.g. [email protected]
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
verify_emailread-onlyVerify one email address in real time. Returns a deliverability verdict (valid / invalid / risky / unknown), the reason, detailed flags (disposable, role account, catch-all, MX, SMTP), a send/reject recommendation, and credit usage.
Parameters:
email(required) — string — The email address to verify, e.g. [email protected]
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
verify_batchread-onlySynchronously verify a list of email addresses (best for up to a few hundred). Returns a per-address verdict for each email. For very large lists use the bulk async endpoint instead.
Parameters:
emails(required) — array — Array of email addresses to verify.exclude_role_accounts— boolean — Flag/exclude role accounts (info@, sales@, ...). Default false.exclude_public_domains— boolean — Flag/exclude public domains (gmail.com, ...). Default false.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
clean_email_listread-onlyClean a list of email addresses before an import or campaign: dedupes, removes invalid syntax, and (optionally) strips disposable and role accounts. Returns the cleaned list plus a summary of what was removed.
Parameters:
emails(required) — array — Email addresses to clean.remove_disposable— boolean — Remove disposable/throwaway addresses. Default true.exclude_role_accounts— boolean — Remove role accounts (info@, support@, ...). Default false.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
extract_emailsread-onlyExtract all email addresses found in a block of free-form text (notes, pasted documents, signatures). Optionally deduplicates and lowercases the results.
Parameters:
text(required) — string — Free-form text to scan for email addresses.lowercase— boolean — Lowercase all extracted addresses. Default true.deduplicate— boolean — Remove duplicate addresses. Default true.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
check_domain_healthread-onlyCheck the DNS and deliverability health of an email domain: MX records, SPF, DMARC, and an overall health score. Useful for diagnosing why a domain bounces or for validating a sending domain.
Parameters:
domain(required) — string — Domain to check, e.g. example.com
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
get_creditsread-onlyReturn the API key's remaining verification credits and recent usage (today / this month) and plan. Costs no credits.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
submit_bulkSubmit a list of email addresses as an asynchronous bulk verification job — the right tool for large lists. Returns immediately with a job_id, status, and the check_status_url / results_url to poll. Small lists may complete inline (status 'completed'); larger ones return status 'pending' — poll get_job_status until it is 'completed', then call get_job_results. Optionally register a webhook_url (public HTTPS) to be notified when the job finishes.
Parameters:
emails(required) — array — Email addresses to verify in this job (deduped server-side).webhook_url— string — Optional public HTTPS URL to POST a job.completed notification to.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
get_job_statusread-onlyFetch the current status and progress of a bulk verification job by its job_id (status, percent progress, processed count, and a valid/invalid/risky summary). Poll this after submit_bulk until status is 'completed', then call get_job_results.
Parameters:
job_id(required) — string — The job_id returned by submit_bulk.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_job_resultsread-onlyFetch the full per-address results of a completed bulk verification job by job_id (each email's verdict, recommendation, and reason) plus the valid/invalid/risky summary and credits used. The job must be 'completed' — check get_job_status first.
Parameters:
job_id(required) — string — The job_id returned by submit_bulk.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
list_jobsread-onlyList the account's bulk verification jobs, most recent first, with their status, progress, and summary. Optionally filter by status and paginate. Use this to find past jobs and their job_ids.
Parameters:
limit— integer — Max jobs to return (1-100, default 50).offset— integer — Pagination offset (default 0).status— string — Only return jobs in this status.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_usageread-onlyReturn detailed usage statistics for the account over a period (day, week, or month): total credits used, emails processed, request counts broken down by endpoint and source, a daily breakdown, and recent activity.
Parameters:
limit— integer — Max recent log entries to include (default 100, max 1000).period— string — Reporting period. Default 'month'.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_accountread-onlyReturn the account profile for the current API key: email, name, company, timezone, remaining credits, total credits used, number of API keys, and plan. Costs no credits.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_packagesread-onlyList the credit packages available for purchase (id, name, credit amount, price in USD, and price per 1k credits). Use the returned package id with buy_credits.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
buy_creditsStart a purchase of a credit package and return a way to pay. This does NOT complete a payment by itself — it returns a payment link / address: • method 'stripe' → returns a checkout_url. Paying by card requires a HUMAN to open that link and enter card details; an agent cannot finish a card payment on its own. • method 'crypto' → returns a Plisio invoice with a checkout_url AND, when you pass a `currency` (BTC, ETH, LTC, USDT, USDC), a RAW wallet `address` + `amount`. An autonomous agent CAN pay this from a crypto wallet with no browser/human, then credits are added automatically once the payment confirms. Prefer crypto for fully autonomous top-ups. Get a package id from get_packages first.
Parameters:
package_id(required) — string — The package id to buy (from get_packages).method— string — Payment method. 'stripe' = card link (needs a human), 'crypto' = wallet-payable invoice. Default 'stripe'.currency— string — For method 'crypto': the coin to pay in; returns a raw wallet address an agent can pay autonomously.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
register_accountProgrammatically create a brand-new Verifly account — this is how an agent self-onboards with no human in the loop. Requires only an email and a password (min 8 chars; disposable email domains are rejected). The new account starts with free credits. The response includes the new account id/email and a freshly generated `api_key.key` that is shown ONCE — capture and store it immediately, it cannot be retrieved again. Subsequent tool calls can then use that key as the bearer token.
Parameters:
email(required) — string — Email for the new account (not a disposable domain).password(required) — string — Password for the new account (minimum 8 characters).
Hints: read-only no · destructive no · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.