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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
contactId | string | ❌ 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. |
firstName | string | ❌ No | - | Contact's first (given) name. Combine with lastName and a company domain/name so the provider can resolve the right person. |
lastName | string | ❌ No | - | Contact's last (family) name. Combine with firstName and a company domain/name so the provider can resolve the right person. |
email | string | ❌ 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. |
companyDomain | string | ❌ 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. |
companyName | string | ❌ No | - | Current employer's name (e.g. 'Stripe'). Use only when the domain is unknown — companyDomain resolves more reliably. |
linkedinUrl | string | ❌ No | - | Contact's LinkedIn profile URL. A strong standalone matcher — sufficient on its own to identify the person. |
contacts | array | ❌ 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[].id | string | ❌ No | - | Provider contact ID (from contact_search) for this row. Most accurate matcher for a bulk item. |
contacts[].firstName | string | ❌ No | - | Contact's first (given) name; pair with lastName and a company domain/name. |
contacts[].lastName | string | ❌ No | - | Contact's last (family) name; pair with firstName and a company domain/name. |
contacts[].email | string | ❌ No | - | Contact's email, if known — a strong standalone matcher for this row. |
contacts[].companyDomain | string | ❌ 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[].companyName | string | ❌ No | - | This contact's current employer name; use only when the domain is unknown. |
contacts[].linkedinUrl | string | ❌ No | - | Contact's LinkedIn profile URL — a strong standalone matcher for this row. |
revealEmail | boolean | ❌ No | true | Whether to reveal email addresses (default: true). Billed at 0.2 credits per contact with a revealed email. |
revealPhone | boolean | ❌ No | false | Whether 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. |
provider | string | ❌ No | auto | External 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
apollozoominfo
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
}
}
Related Tools
contact_search, company_firmographic, search_companies