# Verifly (remote · verifly.email)

Email verification for AI agents — verify, clean & validate emails; self-onboard + crypto pay

- Trust score: 68/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `verifly.email`: 68/100 (this document), [markdown](https://verifymcp.io/servers/email-verifly-verifly/verifly.md), [page](https://verifymcp.io/servers/email-verifly-verifly/verifly)

## Channel facts

- Endpoint: `https://verifly.email/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 17 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1575 tokens (~92/item across 17 items; 17 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http email-verifly-verifly https://verifly.email/mcp
```

### Codex

```toml
[mcp_servers.email-verifly-verifly]
url = "https://verifly.email/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "email-verifly-verifly": {
      "type": "remote",
      "url": "https://verifly.email/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add email-verifly-verifly --url https://verifly.email/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  email-verifly-verifly:
    url: "https://verifly.email/mcp"
```

### Other

```json
{
  "mcpServers": {
    "email-verifly-verifly": {
      "type": "http",
      "url": "https://verifly.email/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 67, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 67, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 65, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 65)

First indexed and scored.

## MCP tools (17)

### `get_started` (~65 tokens)

How to start using Verifly (no key needed)

Call 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.

### `verify_email_demo` (~93 tokens)

Verify an email — free demo (no key required)

Verify 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.

Input parameters:

- `email` (string, required): The email address to verify, e.g. lead@example.com

### `verify_email` (~78 tokens)

Verify a single email address

Verify 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.

Input parameters:

- `email` (string, required): The email address to verify, e.g. lead@example.com

### `verify_batch` (~105 tokens)

Verify a batch of email addresses

Synchronously 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.

Input parameters:

- `emails` (array, required): Array of email addresses to verify.
- `exclude_public_domains` (boolean): Flag/exclude public domains (gmail.com, ...). Default false.
- `exclude_role_accounts` (boolean): Flag/exclude role accounts (info@, sales@, ...). Default false.

### `clean_email_list` (~104 tokens)

Clean an email list

Clean 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.

Input parameters:

- `emails` (array, required): Email addresses to clean.
- `exclude_role_accounts` (boolean): Remove role accounts (info@, support@, ...). Default false.
- `remove_disposable` (boolean): Remove disposable/throwaway addresses. Default true.

### `extract_emails` (~84 tokens)

Extract email addresses from text

Extract all email addresses found in a block of free-form text (notes, pasted documents, signatures). Optionally deduplicates and lowercases the results.

Input parameters:

- `deduplicate` (boolean): Remove duplicate addresses. Default true.
- `lowercase` (boolean): Lowercase all extracted addresses. Default true.
- `text` (string, required): Free-form text to scan for email addresses.

### `check_domain_health` (~66 tokens)

Check email-domain health (MX / SPF / DMARC)

Check 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.

Input parameters:

- `domain` (string, required): Domain to check, e.g. example.com

### `get_credits` (~33 tokens)

Get remaining Verifly credits

Return the API key's remaining verification credits and recent usage (today / this month) and plan. Costs no credits.

### `submit_bulk` (~139 tokens)

Submit an async bulk verification job

Submit 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.

Input parameters:

- `emails` (array, required): Email addresses to verify in this job (deduped server-side).
- `webhook_url` (string): Optional public HTTPS URL to POST a job.completed notification to.

### `get_job_status` (~74 tokens)

Get the status of a bulk verification job

Fetch 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.

Input parameters:

- `job_id` (string, required): The job_id returned by submit_bulk.

### `get_job_results` (~76 tokens)

Get the results of a completed bulk job

Fetch 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.

Input parameters:

- `job_id` (string, required): The job_id returned by submit_bulk.

### `list_jobs` (~93 tokens)

List bulk verification jobs

List 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.

Input 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.

### `get_usage` (~85 tokens)

Get detailed usage statistics

Return 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.

Input parameters:

- `limit` (integer): Max recent log entries to include (default 100, max 1000).
- `period` (string): Reporting period. Default 'month'.

### `get_account` (~45 tokens)

Get account information

Return 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.

### `get_packages` (~45 tokens)

List buyable credit packages

List 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.

### `buy_credits` (~246 tokens)

Buy credits (returns a payment link or crypto invoice)

Start 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.

Input parameters:

- `currency` (string): For method 'crypto': the coin to pay in; returns a raw wallet address an agent can pay autonomously.
- `method` (string): Payment method. 'stripe' = card link (needs a human), 'crypto' = wallet-payable invoice. Default 'stripe'.
- `package_id` (string, required): The package id to buy (from get_packages).

### `register_account` (~144 tokens)

Self-register a new Verifly account + API key

Programmatically 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.

Input parameters:

- `email` (string, required): Email for the new account (not a disposable domain).
- `password` (string, required): Password for the new account (minimum 8 characters).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/email-verifly-verifly/verifly#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 67
- 2026-08-01: 67
- 2026-07-31: 67
- 2026-07-30: 67
- 2026-07-29: 67
- 2026-07-28: 66
- 2026-07-27: 65
- 2026-07-26: 65

## Links

- Remote endpoint: https://verifly.email/mcp
- Authorisation metadata: https://verifly.email/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/james-sib/verifly-mcp-server
- Website: https://verifly.email/
- Changelog RSS feed: https://verifymcp.io/servers/email-verifly-verifly/verifly/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/email-verifly-verifly/verifly/changelog.json
- HTML version of this page: https://verifymcp.io/servers/email-verifly-verifly/verifly
