Lusha MCP connector
API Key CRM & SalesMarketingAIConnect to Lusha MCP. Search and enrich B2B contacts and companies, find lookalikes, run prospecting searches, and access intent and activity signals from...
Lusha MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Connect your Lusha account
Section titled “Connect your Lusha account”Get your API key and create a connected account
Register your Lusha API key with Scalekit so it stores it securely and injects it into every request. Lusha uses API key authentication — there is no redirect URI or OAuth flow.
-
Get your Lusha API key
- Sign in to Lusha and go to API & connectors → Manage API Keys.
- Click + Create new Key to generate a new key, or copy the key value from an existing entry.

-
Create a connection in Scalekit
- In Scalekit dashboard, go to AgentKit → Connections → Create Connection. Find Lusha MCP and click Create.
- Note the Connection name — you will use this as
connection_namein your code (e.g.,lushamcp). - Click Save.
-
Add a connected account
Connected accounts link a specific user identifier in your system to their Lusha API key. Add them via the dashboard for testing, or via the Scalekit API in production.
Via dashboard (for testing)
- Open the connection you created and click the Connected Accounts tab → Add account.
- Fill in:
- Your User’s ID — a unique identifier for this user in your system (e.g.,
user_123) - API Key — the Lusha API key from step 1
- Your User’s ID — a unique identifier for this user in your system (e.g.,
- Click Create Account.
Via API (for production)
import { Scalekit } from '@scalekit-sdk/node';const scalekit = new Scalekit(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,);// Never hard-code credentials — read from secure storage or user inputconst lushaApiKey = getUserLushaApiKey(); // retrieve from your secure storeawait scalekit.actions.upsertConnectedAccount({connectionName: 'lushamcp',identifier: 'user_123',credentials: {username: lushaApiKey,},});import osfrom scalekit import ScalekitClientscalekit_client = ScalekitClient(env_url=os.environ["SCALEKIT_ENV_URL"],client_id=os.environ["SCALEKIT_CLIENT_ID"],client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],)# Never hard-code credentials — read from secure storage or user inputlusha_api_key = get_user_lusha_api_key() # retrieve from your secure storescalekit_client.actions.upsert_connected_account(connection_name="lushamcp",identifier="user_123",credentials={"username": lusha_api_key},)
-
-
Make your first call
Section titled “Make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'lushamcp'const identifier = 'user_123'// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'lushamcp_contacts_search',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "lushamcp"identifier = "user_123"# Make your first callresult = actions.execute_tool(tool_input={},tool_name="lushamcp_contacts_search",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Search signals contacts, signals companies, prospecting — Resolve contacts by LinkedIn URL, email, or name and return their recent activity signals
- Get signals contacts, signals companies — Return recent activity signals (promotions, company changes) for known Lusha contact IDs
- Filters signals contact, signals company, prospecting contact — Return available contact signal types accepted by contacts signals tools
- Enrich prospecting contact, prospecting company — Reveal emails and phone numbers for one or more Lusha contact IDs
- Contacts lookalike — Discover contacts similar to a set of seed contacts, returning paginated lookalike candidates
- Companies lookalike — Discover companies similar to a set of seed companies, returning paginated lookalike candidates
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
lushamcp_account_usage
#
Retrieve account credit balance, rate-limit status, plan info, and per-action credit pricing. 2 params
Retrieve account credit balance, rate-limit status, plan info, and per-action credit pricing.
conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_companies_search
#
Look up known companies in the Lusha database by name, domain, or FQDN, supporting batches of up to 25. 4 params
Look up known companies in the Lusha database by name, domain, or FQDN, supporting batches of up to 25.
companies array required No description. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. enrich boolean optional Auto-enrich the results. When true (default) the response includes firmographics, technologies and intent in one call and consumes reveal credits. When false only the search preview is returned (no premium fields, no reveal credits); follow up with prospecting_company_enrich on the returned ids when reveals are needed. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_contacts_search
#
Look up a known business contact in Lusha by name, company, LinkedIn URL, or email. 8 params
Look up a known business contact in Lusha by name, company, LinkedIn URL, or email.
company_name string optional Company name the contact works at. Required when looking up by name (first_name + last_name + company_name). conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. email string optional Contact's email address. Standalone lookup path. enrich boolean optional Auto-enrich the result. When true (default) the response includes emails and phones in one call and consumes reveal credits. When false only the search preview is returned (no emails/phones, no reveal credits); follow up with prospecting_contact_enrich on the returned id when reveals are needed. first_name string optional Contact's first name. Use with last_name + company_name as one of the supported lookup paths. last_name string optional Contact's last name. Use with first_name + company_name as one of the supported lookup paths. linkedin_url string optional Contact's LinkedIn profile URL. Standalone lookup path. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_lookalike_companies
#
Discover companies similar to a set of seed companies, returning paginated lookalike candidates. 6 params
Discover companies similar to a set of seed companies, returning paginated lookalike candidates.
seeds object required Seed companies to find lookalikes for. Total unique identifiers across both arrays must be 5-100. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. dedupeSessionId string optional Opaque pagination/dedupe token (UUID). Omit on first call to start a new run; the response includes a dedupeSessionId to pass back on subsequent calls for the same seeds. Sessions expire after 30 days of inactivity. exclude object optional Optional companies to exclude from results (e.g., existing customers). Total identifiers max 500. Distinct from dedupeSessionId, which excludes companies already returned by prior pagination calls. limit integer optional Number of results per call (1-100). Defaults to 25 when omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_lookalike_contacts
#
Discover contacts similar to a set of seed contacts, returning paginated lookalike candidates. 6 params
Discover contacts similar to a set of seed contacts, returning paginated lookalike candidates.
seeds object required Seed contacts to find lookalikes for. Total unique identifiers across all arrays must be 5-100. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. dedupeSessionId string optional Opaque pagination/dedupe token (UUID). Omit on first call to start a new run; the response includes a dedupeSessionId to pass back on subsequent calls for the same seeds. Sessions expire after 30 days of inactivity. exclude object optional Optional contacts to exclude from results (e.g., existing customers). Total identifiers max 500. Distinct from dedupeSessionId, which excludes contacts already returned by prior pagination calls. limit integer optional Number of results per call (1-50). Defaults to 25 when omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_prospecting_company_enrich
#
Reveal full firmographic details for one or more Lusha company IDs. 4 params
Reveal full firmographic details for one or more Lusha company IDs.
ids array required Lusha company IDs to enrich (from prospecting_company_search or companies_search results). Each id is a numeric string. Capped at 25 per request — split larger batches to fit the 25k-token response budget. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. reveal array optional Company premium fields to reveal. Source of truth: the prior search response's `canReveal[].field` (typically a subset of 'employeesByDepartment', 'employeesByLocation', 'employeesBySeniority', 'competitors', 'intent'); per-field credit cost for this account is in `canReveal[].credits`. When omitted, V3 returns only the free 'intent' field — chargeable firmographics require an explicit list of fields. Values not present in the prior response's `canReveal` are rejected by V3 — `canReveal` reflects this account's entitlements and per-company data availability. lushamcp_prospecting_company_filters
#
Resolve valid filter values accepted by the company prospecting search. 4 params
Resolve valid filter values accepted by the company prospecting search.
type string required Type of Lusha company filter to resolve. Large result types (naics, sics) return all available values; pass 'q' to narrow names, locations, and technologies. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. q string optional Narrowing query. Required for: names, locations, technologies. Ignored for other types. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_prospecting_company_search
#
Find companies by firmographic filters such as industry, size, location, and technology. 18 params
Find companies by firmographic filters such as industry, size, location, and technology.
conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. domains array optional Lusha prospecting: company domains to include (e.g., 'lusha.com'). exclude object optional Optional filters that exclude matching companies. Mirrors the include-side filters. Signals are not supported on the exclude side. intentTopics array optional Lusha prospecting: intent topics. Use values from prospecting_company_filters (type='intent_topics'). locations array optional Lusha prospecting: company locations. Use values from prospecting_company_filters (type='locations'). mainIndustriesIds array optional Lusha prospecting: main industry IDs. Use values from prospecting_company_filters (type='industries_labels'). naicsCodes array optional Lusha prospecting: NAICS codes. Use values from prospecting_company_filters (type='naics'). names array optional Lusha prospecting: company names to include. Use values from prospecting_company_filters (type='names'). page integer optional Page number for pagination (0-based). page_size integer optional Items per page (min 10, max 50, default 20). reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. revenues array optional Lusha prospecting: revenue ranges (annual USD). Use values from prospecting_company_filters (type='revenues'). searchText string optional Lusha prospecting: free-text relevance hint across company data. Layered on top of structured filters; not an exact match - broad or unrelated text can still return a large company population. Prefer structured filters (industries, sizes, locations, technologies) for precision. sicsCodes array optional Lusha prospecting: SIC codes. Use values from prospecting_company_filters (type='sics'). signals object optional Premium filter: narrow results to companies with recent signal activity. Charges Lusha credits per signal type that returns results, in addition to base prospecting credits. sizesFilterOption array optional Lusha prospecting: company size ranges (employee count). Valid min/max ranges are returned by prospecting_company_filters (type='sizes'); custom ranges are not supported. subIndustriesIds array optional Lusha prospecting: sub industry IDs. Use values from prospecting_company_filters (type='industries_labels'). technologies array optional Lusha prospecting: technologies. Use values from prospecting_company_filters (type='technologies'). lushamcp_prospecting_contact_enrich
#
Reveal emails and phone numbers for one or more Lusha contact IDs. 4 params
Reveal emails and phone numbers for one or more Lusha contact IDs.
ids array required Lusha contact IDs to enrich (from prospecting_contact_search or contacts_search results). Each id is a numeric string. Capped at 50 per request — split larger batches to fit the 25k-token response budget. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. reveal array optional Contact premium fields to reveal. Source of truth: the prior search response's `canReveal[].field` (typically 'emails', 'phones'); per-field credit cost for this account is in `canReveal[].credits`. When omitted, V3 returns every field listed in each contact's `canReveal`. Values not present in the prior response's `canReveal` are rejected by V3 — `canReveal` reflects this account's entitlements and per-contact data availability. lushamcp_prospecting_contact_filters
#
Resolve valid filter values accepted by the contact prospecting search. 4 params
Resolve valid filter values accepted by the contact prospecting search.
type string required Type of Lusha contact filter to resolve. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. locationSearchText string optional Narrowing text for location-based searches. Required when type='locations'. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_prospecting_contact_search
#
Find business contacts by filters such as job title, seniority, department, and company attributes. 25 params
Find business contacts by filters such as job title, seniority, department, and company attributes.
companyDomains array optional Lusha prospecting: filter by company domains (e.g., 'lusha.com'). companyLocations array optional Lusha prospecting: filter by company locations. Use values from prospecting_company_filters (type='locations'). companyNames array optional Lusha prospecting: filter by company names. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. countries array optional Lusha prospecting: ISO-2 country codes. Use values from prospecting_contact_filters (type='all_countries'). departments array optional Lusha prospecting: department names. Use values from prospecting_contact_filters (type='departments'). exclude object optional Optional filters that exclude matching contacts/companies. Mirrors the include-side filters; any contact/company matching any exclude filter is dropped. Signals are not supported on the exclude side. existing_data_points array optional Lusha prospecting: required data types on contacts. Use values from prospecting_contact_filters (type='existing_data_points'). intentTopics array optional Lusha prospecting: filter by company intent topics. Use values from prospecting_company_filters (type='intent_topics'). jobTitles array optional Lusha prospecting: contact job titles (free-form strings, e.g., 'VP of Sales'). locations array optional Lusha prospecting: contact locations. Use values from prospecting_contact_filters (type='locations'). mainIndustriesIds array optional Lusha prospecting: main industry IDs. Use values from prospecting_company_filters (type='industries_labels'). naicsCodes array optional Lusha prospecting: NAICS codes. Use values from prospecting_company_filters (type='naics'). names array optional Lusha prospecting: contact names to include. page integer optional Page number for pagination (0-based) - use with page_size. page_size integer optional Items per page (min 10, max 50, default 20) - use with page. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. revenues array optional Lusha prospecting: company revenue ranges (annual USD). Use values from prospecting_company_filters (type='revenues'). searchText string optional Lusha prospecting: free-text relevance hint across contact data. Layered on top of structured filters; not an exact match - broad or unrelated text can still return a large contact population. Prefer structured filters (jobTitles, seniority, departments, countries) for precision. seniority array optional Lusha prospecting: seniority level IDs. Use values from prospecting_contact_filters (type='seniority'). sicsCodes array optional Lusha prospecting: SIC codes. Use values from prospecting_company_filters (type='sics'). signals object optional Premium filter: narrow results to contacts with recent signal activity. Charges Lusha credits per signal type that returns results, in addition to base prospecting credits. sizesFilterOption array optional Lusha prospecting: company size ranges (employee count). Valid min/max ranges are returned by prospecting_company_filters (type='sizes'). subIndustriesIds array optional Lusha prospecting: sub industry IDs. Use values from prospecting_company_filters (type='industries_labels'). technologies array optional Lusha prospecting: filter by company technologies. Use values from prospecting_company_filters (type='technologies'). lushamcp_prospecting_search_guide
#
Return a step-by-step guide for structuring Lusha prospecting searches. 3 params
Return a step-by-step guide for structuring Lusha prospecting searches.
conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. target string optional Target entity type for Lusha search guidance (companies or contacts). If not specified, provides guidance for both. lushamcp_signals_companies_get
#
Return recent activity signals (hiring, headcount, IT spend, news) for known Lusha company IDs. 8 params
Return recent activity signals (hiring, headcount, IT spend, news) for known Lusha company IDs.
companyIds array required Lusha company IDs (1-25 per request). Capped at 25 to fit the 25k-token response budget once signal events are merged; split larger lists into multiple calls. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. filters object optional Optional filters narrowing news/hiring company signal results. Pair with 'riskNews', 'commercialActivityNews', etc. (newsEventTypes) and 'surgeInHiringByDepartment' / 'surgeInHiringByLocation' (hiringByDepartments / hiringByLocations). maxResultsPerSignal integer optional Maximum number of signal instances per signal type per company (1-100). Defaults to 10 when omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. signals array optional Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release. signalTypes array optional Company signal type identifiers (e.g., 'surgeInHiring', 'headcountIncrease3m', 'riskNews'); 'allSignals' selects every supported type. Source of truth: signals_company_filters - resolve valid values from there before calling. Invalid values return a 400 from the Lusha API. startDate string optional Start date for signal retrieval (YYYY-MM-DD). Must be a valid calendar date and not in the future. Defaults to last 6 months when omitted. lushamcp_signals_companies_search
#
Resolve companies by domain or name and return their recent activity signals. 8 params
Resolve companies by domain or name and return their recent activity signals.
companies array required Companies to identify and enrich with signals (1-25 per request). Capped at 25 to fit the 25k-token response budget once signal events are merged. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. filters object optional Optional filters narrowing news/hiring company signal results. Pair with 'riskNews', 'commercialActivityNews', etc. (newsEventTypes) and 'surgeInHiringByDepartment' / 'surgeInHiringByLocation' (hiringByDepartments / hiringByLocations). maxResultsPerSignal integer optional Maximum number of signal instances per signal type per company (1-100). Defaults to 10 when omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. signals array optional Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release. signalTypes array optional Company signal type identifiers (e.g., 'surgeInHiring', 'headcountIncrease3m', 'riskNews'); 'allSignals' selects every supported type. Source of truth: signals_company_filters - resolve valid values from there before calling. Invalid values return a 400 from the Lusha API. startDate string optional Start date for signal retrieval (YYYY-MM-DD). Must be a valid calendar date and not in the future. Defaults to last 6 months when omitted. lushamcp_signals_company_filters
#
Discover available company signal types and filter values for signals searches. 4 params
Discover available company signal types and filter values for signals searches.
conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. filterType string optional Optional. Omit to discover signal types and the directory of available filter types. Set to fetch values for a single filter (e.g., 'newsEventTypes', 'hiringByDepartments', 'hiringByLocations'). query string optional Search text. Required when filterType is 'hiringByLocations' (locations are not enumerable). Not supported for other filterTypes or when filterType is omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_signals_contact_filters
#
Return available contact signal types accepted by contacts signals tools. 2 params
Return available contact signal types accepted by contacts signals tools.
conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. lushamcp_signals_contacts_get
#
Return recent activity signals (promotions, company changes) for known Lusha contact IDs. 7 params
Return recent activity signals (promotions, company changes) for known Lusha contact IDs.
contactIds array required Lusha contact IDs (1-25 per request). Capped at 25 to fit the 25k-token response budget once signal events are merged; split larger lists into multiple calls. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. maxResultsPerSignal integer optional Maximum number of signal instances per signal type per contact (1-100). Defaults to 10 when omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. signals array optional Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release. signalTypes array optional Contact signal type identifiers (e.g., 'allSignals', 'promotion', 'companyChange'). Source of truth: signals_contact_filters - resolve valid values from there before calling. Invalid values return a 400 from the Lusha API. startDate string optional Start date for signal retrieval (YYYY-MM-DD). Must be a valid calendar date and not in the future. Defaults to last 6 months when omitted. lushamcp_signals_contacts_search
#
Resolve contacts by LinkedIn URL, email, or name and return their recent activity signals. 7 params
Resolve contacts by LinkedIn URL, email, or name and return their recent activity signals.
contacts array required Contacts to identify and enrich with signals (1-25 per request). Capped at 25 to fit the 25k-token response budget once signal events are merged. conversation_id string optional Conversation correlation ID. Present only when an earlier tool response in this conversation returned one; that value is carried unchanged on subsequent calls. Omitted on the first call. maxResultsPerSignal integer optional Maximum number of signal instances per signal type per contact (1-100). Defaults to 10 when omitted. reason_for_invocation string optional Brief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only. signals array optional Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release. signalTypes array optional Contact signal type identifiers (e.g., 'allSignals', 'promotion', 'companyChange'). Source of truth: signals_contact_filters - resolve valid values from there before calling. Invalid values return a 400 from the Lusha API. startDate string optional Start date for signal retrieval (YYYY-MM-DD). Must be a valid calendar date and not in the future. Defaults to last 6 months when omitted.