Skip to main content
Glama
gtovtya

B2BLeads MCP Server

by gtovtya

B2BLeads MCP Server

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.

Requirements

  • Node.js 18 or later

  • A B2BLeads API key (sign up)

Related MCP server: DataLayer MCP

Installation

No install needed — run it directly with npx. Add it to your MCP client's config:

Claude Desktop / Claude Code

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"
      }
    }
  }
}

Cursor

Add the same block to .cursor/mcp.json in your project (or your global Cursor MCP settings).

Any other MCP client

Point it at the command npx -y b2bleads-mcp with the B2BLEADS_API_KEY environment variable set.

Getting an API key

  1. Create an account at b2bleadsapi.com.

  2. Pick a plan in Billing.

  3. Generate a key under API Keys in the dashboard.

  4. Set it as B2BLEADS_API_KEY in your MCP client config (see above).

Tools

search_leads

Search 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.

list_industries

Lists the predefined industry categories usable in search_leads's industry filter. Takes no arguments.

Configuration

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.

Pricing & rate limits

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.

License

MIT

Available Tools

2 tools
list_industriesA

List the predefined industry categories that can be used as the industry filter in search_leads.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. The verb 'List' implies a non-destructive read, but the description does not explicitly state the safety profile, nor does it mention response format, ordering, localization, or error behavior. It does add the useful fact that the categories are predefined and serve a specific filter purpose, which gives some behavioral context.

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?

A single sentence with zero filler. The verb and resource are front-loaded, and the purpose and relationship to search_leads are stated compactly. Every word earns its place.

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 zero-parameter, no-output-schema list tool, the description is highly complete. It states what the tool lists, why the values matter, and how they connect to the sibling tool. The only minor omission is any detail about the format or type of the returned entries, but this does not hinder an agent from using the tool correctly.

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 tool has zero parameters and schema coverage is 100% (empty schema), so the baseline is 4. The description adds meaning beyond the schema by explaining that the returned values are intended to be used as the `industry` filter in search_leads, which is not evident from the empty schema. This helps the agent understand the semantic value of the output.

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 ('List') and a clear resource ('predefined industry categories'), and immediately ties them to their purpose ('as the `industry` filter in search_leads'). This clearly distinguishes the tool from its sibling, search_leads, by showing it is the source of valid filter values.

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 clear context for when to use this tool: it says the industry categories 'can be used as the `industry` filter in search_leads.' This implicitly tells the agent to call this tool before or when constructing a search_leads call with an industry filter. It does not explicitly cover when not to use it, but the context is sufficient.

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

search_leadsA

Search for companies and business contacts in real time by industry, city, and other filters. Returns a ready-to-use list of leads (name, address, phone, website, rating, and email where available). Use this whenever the user asks to find, list, or collect businesses/companies for sales, outreach, or research.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text search query, e.g. "construction companies in Munich". Optional if industry+city are given.
cityNoCity or region to search in, e.g. "Berlin" or "Austin, TX".
langNoResult language as a BCP-47 tag, e.g. "en" or "pt-BR".
limitNoMax number of results to return (1-20). Defaults to a server-side value if omitted.
list_idNoExisting saved-list ID to append results to.
rank_byNoHow to sort results.
industryNoIndustry filter. One of the predefined categories.
open_nowNoOnly return businesses that are currently open.
list_nameNoName of a saved list to find-or-create and append results to.
radius_kmNoSearch radius in kilometers around the city center.
min_ratingNoMinimum rating (0-5) a business must have to be included.
page_tokenNoPagination token returned by a previous call, to fetch the next page of results.
has_websiteNoOnly return businesses that have a website.
price_levelNoFilter by price level.
save_to_listNoIf true, also save the results into a B2BLeads saved list (requires list_id or list_name).
verified_onlyNoOnly return businesses with a verified listing.

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 carries the behavioral burden. It usefully discloses that results are real-time, that email is 'where available,' and that the output is a ready-to-use lead list. However, it does not mention pagination behavior or the side effect that save_to_list can persist results into a saved list, which is relevant given the parameters.

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 filler. The core action and output are front-loaded, and the usage guidance is a separate, efficient sentence. Every clause earns its place.

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 tool with 16 optional parameters and no output schema, the description does a solid job of explaining the output shape and the intended use case. The schema covers parameter semantics, and the description covers the high-level outcome. It is slightly incomplete in not addressing pagination or saved-list side effects, but overall it is sufficient for an agent to invoke the tool correctly.

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 description coverage is 100%, so the baseline is 3 and the schema already documents every parameter. The description adds no extra parameter-level meaning beyond naming 'industry, city, and other filters,' which is acceptable but not additive.

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 ('Search') plus a clear resource ('companies and business contacts') and scoping filters ('by industry, city, and other filters'). It also names the concrete output ('ready-to-use list of leads') with field details, making it easy to distinguish from the sibling list_industries tool.

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 explicitly states when to use the tool: 'whenever the user asks to find, list, or collect businesses/companies for sales, outreach, or research.' It provides clear context but does not mention exclusions or contrast with the sibling list_industries tool, so it loses one point.

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. 2 tool updatesv1.0.0
    • First observedlist_industries
    • First observedsearch_leads

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve clearly distinct purposes: one searches for leads, the other provides the valid industry filter values. There is no overlap or potential for misselection.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern (search_leads, list_industries) and are descriptive and predictable.

Tool Count3/5

With only 2 tools, the server covers a minimal but internally coherent scope. It is on the low end of acceptable, but not unreasonably thin given the narrow purpose of lead searching.

Completeness4/5

The tool set appears to cover the core lead search workflow: filter selection (industries) and the actual search itself. Minor gaps like pagination or detailed lead retrieval are not explicitly mentioned but could be considered average for a simple search-focused server.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server providing real-time access to comprehensive B2B company and contact data for lead generation and business intelligence. It enables AI tools to search firmographics, discover key contacts, and automate personalized outreach workflows.
    32
    MIT
  • 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
    Not graded
    quality
    A
    maintenance
    MCP server that enables AI agents to discover and qualify B2B leads from Leadbay's knowledge base, with tools for lead research, enrichment, and outreach logging.
    MIT