LeadEnrich MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LeadEnrich MCP ServerFind email for Jane Smith at acme.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LeadEnrich MCP Server
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-mcpThe 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/mcpRelated MCP server: Prospeo MCP Server
Tools
Tool | Description |
| Full waterfall enrichment for a single lead (email, domain, or name+domain) |
| Discover an email from first name + last name + company domain |
| Company firmographic data by domain (industry, size, revenue, etc.) |
| Batch enrich up to 25 leads concurrently |
| Quota, cost tracking, and remaining lookups |
| 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.pyMCP endpoint:
http://localhost:8300/mcp
Environment Variables
Variable | Description | Required |
| Apollo.io API key | No |
| Clearbit API key | No |
| Hunter.io API key | No |
| Client auth key for usage metering | No |
| Free tier limit (default: 50) | No |
| 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.pyRunning Options
Run directly:
python main.pyRun via FastMCP CLI:
fastmcp run main.py --transport streamable-http --port 8300Tool 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 useapi_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 namelast_name(required): Contact's last namedomain(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/nameproviders(optional): Limit which providers to useapi_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.
Push repository to GitHub
Create/add server in Smithery
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 deploySet 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) |
| Yes (Hunter only) | Yes (full waterfall: Apollo + Clearbit + Hunter) |
| Yes | Yes |
| Yes | Yes |
| - | Yes |
| - | Yes |
| - | 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
Related
SelfHeal MCP — Self-healing proxy for MCP servers
SiteHealth MCP — Full website health audit
Available Tools
6 toolscheck_usageB
Check your current usage and remaining quota.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Your LeadEnrich API key. Uses server default if not provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| leads | Yes | List of lead objects, each with optional keys: email, domain, first_name, last_name. | |
| providers | No | Optional list to limit which providers to use. | |
| api_key | No | Your LeadEnrich API key for usage tracking. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Company domain (e.g. "stripe.com"). | |
| api_key | No | Your LeadEnrich API key for usage tracking. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Contact email address (best identifier). | ||
| domain | No | Company domain (e.g. "stripe.com"). | |
| first_name | No | Contact's first name (combine with last_name + domain). | |
| last_name | No | Contact's last name. | |
| providers | No | Optional list to limit which providers to use. Default: all configured. | |
| api_key | No | Your LeadEnrich API key for usage tracking. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | Yes | Contact's first name. | |
| last_name | Yes | Contact's last name. | |
| domain | Yes | Company domain (e.g. "stripe.com"). | |
| api_key | No | Your LeadEnrich API key for usage tracking. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.2.0- First observed
check_usage - First observed
enrich_batch - First observed
enrich_company - First observed
enrich_lead - First observed
find_email - First observed
health_check
TDQS
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.
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.
With 6 tools, the server covers the essential operations of lead enrichment without unnecessary complexity. Each tool is justified and serves a distinct function.
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
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
Real-time B2B data for agents: search and enrich 1B+ people and 200M+ company profiles.
Search companies, enrich contacts, and reveal emails and phones from your AI agent.
B2B lead generation, email verification, company enrichment, and agentic GTM Ops.
- mcpOAuthai.astrofabric
Agentic AI for business intelligence: discover, verify and enrich company and contact data.
1
Related MCP Servers
- AlicenseAqualityDmaintenanceGive 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.1127MIT

Prospeo MCP Serverofficial
AlicenseAqualityFmaintenanceEnables AI tools to search and enrich B2B leads, including finding professional emails, company profiles, and filtering people and companies by various criteria.5227MIT- AlicenseNot gradedqualityBmaintenanceAccount-based marketing enrichment for AI agents. Enriches people and companies from email, LinkedIn URL, or domain with cited multi-source fields.731MIT
- AlicenseAqualityDmaintenanceLead generation MCP server for AI agents. Find emails, verify contacts, enrich profiles, and search prospects using Hunter.io, Apollo.io, and Abstract API.819MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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