Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Lusha MCP connector

API KeyCRM & SalesMarketingAI

Connect 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

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. 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>
  3. Register your Lusha MCP credentials with Scalekit so it can authenticate requests on your behalf. You do this once per environment.

    Dashboard setup steps

    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.

    1. Get your Lusha API key

      • Sign in to Lusha and go to API & connectorsManage API Keys.
      • Click + Create new Key to generate a new key, or copy the key value from an existing entry.

      Lusha API Hub showing the Manage API Keys tab with an existing key and a Create new Key button

    2. Create a connection in Scalekit

      • In Scalekit dashboard, go to AgentKitConnectionsCreate Connection. Find Lusha MCP and click Create.
      • Note the Connection name — you will use this as connection_name in your code (e.g., lushamcp).
      • Click Save.
    3. 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
      • 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 input
      const lushaApiKey = getUserLushaApiKey(); // retrieve from your secure store
      await scalekit.actions.upsertConnectedAccount({
      connectionName: 'lushamcp',
      identifier: 'user_123',
      credentials: {
      username: lushaApiKey,
      },
      });
  4. 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.actions
    const connector = 'lushamcp'
    const identifier = 'user_123'
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'lushamcp_contacts_search',
    toolInput: {},
    })
    console.log(result)

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

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.

NameTypeRequiredDescription
conversation_idstringoptionalConversation 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_invocationstringoptionalBrief 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.

NameTypeRequiredDescription
seedsobjectrequiredSeed companies to find lookalikes for. Total unique identifiers across both arrays must be 5-100.
conversation_idstringoptionalConversation 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.
dedupeSessionIdstringoptionalOpaque 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.
excludeobjectoptionalOptional 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.
limitintegeroptionalNumber of results per call (1-100). Defaults to 25 when omitted.
reason_for_invocationstringoptionalBrief 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.

NameTypeRequiredDescription
seedsobjectrequiredSeed contacts to find lookalikes for. Total unique identifiers across all arrays must be 5-100.
conversation_idstringoptionalConversation 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.
dedupeSessionIdstringoptionalOpaque 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.
excludeobjectoptionalOptional 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.
limitintegeroptionalNumber of results per call (1-50). Defaults to 25 when omitted.
reason_for_invocationstringoptionalBrief 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.

NameTypeRequiredDescription
idsarrayrequiredLusha 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_idstringoptionalConversation 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_invocationstringoptionalBrief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only.
revealarrayoptionalCompany 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.

NameTypeRequiredDescription
typestringrequiredType of Lusha company filter to resolve. Large result types (naics, sics) return all available values; pass 'q' to narrow names, locations, and technologies.
conversation_idstringoptionalConversation 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.
qstringoptionalNarrowing query. Required for: names, locations, technologies. Ignored for other types.
reason_for_invocationstringoptionalBrief 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_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.

NameTypeRequiredDescription
idsarrayrequiredLusha 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_idstringoptionalConversation 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_invocationstringoptionalBrief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only.
revealarrayoptionalContact 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.

NameTypeRequiredDescription
typestringrequiredType of Lusha contact filter to resolve.
conversation_idstringoptionalConversation 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.
locationSearchTextstringoptionalNarrowing text for location-based searches. Required when type='locations'.
reason_for_invocationstringoptionalBrief 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_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.

NameTypeRequiredDescription
conversation_idstringoptionalConversation 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_invocationstringoptionalBrief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only.
targetstringoptionalTarget 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.

NameTypeRequiredDescription
companyIdsarrayrequiredLusha 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_idstringoptionalConversation 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.
filtersobjectoptionalOptional filters narrowing news/hiring company signal results. Pair with 'riskNews', 'commercialActivityNews', etc. (newsEventTypes) and 'surgeInHiringByDepartment' / 'surgeInHiringByLocation' (hiringByDepartments / hiringByLocations).
maxResultsPerSignalintegeroptionalMaximum number of signal instances per signal type per company (1-100). Defaults to 10 when omitted.
reason_for_invocationstringoptionalBrief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only.
signalsarrayoptionalDeprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release.
signalTypesarrayoptionalCompany 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.
startDatestringoptionalStart 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.

NameTypeRequiredDescription
conversation_idstringoptionalConversation 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.
filterTypestringoptionalOptional. 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').
querystringoptionalSearch text. Required when filterType is 'hiringByLocations' (locations are not enumerable). Not supported for other filterTypes or when filterType is omitted.
reason_for_invocationstringoptionalBrief 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.

NameTypeRequiredDescription
conversation_idstringoptionalConversation 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_invocationstringoptionalBrief 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.

NameTypeRequiredDescription
contactIdsarrayrequiredLusha 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_idstringoptionalConversation 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.
maxResultsPerSignalintegeroptionalMaximum number of signal instances per signal type per contact (1-100). Defaults to 10 when omitted.
reason_for_invocationstringoptionalBrief explanation of why you chose this tool for the current task. Optional audit field; max 500 characters (longer values are truncated). Plain text only.
signalsarrayoptionalDeprecated: use 'signalTypes'. Kept for backward compatibility; will be removed in a future release.
signalTypesarrayoptionalContact 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.
startDatestringoptionalStart 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.