DataMerge MCP
REMOTE · MCP.DATAMERGE.AI
B2B data enrichment for 375M+ companies: legal entities, corporate hierarchies, and contacts.
Available components
Last scanned (6 hours ago)
Scores higher than 76% of remote servers
Unreachable for 2 days in a row. Last reached 3 Nov 2026.
Category CRM and Sales
Recent critical change
Authorization (6 Aug 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security11
- TLS not yet verified: we couldn't open a connection to check the certificate. View diagnostics → Unverified
- Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS not yet verified: we couldn't read the response headers to check for it. View diagnostics → Unverified
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability0
- Transport check failed: declared streamable-http, but we couldn't connect to verify it. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability0
- Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
- Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
- Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified
Unverified: 5 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 0
- Endpoint reachability: reachable → unreachable ▼ security
- Authorization: fail → unverified ▼ security
- HSTS header: fail → unverified ▼ security
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- TLS certificate: pass → unverified ▼ security
- Transport: pass → fail ▼ security
- Schema quality: 100 → unverified ▼ functional
- Capabilities: fail → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 6 Aug 26 0
- Authorization: unverified → fail ▼ critical
- New tool “delete_list”, which the server declares destructive security
- New tool “remove_list_item”, which the server declares destructive security
- Schema quality: unverified → fail ▼ functional
- Schema quality: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → good ▲ functional
- First check of Tool coverage: 91 functional
- First check of Schema quality: 100 functional
- New prompt “datamerge_quickstart” functional
- New prompt “enrich_company_workflow” functional
- New tool “configure_datamerge” functional
- New tool “contact_enrich” functional
- New tool “contact_search” functional
- New tool “contact_search_unenriched” functional
- New tool “create_list” functional
- New tool “get_company” functional
- New tool “get_company_enrichment_result” functional
- New tool “get_company_hierarchy” functional
- New tool “get_contact” functional
- New tool “get_contact_enrich_status” functional
- New tool “get_contact_search_status” functional
- New tool “get_credits_balance” functional
- New tool “get_list_items” functional
- New tool “health_check” functional
- New tool “list_lists” functional
- New tool “run_company_enrichment” functional
- New tool “run_contact_enrich” functional
- New tool “run_contact_search” functional
- New tool “run_contact_search_unenriched” functional
- New tool “start_company_enrichment” functional
- New tool “start_company_enrichment_and_wait” functional
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.datamerge.ai
TLS unreached
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.datamerge.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 1814, 3799 | 8, 8 | Verified |
| datamerge.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Inconclusive
We could not reach the endpoint well enough to judge its authorisation posture.
| Result | Inconclusive |
|---|
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.datamerge.ai | Unreachable | ||
| http (plaintext) | http://mcp.datamerge.ai | HTTPS enforced |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
configure_datamerge Configure DataMerge Authentication ~82
Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).
| Name | Type | Req | Description |
|---|---|---|---|
| apiKey | string | – | DataMerge API key. Get one at https://app.datamerge.ai (20 free credits). |
| baseUrl | string | – | Optional custom API base URL (default: https://api.datamerge.ai). |
No output schema declared.
No examples provided.
contact_enrich Contact Enrich ~89
POST /v1/contact/enrich. Enrich specific contacts by LinkedIn URL or name+domain. Returns a job_id (async, 202).
| Name | Type | Req | Description |
|---|---|---|---|
| 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"]. |
No output schema declared.
No examples provided.
contact_search Contact Search ~189
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.
| Name | Type | Req | Description |
|---|---|---|---|
| company_list | string | – | List slug instead of domains. |
| domains | array | – | Company domains to search. |
| enrich_fields | array | yes | At least one of "contact.emails" or "contact.phones". Each email costs 1 credit; phone 4 credits. |
| job_titles | object | – | Optional include/exclude job title filters. |
| location | object | – | Location filters: include/exclude with type and value (country, region, city). |
| max_results_per_company | number | – | Max contacts per company. |
| webhook | string | – | Optional webhook URL to notify when the job completes. |
No output schema declared.
No examples provided.
contact_search_unenriched Contact Search (Unenriched, Beta) ~137
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.
| Name | Type | Req | Description |
|---|---|---|---|
| company_list | string | – | Alternative to domains: list slug to search across. |
| domains | array | – | Company domains to search. |
| job_titles | object | – | Optional include/exclude job title filters (priority-keyed include). |
| location | object | – | – |
| max_results_per_company | integer | – | – |
| webhook | string | – | – |
No output schema declared.
No examples provided.
create_list Create List ~55
POST /v1/lists. Body: name, object_type (company or contact).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Display name for the new list. |
| object_type | string | yes | Whether the list holds company or contact records. |
No output schema declared.
No examples provided.
delete_list Delete List ~63
DELETE /v1/lists/{object_type}/{list_slug}. System lists cannot be deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| list_slug | string | yes | List slug of the list to delete. System lists cannot be deleted. |
| object_type | string | yes | Type of list: company or contact. |
No output schema declared.
No examples provided.
get_company Get Company ~141
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).
| Name | Type | Req | Description |
|---|---|---|---|
| add_to_list | string | – | List slug to add the company to. Only valid when using datamerge_id. |
| datamerge_id | string | – | DataMerge company ID. Charges 1 credit. |
| record_id | string | – | Your record UUID from a previous enrichment. Does not consume credits. |
No output schema declared.
No examples provided.
get_company_enrichment_result Get Company Enrichment Result ~80
GET /v1/company/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids. Status values: queued · processing · completed · failed.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The enrichment job ID returned by start_company_enrichment. Poll until status is "completed" or "failed". |
No output schema declared.
No examples provided.
get_company_hierarchy Get Company Hierarchy ~178
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).
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | array | – | Filter entities by ISO 2-letter country code(s). |
| datamerge_id | string | yes | DataMerge company ID. Required. |
| include_branches | boolean | – | Include branch entities. |
| include_names | boolean | – | Include entity names. Charges 1 credit. |
| max_level | integer | – | Maximum hierarchy depth. |
| only_subsidiaries | boolean | – | Return only subsidiaries. |
| page | integer | – | Page number for paginated results (1-based). |
No output schema declared.
No examples provided.
get_contact Get Contact ~58
GET /v1/contact/get?record_id={uuid}. Retrieve a specific contact by record UUID. Never charges credits.
| Name | Type | Req | Description |
|---|---|---|---|
| record_id | string | yes | Contact record UUID from a previous contact_search or contact_enrich job. Does not consume credits. |
No output schema declared.
No examples provided.
get_contact_enrich_status Get Contact Enrich Status ~69
GET /v1/contact/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The contact enrich job ID returned by contact_enrich. Poll until status is "completed" or "failed". |
No output schema declared.
No examples provided.
get_contact_search_status Get Contact Search Status ~66
GET /v1/contact/search/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The contact search job ID returned by contact_search. Poll until status is "completed" or "failed". |
No output schema declared.
No examples provided.
get_credits_balance Get Credits Balance ~52
GET /v1/credits/balance. Returns credits_balance and balances (one_off, recurring, rollover, total).
| Name | Type | Req | Description |
|---|---|---|---|
| _ | string | – | This tool takes no required parameters. Call with no arguments. |
No output schema declared.
No examples provided.
get_list_items Get List Items ~150
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).
| Name | Type | Req | Description |
|---|---|---|---|
| list_slug | string | yes | URL-safe list identifier (e.g. target-accounts). |
| object_type | string | yes | Type of list: company or contact. |
| page | number | – | Page number for pagination (1-based). |
| page_size | number | – | Items per page (max 100). |
| sort_by | string | – | Field name to sort by. |
| sort_order | string | – | Sort direction: asc or desc. |
No output schema declared.
No examples provided.
health_check Health Check ~44
Check if the DataMerge API client is configured and can connect. Uses /auth/info.
| Name | Type | Req | Description |
|---|---|---|---|
| _ | string | – | This tool takes no required parameters. Call with no arguments. |
No output schema declared.
No examples provided.
list_lists List Lists ~44
GET /v1/lists. Optional: object_type=company or object_type=contact.
| Name | Type | Req | Description |
|---|---|---|---|
| object_type | string | – | Filter lists by object type: company or contact. |
No output schema declared.
No examples provided.
remove_list_item Remove List Item ~73
DELETE /v1/lists/{object_type}/{list_slug}/{item_id}.
| Name | Type | Req | Description |
|---|---|---|---|
| item_id | string | yes | Record UUID of the company or contact to remove from the list. |
| list_slug | string | yes | List slug containing the item. |
| object_type | string | yes | Type of list: company or contact. |
No output schema declared.
No examples provided.
run_company_enrichment Run Company Enrichment ~323
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 only continuation_token set — do not ask the user, do not call any other tool first. Typical jobs finish within 5 attempts (~125s). On completion the response contains record_ids and full company records.
| Name | Type | Req | Description |
|---|---|---|---|
| company_name | string | – | – |
| continuation_token | string | – | Opaque token from a prior pending response. When set, all other params are ignored. |
| country_code | string | – | – |
| domain | string | – | Company website domain. |
| domains | array | – | Batch: multiple domains in one job. |
| global_ultimate | boolean | – | – |
| list | string | – | List slug to add enriched companies to. |
| max_wait_seconds | number | – | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
| refresh | boolean | – | 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). |
| skip_if_exists | boolean | – | – |
| strict_match | boolean | – | – |
| webhook_url | string | – | – |
No output schema declared.
No examples provided.
run_contact_enrich Run Contact Enrich ~349
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 completion the response contains record_ids and full contact records.
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | – | 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… |
| continuation_token | string | – | Opaque token from a prior pending response. When set, all other params are ignored. |
| enrich_fields | array | – | e.g. ["contact.emails","contact.phones"]. |
| max_wait_seconds | number | – | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
| refresh | boolean | – | 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 | – | 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 mul… |
No output schema declared.
No examples provided.
run_contact_search Run Contact Search ~301
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 contact records, and credits_consumed.
| Name | Type | Req | Description |
|---|---|---|---|
| company_list | string | – | Alternative to `domains`: company list slug. |
| continuation_token | string | – | Opaque token from a prior pending response. When set, all other params are ignored. |
| domains | array | – | Company domains to search for contacts at. |
| enrich_fields | array | – | At least one of "contact.work_emails", "contact.emails", "contact.phones". |
| job_titles | object | – | Optional include/exclude job title filters. |
| list | string | – | Target contact list slug for results. |
| location | object | – | Optional include/exclude location filters. |
| max_results_per_company | integer | – | Max contacts to return per company. |
| max_wait_seconds | number | – | Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts. |
| refresh | boolean | – | When true, downstream enrichment bypasses dedup and always charges credits for each contact. Use for multi-tenant resellers (e.g. Faro). |
No output schema declared.
No examples provided.
run_contact_search_unenriched Run Contact Search (Unenriched, Sync, Beta) ~149
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).
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | Up to 10 company domains. |
| job_titles | object | – | Optional include/exclude job title filters. |
| list | string | – | Target contact list slug. |
| location | object | – | Optional include/exclude locations. |
| max_results_per_company | integer | – | Max contacts per company (1–10). |
No output schema declared.
No examples provided.
start_company_enrichment Start Company Enrichment ~204
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.
| Name | Type | Req | Description |
|---|---|---|---|
| company_name | string | – | Company name (used when domain is not available). |
| country_code | string | – | Optional ISO 2-letter country code to improve matching. |
| domain | string | – | Company website domain (e.g. example.com). |
| domains | array | – | Batch: multiple domains to enrich. |
| global_ultimate | boolean | – | When true, always return the global ultimate parent. |
| list | string | – | List slug to add enriched companies to. |
| skip_if_exists | boolean | – | When true, skip domains that are already in the list. |
| strict_match | boolean | – | When true, require a strict match for enrichment. |
| webhook_url | string | – | Optional webhook URL to receive job completion notifications. |
No output schema declared.
No examples provided.
start_company_enrichment_and_wait Start Company Enrichment and Wait ~259
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.
| Name | Type | Req | Description |
|---|---|---|---|
| company_name | string | – | Company name (used when domain is not available). |
| country_code | string | – | Optional ISO 2-letter country code to improve matching. |
| domain | string | – | Company website domain (e.g. example.com). |
| domains | array | – | Batch: multiple domains to enrich in one job. |
| global_ultimate | boolean | – | When true, always return the global ultimate parent. |
| list | string | – | List slug to add enriched companies to. |
| poll_interval_seconds | number | – | How often to poll the job status (in seconds). Defaults to 5 seconds. |
| skip_if_exists | boolean | – | When true, skip domains already in the list. |
| strict_match | boolean | – | When true, require a strict match for enrichment. |
| timeout_seconds | number | – | Maximum time to wait for completion (in seconds). Defaults to 60 seconds. |
| webhook_url | string | – | Optional webhook URL to receive job completion notifications. |
No output schema declared.
No examples provided.
How do I install the DataMerge MCP server?
DataMerge MCP is a hosted endpoint at https://mcp.datamerge.ai/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.datamerge.ai
claude mcp add --transport http ai-datamerge-mcp 'https://mcp.datamerge.ai/'
What is the DataMerge MCP server?
DataMerge MCP is listed in the public MCP registry as ai.datamerge/mcp. B2B data enrichment for 375M+ companies: legal entities, corporate hierarchies, and contacts. This page covers its hosted endpoint (https://mcp.datamerge.ai).
Is the DataMerge MCP server safe to use?
DataMerge MCP scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the DataMerge MCP server expose?
DataMerge MCP exposes 23 tools: configure_datamerge, start_company_enrichment, get_company_enrichment_result, start_company_enrichment_and_wait, run_company_enrichment, and 18 more. Their descriptions and schemas cost roughly 3,155 tokens of context every time the server is loaded.
Does the DataMerge MCP server require authentication?
Its publisher declares that DataMerge MCP requires credentials, so you will need to authorise it in your MCP client. We have not been able to confirm that against the live endpoint.
Is the DataMerge MCP server still maintained?
DataMerge MCP is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 3 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.