Local business leads by niche and city: owner names, checked emails, phone line types, site tech.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
LeadMerlin API key (lm_...). 100 free leads at app.leadmerlin.com
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Free: detect the CMS, analytics, ad pixels, chat and booking tools a single website runs.
Website URL or domain
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http leadmerlin https://api.leadmerlin.com/mcp \ --header 'x-api-key: YOUR_X_API_KEY'
Headers
x-api-key (required): LeadMerlin API key (lm_...). 100 free leads at app.leadmerlin.comFree: detect the CMS, analytics, ad pixels, chat and booking tools a single website runs.
| Argument | Type | Description |
|---|---|---|
| url* | string | Website URL or domain |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Website URL or domain"
}
}
}Enrich up to 100 businesses you already have, by website domain: owner name, checked emails, phone line type, tech. Spends 1 credit per domain (recently enriched domains are free). Returns a job_id.
| Argument | Type | Description |
|---|---|---|
| leads* | array |
{
"type": "object",
"required": [
"leads"
],
"properties": {
"leads": {
"type": "array",
"items": {
"type": "object",
"required": [
"domain"
],
"properties": {
"city": {
"type": "string",
"description": "Optional"
},
"state": {
"type": "string",
"description": "Optional"
},
"domain": {
"type": "string",
"description": "e.g. acmeplumbing.com"
},
"business_name": {
"type": "string",
"description": "Optional"
}
}
},
"maxItems": 100,
"minItems": 1
}
}
}Look up location codes for a city, county, state or country (free). Use the returned location_code in start_search.
| Argument | Type | Description |
|---|---|---|
| q* | string | Place name, e.g. "Austin" or "Austin, Texas" |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Place name, e.g. \"Austin\" or \"Austin, Texas\""
}
}
}Status and counts for a search or enrichment job (queued, running, completed, failed, cancelled). Poll every ~5 seconds.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Job id from start_search or enrich_domains |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "Job id from start_search or enrich_domains"
}
}
}Enriched businesses for a job, paginated. Pass next_cursor from the previous page to continue.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size (default 50) |
| cursor | string | next_cursor from the previous page |
| job_id* | string | Job id |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size (default 50)"
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page"
},
"job_id": {
"type": "string",
"description": "Job id"
}
}
}Current plan, credit balance and phone line-type allowance.
No arguments.
{
"type": "object",
"properties": {}
}Start an async search for local businesses by keyword in up to 5 locations, then enrich each one. Spends 1 credit per business with a website (website-less and off-niche listings are free). Returns a job_id; poll get_job. Call once per search: every call starts a new paid job.
| Argument | Type | Description |
|---|---|---|
| keyword* | string | Business niche, e.g. "plumber" |
| max_leads | integer | Cap on businesses charged and enriched. Strongly recommended. |
| strictness | string | Niche filter. moderate (default) drops keyword coincidences; strict also drops adjacent trades. |
| location_codes* | array | Codes from find_locations |
| phone_line_type | boolean | Look up mobile/landline/VoIP for each main phone (default true, monthly plan allowance). |
| exclude_exported | boolean | Skip businesses this account already exported (not charged). |
{
"type": "object",
"required": [
"keyword",
"location_codes"
],
"properties": {
"keyword": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Business niche, e.g. \"plumber\""
},
"max_leads": {
"type": "integer",
"minimum": 1,
"description": "Cap on businesses charged and enriched. Strongly recommended."
},
"strictness": {
"enum": [
"off",
"moderate",
"strict"
],
"type": "string",
"description": "Niche filter. moderate (default) drops keyword coincidences; strict also drops adjacent trades."
},
"location_codes": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 5,
"minItems": 1,
"description": "Codes from find_locations"
},
"phone_line_type": {
"type": "boolean",
"description": "Look up mobile/landline/VoIP for each main phone (default true, monthly plan allowance)."
},
"exclude_exported": {
"type": "boolean",
"description": "Skip businesses this account already exported (not charged)."
}
}
}Turn a niche into matching Google business categories and sharper search keywords (free). Helps avoid off-niche results.
| Argument | Type | Description |
|---|---|---|
| niche* | string | Niche, e.g. "basement waterproofing" |
{
"type": "object",
"required": [
"niche"
],
"properties": {
"niche": {
"type": "string",
"description": "Niche, e.g. \"basement waterproofing\""
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.