The managed prospecting API documents the shared brief, limits, billing, and result contract.
| Tool | Parameters | Description |
|---|
start-prospecting | brief, idempotency_key | Start and automatically approve a durable run; reuse the same key for retries. Pass brief.customer_domains to find lookalikes of your customers, segment by segment. When the brief names no company count, defaults to 100 target companies (versus 1000 for REST/SDK) since approval, and the company and contact research spend it triggers, happens immediately. Email lookups wait for the person’s answer at the contacts review. |
get-prospecting-run | run_id, offset=0, limit=100, events_after=0 | Poll every five seconds; limit accepts 1–100; partial results are paginated. Inspect stop_reason, even when status is completed. A needs_input run with a question waits on the person (see below); needs_input with no question is final. |
cancel-prospecting | run_id | Stop scheduling work; incurred charges and completed results remain. |
answer-prospecting | run_id, question_seq, text, idempotency_key | Send the person’s answer to the run’s open question. Ask the person and send what they say; never answer for them. When question.replies is not empty, send one of its labels verbatim as text (1–4,000 characters). Pass question.question_seq as given, null included; a stale or missing question_seq returns an error, so poll again for the current question. Reuse the same key for retries. |
MCP start automatically approves; the REST approval, list, rename, and delete operations are not additional MCP tools, and answer-prospecting covers answering a paused run. MCP responses omit the REST chat fields.
MCP runs decide the pilot, tail quality and top-up checkpoints on their own. They pause at needs_input only when the person has to answer, and get-prospecting-run then returns a question object:
| Field | Description |
|---|
question_seq | The question message’s seq, or null for a stop that posted no question message. Pass it to answer-prospecting as given. |
reason | The run’s stop_reason. |
content | The question or stop text to show the person. |
replies | Exact reply labels; send one verbatim. Empty when the question takes free text. |
estimate | For a contacts_review, the email estimate: checked, fit, matched, companies, lookups, find_rate, basis, expected_emails, minutes, records, early_lookups, early_found, and early_running. null otherwise. |
contacts_review: the wave’s companies are checked and their contacts found and qualified, and no email has been looked up yet. Show the person content and estimate, then send “Find emails”, “Find more companies first” (offered only when more candidates exist) or “Finish”. Email lookups reserve records of the plan quota until each settles and bill only for emails found; the question shows a USD figure when the run has a spending limit.
provider_unavailable, stage_unavailable, account_unavailable: an outage or account problem stopped the run. After the person fixes it, send “Retry”; “Cancel” stops the run.
question: the run needs missing input. replies is empty; send the person’s own words.
question is null while an answer is still being read, so poll after answering instead of answering again. A needs_input run with no question (for example run_timeout or action_uncertain) is final. Answering returns an error while the account has no quota left, until it is refilled; cancel-prospecting still works.
The client’s assistant subscription does not supply backend model credentials. Intent interpretation and wizards use platform credentials; coordination and independent contact qualification use customer LLM integrations. Native contact extraction still needs a generative LLM for qualification, unless company checks also run on DiscoLike VibeCheck: a run on DiscoLike Groove and VibeCheck, or on VibeCheck with indexed contacts only or no contacts, uses no customer LLM and keeps contacts by title without persona assessment. Existing provider and processing charges apply. Otherwise, indexed and native generated candidates must satisfy persona assessment; similarity and upstream title labels alone do not establish acceptance.
| Tool | Description |
|---|
| account-status | Check subscription plan and limits |
| usage-statistics | View API usage for billing period |
| discover-similar-companies | Find companies matching examples, description, or natural language ICP prompt |
| count-matching-domains | Count matches before full search |
| list-industry-categories | Look up industry category values and their definitions (full taxonomy, by name, or by search term) |
| business-profile | Get firmographic data |
| digital-footprint-score | Get score with breakdown |
| growth-metrics | View quarterly trends |
| segment-domains | Group companies into clusters |
| match-company-to-domain | Find domain for company name |
| bulk-match-company-to-domain | Batch match up to 1000 company names to domains with full bizdata appended |
| extract-website-text | Get cached text content from pre-crawled websites |
| domain-redirects | Get redirect mappings for a domain |
| append-data | Bulk-enrich domains with firmographics, growth, redirects, or domain status |
| vendor-and-technology-data | See technologies a company uses |
| subsidiaries-and-parent-companies | Explore corporate hierarchies |
| public-company-links | Find related domains sharing contact info |
| Tool | Description |
|---|
| search-contacts | Search for business contacts. Response is keyed by company domain; each entry contains firmographic fields plus nested contacts[]. |
| count-contacts | Count contacts matching filters before running a full search |
| contact-lookup | Look up a specific contact by persona ID, LinkedIn profile, or email |
| match-contacts | Match contacts by name/company via text search (lightweight, no usage cost) |
| bulk-match-contacts | Batch match a list of names, emails or LinkedIn profile URLs to contacts with optional full-data enrichment; LinkedIn URLs, then emails, are exact-matched first |
| generate-contacts | Discover candidate contacts at given domains using your own search provider (BYOS) plus either your own LLM (BYOK) or DiscoLike Groove (discolike/groove), the native extractor. Pass integration_id as an LLM integration UUID, or native for keyless extraction with no title validation against icp_text; omit it for native when it is available and a search provider resolves, otherwise your default LLM integration. Web search always enabled. Returns a task ID; poll get-research-status for per-domain contact rows plus the company’s inferred email pattern, and for title_validation (llm or none). email is null unless a source shows it; pass find_emails=true to run the email finder over named, email-less rows before the task completes (fills email and email_status; found addresses bill under the finder’s rules). Otherwise no platform billing; results are candidate data, so validate before use. |
| find-emails | Find likely email addresses for up to 500 people (first name, last name, domain) by enumerating and SMTP-verifying pattern candidates per domain. Returns a batch_id immediately; poll get-email-results until every job is terminal. Only proven addresses (status found) bill as records; catch-all and pattern-guess results are free. |
| get-email-results | Poll a find-emails batch by batch_id. Returns total/completed/failed counts plus per-job results (matched email + pattern). Keep polling until every job’s status is completed or failed. |
| Tool | Description |
|---|
| list-saved-queries | List saved queries with their domains for use in inclusion/exclusion |
| save-mcp-query | Save MCP results as a reusable query |
| save-exclusion-list | Create an exclusion list from domains and/or persona IDs |
| list-tags | List all unique tags in your organization |
| add-tags-to-query | Add tags to a saved query for organization |
| remove-tags-from-query | Remove tags from a saved query |
| get-domains-by-tags | Get all domains from queries matching specified tags |
| Tool | Description |
|---|
| research-companies | Run a DiscoGen research prompt against each domain in a list |
| research-contacts | Run an LLM prompt against contacts, same as above but for people |
| get-research-status | Poll async DiscoGen task status and results |
| cancel-research | Cancel a running DiscoGen task |
| list-research-providers | Check configured LLM and search providers before running DiscoGen. The LLM list also carries a native row, named “DiscoLike Groove”, for DiscoLike’s keyless contact extractor, usable only by generate-contacts |
| validate-icp-fit | Validate whether a list of companies match your ICP description; integration_id: "native-icp" scores on DiscoLike’s own model at no LLM cost |
Sync with HubSpot, Pipedrive, or Salesforce. Connect the CRM from app Settings > Integrations first. These tools are in beta: flows are live end-to-end, but expect rough edges while hardening completes. Full parameters and workflows: MCP CRM Tools.
| Tool | Description |
|---|
| push-to-crm | Push a saved query’s companies or contacts into the connected CRM (Salesforce: pick Leads or Accounts via sf_target_object) |
| crm-suppress | Snapshot the CRM’s companies or contacts into an exclusion list so existing pipeline stops surfacing in discovery |
| crm-import-companies | Import the CRM’s companies as tagged DiscoLike domain lists |
| crm-match-companies | Run domain-less CRM records through company matching |
| crm-writeback-domains | Write matched domains back onto CRM records by id |
| crm-match-contacts | Run email-less CRM people through contact matching with enrichment |
| crm-writeback-emails | Write matched emails back onto CRM records (keyed on the match task id) |
| crm-enrich-contacts | Find contacts for the CRM’s companies and push them in (billed net-new for delivered contacts only) |
| crm-writeback-segments | Write segment labels onto CRM records by domain |
| crm-audit-companies | Check each CRM company’s operating status (active / closed / redirected), tag the records, and save closed companies as a list |
- “Find US-based SaaS companies with 50-200 employees that recently raised Series A”
- AI calls
discover-similar-companies with icp_prompt, which automatically extracts filters (country: US, employee_range, category: SAAS), generates ICP text, suggests domains, and returns results in one call
- “Segment these into market categories”