MailVeri MCP v2
Official Model Context Protocol (MCP) v2 server for MailVeri. Connect your AI assistants (Claude Desktop, Claude Code, Codex, Cursor, Windsurf, Antigravity, OpenCode, Pi, Oh My Pi, VS Code Cline) via instant Hosted Streamable HTTP (/mcp), local uvx (stdio), or legacy SSE (/sse).
1. Overview
The Model Context Protocol (MCP) is an open standard that lets LLMs and AI Agents securely invoke external tools and query live data. The MailVeri MCP Server bridges LLMs directly with MailVeri's infrastructure without requiring manual API calls.
โก Real-Time Email Validation
Verify mailbox deliverability, catch-all domains, role accounts, and 100,000+ disposable providers in real time with zero credits charged on unknowns.
๐ฆ Asynchronous Bulk Verification
Submit lists of emails from within chat sessions, monitor batch completion percentages, and retrieve filtered CSV or ZIP download URLs.
๐ก๏ธ Native MCP v2 ToolAnnotations
Every tool declares explicit read-only, idempotent, and destructive safety hints so AI clients auto-approve safe balance/status checks while guarding billed or delete actions.
๐ Hosted HTTP & Local uvx
Connect instantly over Streamable HTTP (https://mcp.mailveri.com/mcp) with zero local setup, or run locally via uvx mailveri-mcp directly from PyPI.
2. Prerequisites & Authentication
Connect instantly to our hosted remote Streamable HTTP endpoint using only your MailVeri API key, or install uv to run the local stdio server on your workstation.
Option A: Hosted Streamable HTTP (Zero Install โ MCP v2)
Point any Streamable HTTP MCP client directly to https://mcp.mailveri.com/mcp with your API key in the Authorization: Bearer or X-API-Key header (in Claude Code .mcp.json / ~/.claude.json, also include "type": "http"; legacy SSE clients remain supported at https://mcp.mailveri.com/sse):
{
"mcpServers": {
"mailveri": {
"url": "https://mcp.mailveri.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_MAILVERI_API_KEY"
}
}
}
}
Option B: Install uv (Local CLI Runner)
uv enables instantaneous tool execution without creating global Python environments:
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
3. One-Click AI Setup Prompt
Paste this prompt directly into your AI assistant (e.g. Claude Desktop, Claude Code, Codex, Cursor, OpenCode, Pi, Oh My Pi, Antigravity) to let it automatically set up MailVeri MCP for you.
Please configure the MailVeri MCP (Model Context Protocol) email verification tool for me.
Configuration JSON (Hosted Streamable HTTP โ no local install required):
{
"mcpServers": {
"mailveri": {
"url": "https://mcp.mailveri.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
(In Claude Code `.mcp.json` / `~/.claude.json`, include `"type": "http"` inside `"mailveri"` or run `claude mcp add --transport http mailveri https://mcp.mailveri.com/mcp --header "Authorization: Bearer YOUR_API_KEY"`. For stdio-only clients like `claude_desktop_config.json`, run `uvx mailveri-mcp` with `MAILVERI_API_KEY=YOUR_API_KEY` instead.)
Once configured, verify single emails using mailveri_verify_email or check balance using mailveri_get_balance.
4. Client Configurations
Configure MailVeri MCP across your favorite AI assistants and IDEs.
Add the server definition to your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Add MailVeri MCP to Anthropic's Claude Code CLI via Hosted Streamable HTTP (recommended, zero local install) or local uvx:
- Project-scoped (shared via repo):
.mcp.json(at project root) - User-scoped (global for all projects):
~/.claude.json
claude mcp add --transport http --scope project \
mailveri https://mcp.mailveri.com/mcp \
--header "Authorization: Bearer YOUR_MAILVERI_API_KEY"
Or configure Hosted Streamable HTTP directly in .mcp.json / ~/.claude.json (include "type": "http"):
{
"mcpServers": {
"mailveri": {
"type": "http",
"url": "https://mcp.mailveri.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_MAILVERI_API_KEY"
}
}
}
}
Alternatively, run locally via uvx (stdio):
claude mcp add \
--scope project \
--env MAILVERI_API_KEY=YOUR_MAILVERI_API_KEY \
mailveri -- \
uvx mailveri-mcp
Configure MailVeri MCP in your Codex assistant or agent configuration file. The official Codex CLI uses TOML format:
- Global CLI config:
~/.codex/config.toml - Project CLI config:
.codex/config.toml - Alternative / GUI integrations:
~/.codex/config.json
[mcp_servers.mailveri]
command = "uvx"
args = ["mailveri-mcp"]
[mcp_servers.mailveri.env]
MAILVERI_API_KEY = "YOUR_MAILVERI_API_KEY"
If using JSON configuration:
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Add MailVeri MCP via GUI under Cursor Settings > Features > MCP, or add directly to your configuration files:
- Project-level:
.cursor/mcp.json - Global user-level:
~/.cursor/mcp.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Configure via GUI in Windsurf Settings > Cascade > MCP Servers, or directly edit the configuration file:
- Configuration path:
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Configure under global user settings or per-workspace settings:
- Global config:
~/.gemini/antigravity/mcp_config.json - Workspace config:
.gemini/antigravity/mcp_config.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
OpenCode discovers configuration files in the following precedence order:
- Global (Home):
~/.opencode.json - Global (XDG):
~/.config/opencode/.opencode.json - Project directory:
./.opencode.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Configure MailVeri MCP in your Pi AI assistant settings:
- Global Agent config:
~/.pi/agent/mcp.jsonor~/.pi/config.json - Project config:
.pi/mcp.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Configure in Oh My Pi MCP registry:
- Global config:
~/.omp/mcp.json - Project config:
./.omp/mcp.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
}
}
}
}
Configure via the Cline extension MCP settings tab, or edit cline_mcp_settings.json directly:
- macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json - Linux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{
"mcpServers": {
"mailveri": {
"command": "uvx",
"args": [
"mailveri-mcp"
],
"env": {
"MAILVERI_API_KEY": "YOUR_MAILVERI_API_KEY"
},
"disabled": false,
"autoApprove": [
"mailveri_verify_email",
"mailveri_get_balance"
]
}
}
}
5. MCP Tools Reference
Detailed parameter definitions, response schemas, deliverability status indicators, and MCP v2 ToolAnnotations safety hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) for all 6 tools exposed by the MailVeri MCP Server.
Verifies the existence and deliverability of a single target email address. Checks MX existence, connects to the destination mail exchanger via SMTP handshake, evaluates catch-all configurations, disposable email providers, and role accounts.
Input Arguments
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | Required | Target email address (e.g. [email protected]). |
Output JSON Schema
{
"mail": "[email protected]",
"email": "[email protected]",
"status": "VALID",
"is_deliverable": true,
"balance": 999,
"credits_used": 1,
"quality_score": 98,
"is_forwarding": false,
"message": "Verified [email protected] successfully"
}
Deliverability Status Enum
| Status | Meaning | Deliverability Advice |
|---|---|---|
| VALID | Mailbox verified successfully. SMTP 250 OK accepted. | Safe to send. Lowest bounce probability. |
| INVALID | Recipient address does not exist, syntax is invalid, or domain has no MX. | Do not send. Hard bounce guaranteed. |
| DISPOSABLE | Temporary, burnable email provider (e.g. GuerrillaMail, 10MinuteMail). | Block or filter out to preserve sender reputation. |
| ROLE_ACCOUNT | Functional company address (e.g. support@, info@, sales@). |
Higher complaint risk; proceed with care. |
| CATCH_ALL | Domain server accepts all incoming emails regardless of username. | Proceed cautiously; deliverability cannot be guaranteed. |
| FULL_INBOX | Recipient mailbox storage quota is exceeded. | Do not send. Soft bounce expected. |
| UNKNOWN | Remote mail server greylisted, timed out, or connection refused. | Temporary issue. Retry verification later. |
Checks the current verification credits remaining in your MailVeri account. Takes no arguments.
Output JSON Schema
{
"balance": 4820,
"message": "You have 4820 credits"
}
Queues a list of emails (minimum 2 unique email addresses) for asynchronous, distributed bulk verification. Returns an identifier id to monitor job progress.
Input Arguments
| Field | Type | Required | Description |
|---|---|---|---|
emails |
array<string> | Required | Array of email strings (at least 2 unique items). |
filename |
string | Optional | Optional label filename for the batch archive (default: batch.csv). |
Output JSON Schema
{
"id": "sample_batch_id_9x8y7z",
"job_id": "sample_batch_id_9x8y7z",
"count": 250,
"status": "QUEUED",
"message": "Batch submitted successfully"
}
Polls progress percentage, status state, and download links for an active or completed bulk verification job.
Input Arguments
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
string | Required | The batch identifier returned from mailveri_verify_batch. |
Output JSON Schema
{
"id": "sample_batch_id_9x8y7z",
"job_id": "sample_batch_id_9x8y7z",
"status": "DONE",
"percent": 100,
"download_link": "https://api.mailveri.com/v1/download-zip/?id=sample_batch_id_9x8y7z",
"is_finished": true
}
Returns the direct authenticated download URL for batch verification results. Supports downloading the full ZIP archive (via /v1/download-zip/) or a custom filtered CSV file (via /v1/download-result/?format=csv).
Input Arguments
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
string | Required | The completed batch ID. |
format |
string | Optional | Result file format: zip (default) or csv. |
status |
string | Optional | Comma-separated deliverability statuses for CSV export (e.g. VALID,ROLE_ACCOUNT, VALID, INVALID). |
columns |
string | Optional | Column layout for CSV export: original (default), compact (Email, Status), or email (Email only). |
Output JSON Schema (ZIP Archive - Default)
{
"id": "bX9K3LwZqP2YtR8vN4mQ",
"job_id": "bX9K3LwZqP2YtR8vN4mQ",
"format": "zip",
"download_url": "https://api.mailveri.com/v1/download-zip/?id=bX9K3LwZqP2YtR8vN4mQ",
"message": "Download result ZIP archive at: https://api.mailveri.com/v1/download-zip/?id=bX9K3LwZqP2YtR8vN4mQ (requires API key header)"
}
Output JSON Schema (Filtered CSV Export)
{
"id": "bX9K3LwZqP2YtR8vN4mQ",
"job_id": "bX9K3LwZqP2YtR8vN4mQ",
"format": "csv",
"download_url": "https://api.mailveri.com/v1/download-result/?id=bX9K3LwZqP2YtR8vN4mQ&format=csv&status=VALID%2CROLE_ACCOUNT&columns=original",
"message": "Download result CSV (VALID,ROLE_ACCOUNT) at: https://api.mailveri.com/v1/download-result/?id=bX9K3LwZqP2YtR8vN4mQ&format=csv&status=VALID%2CROLE_ACCOUNT&columns=original (requires API key header)"
}
Deletes a finished or canceled verification batch and its associated result files (destructiveHint: true). Batches that are still queued or processing cannot be deleted; wait for completion or cancel them from the MailVeri Dashboard first.
Input Arguments
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
string | Required | Completed or canceled batch ID to delete. |
Output JSON Schema
{
"id": "bX9K3LwZqP2YtR8vN4mQ",
"job_id": "bX9K3LwZqP2YtR8vN4mQ",
"message": "List leads.csv was deleted successfully"
}
6. Transports & Execution Modes
MailVeri MCP v2 supports Hosted Streamable HTTP (/mcp), standard I/O (stdio), and backward-compatible Server-Sent Events (/sse).
| Transport | Endpoint / CLI Flag | Best Used For |
|---|---|---|
streamable-http (Hosted) |
https://mcp.mailveri.com/mcp |
Instant zero-install cloud agents, IDEs, and web MCP clients authenticating via Authorization: Bearer or X-API-Key. |
stdio (Default CLI) |
--transport stdio |
Desktop and CLI clients like Claude Desktop, Claude Code, Codex, Cursor, OpenCode, Pi, Antigravity where the host process manages the local server lifecycle. |
streamable-http / sse (Self-Hosted) |
--transport streamable-http --port 8000 |
Self-hosted local HTTP deployments serving both /mcp (Streamable HTTP) and /sse (legacy SSE) on 127.0.0.1. |
Environment Variables
| Variable | Default | Description |
|---|---|---|
MAILVERI_API_KEY |
None | Required for local CLI execution. Your MailVeri API key. |
MAILVERI_BASE_URL |
https://api.mailveri.com |
Optional custom MailVeri REST API base URL. |
7. Troubleshooting & FAQ
Q: uvx: command not found error
Make sure uv is installed and available in your shell's PATH, or switch to the zero-install hosted Streamable HTTP endpoint (https://mcp.mailveri.com/mcp). If Claude Desktop doesn't find uvx, provide the full absolute path in your config (e.g. /usr/local/bin/uvx or /Users/<user>/.local/bin/uvx).
Q: Rate limit warnings on single verification
Single email verification (mailveri_verify_email) allows up to 10 requests per second (up to 5 concurrent checks) per account. For lists containing 50 or more emails, instruct your AI agent to use mailveri_verify_batch for asynchronous bulk processing.
Q: Tool call returns {"error": 1, "message": "Invalid API key"}
Verify that your MAILVERI_API_KEY environment variable is correctly set in your client's config file and that your key is active in your MailVeri Dashboard.