FindLeadEmails

Find and verify B2B work emails, single or bulk. OAuth sign-in or API key; pay per verified email.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,454Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.14% 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": {
    "mcp": {
      "url": "https://www.findleademails.com/api/mcp"
    }
  }
}

Remote endpoints

https://www.findleademails.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🔴find_email(first_name, last_name, company_domain, company_name, linkedin_url, ...)

Find and verify one person's work email from their name and company domain, or from a LinkedIn company page URL when you do not have the domain. Costs 1 credit only when the result is verified. Misses, catch-alls, and cached repeats are free and still return at 0 credits. A billable result fails at 0 balance; the error includes https://www.findleademails.com/pricing. This stores the lookup. It does not delete or modify the person's data.

Input Schema

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "company_domain": {
      "type": "string",
      "maxLength": 300
    },
    "company_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "linkedin_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500,
          "format": "uri"
        },
        {
          "type": "string",
          "const": ""
        },
        {
          "type": "null"
        }
      ]
    },
    "company_linkedin_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500,
          "format": "uri"
        },
        {
          "type": "string",
          "const": ""
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "first_name",
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡verify_email(email)

Check whether one email address is a real mailbox. Costs 1 credit only when the mailbox is confirmed valid. Invalid, catch-all, unknown, and repeats are free and still return at 0 credits. A new valid mailbox fails at 0 balance; the error includes https://www.findleademails.com/pricing. The credit is spent after a valid result. This does not modify the mailbox.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The email address to check, for example [email protected]"
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴find_emails_bulk(records)

Find and verify emails for up to 100 people. Use create_job for a larger list. 1 credit per verified result. Free outcomes still return at 0 credits. Rows run until a billable result cannot be paid for; later rows are skipped with insufficient_credits and https://www.findleademails.com/pricing. This stores the lookups. It does not delete data.

Input Schema

{
  "type": "object",
  "properties": {
    "records": {
      "minItems": 1,
      "maxItems": 10000,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "company_domain": {
            "type": "string",
            "maxLength": 300
          },
          "company_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "linkedin_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500,
                "format": "uri"
              },
              {
                "type": "string",
                "const": ""
              },
              {
                "type": "null"
              }
            ]
          },
          "company_linkedin_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500,
                "format": "uri"
              },
              {
                "type": "string",
                "const": ""
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "first_name",
          "last_name"
        ]
      }
    }
  },
  "required": [
    "records"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡create_job(records, callback_url, name)

Queue a large list and return a job id. Reserves one credit per row up front and refunds what rows do not use. If the wallet cannot cover every row, the job is refused up front (no partial queue) with insufficient_credits and https://www.findleademails.com/pricing. Poll get_job_status, then page get_job_results. Each call creates a new job.

Input Schema

{
  "type": "object",
  "properties": {
    "records": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "company_domain": {
            "type": "string",
            "maxLength": 300
          },
          "company_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "linkedin_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500,
                "format": "uri"
              },
              {
                "type": "string",
                "const": ""
              },
              {
                "type": "null"
              }
            ]
          },
          "company_linkedin_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500,
                "format": "uri"
              },
              {
                "type": "string",
                "const": ""
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "first_name",
          "last_name"
        ]
      }
    },
    "callback_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500,
          "format": "uri"
        },
        {
          "type": "string",
          "const": ""
        },
        {
          "type": "null"
        }
      ]
    },
    "name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "records"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_job_status(job_id)

Read progress and per-outcome counters for a job created with create_job. Does not spend credits and does not change the job.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_job_results(job_id, limit, cursor)

Read one page of a job's per-row results. Readable while the job is still running. Pass cursor back as the next cursor until next_cursor is null. Does not spend credits and does not change the job.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "cursor": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools