Skip to main content
Glama
carsonlabs

LeadEnrich MCP Server

Official
by carsonlabs

LeadEnrich MCP Server

License: MIT Python 3.11+ PyPI MCP MCPize

Waterfall lead enrichment for AI agents. Cascades through Apollo, Clearbit, and Hunter to build the most complete lead profile in a single call.

One-click install: Install on MCPize | pip install leadenrich-mcp

LeadEnrich MCP exposes lead and company enrichment through the Model Context Protocol (MCP), so tools like Claude and Cursor can run enrichment workflows directly. Give it an email, domain, or name and it returns a merged profile with field attribution showing which provider contributed each data point.

Quick Connect

1. Install and start the server

pip install leadenrich-mcp
leadenrich-mcp

The server starts on http://localhost:8300/mcp by default.

2a. Connect from Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "leadenrich": {
      "url": "http://localhost:8300/mcp"
    }
  }
}

2b. Connect from Claude Code

claude mcp add leadenrich --transport http http://localhost:8300/mcp

Related MCP server: Prospeo MCP Server

Tools

Tool

Description

enrich_lead

Full waterfall enrichment for a single lead (email, domain, or name+domain)

find_email

Discover an email from first name + last name + company domain

enrich_company

Company firmographic data by domain (industry, size, revenue, etc.)

enrich_batch

Batch enrich up to 25 leads concurrently

check_usage

Quota, cost tracking, and remaining lookups

health_check

Server status, configured providers, and cache stats

How It Works

LeadEnrich uses a waterfall strategy: each provider fills gaps left by the previous one. When email is known, all providers run concurrently for speed. When only name+domain is provided, Apollo discovers the email first, then Clearbit and Hunter run in parallel.

Input (email / domain / name+domain)
         |
         v
  +-----------+     +-----------+     +----------+
  |   Apollo  | --> |  Clearbit | --> |  Hunter  |
  +-----------+     +-----------+     +----------+
  |  Contact  |     |  Company  |     |  Email   |
  |  Company  |     |  Person   |     |  Verify  |
  |  LinkedIn |     |  Firmo    |     |  Domain  |
  +-----------+     +-----------+     +----------+
         |               |                |
         v               v                v
  +------------------------------------------+
  |        Merged Profile                    |
  |  16+ fields with per-field attribution   |
  |  Confidence score + lookup cost          |
  +------------------------------------------+

Each field in the result includes attribution so you know exactly which provider it came from. No duplicate API calls thanks to built-in caching.

Pricing

Tier

Cost

Details

Free

$0.00

50 lookups/month

1 provider hit

$0.05/lookup

Single provider returned data

2 providers hit

$0.10/lookup

Two providers contributed fields

3 providers hit

$0.15/lookup

Full waterfall, maximum coverage

Requirements

  • Python 3.11+

  • pip

Quick Start

git clone https://github.com/carsonlabs/leadenrich-mcp.git
cd leadenrich-mcp
pip install -r requirements.txt
python main.py

MCP endpoint:

  • http://localhost:8300/mcp

Environment Variables

Variable

Description

Required

APOLLO_API_KEY

Apollo.io API key

No

CLEARBIT_API_KEY

Clearbit API key

No

HUNTER_API_KEY

Hunter.io API key

No

LEADENRICH_API_KEY

Client auth key for usage metering

No

LEADENRICH_FREE_TIER_LIMIT

Free tier limit (default: 50)

No

PORT

Server port (default: 8300)

No

All provider keys are optional. The server uses whichever providers are configured and skips the rest.

Example:

export APOLLO_API_KEY="your-apollo-key"
export CLEARBIT_API_KEY="your-clearbit-key"
export HUNTER_API_KEY="your-hunter-key"
python main.py

Running Options

Run directly:

python main.py

Run via FastMCP CLI:

fastmcp run main.py --transport streamable-http --port 8300

Tool Details

enrich_lead

Inputs:

  • email (optional): Contact email address (best identifier)

  • domain (optional): Company domain (e.g. "stripe.com")

  • first_name / last_name (optional): Contact name (combine with domain)

  • providers (optional): Limit which providers to use

  • api_key (optional): Your LeadEnrich API key

Returns merged lead profile with field attribution, confidence score, and lookup cost.

find_email

Inputs:

  • first_name (required): Contact's first name

  • last_name (required): Contact's last name

  • domain (required): Company domain

Returns discovered email with confidence score and verification status.

enrich_company

Input:

  • domain (required): Company domain

Returns company-level firmographic data: industry, size, revenue, description, location.

enrich_batch

Inputs:

  • leads (required): List of lead objects (max 25), each with optional email/domain/name

  • providers (optional): Limit which providers to use

  • api_key (optional): Your LeadEnrich API key

Returns list of enriched profiles with batch summary.

check_usage

Input:

  • api_key (optional): Your LeadEnrich API key

Returns usage stats: lookup count, cost, tier, remaining quota, and cache stats.

health_check

No input. Returns server status, configured providers, cache stats, and version info.

Try It

fastmcp list-tools main.py
fastmcp call-tool main.py health_check '{}'
fastmcp call-tool main.py enrich_lead '{"email":"jane@stripe.com"}'
fastmcp call-tool main.py find_email '{"first_name":"Jane","last_name":"Smith","domain":"stripe.com"}'
fastmcp call-tool main.py enrich_company '{"domain":"stripe.com"}'

Deployment

Smithery

This repo includes smithery.yaml for Smithery deployment.

  1. Push repository to GitHub

  2. Create/add server in Smithery

  3. Point Smithery to this repository

Docker / Hosting Platforms

A Dockerfile is included for Railway, Fly.io, and other container hosts.

# Railway
railway up

# Fly.io
fly launch
fly deploy

Set your provider API keys in your host environment.

Architecture

Agent (Claude, Cursor, etc.)
  -> MCP
LeadEnrich MCP Server (this repo)
  -> Apollo API    (contact + company data)
  -> Clearbit API  (person + firmographic data)
  -> Hunter API    (email finding + verification)

This server is a translation layer between MCP tool calls and multiple enrichment provider APIs, with built-in caching, usage metering, and waterfall merge logic.

Free vs Pro

Tool

Free

Pro ($29/mo)

enrich_lead

Yes (Hunter only)

Yes (full waterfall: Apollo + Clearbit + Hunter)

check_usage

Yes

Yes

health_check

Yes

Yes

find_email

-

Yes

enrich_company

-

Yes

enrich_batch

-

Yes

Free tier gives you single-provider lookups via Hunter. Pro unlocks the full 3-provider waterfall, email finder, company enrichment, and batch operations.

Upgrade to Pro on MCPize — $29/mo or $290/yr.


Built by Freedom Engineers

Available Tools

6 tools
check_usageB

Check your current usage and remaining quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNoYour LeadEnrich API key. Uses server default if not provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states it 'checks' usage, implying a read-only operation, but it does not explicitly confirm that, nor does it mention any side effects, authentication requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that conveys the essential purpose. It is front-loaded and has no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (1 optional param, output schema exists), the description lacks completeness. It does not mention that an API key might be needed, that no quota is consumed, or what the output format is. Given no annotations, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for its single parameter with a detailed description. The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: checking usage and quota. It uses a specific verb ('Check') and resource ('usage and remaining quota'), and it clearly distinguishes from sibling tools like 'enrich_*' and 'health_check' which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention when not to use it. It simply states what the tool does without any contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enrich_batchA

Enrich multiple leads concurrently. Each lead cascades through all providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadsYesList of lead objects, each with optional keys: email, domain, first_name, last_name.
providersNoOptional list to limit which providers to use.
api_keyNoYour LeadEnrich API key for usage tracking.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Covers concurrency and cascading, but no annotations exist. Missing details on rate limits, failure handling, or auth requirements beyond the api_key parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the key behavior (concurrency, cascading). No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate given output schema exists, but lacks details on batch size limits, error aggregation, or when cascading stops (e.g., on first success/failure).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already described. Description adds no new semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Enrich multiple leads concurrently' with cascading behavior, distinguishing it from single-lead sibling tools like enrich_lead and enrich_company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies batch usage but lacks explicit when-to-use or alternatives guidance. Doesn't contrast with enrich_lead for single leads or check_usage for quota checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enrich_companyA

Enrich a company by domain. Returns firmographic data without person-level details.

Best for account-level research: industry, size, revenue, description, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesCompany domain (e.g. "stripe.com").
api_keyNoYour LeadEnrich API key for usage tracking.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses return value (firmographic data) and scope (no person-level details), but omits behavioral traits like mutation safety, rate limits, or authentication requirements beyond the api_key parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with essential purpose, no redundant information. Every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature (2 params, output schema exists), the description adequately covers what the tool does, input, and output type. Minor gap: no mention of whether it requires authentication beyond the optional api_key.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds context by explaining that enrichment is done by domain and that person-level details are excluded, adding value beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'enrich', resource 'company', method 'by domain', and specifies it returns firmographic data without person-level details, distinguishing it from sibling tools like enrich_lead and find_email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It indicates best use for account-level research (industry, size, revenue, etc.), providing clear context. However, it doesn't explicitly state when not to use it or mention alternatives beyond sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enrich_leadA

Enrich a single lead by cascading through Apollo, Clearbit, and Hunter.

Provide at least one of: email, domain, or first_name + last_name + domain. When email is provided, all providers run concurrently for speed. When only domain/name is provided, Apollo runs first to discover the email, then Clearbit + Hunter run concurrently.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoContact email address (best identifier).
domainNoCompany domain (e.g. "stripe.com").
first_nameNoContact's first name (combine with last_name + domain).
last_nameNoContact's last name.
providersNoOptional list to limit which providers to use. Default: all configured.
api_keyNoYour LeadEnrich API key for usage tracking.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must cover behavioral aspects. It does so by explaining the cascading/concurrent execution flow for different input combinations, which adds significant value beyond the schema. However, it omits aspects like rate limits, authentication needs, or data persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two paragraphs, front-loaded with the main purpose. Every sentence is essential and adds value. No redundancy or unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple providers, cascading logic), the description fully covers input requirements and execution flow. An output schema exists, so return values need not be explained. This leaves no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description goes beyond by explaining how parameters interact (e.g., 'When email is provided, all providers run concurrently') and clarifying the rationale behind input combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Enrich a single lead by cascading through Apollo, Clearbit, and Hunter.' It uses a specific verb ('Enrich') and resource ('single lead'), and distinguishes itself from siblings like 'enrich_batch' and 'enrich_company'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit input requirements ('Provide at least one of: email, domain, or first_name + last_name + domain') and explains behavior under different scenarios (concurrent vs. sequential). While it doesn't explicitly list when not to use the tool, the sibling names imply batch vs. single use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_emailA

Find someone's email address given their name and company domain.

Uses Hunter email-finder first (purpose-built for this), then falls back to Apollo people-match if Hunter doesn't find it.

ParametersJSON Schema
NameRequiredDescriptionDefault
first_nameYesContact's first name.
last_nameYesContact's last name.
domainYesCompany domain (e.g. "stripe.com").
api_keyNoYour LeadEnrich API key for usage tracking.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the fallback mechanism between two providers, which is important behavioral context. However, it does not mention error handling, rate limits, or whether the tool modifies data, though the read-only nature is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no unnecessary words, and front-loads the core action. Every sentence provides value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool uses external APIs and fallback, the description covers the essential flow. However, it lacks mention of what happens when both providers fail (e.g., returns null) or any success/error output details, though output schema is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters adequately. The description adds no new parameter-specific details, only overall logic, so score is at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds an email address given name and domain, using a specific verb-resource pair. It distinguishes from siblings like enrich_lead by focusing on email lookup with fallback strategy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (for email finding) and mentions the fallback behavior, but does not explicitly state when not to use it or mention alternative tools like enrich_company for company-level enrichment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Check server health and which enrichment providers are configured.

Returns server status, configured providers, cache stats, and connectivity info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses return fields (server status, providers, cache stats, connectivity) but does not mention side effects, auth requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. Front-loaded with the main action ('Check server health'), then lists return values efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an existing output schema (not shown), the description adequately explains the return value. It covers the main fields, though it could mention potential errors or caching behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters with 100% coverage. Per the rubric, 0 parameters warrants a baseline of 4. No additional parameter info needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks server health and enrichment providers, using a specific verb and resource. It distinguishes from sibling tools like enrich_* which are about data enrichment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for health checks but does not explicitly state when to use versus alternatives like check_usage. No exclusions or context are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.2.0
    • First observedcheck_usage
    • First observedenrich_batch
    • First observedenrich_company
    • First observedenrich_lead
    • First observedfind_email
    • First observedhealth_check

TDQS

A4.1/5.0
Disambiguation5/5

Each tool serves a distinct purpose: usage checking, batch enrichment, company enrichment, lead enrichment, email finding, and health checking. There is no overlap or ambiguity between tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., enrich_lead, find_email, health_check), making them predictable and easy to understand.

Tool Count5/5

With 6 tools, the server covers the essential operations of lead enrichment without unnecessary complexity. Each tool is justified and serves a distinct function.

Completeness5/5

The tool set provides comprehensive coverage for lead enrichment: single lead enrichment, company enrichment, batch processing, email discovery, along with usage and health monitoring. No obvious gaps in the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Give your AI agent access to 60M+ companies and 300M+ verified contacts. Enrich leads, find work emails, discover tech stacks, and identify buying intent — directly from Claude, Cursor, Windsurf, or any MCP-compatible AI agent.
    11
    27
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI tools to search and enrich B2B leads, including finding professional emails, company profiles, and filtering people and companies by various criteria.
    5
    227
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Account-based marketing enrichment for AI agents. Enriches people and companies from email, LinkedIn URL, or domain with cited multi-source fields.
    73
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Lead generation MCP server for AI agents. Find emails, verify contacts, enrich profiles, and search prospects using Hunter.io, Apollo.io, and Abstract API.
    8
    19
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/carsonlabs/leadenrich-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server