Servidor MCP

DataMerge MCP

ai.datamerge/mcp
Datos y analítica Ventas y CRM Público y accesible MCP 2025-11-25

Qué hace este MCP

Enriches B2B company and contact data, including legal entities, corporate hierarchies, and organizational relationships.

configure_datamerge
Configure DataMerge Authentication
Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'apiKey': {'type': 'string', 'description': 'DataMerge API key. Get one at https://app.datamerge.ai (20 free credits).'}, 'baseUrl': {'type': 'string', 'description': 'Optional custom API base URL (default: https://api.datamerge.ai).'}}, 'additionalProperties': False}
contact_enrich
Contact Enrich
POST /v1/contact/enrich. Enrich specific contacts by LinkedIn URL or name+domain. Returns a job_id (async, 202).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contacts', 'enrich_fields'], 'properties': {'contacts': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}, 'description': 'Array of contacts: either { linkedin_url } or { firstname, lastname, domain }.'}, 'enrich_fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Fields to enrich, e.g. ["contact.emails", "contact.phones"].'}}, 'additionalProperties': False}
contact_search
Contact Search
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['enrich_fields'], 'properties': {'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Company domains to search.'}, 'webhook': {'type': 'string', 'description': 'Optional webhook URL to notify when the job completes.'}, 'location': {'type': 'object', 'description': 'Location filters: include/exclude with type and value (country, region, city).', 'additionalProperties': {}}, 'job_titles': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'type': 'string'}}, 'include': {'type': 'object', 'description': 'Priority-keyed: {"1": ["CEO"], "2": ["VP Sales"]} â\x80\x94 priority "1" is highest.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}}, 'description': 'Optional include/exclude job title filters.', 'additionalProperties': False}, 'company_list': {'type': 'string', 'description': 'List slug instead of domains.'}, 'enrich_fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'At least one of "contact.emails" or "contact.phones". Each email costs 1 credit; phone 4 credits.'}, 'max_results_per_company': {'type': 'number', 'description': 'Max contacts per company.'}}, 'additionalProperties': False}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Company domains to search.'}, 'webhook': {'type': 'string'}, 'location': {'type': 'object', 'additionalProperties': {}}, 'job_titles': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'type': 'string'}}, 'include': {'type': 'object', 'description': 'Priority-keyed: {"1": ["CEO"], "2": ["VP"]} â\x80\x94 priority "1" is highest.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}}, 'description': 'Optional include/exclude job title filters (priority-keyed include).', 'additionalProperties': False}, 'company_list': {'type': 'string', 'description': 'Alternative to domains: list slug to search across.'}, 'max_results_per_company': {'type': 'integer'}}, 'additionalProperties': False}
create_list
Create List
POST /v1/lists. Body: name, object_type (company or contact).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'object_type'], 'properties': {'name': {'type': 'string', 'description': 'Display name for the new list.'}, 'object_type': {'enum': ['company', 'contact'], 'type': 'string', 'description': 'Whether the list holds company or contact records.'}}, 'additionalProperties': False}
delete_list
Delete List
DELETE /v1/lists/{object_type}/{list_slug}. System lists cannot be deleted.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['object_type', 'list_slug'], 'properties': {'list_slug': {'type': 'string', 'description': 'List slug of the list to delete. System lists cannot be deleted.'}, 'object_type': {'enum': ['company', 'contact'], 'type': 'string', 'description': 'Type of list: company or contact.'}}, 'additionalProperties': False}
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).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'record_id': {'type': 'string', 'description': 'Your record UUID from a previous enrichment. Does not consume credits.'}, 'add_to_list': {'type': 'string', 'description': 'List slug to add the company to. Only valid when using datamerge_id.'}, 'datamerge_id': {'type': 'string', 'description': 'DataMerge company ID. Charges 1 credit.'}}, 'additionalProperties': False}
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'The enrichment job ID returned by start_company_enrichment. Poll until status is "completed" or "failed".'}}, 'additionalProperties': False}
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).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['datamerge_id'], 'properties': {'page': {'type': 'integer', 'description': 'Page number for paginated results (1-based).'}, 'max_level': {'type': 'integer', 'description': 'Maximum hierarchy depth.'}, 'country_code': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter entities by ISO 2-letter country code(s).'}, 'datamerge_id': {'type': 'string', 'minLength': 1, 'description': 'DataMerge company ID. Required.'}, 'include_names': {'type': 'boolean', 'description': 'Include entity names. Charges 1 credit.'}, 'include_branches': {'type': 'boolean', 'description': 'Include branch entities.'}, 'only_subsidiaries': {'type': 'boolean', 'description': 'Return only subsidiaries.'}}, 'additionalProperties': False}
get_contact
Get Contact
GET /v1/contact/get?record_id={uuid}. Retrieve a specific contact by record UUID. Never charges credits.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['record_id'], 'properties': {'record_id': {'type': 'string', 'description': 'Contact record UUID from a previous contact_search or contact_enrich job. Does not consume credits.'}}, 'additionalProperties': False}
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'The contact enrich job ID returned by contact_enrich. Poll until status is "completed" or "failed".'}}, 'additionalProperties': False}
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'The contact search job ID returned by contact_search. Poll until status is "completed" or "failed".'}}, 'additionalProperties': False}
get_credits_balance
Get Credits Balance
GET /v1/credits/balance. Returns credits_balance and balances (one_off, recurring, rollover, total).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'_': {'type': 'string', 'description': 'This tool takes no required parameters. Call with no arguments.'}}, 'additionalProperties': False}
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).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['object_type', 'list_slug'], 'properties': {'page': {'type': 'number', 'description': 'Page number for pagination (1-based).'}, 'sort_by': {'type': 'string', 'description': 'Field name to sort by.'}, 'list_slug': {'type': 'string', 'description': 'URL-safe list identifier (e.g. target-accounts).'}, 'page_size': {'type': 'number', 'description': 'Items per page (max 100).'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction: asc or desc.'}, 'object_type': {'enum': ['company', 'contact'], 'type': 'string', 'description': 'Type of list: company or contact.'}}, 'additionalProperties': False}
health_check
Health Check
Check if the DataMerge API client is configured and can connect. Uses /auth/info.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'_': {'type': 'string', 'description': 'This tool takes no required parameters. Call with no arguments.'}}, 'additionalProperties': False}
list_lists
List Lists
GET /v1/lists. Optional: object_type=company or object_type=contact.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'object_type': {'enum': ['company', 'contact'], 'type': 'string', 'description': 'Filter lists by object type: company or contact.'}}, 'additionalProperties': False}
remove_list_item
Remove List Item
DELETE /v1/lists/{object_type}/{list_slug}/{item_id}.
Destructivo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['object_type', 'list_slug', 'item_id'], 'properties': {'item_id': {'type': 'string', 'description': 'Record UUID of the company or contact to remove from the list.'}, 'list_slug': {'type': 'string', 'description': 'List slug containing the item.'}, 'object_type': {'enum': ['company', 'contact'], 'type': 'string', 'description': 'Type of list: company or contact.'}}, 'additionalProperties': False}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'list': {'type': 'string', 'description': 'List slug to add enriched companies to.'}, 'domain': {'type': 'string', 'description': 'Company website domain.'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Batch: multiple domains in one job.'}, 'refresh': {'type': 'boolean', 'description': '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).'}, 'webhook_url': {'type': 'string'}, 'company_name': {'type': 'string'}, 'country_code': {'type': 'string'}, 'strict_match': {'type': 'boolean'}, 'skip_if_exists': {'type': 'boolean'}, 'global_ultimate': {'type': 'boolean'}, 'max_wait_seconds': {'type': 'number', 'description': 'Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.'}, 'continuation_token': {'type': 'string', 'description': 'Opaque token from a prior pending response. When set, all other params are ignored.'}}, 'additionalProperties': False}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'refresh': {'type': 'boolean', 'description': '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).'}, 'contacts': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}, 'description': "Array of contacts. Identify each with `linkedin_url` and/or (`firstname`+`lastname`). ALWAYS include `domain` (company website) when you know it â\x80\x94 FullEnrich's email accuracy drops sharply without a domain hint."}, 'enrich_fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'e.g. ["contact.emails","contact.phones"].'}, 'max_wait_seconds': {'type': 'number', 'description': 'Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.'}, 'return_any_domain': {'type': 'boolean', 'description': '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 multiple plausible affiliations. Default false: server returns `status: "domain_required"` if any contact lacks `domain`.'}, 'continuation_token': {'type': 'string', 'description': 'Opaque token from a prior pending response. When set, all other params are ignored.'}}, 'additionalProperties': False}
run_contact_search
Run Contact Search
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'list': {'type': 'string', 'description': 'Target contact list slug for results.'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Company domains to search for contacts at.'}, 'refresh': {'type': 'boolean', 'description': 'When true, downstream enrichment bypasses dedup and always charges credits for each contact. Use for multi-tenant resellers (e.g. Faro).'}, 'location': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'value'], 'properties': {'type': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'include': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'value'], 'properties': {'type': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}}, 'description': 'Optional include/exclude location filters.', 'additionalProperties': False}, 'job_titles': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'type': 'string'}}, 'include': {'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}}, 'description': 'Optional include/exclude job title filters.', 'additionalProperties': False}, 'company_list': {'type': 'string', 'description': 'Alternative to `domains`: company list slug.'}, 'enrich_fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'At least one of "contact.work_emails", "contact.emails", "contact.phones".'}, 'max_wait_seconds': {'type': 'number', 'description': 'Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.'}, 'continuation_token': {'type': 'string', 'description': 'Opaque token from a prior pending response. When set, all other params are ignored.'}, 'max_results_per_company': {'type': 'integer', 'description': 'Max contacts to return per company.'}}, 'additionalProperties': False}
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).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domains'], 'properties': {'list': {'type': 'string', 'description': 'Target contact list slug.'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 10 company domains.'}, 'location': {'type': 'object', 'description': 'Optional include/exclude locations.', 'additionalProperties': {}}, 'job_titles': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'type': 'string'}}, 'include': {'type': 'object', 'description': 'Priority-keyed: {"1": ["CEO"], "2": ["VP"]} â\x80\x94 priority "1" is highest. The API flattens this to a single array for the sync endpoint.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}}, 'description': 'Optional include/exclude job title filters.', 'additionalProperties': False}, 'max_results_per_company': {'type': 'integer', 'description': 'Max contacts per company (1â\x80\x9310).'}}, 'additionalProperties': False}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'list': {'type': 'string', 'description': 'List slug to add enriched companies to.'}, 'domain': {'type': 'string', 'description': 'Company website domain (e.g. example.com).'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Batch: multiple domains to enrich.'}, 'webhook_url': {'type': 'string', 'description': 'Optional webhook URL to receive job completion notifications.'}, 'company_name': {'type': 'string', 'description': 'Company name (used when domain is not available).'}, 'country_code': {'type': 'string', 'description': 'Optional ISO 2-letter country code to improve matching.'}, 'strict_match': {'type': 'boolean', 'description': 'When true, require a strict match for enrichment.'}, 'skip_if_exists': {'type': 'boolean', 'description': 'When true, skip domains that are already in the list.'}, 'global_ultimate': {'type': 'boolean', 'description': 'When true, always return the global ultimate parent.'}}, 'additionalProperties': False}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'list': {'type': 'string', 'description': 'List slug to add enriched companies to.'}, 'domain': {'type': 'string', 'description': 'Company website domain (e.g. example.com).'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Batch: multiple domains to enrich in one job.'}, 'webhook_url': {'type': 'string', 'description': 'Optional webhook URL to receive job completion notifications.'}, 'company_name': {'type': 'string', 'description': 'Company name (used when domain is not available).'}, 'country_code': {'type': 'string', 'description': 'Optional ISO 2-letter country code to improve matching.'}, 'strict_match': {'type': 'boolean', 'description': 'When true, require a strict match for enrichment.'}, 'skip_if_exists': {'type': 'boolean', 'description': 'When true, skip domains already in the list.'}, 'global_ultimate': {'type': 'boolean', 'description': 'When true, always return the global ultimate parent.'}, 'timeout_seconds': {'type': 'number', 'description': 'Maximum time to wait for completion (in seconds). Defaults to 60 seconds.'}, 'poll_interval_seconds': {'type': 'number', 'description': 'How often to poll the job status (in seconds). Defaults to 5 seconds.'}}, 'additionalProperties': False}
Añadido
run_contact_search_unenriched
17 de September de 2026 a las 07:56
Añadido
contact_search_unenriched
17 de September de 2026 a las 07:56
Añadido
health_check
17 de September de 2026 a las 07:56
Añadido
get_credits_balance
17 de September de 2026 a las 07:56
Añadido
delete_list
17 de September de 2026 a las 07:56
Añadido
remove_list_item
17 de September de 2026 a las 07:56
Añadido
get_list_items
17 de September de 2026 a las 07:56
Añadido
create_list
17 de September de 2026 a las 07:56
Añadido
list_lists
17 de September de 2026 a las 07:56
Añadido
get_contact
17 de September de 2026 a las 07:56
Añadido
get_contact_enrich_status
17 de September de 2026 a las 07:56
Añadido
contact_enrich
17 de September de 2026 a las 07:56
Añadido
get_contact_search_status
17 de September de 2026 a las 07:56
Añadido
contact_search
17 de September de 2026 a las 07:56
Añadido
get_company_hierarchy
17 de September de 2026 a las 07:56
Añadido
get_company
17 de September de 2026 a las 07:56
Añadido
run_contact_search
17 de September de 2026 a las 07:56
Añadido
run_contact_enrich
17 de September de 2026 a las 07:56
Añadido
run_company_enrichment
17 de September de 2026 a las 07:56
Añadido
start_company_enrichment_and_wait
17 de September de 2026 a las 07:56
Añadido
get_company_enrichment_result
17 de September de 2026 a las 07:56
Añadido
start_company_enrichment
17 de September de 2026 a las 07:56
Añadido
configure_datamerge
17 de September de 2026 a las 07:56