EmailmoversMyDataHub docs
Browse the docs

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.

Generated from the contractsView as Markdown

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.

PropertyValue
Tool nameenrich_contact
Position in tools/list19 of 22
Cost1 credit on match
Scopeenrich:write
AnnotationsreadOnlyHint false, destructiveHint false, idempotentHint true, openWorldHint false
KindWrite; idempotent, not destructive, closed world
REST equivalentPOST /v1/contacts/enrich

Input

The schema sets additionalProperties to false, so a member that is not listed is refused.

MemberTypeRequiredDescription
emailstring (email)no
first_namestringno
last_namestringno
company_namestringno
company_numberstringnoEight characters in upper case, such as 05046417 or SC123456.
domainstringno
confirmation_tokenstringnoThe 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.

MemberTypeAlways presentDescription
matchedbooleanyes
match_confidencenumber (0 to 1) or nullyes
already_licensedbooleanyesTrue when you already hold the record, so it costs 0.
recordContactRecord or nullyes
record.idstringyesThe record id, pushed to CRMs as mydatahub_record_id.
record.dataset_versionstringyesThe immutable weekly build a count is bound to, such as 2026-W39. The last 52 stay queryable.
record.contactobjectyes
record.emailobject or nullyes
record.phoneobject or nullyesPresent when the field set includes telephone and a number is held.
record.companyobjectyes
record.siteobjectyes
record.complianceComplianceObjectyesCarried 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_atstring (date) or nullyes
credits_chargednumber (0 or more)yes1 on a confident match, otherwise 0.
credits_remainingnumber (0 or more)yesCredits, 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_gbpnumber (0 or more)yesPounds sterling excluding VAT, to two decimal places.
licence_expires_atstring (date) or nullyes

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.