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.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it checks usage. No disclosure of behavior like rate limits, authentication needs beyond api_key, or potential side effects.

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 sentence with no extraneous words, achieving maximum conciseness while conveying the core purpose.

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?

Given the tool's simplicity and the presence of an output schema, the description is minimally adequate but lacks any context about quota types or usage limits.

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% for the single optional api_key parameter. The description adds no extra meaning beyond the schema's own description.

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 uses the verb 'check' and specifies the resource 'usage and remaining quota', making it distinct from sibling tools like enrich_lead or 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 Guidelines2/5

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

No guidance on when to use this tool versus alternatives like health_check. It only states the function without context on prerequisites or exclusions.

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

A4/5.0
Behavior3/5

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

With no annotations provided, the description must disclose behavioral traits. It mentions concurrency and cascading through providers, but does not cover rate limits, error handling, or side effects. Additional transparency about concurrency limits or provider failures would improve this score.

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, front-loaded sentence with no wasted words. It conveys the core function and a key behavioral detail 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?

The description is concise but covers the main purpose and concurrency behavior. It does not describe the output or error handling, but the presence of an output schema (noted in context) partially compensates. Given the simplicity of the tool, it is adequately complete.

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 baseline is 3. The description adds minimal semantic value beyond the schema (e.g., 'cascades through all providers' gives context for the 'providers' parameter). It does not elaborate on parameter usage or constraints.

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 uses a specific verb ('enrich') and resource ('multiple leads'), and distinguishes from the sibling 'enrich_lead' by emphasizing concurrency and batching. It also adds 'cascades through all providers' for further specificity.

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 implies usage for batch enrichment (vs. single lead via 'enrich_lead'), but does not explicitly state when to prefer this tool over others, or when to use the optional 'providers' filter. It clearly states the behavior but lacks exclusion or alternative guidance.

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/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses return type (firmographic, no person details) but lacks information on rate limits, auth requirements (api_key param not explained), and whether the operation is destructive. Adds value beyond schema but incomplete.

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 short sentences, front-loaded with purpose. No unnecessary words. Efficiently conveys key information.

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?

Simple tool with output schema provided, so return details are covered. Description states type of data returned. Lacks explanation of api_key usage but overall adequate for a straightforward enrichment tool.

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 already covers both parameters with descriptions. The description only mentions domain implicitly and does not add semantic meaning beyond what schema provides. With 100% schema coverage, 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?

Clearly states the tool enriches a company by domain and returns firmographic data without person-level details. Distinguishes from sibling tools like enrich_lead (person-level) by specifying account-level research.

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?

Explicitly advises best for account-level research, implying use for companies. Contrasts with person-level data, hinting when not to use. However, does not explicitly name alternatives or provide when-not-to-use guidance.

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.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses the cascade order: Apollo first for email discovery, then concurrent Clearbit+Hunter. It explains concurrency when email is provided. This is good behavioral detail. Missing: rate limits, error handling, or whether the operation is safe (read-only). Still, adequately transparent.

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?

Five sentences, well-structured, front-loaded with purpose. Each sentence adds specific information: input requirements, concurrency, cascade logic. No unnecessary words. Efficient and to the point.

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 tool complexity (multiple providers, cascade) and that an output schema exists, the description is largely complete. It covers input constraints and provider behavior. Could mention what the enrichment response looks like (e.g., unified field) but output schema likely covers that. Adequate.

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?

Schema coverage is 100%, but the description adds significant meaning beyond the schema. It explains input combinations (email vs. domain+name) and how the cascade changes. This helps the agent understand which parameters to provide together and why. Truly adds value.

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 it enriches a single lead using Apollo, Clearbit, and Hunter. It distinguishes from siblings: find_email (likely just email lookup), enrich_company (company-level), enrich_batch (batch). The verb 'enrich' combined with resource 'lead' and provider names is specific and unambiguous.

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 guidance on required inputs: 'Provide at least one of: email, domain, or first_name + last_name + domain.' It explains provider behavior based on input type. However, it does not explicitly state when not to use this tool or mention alternatives, though the cascade logic helps. Clear usage context but no exclusions.

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.3/5.0
Behavior4/5

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

With no annotations, the description notably discloses the fallback behavior (Hunter then Apollo). This adds transparency beyond basic functionality, though it omits details like rate limits or error handling.

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. The key purpose and fallback logic are front-loaded.

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?

The description is complete for a lookup tool: it explains the core function and fallback strategy. An output schema exists, so return values need not be detailed.

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 each parameter. The description adds no new semantic detail beyond restating the purpose.

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 action: finding an email address given name and domain. It distinguishes from siblings like enrich_lead, which serve different purposes.

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 indicates when to use: looking up an email by name and domain. It mentions the fallback strategy but does not explicitly state when not to use or alternatives among siblings.

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.2/5.0
Behavior3/5

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

No annotations are provided, so description carries full burden. It explains what the tool checks and returns but does not disclose safety profile (e.g., read-only) or other behavioral traits like rate limits or authentication needs.

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 efficient sentences, no wasted words. First sentence states action, second lists return items. Well-structured and front-loaded.

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?

For a no-parameter health check with an output schema, the description is largely complete. It could mention if authentication is required, but overall it provides sufficient context for an agent.

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?

There are zero parameters, so baseline is 4. The description adds value by explaining the tool's purpose and output, complementing the empty 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?

The description clearly states the tool checks server health and enrichment provider configuration, and lists specific return values (server status, providers, cache stats, connectivity info). It is distinctly different from sibling tools which focus on enrichment operations.

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?

While no explicit when-to-use vs alternatives is given, the purpose is self-evident: it is a diagnostic tool, contrasting with the enrichment-focused siblings. The context makes usage clear enough.

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.

  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

Scored across 6 tools

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

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
    8 npm
    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
    343 npm
    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.
    36 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables autonomous B2B lead enrichment through a waterfall cascade and technographic stack verification, producing structured output dossiers for AI agents and enterprise pipelines.
    8
    -