Skip to main content

Contact Enrich

Coming soon

The v2 MCP API is in preview and not yet generally available. These pages document its tools and request/response shapes; live data access is limited to enrolled organizations until v2 is released.

Use only after contact_search (2 credits per call) has identified the person — do not use for open-ended discovery. Enrich a KNOWN person: return their email, phone, seniority/title, social profiles, and employment history. Sourced from EXTERNAL contact providers — Apollo and ZoomInfo — NOT the HG Insights data API. Requires an Apollo or ZoomInfo integration; provider availability is org-specific (commonly Apollo only). Leave provider on 'auto' (default); naming an unconfigured provider returns a hard error, so check the response's availableProviders. Use this when you already have a specific contact and want their missing details — pass a contactId from contact_search (most accurate), an email, a LinkedIn URL, or a first+last name with company domain/name. Batch up to 25 people via contacts for bulk enrichment. Do NOT use this to DISCOVER people you don't know yet (e.g. "find the VPs of Marketing at Cisco") — use contact_search for that, then enrich the best matches by id. BULK omits unmatched contacts from the returned array entirely (no placeholder) — read metadata.matchCount and compare results by id/name, never by array position. USES CREDITS, billed per requested reveal, per MATCHED contact: 0.2 per email + 2 per phone. revealPhone defaults to TRUE, so unless you pass revealPhone:false every matched contact is billed 2.2 (10x an email reveal) — set revealPhone:false when you only need email/firmographic data. No-match calls cost 0; response metadata.dynamicCreditCost reports the actual charge. Do NOT re-enrich a contact already in context — credits are charged per call regardless of whether data changed.

Parameters

NameTypeRequiredDefaultDescription
contactIdstring❌ No-Provider contact ID returned by contact_search — a 24-character hex string (e.g. '54a797027468696b7f8f9d42'). Most accurate identifier: resolves an exact person with no matching ambiguity. Reuse the id from search rather than constructing one, and pass the same provider that produced it.
firstNamestring❌ No-Contact's first (given) name. Combine with lastName and a company domain/name so the provider can resolve the right person.
lastNamestring❌ No-Contact's last (family) name. Combine with firstName and a company domain/name so the provider can resolve the right person.
emailstring❌ No-Contact's work or personal email, if known. A strong standalone matcher — sufficient on its own to reverse-lookup the rest of the profile.
companyDomainstring❌ No-Current employer's website domain (e.g. 'stripe.com'). Pair with firstName+lastName to disambiguate common names; preferred over companyName. Protocol prefixes (http://, https://), leading www., and trailing paths/queries/fragments are accepted and stripped automatically; case is normalized.
companyNamestring❌ No-Current employer's name (e.g. 'Stripe'). Use only when the domain is unknown — companyDomain resolves more reliably.
linkedinUrlstring❌ No-Contact's LinkedIn profile URL. A strong standalone matcher — sufficient on its own to identify the person.
contactsarray❌ No-Array of known contacts to enrich in one call (max 25), each identified the same ways as a single enrichment (id, email, linkedinUrl, or name + company). Cheaper and faster than one call per person; mutually exclusive with the single-contact fields above. Unmatched rows are omitted from the returned array — compare results by id/name, never by array position.
contacts[].idstring❌ No-Provider contact ID (from contact_search) for this row. Most accurate matcher for a bulk item.
contacts[].firstNamestring❌ No-Contact's first (given) name; pair with lastName and a company domain/name.
contacts[].lastNamestring❌ No-Contact's last (family) name; pair with firstName and a company domain/name.
contacts[].emailstring❌ No-Contact's email, if known — a strong standalone matcher for this row.
contacts[].companyDomainstring❌ No-This contact's current employer domain (e.g. 'salesforce.com'); preferred over companyName. Protocol prefixes (http://, https://), leading www., and trailing paths/queries/fragments are accepted and stripped automatically; case is normalized.
contacts[].companyNamestring❌ No-This contact's current employer name; use only when the domain is unknown.
contacts[].linkedinUrlstring❌ No-Contact's LinkedIn profile URL — a strong standalone matcher for this row.
revealEmailboolean❌ NotrueWhether to reveal email addresses (default: true)
revealPhoneboolean❌ NotrueWhether to attempt a phone reveal. Defaults to TRUE, so a default enrich call is billed the 2-credit phone fee on every matched contact (10x an email reveal), charged for the attempt whether or not a phone value is returned. Pass false when you only need email/firmographic data.
providerstring❌ NoautoContact data provider. Prefer "auto" (default), which selects an available provider. "apollo" or "zoominfo" target a specific provider, but requesting one your org has not configured returns a hard error rather than falling back — check availableProviders in the response.

Required Integrations

  • apollo
  • zoominfo

Use Cases

  • I have a contactId from contact_search — get this person's email and phone
  • Enrich a known person by first+last name plus their company domain (e.g. Jane Doe at cisco.com)
  • Reverse-lookup a person from just their email address to fill in title, company, and LinkedIn
  • Enrich a batch of up to 25 known contacts in one call instead of enriching one at a time
  • Get only email/firmographic data without paying the phone fee (set revealPhone: false)

Example Usage

Enrich by contactId from contact_search (most accurate)

{
"tool": "contact_enrich",
"arguments": {
"contactId": "54a797027468696b7f8f9d42"
}
}

Enrich by name + company domain, email only (skip the phone fee)

{
"tool": "contact_enrich",
"arguments": {
"firstName": "Jane",
"lastName": "Doe",
"companyDomain": "cisco.com",
"revealPhone": false
}
}

Reverse-lookup by email, include phone

{
"tool": "contact_enrich",
"arguments": {
"email": "jane.doe@cisco.com",
"revealPhone": true
}
}

contact_search, company_firmographic, search_companies