Skip to main content
Glama
axelfreeman

TAPAC MCP

by axelfreeman

TAPAC — MCP Server for B2B Contact Finding

License: MIT Python 3.10+ MCP native Lint pre-commit

skills.sh

Find & verify B2B contacts in real time. Scrapes company websites, Discord, and Telegram — then validates every email via SMTP. Built as a native MCP server, so Claude, ChatGPT, Cursor, and any AI agent can call it directly.

Install in one command:

uvx --from git+https://github.com/axelfreeman/tapac-mcp tapac-mcp

Then ask your agent: "Find 20 VP Sales at US SaaS companies with 50–500 employees."


Why TAPAC

Databases rot. 23% of contacts change jobs every year (ZoomInfo 2025), 40% of emails die within 2 years (NeverBounce). Buy a contact list and a quarter of it is stale before you send a single email.

TAPAC doesn't sell a database. It scrapes live and validates at request time:

TAPAC

Static DBs (Apollo, ZoomInfo, Hunter)

Data source

Real-time scraping

Frozen snapshot

Bounce rate

2–5%

10–35%

Validation

SMTP, in the moment

None / after the fact

MCP / AI agents

✅ native

Discord / Telegram

Pricing

Pay-per-use, $0.10–0.50/contact

$34–$15,000+/mo or /yr


Related MCP server: Bytemine MCP Server - Contact Search & Enrich

Quick Start

1. Install

uvx --from git+https://github.com/axelfreeman/tapac-mcp tapac-mcp

Requires uv (one-liner installer: curl -LsSf https://astral.sh/uv/install.sh | sh).

2. Wire into your agent

The same command + args work everywhere. Pick your agent:

Claude Desktopclaude_desktop_config.json:

{
  "mcpServers": {
    "tapac": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/axelfreeman/tapac-mcp", "tapac-mcp"]
    }
  }
}

Claude Code (terminal):

claude mcp add tapac -- uvx --from git+https://github.com/axelfreeman/tapac-mcp tapac-mcp

Codex (OpenAI)~/.codex/config.toml:

[mcp_servers.tapac]
command = "uvx"
args = ["--from", "git+https://github.com/axelfreeman/tapac-mcp", "tapac-mcp"]

Cursor.cursor/mcp.json:

{
  "mcpServers": {
    "tapac": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/axelfreeman/tapac-mcp", "tapac-mcp"]
    }
  }
}

Windsurf~/.codeium/windsurf/mcp_config.json (same JSON as Cursor).

DeepSeek — the chat app doesn't register local MCP servers natively. Use DeepSeek through an MCP-capable client (Claude Code / Cursor with the DeepSeek API), or connect to the hosted endpoint https://tapacapi.com/mcp/sse.

3. Get your free API key

First run points you to https://tapacapi.com/get-key. Set it once:

export TAPAC_API_KEY=your_key_here

4. Ask for contacts

"Find 20 VP Sales at US SaaS companies with 50–500 employees, verify emails."

The agent asks for the criteria it needs, calls tapac_find_contacts, and returns verified contacts (name, title, company, email, source, verification status).

100 free searches, no credit card.


Tools

tapac_find_contacts

Find and verify B2B contacts.

Param

Type

Description

industry

string

Vertical, e.g. "SaaS", "healthcare", "fintech"

job_titles

string[]

Roles, e.g. ["VP Sales", "CTO"]

company_size

string

"50-500 employees", "startup", "enterprise"

location

string

"US", "Europe", "DACH", "remote"

source

string

website · telegram · discord

limit

int

How many contacts (default 10)

tapac_status

Server version + API-key state.


Status

Live. Install it, wire it into your agent, grab a free API key, and ask for contacts.


Demo script (no MCP wiring needed)

See the tool output shape instantly — run the tools directly without wiring the server:

uv run scripts/demo.py

It prints tapac_status() plus a sample tapac_find_contacts() call.

Skill (optional)

SKILL.md documents the TAPAC tools for any agent that loads skills. Install it with a symlink so git pull keeps it fresh:

ln -s "$PWD" ~/.agents/skills/tapac

License

MIT.

Available Tools

2 tools
tapac_find_contactsA

Find and verify B2B business contacts in real time.

Ask the user for these criteria before calling:

  • industry: vertical, e.g. "SaaS", "healthcare", "fintech"

  • job_titles: roles, e.g. ["VP Sales", "CTO", "Head of Growth"]

  • company_size: e.g. "50-500 employees", "startup", "enterprise"

  • location: geography, e.g. "US", "Europe", "DACH", "remote"

  • source: where to search — "website", "telegram", or "discord"

  • limit: how many contacts to return (default 10)

Returns verified contacts (name, title, company, email, source, verification status) as structured data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceNowebsite
industryNo
locationNo
job_titlesNo
company_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

While no annotations are provided, the description adds significant context by specifying that contacts are returned as structured data with fields like name, title, company, email, source, and verification status. It also discloses that contacts are verified, which is a behavioral trait. However, it does not mention authentication needs, rate limits, or what happens when no contacts are found—minor gaps that prevent a top 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 succinct and well-structured, with a concise opening sentence followed by a bulleted list of criteria to ask for. Every sentence provides essential information without repetition or fluff. The structure is front-loaded with the main purpose, then details, making it easy for an AI agent to parse quickly.

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 the tool's moderate complexity with 6 parameters, no required fields, and no annotations, the description covers the critical aspects: purpose, required user input, parameter semantics, and return structure. The presence of an output schema partially reduces the need to describe return values further. However, a note on error handling or empty results would enhance completeness for the agent, preventing it from being a 5.

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?

The description adds substantial meaning beyond the input schema by defining each parameter with concrete examples (e.g., industry 'SaaS', location 'US'), which compensates for the 0% schema description coverage. For the limit parameter with default 10, it clarifies the purpose. This goes well beyond the bare schema definitions, making the parameters actionable for the agent.

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 purpose: 'Find and verify B2B business contacts in real time.' The verb 'find and verify' combined with the resource 'B2B business contacts' and modifier 'in real time' makes the action explicit. It also distinguishes itself from the sibling tool 'tapac_status' by focusing on contact discovery rather than status checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage guidelines by instructing the user to ask for specific criteria before calling the tool, listing each parameter with examples (e.g., industry 'SaaS', job_titles '[VP Sales, CTO, ...]'). This guidance clearly tells the agent when to use the tool—when it needs to collect these details from the user—and implicitly distinguishes it from the sibling tool 'tapac_status' which likely handles status queries.

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

tapac_statusA

Check TAPAC server status, version, and API-key state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The description indicates the tool performs a read-only check of status, version, and API-key state. While this implies safe, non-destructive behavior, there are no annotations to confirm. The description does not elaborate on potential latency, network dependencies, or error states, which would improve transparency.

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 extremely concise, using a single sentence that effectively communicates the three aspects the tool checks: server status, version, and API-key state. There is no extraneous text, making it easy for an AI agent to quickly interpret its 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 has no parameters and the sibling tool is clearly for contact lookup, the description is largely sufficient for a status-check tool. However, the description does not explain the format or structure of the output, which could be important for an agent to interpret results, even though an output schema exists separately.

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?

The schema has zero parameters and has 100% coverage. Since no parameters exist, there is no need for the description to add parameter-level details, and a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks TAPAC server status, version, and API-key state. It uses specific nouns and verbs to describe the function, differentiating it from sibling tools that likely interact with contacts rather than checking server status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for health-check or diagnostic purposes, but does not explicitly state when to use this tool versus the sibling tapac_find_contacts. It lacks guidance on prerequisites or conditions under which a status check is appropriate.

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.

  1. 2 tool updatesv0.1.0
    • First observedtapac_find_contacts
    • First observedtapac_status

TDQS

A4/5.0
Disambiguation5/5

The two tools serve completely distinct purposes: one checks server status, the other finds contacts. There is no overlap or ambiguity.

Naming Consistency5/5

Both tools follow a consistent snake_case pattern with the prefix 'tapac_', one describing a state (status) and the other an action (find_contacts). The naming is uniform.

Tool Count3/5

With only two tools, the server feels thin for a contact-finding service, but each tool is clearly defined and serves a necessary function. It is borderline but not excessive.

Completeness4/5

The server covers the core operation of finding and verifying contacts with extensive filtering, plus a status check. Minor gaps like retrieving a specific contact by ID are absent, but the main workflow is complete.

Maintenance

ActivityMaintained
ResponsivenessResponsive

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

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
    Not graded
    quality
    D
    maintenance
    MCP server giving AI agents real-time web search, page scraping, company intelligence, email discovery, local lead generation, and a persistent knowledge graph. Pay only for what you use, no subscriptions.
    24
    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

Latest Blog Posts

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/axelfreeman/tapac-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server