11 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Check a running search
leads.check_statuswrite
Poll a background Google-Maps or Yelp search and stage its results if Outscraper has finished. Costs nothing extra — the scrape was already billed when it was submitted; this only collects what was paid for.
Over MCP the same operation is the tool leads_check_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a lead search
leads.delete_searchwriteconfirm
Permanently delete a lead search and every staged result under it. Contacts already imported into the CRM are kept, but the un-imported leads are gone and re-finding them means paying Outscraper for the search again.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool leads_get_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Import leads into the CRM
leads.importwriteconfirm
Import staged lead-search results into the CRM as contacts, and optionally run actions on them in the same pass. Pass result_ids for specific leads, or just search_id to import every not-yet-imported result of that search — which can create hundreds of contacts in one call and is not undoable in bulk. Deduped by phone and email: a lead matching an existing contact links to it instead of creating a duplicate. The import itself costs nothing extra (the search was already billed), BUT the optional `actions` run once per imported contact and are a real mass send — depending on the actions chosen they text, email, drop ringless voicemails, place automated or AI calls, or enroll people into campaigns, immediately and irreversibly, billed through the organization's own Twilio/Mailgun accounts. Actions also hit the existing contacts that leads deduped onto, not just the newly created ones. Optionally add every imported contact to a list.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
search_id
string (uuid)
optional
The search to import from. On its own, imports all of its not-yet-imported results.
result_ids
array of (string (uuid))
optional
Specific lead result ids to import. Already-imported ids are skipped.
list_id
string (uuid)
optional
Also add every imported contact to this list.
actions
object[]
optional
Actions to run on every contact this import touches — the newly created ones AND the existing ones a lead deduped onto. Same action set as lists.run_actions; call lists.action_types for the valid types and their config keys. Omit for a plain import. Refused above 2,000 contacts.
Over MCP the same operation is the tool leads_import at https://app.chirply.io/api/mcp, same bearer token, same input.
Search and filter lead search results
leads.list_resultsread
Page through the businesses one lead search found — name, phone, email, website, rating, phone line type, and whether each is already in the CRM — narrowing them exactly as the results table does. Use the filters to isolate the leads actually worth importing: `q` free-text matches name, phone, email, address, city, category and website; `has_phone`/`has_email`/`has_website` drop the unreachable ones; `line_type: "mobile"` keeps only numbers that can receive a text or voicemail drop; `min_rating` keeps the well-reviewed ones. Reads staged results only — nothing is fetched from Outscraper, so this costs nothing. Feed the returned ids straight into leads.import.
Parameters
Field
Type
Required
Description
search_id
string (uuid)
required
The lead search whose results to read.
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
imported
"all" | "yes" | "no"
optional
'no' shows only leads not yet imported into the CRM. Default: "all"
q
string
optional
Free-text search across the business name, phone, email, address, city, state, postal code, category and website. Case-insensitive substring match.
has_phone
boolean
optional
Keep only leads that came back with a phone number.
has_email
boolean
optional
Keep only leads with an email address (including enrichment emails).
Keep only leads whose phone the shared number cache classified this way — 'mobile' is the textable/voicemail-droppable set. Leads whose number has never been looked up have no line type and are excluded by this filter.
min_rating
number
optional
Keep only leads rated at least this (0–5). Leads with no rating are excluded.
sort
"found" | "name" | "rating" | "reviews"
optional
'found' keeps the provider's own order; 'name' is A–Z; 'rating' and 'reviews' are highest-first with unrated leads last. Default: "found"
Over MCP the same operation is the tool leads_list_results at https://app.chirply.io/api/mcp, same bearer token, same input.
List lead searches
leads.list_searchesread
List past lead searches, newest first, with each one's status, result count, duplicates skipped and estimated cost — plus the org's running totals. Purely historical; it runs nothing and spends nothing.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
status
"pending" | "running" | "done" | "error"
optional
Only searches in this status.
search_type
"maps" | "b2b" | "yelp"
optional
'maps' for Google Maps scrapes, 'b2b' for the business database, 'yelp' for Yelp scrapes.
Over MCP the same operation is the tool leads_list_searches at https://app.chirply.io/api/mcp, same bearer token, same input.
Load more results
leads.load_morewriteconfirm
Fetch and append the next page of an existing business-database search using its stored cursor. THIS SPENDS THE TENANT'S MONEY exactly like a new search — another page of records is billed to the organization's Outscraper account. Only database ('b2b') searches can load more.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool leads_load_more at https://app.chirply.io/api/mcp, same bearer token, same input.
Check the Outscraper connection
leads.outscraper_statusread
Report whether the organization has connected its own Outscraper account, plus its remaining credit and this cycle's usage. Read-only — call it before a paid search to see what the tenant has to spend.
Over MCP the same operation is the tool leads_outscraper_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Search the business database for leads
leads.search_databasewriteconfirm
Search Outscraper's B2B business database with structured filters (category, country/state/city/postal, name, minimum rating or review count, has-website/has-phone/verified). Instant and cursor-paginated. THIS SPENDS THE TENANT'S MONEY: Outscraper bills per record returned (roughly $2 per 1,000 for the first 5,000 each cycle, more above that, plus a surcharge per record for the emails or insights enrichments), and duplicates already in the CRM are still billed. At least one filter or a keyword query is required so the whole database isn't scanned.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
query
string
optional
Free-text keyword query, used alongside the filters.
types
string[]
optional
Business categories, e.g. ['plumber','HVAC contractor']. Keep them broad.
country_code
string
optional
Two-letter country code, e.g. 'US'.
states
string[]
optional
States, e.g. ['TX','CA'].
cities
string[]
optional
Cities, e.g. ['Austin','Dallas'].
postal_codes
string[]
optional
ZIP / postal codes.
name
string
optional
Business-name contains.
min_rating
number
optional
Minimum Google rating, e.g. 4.
min_reviews
integer
optional
Minimum review count.
has_website
boolean
optional
Only businesses with a website. Default: false
has_phone
boolean
optional
Only businesses with a phone number. Default: false
verified
boolean
optional
Only verified listings. Default: false
emails
boolean
optional
Add decision-maker emails and contacts. Costs extra per record. Default: false
insights
boolean
optional
Add company size, revenue and founding year. Costs extra per record. Default: false
limit
integer
optional
Max businesses in this page (1–1000, default 100). Every one is billed.
Over MCP the same operation is the tool leads_search_database at https://app.chirply.io/api/mcp, same bearer token, same input.
Search Google Maps for leads
leads.search_mapswriteconfirm
Scrape Google Maps for businesses matching a category and location, via the organization's OWN Outscraper account. THIS SPENDS THE TENANT'S MONEY: Outscraper bills per record returned (roughly $3 per 1,000 Maps records after the first 500 free each cycle, more with the emails enrichment), and duplicates already in the CRM are still scraped and still billed. Set the limit deliberately. Jobs over 80 results, or any search with emails on, are submitted in the background and finish later — poll with leads.check_status.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
type
string
optional
Business type or category, e.g. 'plumbers'. Required unless location is given.
location
string
optional
Where to search, e.g. 'Austin, TX'. Required unless type is given.
terms
string
optional
Extra keywords to refine the query.
region
string
optional
Two-letter country code, e.g. 'US'.
emails
boolean
optional
Also scrape each business website for emails and contacts. Costs extra per record and forces the job to run in the background. Default: false
limit
integer
optional
Max businesses to return (1–500, default 50). Every one is billed.
Over MCP the same operation is the tool leads_search_maps at https://app.chirply.io/api/mcp, same bearer token, same input.
Search Yelp for leads
leads.search_yelpwriteconfirm
Scrape Yelp for local businesses matching a category and location, via the organization's OWN Outscraper account. THIS SPENDS THE TENANT'S MONEY: Outscraper bills per listing returned, and duplicates already in the CRM are still scraped and still billed. Know what you get: business name, phone, street address, rating, review count, categories, price range, neighborhood, a link to the Yelp listing, and the business's own website when Yelp has one on file — but NEVER an email address. Set `emails: true` to chain the website-finder and contact-scraper enrichments on top, which is the only way a Yelp lead becomes emailable; it costs several times more per record. EVERY Yelp search runs in the background — Yelp is slow (about 90 seconds for ten listings) — so this returns a search id immediately and you collect the results with leads.check_status or leads.list_results a couple of minutes later.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
term
string
optional
What to search for, as typed into Yelp's first box — e.g. 'plumbers'. Required unless location is given.
location
string
optional
Where to search, as typed into Yelp's second box — e.g. 'Austin, TX'. Required unless term is given.
emails
boolean
optional
Scrape each business's website for emails and contacts. Yelp never returns an email on its own, so leave this off and no lead is emailable. Costs several times more per record and makes the search take noticeably longer. Default: false
limit
integer
optional
Max listings to return (1–240, default 50). Every one is billed. Yelp itself stops at roughly 240 results for one search, so asking for more just pays for repeats.