Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y b2bleads-mcp
MCP client config
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": [
"-y",
"b2bleads-mcp"
]
}
}
}An MCP (Model Context Protocol) server that gives AI agents — Claude, Cursor, and any other MCP-compatible client — a search_leads tool for real-time B2B company discovery and enrichment.
Ask your agent things like:
"Find construction companies in Munich with a website and phone number."
"Collect 50 IT companies in Berlin rated above 4.0."
"Enrich this lead list with email contacts where available."
...and it calls this tool to return a ready-made list of companies: name, address, phone, website, rating, and email where available.
This server is a thin MCP wrapper around the B2BLeads REST API. You need a B2BLeads account and API key — see Getting an API key below.
No install needed — run it directly with npx. Add it to your MCP client's config:
Edit your claude_desktop_config.json (or run claude mcp add):
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": ["-y", "b2bleads-mcp"],
"env": {
"B2BLEADS_API_KEY": "your-api-key-here"
}
}
}
}
Add the same block to .cursor/mcp.json in your project (or your global Cursor MCP settings).
Point it at the command npx -y b2bleads-mcp with the B2BLEADS_API_KEY environment variable set.
B2BLEADS_API_KEY in your MCP client config (see above).search_leadsSearch for companies and business contacts in real time.
| Parameter | Type | Description |
|---|---|---|
q | string | Free-text query, e.g. "construction companies in Munich". |
industry | string | One of the categories from list_industries. |
city | string | City or region to search in. |
radius_km | number | Search radius in kilometers. |
min_rating | number | Minimum rating (0-5). |
has_website | boolean | Only businesses with a website. |
verified_only | boolean | Only businesses with a verified listing. |
open_now | boolean | Only businesses currently open. |
price_level | string | budget | moderate | expensive | luxury |
rank_by | string | relevance | distance |
limit | integer | Max results per call, 1-20. |
lang | string | Result language, BCP-47 tag (e.g. en, pt-BR). |
page_token | string | Pagination token from a previous call. |
save_to_list | boolean | Also save results into a B2BLeads saved list. |
list_id | string | Existing saved-list ID to append to. |
list_name | string | Saved-list name to find-or-create and append to. |
At least one of q, industry, or city is required.
search_leads_advanced⚠️ Elevated cost: consumes 9x the quota of a single search_leads call. Only use this when you need more results than search_leads returned for a specific city, or need to exhaustively cover a city — not as a default or first attempt. Tiles the city into a 3x3 grid of sub-searches server-side to go beyond the normal ~20-60 result ceiling, returning up to ~180 deduplicated businesses in one call. Does not support pagination.
| Parameter | Type | Description |
|---|---|---|
q | string | Free-text query, e.g. "construction companies". Optional if industry is given. |
industry | string | One of the categories from list_industries. |
city | string | Required. City or region to search in — must be only the city name (e.g. "Lyon"), not the full search phrase, or the wrong place may be geocoded. |
min_rating | number | Minimum rating (0-5). |
has_website | boolean | Only businesses with a website. |
verified_only | boolean | Only businesses with a verified listing. |
open_now | boolean | Only businesses currently open. |
price_level | string | budget | moderate | expensive | luxury |
lang | string | Result language, BCP-47 tag (e.g. en, pt-BR). |
list_industriesLists the predefined industry categories usable in search_leads's industry filter. Takes no arguments.
list_saved_listsLists all of your saved lead lists — id, name, and lead count for each, not the leads themselves. Read-only. Takes no arguments. Use get_saved_list to fetch one list's full leads.
get_saved_listGets one saved lead list by ID, with its full set of saved leads. Read-only.
| Parameter | Type | Description |
|---|---|---|
list_id | string | The saved list's ID, from list_saved_lists or a search_leads save_to_list response. Required. |
find_emailLooks up a best-effort contact email for a single business website (checks the homepage and common contact pages). Use this for one specific website rather than re-running search_leads. Requires any paid plan (Starter and above); may return a null email if none is found.
| Parameter | Type | Description |
|---|---|---|
website | string | The business website URL to look up, e.g. https://example.com. Required. |
| Environment variable | Required | Description |
|---|---|---|
B2BLEADS_API_KEY | Yes | Your B2BLeads API key. |
B2BLEADS_API_URL | No | Override the API base URL. Defaults to https://api.b2bleadsapi.com. |
Each search consumes quota from your B2BLeads plan — see pricing. Rate limits and quota errors are returned by the API and surfaced back to your agent as tool errors.
MIT