Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

DataMerge MCP

REMOTE · MCP.DATAMERGE.AI · SCANNED SEP 20

B2B data enrichment for 375M+ companies: legal entities, corporate hierarchies, and contacts.

Available components

0 this week 78 Trust /100

Recent critical change

Authorization (6 Aug 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

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 Security57
Transport & Reachability100
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3155 tokens (~137/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage97
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 91% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Install

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

# add to Claude Code
claude mcp add --transport http ai-datamerge-mcp 'https://mcp.datamerge.ai/'
// .cursor/mcp.json
{
  "mcpServers": {
    "ai-datamerge-mcp": {
      "url": "https://mcp.datamerge.ai/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ai-datamerge-mcp": {
      "type": "http",
      "url": "https://mcp.datamerge.ai/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.ai-datamerge-mcp]
url = "https://mcp.datamerge.ai/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-datamerge-mcp": {
      "type": "remote",
      "url": "https://mcp.datamerge.ai/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ai-datamerge-mcp --url 'https://mcp.datamerge.ai/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  ai-datamerge-mcp:
    url: "https://mcp.datamerge.ai/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ai-datamerge-mcp": {
      "Transport": "http",
      "Url": "https://mcp.datamerge.ai/"
    }
  }
}
# add to Vellum
assistant mcp add ai-datamerge-mcp -t streamable-http -u 'https://mcp.datamerge.ai/'
// mcp.json
{
  "mcpServers": {
    "ai-datamerge-mcp": {
      "type": "http",
      "url": "https://mcp.datamerge.ai/"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

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.

  • 26 Aug 26 +1
    • 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
  • 24 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 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
  • 30 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
  • 27 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
Diagnostics

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 20 Sept 2026 · Probed https://mcp.datamerge.ai

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.datamerge.ai CN=YE1,O=Let's Encrypt,C=US 31 Jul 2026 29 Oct 2026 ECDSA 256 ECDSA-SHA384 5b05c4ee07c68201885b27b540fa64e4636
SANs: mcp.datamerge.ai
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

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 3799 8 Verified
datamerge.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

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 Verified 200
http (plaintext) http://mcp.datamerge.ai HTTPS enforced 301 https://mcp.datamerge.ai/
MCP tools · 23 exposed · ~3,155 tokens

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 →

Tool Tokens
configure_datamerge ~82

Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).

NameTypeReqDescription
apiKeystringDataMerge API key. Get one at https://app.datamerge.ai (20 free credits).
baseUrlstringOptional custom API base URL (default: https://api.datamerge.ai).

No output schema declared.

No examples provided.

contact_enrich ~89

POST /v1/contact/enrich. Enrich specific contacts by LinkedIn URL or name+domain. Returns a job_id (async, 202).

NameTypeReqDescription
contactsarrayyesArray of contacts: either { linkedin_url } or { firstname, lastname, domain }.
enrich_fieldsarrayyesFields to enrich, e.g. ["contact.emails", "contact.phones"].

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
company_liststringList slug instead of domains.
domainsarrayCompany domains to search.
enrich_fieldsarrayyesAt least one of "contact.emails" or "contact.phones". Each email costs 1 credit; phone 4 credits.
job_titlesobjectOptional include/exclude job title filters.
locationobjectLocation filters: include/exclude with type and value (country, region, city).
max_results_per_companynumberMax contacts per company.
webhookstringOptional webhook URL to notify when the job completes.

No output schema declared.

No examples provided.

contact_search_unenriched ~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.

NameTypeReqDescription
company_liststringAlternative to domains: list slug to search across.
domainsarrayCompany domains to search.
job_titlesobjectOptional include/exclude job title filters (priority-keyed include).
locationobject
max_results_per_companyinteger
webhookstring

No output schema declared.

No examples provided.

create_list ~55

POST /v1/lists. Body: name, object_type (company or contact).

NameTypeReqDescription
namestringyesDisplay name for the new list.
object_typestringyesWhether the list holds company or contact records.

No output schema declared.

No examples provided.

delete_list ~63

DELETE /v1/lists/{object_type}/{list_slug}. System lists cannot be deleted.

NameTypeReqDescription
list_slugstringyesList slug of the list to delete. System lists cannot be deleted.
object_typestringyesType of list: company or contact.

No output schema declared.

No examples provided.

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

NameTypeReqDescription
add_to_liststringList slug to add the company to. Only valid when using datamerge_id.
datamerge_idstringDataMerge company ID. Charges 1 credit.
record_idstringYour record UUID from a previous enrichment. Does not consume credits.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
job_idstringyesThe 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 ~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).

NameTypeReqDescription
country_codearrayFilter entities by ISO 2-letter country code(s).
datamerge_idstringyesDataMerge company ID. Required.
include_branchesbooleanInclude branch entities.
include_namesbooleanInclude entity names. Charges 1 credit.
max_levelintegerMaximum hierarchy depth.
only_subsidiariesbooleanReturn only subsidiaries.
pageintegerPage number for paginated results (1-based).

No output schema declared.

No examples provided.

get_contact ~58

GET /v1/contact/get?record_id={uuid}. Retrieve a specific contact by record UUID. Never charges credits.

NameTypeReqDescription
record_idstringyesContact 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 ~69

GET /v1/contact/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.

NameTypeReqDescription
job_idstringyesThe 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 ~66

GET /v1/contact/search/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids.

NameTypeReqDescription
job_idstringyesThe 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 ~52

GET /v1/credits/balance. Returns credits_balance and balances (one_off, recurring, rollover, total).

NameTypeReqDescription
_stringThis tool takes no required parameters. Call with no arguments.

No output schema declared.

No examples provided.

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

NameTypeReqDescription
list_slugstringyesURL-safe list identifier (e.g. target-accounts).
object_typestringyesType of list: company or contact.
pagenumberPage number for pagination (1-based).
page_sizenumberItems per page (max 100).
sort_bystringField name to sort by.
sort_orderstringSort direction: asc or desc.

No output schema declared.

No examples provided.

health_check ~44

Check if the DataMerge API client is configured and can connect. Uses /auth/info.

NameTypeReqDescription
_stringThis tool takes no required parameters. Call with no arguments.

No output schema declared.

No examples provided.

list_lists ~44

GET /v1/lists. Optional: object_type=company or object_type=contact.

NameTypeReqDescription
object_typestringFilter lists by object type: company or contact.

No output schema declared.

No examples provided.

remove_list_item ~73

DELETE /v1/lists/{object_type}/{list_slug}/{item_id}.

NameTypeReqDescription
item_idstringyesRecord UUID of the company or contact to remove from the list.
list_slugstringyesList slug containing the item.
object_typestringyesType of list: company or contact.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
company_namestring
continuation_tokenstringOpaque token from a prior pending response. When set, all other params are ignored.
country_codestring
domainstringCompany website domain.
domainsarrayBatch: multiple domains in one job.
global_ultimateboolean
liststringList slug to add enriched companies to.
max_wait_secondsnumberServer-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.
refreshbooleanWhen 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_existsboolean
strict_matchboolean
webhook_urlstring

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
contactsarrayArray 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_tokenstringOpaque token from a prior pending response. When set, all other params are ignored.
enrich_fieldsarraye.g. ["contact.emails","contact.phones"].
max_wait_secondsnumberServer-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.
refreshbooleanWhen 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_domainbooleanSet 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 ~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.

NameTypeReqDescription
company_liststringAlternative to `domains`: company list slug.
continuation_tokenstringOpaque token from a prior pending response. When set, all other params are ignored.
domainsarrayCompany domains to search for contacts at.
enrich_fieldsarrayAt least one of "contact.work_emails", "contact.emails", "contact.phones".
job_titlesobjectOptional include/exclude job title filters.
liststringTarget contact list slug for results.
locationobjectOptional include/exclude location filters.
max_results_per_companyintegerMax contacts to return per company.
max_wait_secondsnumberServer-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.
refreshbooleanWhen 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 ~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).

NameTypeReqDescription
domainsarrayyesUp to 10 company domains.
job_titlesobjectOptional include/exclude job title filters.
liststringTarget contact list slug.
locationobjectOptional include/exclude locations.
max_results_per_companyintegerMax contacts per company (1–10).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
company_namestringCompany name (used when domain is not available).
country_codestringOptional ISO 2-letter country code to improve matching.
domainstringCompany website domain (e.g. example.com).
domainsarrayBatch: multiple domains to enrich.
global_ultimatebooleanWhen true, always return the global ultimate parent.
liststringList slug to add enriched companies to.
skip_if_existsbooleanWhen true, skip domains that are already in the list.
strict_matchbooleanWhen true, require a strict match for enrichment.
webhook_urlstringOptional webhook URL to receive job completion notifications.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
company_namestringCompany name (used when domain is not available).
country_codestringOptional ISO 2-letter country code to improve matching.
domainstringCompany website domain (e.g. example.com).
domainsarrayBatch: multiple domains to enrich in one job.
global_ultimatebooleanWhen true, always return the global ultimate parent.
liststringList slug to add enriched companies to.
poll_interval_secondsnumberHow often to poll the job status (in seconds). Defaults to 5 seconds.
skip_if_existsbooleanWhen true, skip domains already in the list.
strict_matchbooleanWhen true, require a strict match for enrichment.
timeout_secondsnumberMaximum time to wait for completion (in seconds). Defaults to 60 seconds.
webhook_urlstringOptional webhook URL to receive job completion notifications.

No output schema declared.

No examples provided.

Common questions

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?

No. We connected to DataMerge MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the DataMerge MCP server still maintained?

DataMerge MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.