Search contacts
search_contactsSearch and filter target prospect contacts using field filters: name, email, title, LinkedIn URL, company, account ID, seniority, department, persona grade, CRM record ID (REFERENCE_ID_FILTER_FIELD), external ID (EXTERNAL_ID_FILTER_FIELD), and title persona (TITLE_PERSONA_FILTER_FIELD). Returns full contact details including reference_id, profile picture, active title, and persona grade. IMPORTANT — rendering: do NOT dump raw JSON or prose lists in chat. Render results in a tabular UI artifact (React/HTML table) with one row per contact and columns for first_name, last_name, email, title, active_title, account_name, linkedin_url, persona_grade, reference_id (CRM ID). Include pagination when page_info has more pages.
Use when: Use when you need to find contacts by name, CRM ID, or other attributes. Use REFERENCE_ID_FILTER_FIELD when the user provides a Salesforce or HubSpot contact ID (exact match on reference_id). Use EXTERNAL_ID_FILTER_FIELD for other external system IDs. Use NAME_FILTER_FIELD for name search. Use ACCOUNT_ID_FILTER_FIELD for all contacts at an account (internal UUID). Use LINKEDIN_URL_FILTER_FIELD for LinkedIn profile lookup. Use TITLE_PERSONA_FILTER_FIELD with values BUYING_COMMITTEE, EXTENDED_BUYING_COMMITTEE, or LEADERSHIP to find contacts whose title matches the workspace's configured buyer personas. Scoped to tracked contacts only — if no match, fall back to search_people_in_companies before reporting no results.
Behavior: read_only
workspace_id / user_id are injected from request headers.
Returns contacts[] with fields:
id: Unique internal UUID of the contact. Use when referencing this contact in warm intro or intro request flows. first_name: Contact's first name. last_name: Contact's last name. email: [redacted] title: Contact's job title as stored in the platform. active_title: Most recently resolved job title for this contact, enriched by the Boomerang engine. account_name: Name of the company this contact works at. internal_account_id: Internal UUID of the account (company) this contact belongs to. linkedin_url: LinkedIn profile URL of the contact. profile_pic: URL of the contact's profile picture. Empty if not available. persona_grade: ICP fit grade assigned by the Boomerang engine: A (strongest fit), B, C, D (weakest fit). Empty if not yet graded. reference_id: CRM record ID from the connected system (e.g. Salesforce Contact/Lead ID, HubSpot contact ID). Queryable via REFERENCE_ID_FILTER_FIELD — exact match. Returns filter_facets[] with fields: key: The ContactFilterField enum name this facet belongs to (e.g. 'SENIORITY_FILTER_FIELD'). value: The filter value to send back in a ContactFilterInput to apply this facet (e.g. 'VP'). label: Human-readable display label for the facet value (e.g. 'Vice President'). count: Number of contacts in the current result set that match this facet value. Also returns pagination info (current_page_number, page_size, total_pages, total_elements).
IMPORTANT: If the response contains more than one record, always present the options to the user and ask them to choose before taking any follow-up action. Do not act on all results automatically.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Optional list of field filters to narrow results. Each entry targets one ContactFilterField with one or more values. Multi-value within a single entry is OR-combined; multiple entries are AND-combined. Omit to return all contacts in the workspace. | |
| page_size | No | ||
| page_number | No | ||
| _triggered_by | No | REQUIRED. Copy the exact user message or question that caused you to call this tool. Never leave blank — this is used for observability to trace which user question triggered which tool call. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||