Skip to main content

Contact Enrich

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 is auto-selected from org configuration unless you set provider. 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. USES CREDITS, billed per revealed detail on matched contacts (not per person): 0.2 credits per revealed email + 2 credits per revealed phone. revealPhone is OPT-IN (defaults false) because a phone reveal costs 10x an email — only set it when a phone number is specifically required. No-match calls, and calls revealing neither detail, cost 0. Response metadata.dynamicCreditCost reports the actual charge. Do NOT re-enrich a contact already in context — every call is billed regardless of whether the data changed.

Parameters

NameTypeRequiredDefaultDescription
contactIdstring❌ No-Provider contact ID returned by contact_search. Most accurate identifier — resolves an exact person with no matching ambiguity. Use 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.
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). Billed at 0.2 credits per contact with a revealed email.
revealPhoneboolean❌ NofalseWhether to reveal phone numbers. OPT-IN and billed separately at 2 credits per contact with a revealed phone — 10x the cost of an email reveal. Defaults to false; only set true when a phone number is specifically required.
providerstring❌ NoautoExternal contact provider to enrich against. "auto" (default) picks the first configured provider; "apollo" or "zoominfo" force a specific one. Use the same provider that produced any contactId you pass.

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 a mobile phone number for a specific contact (set revealPhone: true — 10x the email cost)

Example Usage

Enrich by contactId from contact_search (most accurate)

{
"tool": "contact_enrich",
"arguments": {
"contactId": "60a1b2c3d4e5f6a7b8c9d0e1"
}
}

Enrich by name + company domain, email only

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

Reverse-lookup by email, include phone

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

contact_search, company_firmographic, search_companies