Data Enrichment MCP: 76+ Data Points Inside Claude (2026)
By Kushal Magar · August 15, 2026 · 11 min read
Key Takeaway
A data enrichment MCP turns B2B data lookups into tools your AI agent calls directly. The SyncGTM MCP server exposes 51 of them — work emails, mobile numbers, firmographics, tech stack, hiring signals, job changes, product launches — across one connection and one subscription. Setup is a single command plus a browser sign-in: no API key, no per-vendor contracts, no glue code between providers.
A data enrichment MCP is a Model Context Protocol server that turns B2B data lookups into tools your AI agent can call on its own — work emails, mobile numbers, firmographics, tech stack, and intent signals, requested and returned inside the conversation. No CSV export. No re-import. No glue code between eight vendor APIs.
This guide covers the mechanics: how to install the server, how the tool calls work, how to chain them into a single enrichment step, and how to keep credit spend predictable. It uses the SyncGTM MCP server as the working example, because it consolidates 50+ data providers behind one connection.
If you want the theory of how waterfall ordering picks a provider, read Claude data enrichment: waterfall enrichment from 50+ providers first. This post is about the server and the tool calls.
TL;DR
- What it is: An MCP server that exposes B2B enrichment as callable tools — your agent asks for the data it needs, when it needs it.
- Install:
claude mcp add --transport http syncgtm https://api.syncgtm.com/mcp - Auth: Browser OAuth. No API key, no
Authorizationheader. Roughly two minutes end to end. - Surface: 51 tools across seven groups — source leads, enrich person, enrich company, live LinkedIn scrapers, person signals, company signals, social signals.
- Coverage: 76+ distinct data points, from verified work email to headcount growth rate to Meta ad creative.
- Pricing model: One credit balance across every provider. A work email is 1 credit, an email verification 0.3, a mobile number 12.
- Biggest gotcha: Agents will answer from memory if you do not name the tool. Bracket runs with
check_creditsto prove a real lookup happened.
What Is a Data Enrichment MCP?
A data enrichment MCP is a server that implements the Model Context Protocol and exposes B2B data lookups as tools. MCP is an open standard from Anthropic that lets an AI client discover external capabilities at runtime and call them with structured arguments.
The practical difference is who decides. In a traditional enrichment pipeline, you decide the sequence in advance and hard-code it. With an MCP, the agent reads the tool descriptions, picks the one that answers the question in front of it, and calls it.
Three ways to get enrichment data into an AI workflow:
| Approach | What you maintain | Latency to first result |
|---|---|---|
| CSV round-trip | Export, upload, wait, re-import, dedupe | Minutes to hours |
| Direct vendor APIs | One SDK, key, and rate-limit handler per vendor | Days of build time first |
| Enrichment MCP | One connection and one credit balance | Seconds, in-conversation |
The SyncGTM implementation is open-sourced as a reference guide on GitHub, with the full tool catalogue, credit costs, and a companion agent definition that adds batching and retry behaviour.
Why an MCP Beats Per-Vendor API Glue
Building enrichment yourself means signing contracts with several providers and writing the fallback logic that ties them together. Coverage is uneven, so one vendor is never enough.
The SyncGTM MCP runs that fallback for you. Most of its tools use waterfall enrichment — Apollo, RocketReach, LeadMagic, Datagma, Icypeas, TheirStack, Crustdata and others are tried in sequence until one returns a hit, then the chain stops.
- One charge per call, not per provider tried. A lookup that walks four providers before hitting still bills once.
- One balance instead of eight invoices. Credits are shared across every tool and every underlying provider.
- No SDK per vendor. The tool schema is the interface. When a provider changes, the tool signature does not.
- Composable mid-run. The agent can pivot from a failed email lookup to a reverse LinkedIn lookup without you scripting the branch.
The tradeoff is real: you give up provider-level control. If you need to force a specific vendor for compliance reasons, or you need raw API responses for a data warehouse, direct integrations still win. For an agent that needs an enrichment step, the MCP is the shorter path — the same argument that applies to CRM MCP servers.
Prerequisites
Four things, and none of them are an API key.
- A SyncGTM account — free signup at syncgtm.com. Credits come with the plan.
- An MCP client — Claude Code, the Claude desktop app, Claude Cowork, Cursor, Codex, ChatGPT, Gemini CLI, OpenClaw, or Manus.
- A browser session — you must be signed in to SyncGTM in your default browser, in the right workspace, before you authorize.
- Outbound HTTPS to api.syncgtm.com — corporate proxies and VPNs are the usual blocker.
No token, by design:
Authentication is browser OAuth. Your password is never shared with the MCP client, and there is no long-lived token sitting in a config file waiting to leak. If a client asks for an Authorization header, leave it blank.
Connect the SyncGTM Data Enrichment MCP to Claude
One endpoint serves every client: https://api.syncgtm.com/mcp, over streamable HTTP. Only the command to register it changes.
Step 1: Add the Server
# Project scope claude mcp add --transport http syncgtm https://api.syncgtm.com/mcp # Or make it available across every project claude mcp add --scope user --transport http syncgtm https://api.syncgtm.com/mcp
The --transport http flag matters. Other clients name the same thing differently — httpUrl in a JSON config, or an HTTP option in a dropdown. See the Claude Code MCP documentation for the general syntax.
Step 2: Authenticate in the Browser
# Restart Claude Code, then inside it: /mcp # Select: syncgtm -> Authenticate # Your default browser opens the SyncGTM sign-in page # Approve, and the session is stored for you
Claude Code reconnects automatically on later sessions. Re-run /mcp whenever you need to re-authenticate.
Step 3: Verify the Tool List
Run /mcp again. syncgtm should show as connected with its tools listed. Then prove the server actually answers:
Use check_credits and show me the raw tool output.
check_credits is free and returns your balance. If it comes back with a number, the connection is live.
The 76+ Data Points You Can Pull
The server exposes 51 tools, grouped by the GTM job they do rather than by which vendor supplies them. Counted as distinct fields those tools return, the catalogue crosses 76 data points.
| Family | Representative fields | Fields |
|---|---|---|
| Person identity | Name, title, seniority, employer, location, LinkedIn URL, work history, education, skills | ~13 |
| Contact data | Work email, personal email, mobile number, work phone, deliverability status, WhatsApp registration | ~10 |
| Firmographics | Industry, employee count, revenue range, funding stage, HQ, founded year, specialties, headcount by department | ~14 |
| Technographics | Full stack, CRM tooling, analytics tooling, marketing tooling | ~4 |
| Web & traffic | Total visits, engagement, traffic sources, organic keywords, backlinks, competitor set | ~6 |
| Hiring signals | Open roles, titles, locations, posted date, salary, applicant count, openings growth rate, new executive hires | ~13 |
| Change signals | Job change, promotion, headcount growth rate, product launch and launch date | ~6 |
| Ads & social | B2B ad creative, Meta ads, LinkedIn posts and reactions, X posts, Instagram, TikTok, post commenters | ~16 |
| Local business | Name, address, phone, website, rating, category, reviews | ~7 |
Coverage per record is never total. Waterfall enrichment stops at the first provider that hits, and that provider may not carry every field — partial records are the normal outcome, not a bug.
Your First Tool Calls
You do not type tool names in a special syntax. You ask in plain English and the agent picks the tool — but naming the tool explicitly makes the call deterministic and stops it guessing.
| What you ask | Tool called | Credits |
|---|---|---|
| "Work email for this LinkedIn URL?" | find_work_email | 1 |
| "Is ceo@company.com deliverable?" | verify_email | 0.3 |
| "Headcount and funding for rippling.com?" | enrich_organization | 2 |
| "What is notion.so running on?" | find_company_techstack | 1 |
| "Is this account growing headcount?" | head_count_growth_rate | 2 |
| "Is Gong ramping up hiring?" | job_openings_growth_rate | 3 |
| "Has this prospect moved roles?" | check_job_change | 2 |
| "Has this company shipped anything lately?" | company_product_launch | 1 |
| "Mobile number for this prospect?" | find_mobile_number | 12 |
Identifier type is the most common failure. Contact tools key off a LinkedIn profile URL; company tools key off a domain. Pass stripe.com, not "Stripe" — domains match exactly, names match fuzzily and often miss.
Two tools require the LinkedIn company page URL specifically: head_count_growth_rate and job_openings_growth_rate. A domain will not resolve them.
Chaining Tools Into One Enrichment Step
Single calls are the boring part. The value shows up when the agent chains several tools against one record and returns a finished row.
Pattern 1: Contact Record From a LinkedIn URL
For each LinkedIn URL below: 1. Use check_job_change first. If they moved recently, note the new role. 2. Use find_work_email. 3. Pass that email through verify_email. 4. Only if verify_email returns deliverable, use enrich_organization on the company domain. Skip step 4 for any row that failed step 3. Report skipped rows.
The ordering is the point. Verifying before enriching means you never spend company-lookup credits on a contact you cannot reach.
Pattern 2: Account Research Before a Call
For rippling.com, in this order: - enrich_organization for firmographics - find_company_techstack for the stack - head_count_growth_rate on their LinkedIn page URL - company_product_launch for anything shipped in the last 90 days Return one paragraph I can read before the call, plus the raw fields.
Four tools, one prompt, roughly six credits. The same research done by hand across four vendor dashboards is a ten-minute detour.
Pattern 3: Recovering Rows That Lack an Identifier
If your list has emails but no LinkedIn URLs, most contact tools will return nothing. Chain a reverse lookup instead of dropping the rows.
Segment this list first. - Rows that already have a LinkedIn URL: run find_mobile_number directly. - Rows with only a work email: run find_linkedin_from_work_email (2 credits), then find_mobile_number on the resolved URL. - Report any row that resolved to nothing. Do not silently drop it.
This chaining behaviour is what separates an MCP enrichment step from a static pipeline. For a broader view of how these calls fit into a full prospecting loop, see Claude Code lead enrichment.
Budget Credits Before You Run a Batch
The single most common surprise is not tool cost — it is call count. A 1-credit tool run across 200 contacts is 200 credits, and a broad instruction will happily loop.
Do the arithmetic first: rows multiplied by cost per call. 200 rows through a 12-credit phone tool is 2,400 credits.
- Name the exact count."The first 10 contacts, then stop" beats "the top ones".
- Search first, enrich second. Filter to the profiles you want before spending on emails or phone numbers.
- Cap the paging."Stop after 3 pages" prevents a broad search from walking the whole result set.
- Keep phone tools off full lists. At 12 credits per call, they belong on a shortlist.
- Test on 5 rows before running 500. Prompt bugs are cheaper to find early.
Rules for this run: - Use only find_work_email. Do not call any other tool. - Process exactly the 10 rows I pasted. Do not expand the list. - One call per row. Retry only if the call errored, never if it was empty. - Run check_credits before you start and after you finish. Report both. - If anything is ambiguous, stop and ask me instead of guessing.
Failed and empty are different outcomes. An error or timeout is transient and worth retrying — up to four attempts, roughly ten seconds apart. An empty result is an answer: no provider had that record, and retrying spends credits to be told the same nothing.
Credit costs and plan tiers are listed on the SyncGTM pricing page.
Troubleshooting the Connection
Most problems fall into six buckets, and none of them need a support ticket.
| Symptom | Fix |
|---|---|
| Tools greyed out, or calls fail with 401 | The session went stale. Run /mcp, select syncgtm, and re-authenticate. Fully quit and reopen the client if that does not take. |
| Client asks for an API token | Wrong transport. Re-add the server with --transport http and leave any token field blank. |
| Only some tools appear | Your client caps how many tools it loads. Disable MCP servers you are not using this session, then reconnect to refresh the cached tool list. |
| Answer arrived, credits did not move | The model answered from memory. Name the tool, ask for the raw output, and treat the earlier answer as unverified. |
| A tool runs but returns nothing | Usually the input. Check the identifier type — LinkedIn URL versus name, domain versus company name — and the enum strings on filter parameters. |
| Rows fail late in a large run | Upstream provider rate limits. Batch roughly 20 concurrent calls, write results as you go, and retry only the failures. |
The full list, with symptoms and fixes, lives in the SyncGTM MCP common issues guide.
Conclusion
A data enrichment MCP is the shortest path from "my agent needs contact data" to "my agent has contact data". One command, one browser sign-in, and 51 tools become callable.
Start narrow. Connect the server, run check_credits, then a single find_work_email on a record you can verify by hand. Once you trust the output, chain the calls and put hard row limits in the prompt.
The discipline that matters is spend control, not setup. Name your tools, cap your counts, verify before you pay for phone numbers — and the enrichment step stops being a line item you have to think about.
