Prompting guide
Your AI picks the tool, fills the parameters, and decides how many times to run. A vague prompt gets a wrong tool, an empty result, or a large credit bill. A strict one gets exactly the rows you asked for.
Best practices
- Name the tool you want. Say
find_people, not “search LinkedIn”. Several tools look similar to the model, and the wrong pick still costs credits. The full list is in Tools. - Spell out every filter. Title, seniority, headcount, location, industry — if you didn’t say it, it wasn’t applied. “Heads of sales” is a guess;
current_titles: ["Head of Sales", "VP Sales"]is a filter. - State the exclusions too. Titles to drop, countries to skip, companies you already own. Cheaper than filtering the output afterwards.
- Cap the result count. Most search tools return 25 by default and up to 100 per call, and cost scales per result. Say “return 25” so the model doesn’t page through more than you wanted.
- One job per prompt. Find people, then enrich emails, then verify. Bundling all three into one instruction is where runaway credit spend comes from.
- Chain in the right order. Search tools return profiles, not contact details — pass their output into
find_work_email, thenverify_email. - Ask for the raw output. Tell your AI to return the tool’s fields as a table or CSV. Left to itself it will summarize, and you lose the columns you paid for.
If the answer arrives instantly and no credits are charged, the model answered from memory instead of calling a tool. Re-prompt with the tool name and “use the Sync GTM MCP server”. More fixes in Common issues.
Vague vs strict
Vague — wrong tool, unbounded results:
Find me some sales leaders at SaaS companies and get their emails.Strict — one tool, explicit filters, capped:
Use the Sync GTM MCP find_people tool.
current_titles: ["Head of Sales", "VP Sales", "CRO"]
seniority_levels: ["c_suite", "vp"]
current_company_headcount_ranges: ["51-200", "201-500"]
current_company_countries: ["United States"]
industries: ["Computer Software"]
Return 25 results as a table: name, title, company, LinkedIn URL.
Do not enrich emails yet.Worked lead-sourcing prompts
Five shapes that cover most sourcing requests. Each one is copy-paste — change the filter values, keep the structure.
Decision-makers across a list of companies
find_people_within_company is 0.3 credits flat per company, however many profiles come back. find_people is 0.3 per result. For a known account list, always the first one.
Use find_people_within_company on each domain below.
job_title: ["VP Sales", "Head of Sales", "CRO", "VP Revenue",
"Head of Revenue Operations", "Head of GTM"]
max_profiles: 3, and pass company_name to disambiguate.
Return: company, domain, name, title, LinkedIn URL.
Mark any company where nothing came back. Do not enrich emails yet.Recently funded companies, by industry and region
Use find_companies.
industries: ["Construction", "Financial Services"]
exclude_industries: ["Staffing and Recruiting"]
countries: ["United States", "Canada"]
last_fundraise_after: "2026-05-01"
last_funding_round_types: ["seed", "series_a", "series_b"]
employee_count_ranges: ["51-200", "201-500"]
limit: 25
Return company_name, primary_domain, last round and date.
Stop after one page and report credits used.Dates are YYYY-MM-DD — “last three months” will not parse. industries must be the exact LinkedIn string: “Financial Services”, not “Finance” or “Fintech”. Industry reference list .
Accounts first, then the buyers inside them
Two tools in sequence, with a review gate between them.
Step 1 — find_companies.
industries: ["Financial Services", "Banking", "Capital Markets"]
categories: ["fintech"]
countries: ["United States", "United Kingdom"]
employee_count_ranges: ["201-500", "501-1000"]
limit: 20
Show me that list and stop.
Step 2 — on my go-ahead, find_people_within_company on each domain.
job_title: ["Head of Procurement", "VP Finance", "Head of Finance",
"Financial Controller", "Head of Payments"]
max_profiles: 2
Return company, name, title, LinkedIn URL. No enrichment yet.Local businesses with contact details
Local firms are not in a B2B database. Source from Maps, then scrape the sites.
1. google_maps_listings — query "restaurants", location "Sydney, Australia",
max_results 50.
2. Drop every listing with no website. Tell me how many survived.
3. scrape_emails_from_website on each survivor — 0.5 credits each, confirm
the total before starting.
4. Split into named addresses and role addresses (info@, bookings@).
verify_email on the named ones only.
5. Return a CSV. Leave blanks where nothing was published — do not guess.Companies on a given technology, within a revenue band
The reverse tech-stack search does not exist yet. find_company_techstack goes domain → stack; stack → companies is on the coming soon list. Source on filters that do exist, then confirm the stack per company.
Step 1 — find_companies.
min_revenue_usd: 1000000
max_revenue_usd: 10000000
industries: ["Retail", "Consumer Goods"]
countries: ["United States"]
limit: 50
Step 2 — find_company_techstack on each domain returned. 1 credit each,
so up to 50 credits — confirm with me first.
Step 3 — keep only companies whose stack includes Shopify or Shopify Plus.
Tell me the hit rate out of the 50.How to exclude companies and profiles you already have
There is no exclude-by-domain parameter on find_companies, and no exclude-by-profile on find_people. Exclusion happens in two places, and only one of them is free.
In the tool. Free, and it applies before anything is returned:
| Tool | Parameter | Drops |
|---|---|---|
find_companies | exclude_industries | Whole industries — agencies, staffing, consultancies |
find_people | exclude_current_titles | Titles you never sell to |
company_job_listings | job_title_exclude | Roles you do not care about |
search_linkedin_job_openings | exclude_recruiting_agencies, company_exclude | Agency posts, named companies |
In the conversation. For your own customers, open deals and anyone already sequenced:
1. Pull every company domain already in HubSpot with lifecycle stage
Customer, Opportunity or Disqualified. Hold that as my exclusion list.
2. find_companies — industries ["Financial Services"], countries
["United States"], employee_count_ranges ["201-500"],
exclude_industries ["Staffing and Recruiting"], limit 100.
3. Drop every result whose primary_domain is in the exclusion list.
Tell me how many were dropped and name them.
4. Return only what remains.For people, dedupe on the LinkedIn URL — names collide, URLs do not:
Before enriching anyone: drop every profile whose LinkedIn URL already
exists in Attio. Report the count dropped, then enrich only what is left.Put the dedupe step above the enrichment step. Filtering costs nothing; running find_work_email on 40 people you already own costs 40 credits and teaches you nothing.
Not sure how to phrase it?
Ask your AI to write the prompt first:
You have the Sync GTM MCP server connected. Read the available tools and their
parameters, then write me a prompt that will [describe your goal]. List which
filters you'll set and what it will cost in credits before running anything.Then read the filters it picked, correct the ones that are wrong, and run it.
Start from a GTM agent
Skip prompt-writing altogether — the Sync GTM agents are ready-made skills, already scoped to the right tools and filters:
- Lead List Builder — build a filtered list of people from an ICP description
- Contact Finder — find and verify work emails for a list you already have
- ICP Qualifier — score accounts against your ideal customer profile
- Hiring Signal Tracker — surface accounts opening relevant roles
- Prospect Researcher — brief on one person before a call
Where to next
- Tools — every tool, its parameters and credit cost
- What you can do — worked examples end to end
- Common issues — empty results, wrong tool, unexpected spend
Keep learning
Two courses take these tools past the reference page — clustered by GTM job, then chained into workflows.