Model Context Protocol (MCP) server for Apollo.io API integration
DataMerge MCP is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
B2B data enrichment for 375M+ companies: legal entities, corporate hierarchies, and contacts.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http mcp-datamerge-ai-datamerge-mcp https://mcp.datamerge.ai/
# 2 — ask your agent for something these tools do
# configure_datamerge, start_company_enrichment, get_company_enrichment_result and 20 more
DataMerge MCP costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, read from the address; if the publisher says otherwise, swap that one word.
claude mcp add --scope user --transport http mcp-datamerge-ai-datamerge-mcp https://mcp.datamerge.ai/Reconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
23 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| apiKey | string | no | DataMerge API key. Get one at https://app.datamerge.ai (20 free credits). |
| baseUrl | string | no | Optional custom API base URL (default: https://api.datamerge.ai). |
POST /v1/company/enrich. Enrich one or more companies by domain. Returns a job_id (async). Single: domain. Batch: domains, country_code, global_ultimate, list, skip_if_exists.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | no | Company website domain (e.g. example.com). |
| company_name | string | no | Company name (used when domain is not available). |
| country_code | string | no | Optional ISO 2-letter country code to improve matching. |
| strict_match | boolean | no | When true, require a strict match for enrichment. |
| global_ultimate | boolean | no | When true, always return the global ultimate parent. |
| webhook_url | string | no | Optional webhook URL to receive job completion notifications. |
| domains | array | no | Batch: multiple domains to enrich. |
| list | string | no | List slug to add enriched companies to. |
| skip_if_exists | boolean | no | When true, skip domains that are already in the list. |
GET /v1/company/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids. Status values: queued · processing · completed · failed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | The enrichment job ID returned by start_company_enrichment. Poll until status is "completed" or "failed". |
POST /v1/company/enrich then poll GET /v1/company/enrich/{job_id}/status until status is "completed" or "failed" or timeout. Same params as start_company_enrichment plus poll_interval_seconds and timeout_seconds.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | no | Company website domain (e.g. example.com). |
| company_name | string | no | Company name (used when domain is not available). |
| country_code | string | no | Optional ISO 2-letter country code to improve matching. |
| strict_match | boolean | no | When true, require a strict match for enrichment. |
| global_ultimate | boolean | no | When true, always return the global ultimate parent. |
| webhook_url | string | no | Optional webhook URL to receive job completion notifications. |
| poll_interval_seconds | number | no | How often to poll the job status (in seconds). Defaults to 5 seconds. |
| timeout_seconds | number | no | Maximum time to wait for completion (in seconds). Defaults to 60 seconds. |
| domains | array | no | Batch: multiple domains to enrich in one job. |
| list | string | no | List slug to add enriched companies to. |
| skip_if_exists | boolean | no | When true, skip domains already in the list. |
Agent-friendly company enrichment. On the first call provide enrichment params (domain, domains, company_name, country_code, etc.); the server starts the job and polls internally for up to ~25s. If the job is still running, the response will be {status:"pending", continuation_token, attempt, elapsed_seconds}. When you see status "pending" you MUST immediately call run_company_enrichment again with
| Parameter | Type | Required | Notes |
|---|---|---|---|
| continuation_token | string | no | Opaque token from a prior pending response. When set, all other params are ignored. |
| domain | string | no | Company website domain. |
| company_name | string | no | — |
| country_code | string | no | — |
| strict_match | boolean | no | — |
| global_ultimate | boolean | no | — |
| webhook_url | string | no | — |
| domains | array | no | Batch: multiple domains in one job. |
| list | string | no | List slug to add enriched companies to. |
| skip_if_exists | boolean | no | — |
| refresh | boolean | no | When true, bypass DataMerge dedup: always re-enrich and charge credits even if the domain is already on a list. Use for multi-tenant resellers (e.g. Faro). |
| max_wait_seconds | number | no | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
Agent-friendly contact enrichment. On the first call provide contacts and enrich_fields; the server starts the job and polls internally for up to ~25s. If still running, returns {status:"pending", continuation_token, attempt, elapsed_seconds} — you MUST immediately call run_contact_enrich again with only continuation_token set. Do not ask the user. Typical jobs finish within 5 attempts. On complet
| Parameter | Type | Required | Notes |
|---|---|---|---|
| continuation_token | string | no | Opaque token from a prior pending response. When set, all other params are ignored. |
| contacts | array | no | Array of contacts. Identify each with linkedin_url and/or (firstname+lastname). ALWAYS include domain (company website) when you know it — FullEnrich's email accuracy drops sharply without a d |
| enrich_fields | array | no | e.g. ["contact.emails","contact.phones"]. |
| refresh | boolean | no | When true, bypass DataMerge dedup: always re-enrich every contact and charge credits, even if the same contact was enriched in the last 30 days. Use for multi-tenant resellers (e.g. Faro). |
| return_any_domain | boolean | no | Set to true to allow enrichment for contacts that have no domain. FullEnrich will pick whichever current employer it considers most probable, which may not match what you expect for people with mult |
| max_wait_seconds | number | no | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
Agent-friendly contact search. On the first call provide domains and enrich_fields; the server starts the job and polls internally for up to ~25s. If still running, returns {status:"pending", continuation_token, attempt, elapsed_seconds} — you MUST immediately call run_contact_search again with only continuation_token set. Do not ask the user. On completion the response contains record_ids, full c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| continuation_token | string | no | Opaque token from a prior pending response. When set, all other params are ignored. |
| domains | array | no | Company domains to search for contacts at. |
| company_list | string | no | Alternative to domains: company list slug. |
| max_results_per_company | integer | no | Max contacts to return per company. |
| job_titles | object | no | Optional include/exclude job title filters. |
| location | object | no | Optional include/exclude location filters. |
| enrich_fields | array | no | At least one of "contact.work_emails", "contact.emails", "contact.phones". |
| list | string | no | Target contact list slug for results. |
| refresh | boolean | no | When true, downstream enrichment bypasses dedup and always charges credits for each contact. Use for multi-tenant resellers (e.g. Faro). |
| max_wait_seconds | number | no | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
Get a single company record. GET /v1/company/get?datamerge_id={id} or ?record_id={uuid}. Provide either datamerge_id (charges 1 credit) or record_id (free). Not both. Optional: add_to_list — list slug to add the company to (only with datamerge_id).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| datamerge_id | string | no | DataMerge company ID. Charges 1 credit. |
| record_id | string | no | Your record UUID from a previous enrichment. Does not consume credits. |
| add_to_list | string | no | List slug to add the company to. Only valid when using datamerge_id. |
Get all entities in the same global ultimate hierarchy. GET /v1/company/hierarchy?datamerge_id={id}. Parameters: include_names (bool, charges 1 credit), include_branches (bool), only_subsidiaries (bool), max_level (int), country_code (array), page (int).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| datamerge_id | string | yes | DataMerge company ID. Required. |
| include_names | boolean | no | Include entity names. Charges 1 credit. |
| include_branches | boolean | no | Include branch entities. |
| only_subsidiaries | boolean | no | Return only subsidiaries. |
| max_level | integer | no | Maximum hierarchy depth. |
| country_code | array | no | Filter entities by ISO 2-letter country code(s). |
| page | integer | no | Page number for paginated results (1-based). |
POST /v1/contact/search. Search for contacts at specified companies. Returns a job_id (async, 202). enrich_fields required (at least one of contact.emails or contact.phones). Use company_list (slug) instead of domains to search a saved list.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domains | array | no | Company domains to search. |
| company_list | string | no | List slug instead of domains. |
| max_results_per_company | number | no | Max contacts per company. |
| job_titles | object | no | Optional include/exclude job title filters. |
| location | object | no | Location filters: include/exclude with type and value (country, region, city). |
| enrich_fields | array | yes | At least one of "contact.emails" or "contact.phones". Each email costs 1 credit; phone 4 credits. |
| webhook | string | no | Optional webhook URL to notify when the job completes. |
GET /v1/contact/search/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | The contact search job ID returned by contact_search. Poll until status is "completed" or "failed". |
POST /v1/contact/enrich. Enrich specific contacts by LinkedIn URL or name+domain. Returns a job_id (async, 202).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| contacts | array | yes | Array of contacts: either { linkedin_url } or { firstname, lastname, domain }. |
| enrich_fields | array | yes | Fields to enrich, e.g. ["contact.emails", "contact.phones"]. |
GET /v1/contact/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | The contact enrich job ID returned by contact_enrich. Poll until status is "completed" or "failed". |
GET /v1/contact/get?record_id={uuid}. Retrieve a specific contact by record UUID. Never charges credits.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| record_id | string | yes | Contact record UUID from a previous contact_search or contact_enrich job. Does not consume credits. |
GET /v1/lists. Optional: object_type=company or object_type=contact.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| object_type | string | no | Filter lists by object type: company or contact. |
POST /v1/lists. Body: name, object_type (company or contact).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Display name for the new list. |
| object_type | string | yes | Whether the list holds company or contact records. |
GET /v1/lists/{object_type}/{list_slug}. object_type: company or contact. list_slug: e.g. target-accounts. Parameters: page, page_size (max 100), sort_by, sort_order (asc/desc).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| object_type | string | yes | Type of list: company or contact. |
| list_slug | string | yes | URL-safe list identifier (e.g. target-accounts). |
| page | number | no | Page number for pagination (1-based). |
| page_size | number | no | Items per page (max 100). |
| sort_by | string | no | Field name to sort by. |
| sort_order | string | no | Sort direction: asc or desc. |
DELETE /v1/lists/{object_type}/{list_slug}/{item_id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| object_type | string | yes | Type of list: company or contact. |
| list_slug | string | yes | List slug containing the item. |
| item_id | string | yes | Record UUID of the company or contact to remove from the list. |
DELETE /v1/lists/{object_type}/{list_slug}. System lists cannot be deleted.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| object_type | string | yes | Type of list: company or contact. |
| list_slug | string | yes | List slug of the list to delete. System lists cannot be deleted. |
GET /v1/credits/balance. Returns credits_balance and balances (one_off, recurring, rollover, total).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| _ | string | no | This tool takes no required parameters. Call with no arguments. |
Check if the DataMerge API client is configured and can connect. Uses /auth/info.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| _ | string | no | This tool takes no required parameters. Call with no arguments. |
POST /v1/contact/search/unenriched. Find contacts without running email/phone enrichment. Returns a job_id; contacts are created in unconfirmed status with stable ids. BETA: requires the contact_search_unenriched flag on the account.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domains | array | no | Company domains to search. |
| company_list | string | no | Alternative to domains: list slug to search across. |
| max_results_per_company | integer | no | — |
| job_titles | object | no | Optional include/exclude job title filters (priority-keyed include). |
| location | object | no | — |
| webhook | string | no | — |
POST /v1/contact/search/unenriched/sync. Synchronous unenriched contact search — returns contacts inline (no polling). Requires the contact_search_unenriched beta flag. Limits: 10 domains and max_results_per_company ≤ 10. Response includes credits_consumed computed as 0.5 × len(contacts).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domains | array | yes | Up to 10 company domains. |
| max_results_per_company | integer | no | Max contacts per company (1–10). |
| job_titles | object | no | Optional include/exclude job title filters. |
| location | object | no | Optional include/exclude locations. |
| list | string | no | Target contact list slug. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install DataMerge MCP or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish DataMerge MCP can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.