The Lusha MCP connector routes your AI agent's tool calls to Lusha's own MCP server through Scalekit. Each user connects their own Lusha API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 37 tools.
- Tools
- 37
- What they doRead · write · destructive
- 10 · 24 · 310 read24 write3 destructive
- Users sign in with
- API key
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet 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>Create the Lusha MCP connection
In AgentKit > Connections, create a Lusha MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Console steps with screenshots
Register your Lusha API key with Scalekit so it stores it securely and injects it into every request. Lusha uses API key authentication.
-
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 one in the dashboard to test. In production, each user adds their own through the authorization link: they enter their credentials on the page it opens.
In the dashboard, to test
- 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.
From your backend, if your app already has the credentials
For example, when users enter them on a settings page in your app:
import { Scalekit, ConnectorStatus } from '@scalekit-sdk/node';const scalekit = new Scalekit(process.env.SCALEKIT_ENVIRONMENT_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 storeconst authorizationDetails = {details: {case: 'staticAuth',value: {details: {api_key: lushaApiKey,},},},};let { connectedAccount } = await scalekit.actions.upsertConnectedAccount({connectionName: 'lushamcp',identifier: 'user_123',authorizationDetails,});// Make sure the account is ACTIVE before the first tool call.if (connectedAccount?.status !== ConnectorStatus.ACTIVE) {({ connectedAccount } = await scalekit.actions.upsertConnectedAccount({connectionName: 'lushamcp',identifier: 'user_123',authorizationDetails,}));}import osfrom scalekit import ScalekitClientscalekit_client = ScalekitClient(env_url=os.environ["SCALEKIT_ENVIRONMENT_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 storeauthorization_details = {"static_auth": {"api_key": lusha_api_key}}response = scalekit_client.actions.upsert_connected_account(connection_name="lushamcp",identifier="user_123",authorization_details=authorization_details,)# Make sure the account is ACTIVE before the first tool call.if response.connected_account.status != "ACTIVE":response = scalekit_client.actions.upsert_connected_account(connection_name="lushamcp",identifier="user_123",authorization_details=authorization_details,)
-
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'lushamcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Lusha MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'lushamcp_account_usage',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "lushamcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Lusha MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="lushamcp_account_usage",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Lusha MCP server credentials there. If your app already has a user's credentials, add the account from your backend instead, as the console steps above show. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toollushamcp_account_usageRetrieve account credit balance, rate-limit status, plan info, and per-action credit pricing.Read-onlyAccount Usage
Retrieve account credit balance, rate-limit status, plan info, and per-action credit pricing.
Inputs
conversation_idstring- 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_invocationstring- 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_recommendations_companies_filtersReturn the target ICPs and signal types accepted by recommendations_companys filters.Read-onlyRecommendations Companies Filters
Return the target ICPs and signal types accepted by recommendations_companys filters. OAuth-only; API key sessions receive a 403.
Inputs
conversation_idstring- 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_invocationstring- 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_recommendations_contacts_filtersReturn the target ICPs and signal types accepted by recommendations_contacts filters.Read-onlyRecommendations Contacts Filters
Return the target ICPs and signal types accepted by recommendations_contacts filters. OAuth-only; API key sessions receive a 403.
Inputs
conversation_idstring- 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_invocationstring- 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_company_filtersDiscover available company signal types and filter values for signals searches.Read-onlySignals Company Filters
Discover available company signal types and filter values for signals searches.
Inputs
conversation_idstring- 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.
filterTypestring- 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').one of
newsEventTypeshiringByDepartmentshiringByLocations querystring- Search text. Required when filterType is 'hiringByLocations' (locations are not enumerable). Not supported for other filterTypes or when filterType is omitted.
reason_for_invocationstring- 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_filtersReturn available contact signal types accepted by contacts signals tools.Read-onlySignals Contact Filters
Return available contact signal types accepted by contacts signals tools.
Inputs
conversation_idstring- 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_invocationstring- 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_table_get_entitiesRead a page of a Workspace table's rows, including populated column values.Read-onlyTable Get Entities
Read a page of a Workspace table's rows, including populated column values.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
pageinteger- Page number (0-based, max 100).
page_sizeinteger- Items per page (1-100, default 100).
reason_for_invocationstring- 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_table_listList the caller's Workspace contacts or companies tables with pagination and name/status filters.Read-onlyTable List
List the caller's Workspace contacts or companies tables with pagination and name/status filters.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies conversation_idstring- 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.
emailstring- Filter to tables owned by this email. REQUIRED when authenticating with an API key (there is no signed-in user to default to); with OAuth the caller is identified by the token, so it is optional and defaults to the caller.
namestring- Filter by name (substring match).
pageinteger- Page number (0-based, max 100).
page_sizeinteger- Items per page (1-100, default 100).
reason_for_invocationstring- 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.
statusstring- Filter tables by lifecycle status.one of
activearchiveddeleted
lushamcp_table_list_columnsList a Workspace table's columns with per-status row counts.Read-onlyTable List Columns
List a Workspace table's columns with per-status row counts.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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_table_statusReturn one Workspace table's entity count and per-column run aggregates (processing/success/failed rows).Read-onlyTable Status
Return one Workspace table's entity count and per-column run aggregates (processing/success/failed rows).
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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_website_visits_searchRank companies that visited the account's tracked websites by visit engagement.Read-onlyWebsite Visits Search
Rank companies that visited the account's tracked websites by visit engagement.
Inputs
conversation_idstring- 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.
domainsarray- Tracked domains configured in the dashboard. Omit to use all configured tracked sites for the account.
endDatestring- Window end (YYYY-MM-DD). Optional; defaults to today (UTC). The resolved range cannot exceed 3 months.
filtersobject- Optional behavioral filters applied to the ranking.
paginationobject- Pagination. Defaults to page 0, size 25.
reason_for_invocationstring- 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.
sortobject- Optional sort field and direction.
startDatestring- Window start (YYYY-MM-DD). Optional; defaults to 30 days before endDate.
lushamcp_buying_group_searchRank buying committee members for given companies, optionally filtered by persona.WriteBuying Group Search
Rank buying committee members for given companies, optionally filtered by persona.
Inputs
companiesarrayrequired- Companies to find buying group members for (1-25). Each entry must include exactly one of 'domain' or 'id', plus an optional clientReferenceId echoed back per result.
contactsLimitinteger- Maximum number of buying group contacts to return per company (1-100). Defaults to 100. Billing is per contact returned, so keep this as low as the task allows.default
100 conversation_idstring- 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.
paginationobject- Optional pagination over the ranked buying group members (0-based `page`, `size` 10-100). Omit to receive the provider default page.
personasarray- Persona filter — return only contacts whose primary role matches one of the supplied values. Omit to return all personas. Allowed values: 'decision_maker', 'potential_champion', 'end_user'.
reason_for_invocationstring- 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_searchLook up known companies in the Lusha database by name, domain, or FQDN, supporting batches of up to 25.WriteCompanies Search
Look up known companies in the Lusha database by name, domain, or FQDN, supporting batches of up to 25.
Inputs
companiesarrayrequired- No description.
conversation_idstring- 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.
enrichboolean- 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_invocationstring- 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_searchLook up a known business contact in Lusha by name, company, LinkedIn URL, or email.WriteContacts Search
Look up a known business contact in Lusha by name, company, LinkedIn URL, or email.
Inputs
company_namestring- Company name the contact works at. Required when looking up by name (first_name + last_name + company_name).
conversation_idstring- 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.
emailstring- Contact's email address. Standalone lookup path.
enrichboolean- 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_namestring- Contact's first name. Use with last_name + company_name as one of the supported lookup paths.
last_namestring- Contact's last name. Use with first_name + company_name as one of the supported lookup paths.
linkedin_urlstring- Contact's LinkedIn profile URL. Standalone lookup path.
reason_for_invocationstring- 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_conversations_searchFind the account's recorded sales calls by keyword, date, participant, domain, or title.WriteConversations Search
Find the account's recorded sales calls by keyword, date, participant, domain, or title.
Inputs
companyDomainsarray- Domains of the external participants, such as acme.com (up to 10 values, ORed). This matches on domain rather than display name; companies_search resolves a company name to its domain.
contactNamesarray- Partial, case-insensitive match on participant names (up to 10 values, ORed).
conversation_idstring- 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.
conversationIdsarray- Restricts results to these conversation ids (1-25). Unknown ids are omitted from the response rather than erroring.
dateFromstring- Earliest meeting date, inclusive, as YYYY-MM-DD.
dateTostring- Latest meeting date, inclusive, as YYYY-MM-DD.
detailstring- Response depth. 'compact' (default) returns the summary and flags whether coaching and chapters exist; 'full' includes them and limits pageSize to 5.one of
compactfull meetingTitlesarray- Partial, case-insensitive match on the meeting title (up to 10 values, ORed).
pageinteger- 1-based page index. Defaults to 1.
pageSizeinteger- Conversations per page (1-25, default 10). Capped at 25 so a page costs a single credit and fits the 25k-token response budget.
querystring- Free-text search over what was said on the call, ranked by relevance. It overrides the structural filters, so one search uses either this or them.
reason_for_invocationstring- 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_conversations_transcript_getReturn the speaker-attributed transcript of one recorded call, in windows.WriteConversations Transcript Get
Return the speaker-attributed transcript of one recorded call, in windows.
Inputs
conversationIdstringrequired- Id of the recorded call, as returned in conversations[].id by conversations_search. This is the call identifier and is unrelated to the chat-session conversation_id field.
conversation_idstring- 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_invocationstring- 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.
segmentLimitinteger- Segments per window (1-200, default 100). A window is shortened further when its text would exceed the 25k-token response budget.
segmentOffsetinteger- 0-based index of the first transcript segment in the window. Defaults to 0.
lushamcp_lookalike_companiesDiscover companies similar to a set of seed companies, returning paginated lookalike candidates.WriteLookalike Companies
Discover companies similar to a set of seed companies, returning paginated lookalike candidates.
Inputs
seedsobjectrequired- Seed companies to find lookalikes for. Total unique identifiers across both arrays must be 5-100.
conversation_idstring- 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.
dedupeSessionIdstring- 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.
excludeobject- 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.
limitinteger- Number of results per call (1-100). Defaults to 25 when omitted.
reason_for_invocationstring- 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_contactsDiscover contacts similar to a set of seed contacts, returning paginated lookalike candidates.WriteLookalike Contacts
Discover contacts similar to a set of seed contacts, returning paginated lookalike candidates.
Inputs
seedsobjectrequired- Seed contacts to find lookalikes for. Total unique identifiers across all arrays must be 5-100.
conversation_idstring- 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.
dedupeSessionIdstring- 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.
excludeobject- 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.
limitinteger- Number of results per call (1-50). Defaults to 25 when omitted.
reason_for_invocationstring- 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_enrichReveal full firmographic details for one or more Lusha company IDs.WriteProspecting Company Enrich
Reveal full firmographic details for one or more Lusha company IDs.
Inputs
idsarrayrequired- 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_idstring- 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_invocationstring- 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.
revealarray- 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_search_by_textFind companys by describing the target audience in plain language; Lusha converts the text into structured prospecting filters server-side.WriteProspecting Company Search By Text
Find companys by describing the target audience in plain language; Lusha converts the text into structured prospecting filters server-side.
Inputs
conversation_idstring- 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.
pagination_tokenstring- Opaque token returned by a prior call to this tool. Pass it back verbatim to fetch the NEXT page of that same search. Do not construct, edit, or guess it; only ever echo one this tool returned. When a response has no pagination_token, there are no more results.
reason_for_invocationstring- 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.
textstring- Lusha prospecting: a natural-language description of the target audience (e.g., 'CMOs from Apple and Google in California'). Lusha's server converts this text into structured prospecting filters and runs the search. 2-1024 characters. Provide this for a NEW search; omit it when paging with pagination_token.
lushamcp_prospecting_contact_enrichReveal emails and phone numbers for one or more Lusha contact IDs.WriteProspecting Contact Enrich
Reveal emails and phone numbers for one or more Lusha contact IDs.
Inputs
idsarrayrequired- 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_idstring- 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_invocationstring- 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.
revealarray- 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_search_by_textFind contacts by describing the target audience in plain language; Lusha converts the text into structured prospecting filters server-side.WriteProspecting Contact Search By Text
Find contacts by describing the target audience in plain language; Lusha converts the text into structured prospecting filters server-side.
Inputs
conversation_idstring- 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.
pagination_tokenstring- Opaque token returned by a prior call to this tool. Pass it back verbatim to fetch the NEXT page of that same search. Do not construct, edit, or guess it; only ever echo one this tool returned. When a response has no pagination_token, there are no more results.
reason_for_invocationstring- 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.
textstring- Lusha prospecting: a natural-language description of the target audience (e.g., 'CMOs from Apple and Google in California'). Lusha's server converts this text into structured prospecting filters and runs the search. 2-1024 characters. Provide this for a NEW search; omit it when paging with pagination_token.
lushamcp_recommendations_companiesReturn recommended companys ranked by lead, signal, and ICP-fit scores.WriteRecommendations Companies
Return recommended companys ranked by lead, signal, and ICP-fit scores. OAuth-only; API key sessions receive a 403.
Inputs
conversation_idstring- 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.
filtersobject- No description.
paginationobject- 0-based page index (0-1000) and page size (10-100); defaults to page 0 / size 25.
reason_for_invocationstring- 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.
sortarray- Ordering for the recommendations, up to 4 entries; all entries share a single direction (mixed asc/desc returns a 400).
lushamcp_recommendations_contactsReturn recommended contacts ranked by lead, signal, and ICP-fit scores.WriteRecommendations Contacts
Return recommended contacts ranked by lead, signal, and ICP-fit scores. OAuth-only; API key sessions receive a 403.
Inputs
conversation_idstring- 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.
filtersobject- No description.
paginationobject- 0-based page index (0-1000) and page size (10-100); defaults to page 0 / size 25.
reason_for_invocationstring- 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.
sortarray- Ordering for the recommendations, up to 4 entries; all entries share a single direction (mixed asc/desc returns a 400).
lushamcp_signal_score_companiesScore known companies (batch of 1-50) by their currently active buying signals.WriteSignal Score Companies
Score known companies (batch of 1-50) by their currently active buying signals.
Inputs
companiesarrayrequired- Companies to score (1-50). Each entry has exactly one identifier (id, domain, name, or email) plus an optional clientReferenceId.
conversation_idstring- 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_invocationstring- 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_signal_score_contactsScore known contacts (batch of 1-50) by their currently active buying signals.WriteSignal Score Contacts
Score known contacts (batch of 1-50) by their currently active buying signals.
Inputs
contactsarrayrequired- Contacts to score (1-50). Each entry uses one lookup path (id | linkedinUrl | email | firstName + lastName + (companyName | companyDomain)) plus an optional clientReferenceId.
conversation_idstring- 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_invocationstring- 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_companies_getReturn recent activity signals (hiring, headcount, IT spend, news) for known Lusha company IDs.WriteSignals Companies Get
Return recent activity signals (hiring, headcount, IT spend, news) for known Lusha company IDs.
Inputs
companyIdsarrayrequired- 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_idstring- 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.
filtersobject- Optional filters narrowing news/hiring company signal results. Pair with 'riskNews', 'commercialActivityNews', etc. (newsEventTypes) and 'surgeInHiringByDepartment' / 'surgeInHiringByLocation' (hiringByDepartments / hiringByLocations).
maxResultsPerSignalinteger- Maximum number of signal instances per signal type per company (1-100). Defaults to 10 when omitted.
reason_for_invocationstring- 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.
signalsarray- Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release.
signalTypesarray- 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.
startDatestring- 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_searchResolve companies by domain or name and return their recent activity signals.WriteSignals Companies Search
Resolve companies by domain or name and return their recent activity signals.
Inputs
companiesarrayrequired- 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_idstring- 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.
filtersobject- Optional filters narrowing news/hiring company signal results. Pair with 'riskNews', 'commercialActivityNews', etc. (newsEventTypes) and 'surgeInHiringByDepartment' / 'surgeInHiringByLocation' (hiringByDepartments / hiringByLocations).
maxResultsPerSignalinteger- Maximum number of signal instances per signal type per company (1-100). Defaults to 10 when omitted.
reason_for_invocationstring- 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.
signalsarray- Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release.
signalTypesarray- 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.
startDatestring- 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_getReturn recent activity signals (promotions, company changes) for known Lusha contact IDs.WriteSignals Contacts Get
Return recent activity signals (promotions, company changes) for known Lusha contact IDs.
Inputs
contactIdsarrayrequired- 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_idstring- 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.
maxResultsPerSignalinteger- Maximum number of signal instances per signal type per contact (1-100). Defaults to 10 when omitted.
reason_for_invocationstring- 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.
signalsarray- Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release.
signalTypesarray- 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.
startDatestring- 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_searchResolve contacts by LinkedIn URL, email, or name and return their recent activity signals.WriteSignals Contacts Search
Resolve contacts by LinkedIn URL, email, or name and return their recent activity signals.
Inputs
contactsarrayrequired- 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_idstring- 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.
maxResultsPerSignalinteger- Maximum number of signal instances per signal type per contact (1-100). Defaults to 10 when omitted.
reason_for_invocationstring- 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.
signalsarray- Deprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release.
signalTypesarray- 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.
startDatestring- 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_table_add_columnAdd a column (Lusha datapoint, CRM, signal, AI, or score) to a Workspace table, optionally running it immediately.WriteTable Add Column
Add a column (Lusha datapoint, CRM, signal, AI, or score) to a Workspace table, optionally running it immediately.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies namestringrequired- Display name of the column (1-255 chars).
table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
typestringrequired- Column category: 'lusha' (a Lusha datapoint via `key`), 'crm', 'signal', 'ai' (prompt in `meta`), or 'score'.one of
lushacrmsignalaiscore conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
entity_idsarray- Entity ids to run when run_scope='specific'.
keystring- Data key/datapoint for a 'lusha' column (e.g. 'jobTitle', 'emailAddress').
metaobject- Extra column configuration (AI prompt, signal id, score config, etc.).
reason_for_invocationstring- 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.
run_scopestring- Run the column immediately after creation (defaults to 'none').one of
allmissingspecificnone
lushamcp_table_add_entitiesAdd known Lusha entity ids (contacts or companies) to a Workspace table; duplicates are deduped.WriteTable Add Entities
Add known Lusha entity ids (contacts or companies) to a Workspace table; duplicates are deduped.
Inputs
entity_idsarrayrequired- Lusha entity ids to add (deduped automatically). Up to 500 per call.
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
company_idsarray- Contacts tables only: lushaCompanyId per contact, index-aligned with entity_ids, so the workspace can enrich the contact (person + company pair). Ignored for companies tables.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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_table_createCreate an empty Workspace table (contacts or companies) to collect and enrich saved records.WriteTable Create
Create an empty Workspace table (contacts or companies) to collect and enrich saved records.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies namestringrequired- Table name (1-255 chars).
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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.
visibilitystring- Table visibility: 'private' (default) or 'shared' with the account.one of
privateshared
lushamcp_table_run_columnRun (populate) a Workspace table column across all, missing-only, or specific rows.WriteTable Run Column
Run (populate) a Workspace table column across all, missing-only, or specific rows.
Inputs
column_idstringrequired- Column id to run (from table_list_columns).
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies run_scopestringrequired- Which rows to run: 'all', 'missing', or 'specific' (requires entity_ids).one of
allmissingspecific table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
entity_idsarray- Entity ids to run when run_scope='specific'.
reason_for_invocationstring- 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_table_updateRename a Workspace table, change its visibility, or archive/unarchive it.WriteTable Update
Rename a Workspace table, change its visibility, or archive/unarchive it.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
archivedboolean- Archive (true) or unarchive (false) the table.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
namestring- New table name (1-255 chars).
reason_for_invocationstring- 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.
visibilitystring- Table visibility: 'private' (default) or 'shared' with the account.one of
privateshared
lushamcp_table_deletePermanently delete a Workspace table and its rows/columns.DestructiveTable Delete
Permanently delete a Workspace table and its rows/columns.
Inputs
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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_table_remove_columnRemove a non-default column from a Workspace table.DestructiveTable Remove Column
Remove a non-default column from a Workspace table.
Inputs
column_idstringrequired- Column id to remove (from table_list_columns).
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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_table_remove_entitiesRemove rows (by Lusha entity id) from a Workspace table.DestructiveTable Remove Entities
Remove rows (by Lusha entity id) from a Workspace table.
Inputs
entity_idsarrayrequired- Lusha entity ids to remove. Up to 500 per call.
entity_typestringrequired- Which Lusha entity the table holds: 'contacts' or 'companies'. Routes the call to /v3/contacts/* or /v3/companies/*; a table only ever holds one entity type.one of
contactscompanies table_idstringrequired- Target Workspace table id (UUID). Resolve it from table_list or a create response.
conversation_idstring- 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.
emailstring- Owner email: the user in the account that owns the table (the API resolves it to a userId). Needed only when the credential has no associated user, such as an API key that does not resolve to a specific user. With OAuth, or an API key already scoped to a user, the caller's own userId identifies the owner and email can be omitted; it may still be passed to act on behalf of another owner.
reason_for_invocationstring- 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.
No tools match.