DataMerge MCP

ai.datamergePublished by datamerge.aiOfficial publisherv1.0.0Updated Oct 24, 2026

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

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Remote MCP server for B2B data enrichment: look up companies, corporate hierarchies and contacts, and manage saved lists through the DataMerge API.

What you can do
Enrich companies by domain, singly or in batch, and poll or wait for job results; fetch a company record and its global ultimate hierarchy, optionally adding it to a list. Search and enrich contacts by domain, LinkedIn URL or name plus domain, including a beta unenriched search that returns contacts inline. Create, list, inspect and delete saved company or contact lists, and remove individual items. Check the API connection and read the credit balance.
When to use it
Useful when an assistant needs B2B firmographic or contact data for prospecting, account research or list building, and the work can be done through the DataMerge API rather than manual lookups.
Requirements
Remote streamable HTTP endpoint. Requires a DataMerge API key sent as an Authorization bearer header; a free key is available on signup. The key can also be set through the configure_datamerge tool. The beta unenriched contact search needs a flag enabled on the account.
Before you install
Most lookups consume paid credits: company get by datamerge_id, hierarchy names and unenriched search are charged, while record_id lookups are free; check the balance before bulk runs. Tools create and delete saved lists and remove list items, which changes stored data. The API key is a secret and should be kept out of shared logs.

Installation

In SourceWeft

  1. Open DataMerge MCP in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/ai.datamerge%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "datamerge": {
      "type": "http",
      "url": "https://mcp.datamerge.ai/",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Tools

23

configure_datamerge

Configure DataMerge Authentication

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

ParametersapiKeybaseUrl

start_company_enrichment

Start Company Enrichment

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.

Parameterslistdomaindomainswebhook_urlcompany_namecountry_codestrict_matchskip_if_existsglobal_ultimate

get_company_enrichment_result

Get Company Enrichment Result

GET /v1/company/enrich/{job_id}/status. Poll until status is "completed" or "failed". Response includes record_ids. Status values: queued · processing · completed · failed.

Parametersjob_idrequired

start_company_enrichment_and_wait

Start Company Enrichment and Wait

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.

Parameterslistdomaindomainswebhook_urlcompany_namecountry_codestrict_matchskip_if_existsglobal_ultimatetimeout_secondspoll_interval_seconds

run_company_enrichment

Run Company Enrichment

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.

Parameterslistdomaindomainsrefreshwebhook_urlcompany_namecountry_codestrict_matchskip_if_existsglobal_ultimatemax_wait_secondscontinuation_token

run_contact_enrich

Run Contact Enrich

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.

Parametersrefreshcontactsenrich_fieldsmax_wait_secondsreturn_any_domaincontinuation_token

get_company

Get Company

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

Parametersrecord_idadd_to_listdatamerge_id

get_company_hierarchy

Get Company Hierarchy

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

Parameterspagemax_levelcountry_codedatamerge_idrequiredinclude_namesinclude_branchesonly_subsidiaries

get_contact_search_status

Get Contact Search Status

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

Parametersjob_idrequired

contact_enrich

Contact Enrich

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

Parameterscontactsrequiredenrich_fieldsrequired

get_contact_enrich_status

Get Contact Enrich Status

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

Parametersjob_idrequired

get_contact

Get Contact

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

Parametersrecord_idrequired

list_lists

List Lists

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

Parametersobject_type

create_list

Create List

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

Parametersnamerequiredobject_typerequired

get_list_items

Get List Items

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

Parameterspagesort_bylist_slugrequiredpage_sizesort_orderobject_typerequired

remove_list_item

Remove List Item

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

Parametersitem_idrequiredlist_slugrequiredobject_typerequired

delete_list

Delete List

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

Parameterslist_slugrequiredobject_typerequired

get_credits_balance

Get Credits Balance

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

Parameters_

health_check

Health Check

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

Parameters_

contact_search_unenriched

Contact Search (Unenriched, Beta)

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.

Parametersdomainswebhooklocationjob_titlescompany_listmax_results_per_company

run_contact_search_unenriched

Run Contact Search (Unenriched, Sync, Beta)

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

Parameterslistdomainsrequiredlocationjob_titlesmax_results_per_company

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.