Reference / MCP tool reference
Reference
Enrich a contact (spends credits)
enrich_contact: Returns the full record for one known person, matched by email or by name with a company name, number or domain.
Returns the full record for one known person, matched by email or by name with a company name, number or domain. It spends 1 credit only on a confident match, and 0 on no match or when you already hold the record under licence, so a repeat never charges twice. Like create_order it needs the user's confirmation (a form, or the confirmation_token from an approval_url) or an agent key whose allowed_tools include enrich_contact within its per-order cap and monthly budget; otherwise nothing is charged and it returns confirmation-required or agent-budget-exceeded. It needs enrich:write; use it for a single named person, and the result gives credits_charged and the balance left. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include corporate subscribers only by default (PECR), so sole traders and ordinary partnerships are left out unless the toggle is changed.
| Property | Value |
|---|---|
| Tool name | enrich_contact |
| Position in tools/list | 19 of 22 |
| Cost | 1 credit on match |
| Scope | enrich:write |
| Annotations | readOnlyHint false, destructiveHint false, idempotentHint true, openWorldHint false |
| Kind | Write; idempotent, not destructive, closed world |
| REST equivalent | POST /v1/contacts/enrich |
Input
The schema sets additionalProperties to false, so a member that is not listed is refused.
| Member | Type | Required | Description |
|---|---|---|---|
email | string (email) | no | |
first_name | string | no | |
last_name | string | no | |
company_name | string | no | |
company_number | string | no | Eight characters in upper case, such as 05046417 or SC123456. |
domain | string | no | |
confirmation_token | string | no | The token the approval page on mydatahub.emailmovers.com returns once the signed-in person approves. It is bound to that person (their sub), this spend (the machine quote_id, or the enrichment or push) and an expiry no later than the quote's, and it is redeemable once. |
Example call
The params of a tools/call request:
{
"name": "enrich_contact",
"arguments": {
"first_name": "Jo",
"last_name": "Example",
"company_number": "12345678"
}
}Output
The result carries structuredContent that matches this schema, and one line of text that leads with the number.
| Member | Type | Always present | Description |
|---|---|---|---|
matched | boolean | yes | |
match_confidence | number (0 to 1) or null | yes | |
already_licensed | boolean | yes | True when you already hold the record, so it costs 0. |
record | ContactRecord or null | yes | |
record.id | string | yes | The record id, pushed to CRMs as mydatahub_record_id. |
record.dataset_version | string | yes | The immutable weekly build a count is bound to, such as 2026-W39. The last 52 stay queryable. |
record.contact | object | yes | |
record.email | object or null | yes | |
record.phone | object or null | yes | Present when the field set includes telephone and a number is held. |
record.company | object | yes | |
record.site | object | yes | |
record.compliance | ComplianceObject | yes | Carried by every preview row, order record, lookup and enrichment, and repeated as CSV columns and as the MyDataHub property group on CRM push. |
record.licence_expires_at | string (date) or null | yes | |
credits_charged | number (0 or more) | yes | 1 on a confident match, otherwise 0. |
credits_remaining | number (0 or more) | yes | Credits, to one decimal place: whole at 1 credit a record, fractional only where a rule is (0.1 company-only, 1.8 outright, both proposed). |
cost_gbp | number (0 or more) | yes | Pounds sterling excluding VAT, to two decimal places. |
licence_expires_at | string (date) or null | yes |
Errors
A failed call returns isError true. The text content leads with the sentence a person acts on, then the whole problem as JSON, with code, detail, next_step and did_you_mean. A 401 and a step-up 403 are answered at HTTP level so the client can start authorisation. See Errors.