Emailable MCP by usefulapi

Verify email addresses with Emailable one by one or in batches, and read credits and batch results.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
83%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,300Tokens (tool definitions)
~1.8 KBTypical response size
Moderate attention impact (1.02% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "emailable": {
      "url": "https://emailable.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://emailable.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢emailable_get_account

The Emailable account behind this API key: the owner's email and available_credits. Check it before a large batch. GET /v1/account.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴emailable_verify_email(email, smtp, accept_all, timeout)

SPENDS CREDITS: verifies one email address and uses 1 Emailable credit (a test_ API key spends none). Returns state (deliverable, undeliverable, risky, unknown), reason, score (0-100), and flags: disposable, free, role, accept_all, no_reply, mailbox_full, plus did_you_mean (a typo fix), the detected user/domain/tag, mx_record and smtp_provider. A credit is returned for an unknown result. The call is never retried automatically. If the reply is {status: "try_again"}, the check took longer than the timeout: call again with the same email; repeats within 5 minutes are not charged. Emailable's terms allow verification of opt-in subscribers' addresses. GET /v1/verify.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@,;<>\"]+@[^\\s@,;<>\"']+\\.[^\\s@,;<>\"']+$",
      "description": "The email address to verify."
    },
    "smtp": {
      "description": "Run the SMTP step (default true). false is faster but much less accurate.",
      "type": "boolean"
    },
    "accept_all": {
      "description": "Run the accept-all check (default false). It slows the reply.",
      "type": "boolean"
    },
    "timeout": {
      "description": "Seconds to wait for the result, 2-10 (default 5).",
      "type": "integer",
      "minimum": 2,
      "maximum": 10
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴emailable_create_batch(emails, confirm, response_fields, retries)

SPENDS CREDITS: starts a bulk verification of up to 5000 email addresses. Emailable takes 1 credit per email when the batch is created, and if the account has too few credits it may charge the account's saved card to buy more. A test_ API key spends nothing. The batch cannot be cancelled here, and the call is never retried: if it fails or times out, check emailable_get_account before trying again, because a retry can charge twice. Returns the batch id; poll it with emailable_get_batch. Emailable's terms allow verification of opt-in subscribers' addresses. POST /v1/batch.

Input Schema

{
  "type": "object",
  "properties": {
    "emails": {
      "minItems": 1,
      "maxItems": 5000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 320,
        "pattern": "^[^\\s@,;<>\"]+@[^\\s@,;<>\"']+\\.[^\\s@,;<>\"']+$"
      },
      "description": "The email addresses to verify, 1-5000."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true. It confirms the user agreed to spend 1 credit per email (and a possible card charge for missing credits)."
    },
    "response_fields": {
      "description": "Only these fields in each result (default: all).",
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "accept_all",
          "birth_year",
          "did_you_mean",
          "disposable",
          "domain",
          "email",
          "first_name",
          "free",
          "full_name",
          "gender",
          "last_name",
          "mailbox_full",
          "mx_record",
          "no_reply",
          "reason",
          "role",
          "score",
          "smtp_provider",
          "state",
          "tag",
          "user"
        ]
      }
    },
    "retries": {
      "description": "Retry mail-server answers for accuracy (default true). false is faster but gives more unknown results.",
      "type": "boolean"
    }
  },
  "required": [
    "emails",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢emailable_get_batch(id, partial, include_emails, offset, limit)

Status and results of a batch made with emailable_create_batch: message, progress (processed/total), reason_counts and total_counts (deliverable, undeliverable, risky, unknown). Batches of up to 1,000 emails also return the results inline in `emails` (30 days). They come in pages: up to `limit` results, fewer if the reply would get too long; ask for the next page with emails_page.next_offset. A bigger batch returns download_file, a temporary link (5 days) to a ZIP of a CSV: share it only with the account owner. Free to call. GET /v1/batch.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,64}$",
      "description": "The batch id."
    },
    "partial": {
      "description": "Include the results so far while the batch is still running (only for batches of up to 1,000 emails).",
      "type": "boolean"
    },
    "include_emails": {
      "description": "Include per-email results (default true). false returns the counts only.",
      "type": "boolean"
    },
    "offset": {
      "description": "First result to return (default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000
    },
    "limit": {
      "description": "Most results per call, 1-1000 (default 100). A reply can hold fewer; use emails_page.next_offset for the next page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools