Module 03 · Get contact details
Outcome: a verified work email for a profile, and a clear rule for when a 12-credit phone number is worth buying.
- Surface
- MCP server
- Level
- Beginner
- Uses
enrich_personfind_work_emailfind_personal_emailverify_emailfind_mobile_numberfind_work_phonevalidate_whatsapp- Credits
- ~30 for all seven, or ~6 if you skip the two phone tools
- Prerequisite
- Module 02, or any LinkedIn profile URL
Tools in this module
| Tool | Cost | Required input | Use it when |
|---|---|---|---|
verify_email | 0.3 | email | Always, before sending |
enrich_person | 1 | Any one identifier | You have a name, email, URL or company and want the record |
find_work_email | 1 | linkedin_url | The default contact tool |
find_personal_email | 3 | linkedin_url | Work address bounced, or they are between jobs |
validate_whatsapp | 1 | mobile | Before a WhatsApp touch |
find_mobile_number | 12 | linkedin_url | Late-stage, named accounts only |
find_work_phone | 12 | linkedin_url | Late-stage, named accounts only |
Read that table top to bottom. It is also the order you should run them in — cheapest first, and each step decides whether the next one fires.
The two phone tools are 12 credits each, 40× the cost of a verification. Never run them across a list. Run them on a named account after an email has already failed.
Example prompts
find_work_email — the default
Use find_work_email with:
- linkedin_url "https://linkedin.com/in/janedoe"
- first_name "Jane"
- last_name "Doe"
- organization_name "Stripe"
Do not guess an email pattern. If nothing comes back, say so and stop.The optional name and company fields are not decoration — they disambiguate common names and lift the hit rate on the same 1 credit.
verify_email — always
Use verify_email on "jane.doe@stripe.com" and tell me the deliverability
status. If it is not deliverable, do not use it.enrich_person — when you have something other than a URL
Any one of first_name + last_name, email, linkedin_url, or organization_name is enough. More identifiers, better match.
Use enrich_person with first_name "Jane", last_name "Doe",
organization_name "Stripe". Return title, company, location and
linkedin_url.find_personal_email — the fallback
Use find_personal_email with linkedin_url
"https://linkedin.com/in/janedoe", organization_name "Stripe".
Only run this because the work email came back undeliverable.find_mobile_number — 12 credits, one person
Use find_mobile_number with linkedin_url
"https://linkedin.com/in/janedoe", first_name "Jane", last_name "Doe",
organization_name "Stripe".
This is one person only. Do not run it on any other row.find_work_phone — 12 credits, one person
Use find_work_phone with linkedin_url
"https://linkedin.com/in/janedoe", organization_name "Stripe".
Return the number and extension if there is one. One person only.validate_whatsapp — before the touch
Use validate_whatsapp with mobile "+14155552671".
Include the country code. Tell me yes or no.The chain that costs ~2.3 credits
Find the email
find_work_email on the LinkedIn URL — 1 credit.
Verify it
verify_email on whatever came back — 0.3 credits. Undeliverable stops the row.
Fill the record
linkedin_profile_enrich or enrich_person for title, company and history — 1 credit.
Stop
Phones only if the email failed and the account is worth 12 credits.
Run it as one message:
For this profile: https://linkedin.com/in/janedoe
1. find_work_email — pass organization_name "Stripe".
2. verify_email on the result. If undeliverable, stop and tell me.
3. enrich_person to fill in title and company.
Return one row: name, title, company, email, verification status.
Report credits used.Workflow prompts
This is the module that plugs into everything else. SyncGTM finds and verifies; your CRM or sequencer holds the result.
HubSpot — fill the contacts missing an email
- pull all contacts missing emails
- use SyncGTM MCP to find work emails
- verify before writing
- update the records in HubSpot
1. Pull every HubSpot contact with an empty email that has a LinkedIn URL
on the record. Tell me how many there are before doing anything else.
2. For the first 50: find_work_email using the LinkedIn URL, passing
first_name, last_name and the company name from the record.
Do not guess an email pattern.
3. verify_email on every result. Drop anything undeliverable — do not write it.
4. Show me the table: contact, LinkedIn, found email, status. Wait for my go.
5. On my go-ahead, update each HubSpot contact with the verified address and
set a note with the verification status and today's date.
Never overwrite an email that already exists.Swap HubSpot for Salesforce, Attio or Close — the shape does not change, only the system that holds the record.
Attio — repair records that have decayed
- find contacts whose title or company looks stale
- re-enrich the person from their LinkedIn profile
- review the diff, write only what changed
1. Pull Attio people records not updated in 12 months that have a LinkedIn URL.
2. For each: enrich_person with the LinkedIn URL to get current title
and company.
3. Compare against what Attio holds. Build a diff table: field, old value,
new value. Only include rows where something actually changed.
4. Show me the diff. Do not write anything yet.
5. On my go-ahead, update only the changed fields. Leave everything else alone.Instantly — verify a list before it touches a campaign
- take the list about to be sequenced
- verify every address
- load only the deliverable ones
1. Take this list of email addresses.
2. verify_email on each — 0.3 credits, so <N> addresses is about <N × 0.3>.
Confirm the total with me before starting.
3. Split into three groups: deliverable, undeliverable, accept-all/risky.
4. Add ONLY the deliverable group to the Instantly campaign "Q3 RevOps".
5. Give me the undeliverable and risky lists separately so I can decide
what to do with them.Escalate to a phone, one person at a time
- confirm the email path has failed
- name the account
- buy exactly one number
This is for ONE person: <LinkedIn URL>. Their work email came back
undeliverable and this is a named target account.
1. find_personal_email first — 3 credits. If that works, stop there.
2. Only if it returns nothing, find_mobile_number — 12 credits.
3. If a mobile comes back, validate_whatsapp on it with the country code.
Do not run any of this on anyone else. Report exactly what was spent.Best prompting practices
- Pass the optional fields.
first_name,last_nameandorganization_namecost nothing and raise the hit rate. - Say “do not guess.” A model with no result will happily invent
first.last@domain.com. Undeliverable addresses hurt your sending domain. - Verify before you send, not before you store. 0.3 credits is the cheapest insurance on the server.
- Gate the expensive tools in the prompt. “Only if the email failed” is a condition the model will honour if you write it.
- Include the country code for
validate_whatsapp—+14155552671, not4155552671.
Where this breaks
“Get me everyone’s phone number” against a 40-row list is 480 credits and the model will run it. State the row count and the tool in the same sentence, every time.
Waterfall tools only bill when a provider returns a result, so a run on a well-known segment costs less than the same run on a long tail. Budget on hit rate, not on row count.
Further automation
MCP Contact Enricher is this module as a skill file — /mcp-contact-enricher runs the stack cheapest-first and keeps the 12-credit phone tools behind an explicit yes.
Contact Finder goes further: a company list in, verified decision-maker contacts out.
Next module
04 — Profiles and person signals, reading what someone posted, reacted to and commented on before you use the address you just bought.
Reference: Find Work Email · Verify Email · Enrich Person · Find Personal Email · Find Mobile Number · Find Work Phone · Validate WhatsApp · Waterfall Enrichment