Lemlist MCP connector
OAuth 2.1/DCR MarketingCRM & SalesConnect to Lemlist MCP. Manage outbound sales campaigns, leads, email sequences, and LinkedIn outreach from your AI workflows.
Lemlist 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> -
Authorize and make your first call
Section titled “Authorize and 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 = 'lemlistmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Lemlist MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'lemlistmcp_check_domain_health',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 = "lemlistmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Lemlist MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="lemlistmcp_check_domain_health",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:
- Readiness validate campaign — Validate that a campaign is ready to launch by checking step content, sender configuration, DNS health, and daily limits
- Update settings, sequence step, lead variables — Update settings for a campaign or warmup mailbox entity
- Account test email, disconnect email, connect email — Test SMTP/IMAP connectivity of an email account
- State set campaign — Start, pause, archive, or unarchive a campaign to change its running state
- Senders set campaign — Assign team members as senders for a campaign’s outreach messages
- Send message — Send a message to a contact or lead via email, LinkedIn, WhatsApp, or SMS from the Lemlist inbox
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.
lemlistmcp_add_contacts_to_list
#
Add existing CRM contacts to a contact list by list ID. 2 params
Add existing CRM contacts to a contact list by list ID.
contactIds array required Contact IDs to add to the list (max 1,000) listId string required Target contact list ID in clt_xxx format. Get valid IDs from get_contact_lists. lemlistmcp_add_leads_to_campaign
#
Add one or more leads (max 100) to a campaign. Each lead requires at least one identifying field such as email, first name, last name, or company name. 7 params
Add one or more leads (max 100) to a campaign. Each lead requires at least one identifying field such as email, first name, last name, or company name.
campaignId string required The campaign ID (starts with cam_) leads array required Leads to add (1..100). Each lead must have at least one identifying field. deduplicate boolean optional Avoid duplicates across campaigns (default: false). When true, existing leads in OTHER campaigns are reported as outcome="skippedDuplicateCrossCampaign". findEmail boolean optional ⚠️ COSTS CREDITS per lead: Find email address from other lead data (LinkedIn, name, company) findPhone boolean optional ⚠️ COSTS CREDITS per lead: Find phone number from other lead data linkedinEnrichment boolean optional ⚠️ COSTS CREDITS per lead: Enrich each lead with LinkedIn profile data (job title, company info, etc.) verifyEmail boolean optional ⚠️ COSTS CREDITS per lead: Verify if the email address is valid and deliverable lemlistmcp_add_sequence_step
#
Add a step to an existing campaign sequence. Use only for modifying already-created campaigns — not for initial campaign creation. 19 params
Add a step to an existing campaign sequence. Use only for modifying already-created campaigns — not for initial campaign creation.
campaignId string required Campaign ID (cam_xxx) delay number required Days to wait after previous step. Must be 0 for "sendToAnotherCampaign" (the lemlist API does not accept a delay for this type, transfer is immediate). sequenceId string required Sequence ID (seq_xxx) userConfirmed boolean required Must be true after user confirms altMessage string optional Alternative message variation for "linkedinSend" steps (used as second-attempt content when applicable). conditionKey string optional Condition to check (REQUIRED when type is "conditional"). E.g. emailsOpened, linkedinInviteAccepted. delayType string optional REQUIRED for all conditional steps. "within" = must happen within delay days, "waitUntil" = wait indefinitely. For field-check conditions (hasEmailAddress, hasLinkedinUrl, etc.), use "within" with delay 0. emailStatusFilter array optional Only for hasEmailAddress condition. Filter by email verification status. E.g. ["deliverable"] to only match leads with deliverable email. Omit to check if any email exists. index number optional Zero-based position where to insert the step (0 = first). Omit to append at the end. Use to insert warm-up steps before an existing step (e.g. Like + Comment before an Invite). message string optional Message content (REQUIRED when type is "email", "linkedinSend", "whatsappMessage" or "sms"; OPTIONAL but recommended for "linkedinInvite"). For emails: the HTML body. For LinkedIn/WhatsApp/SMS/tasks: the message text. method string optional REQUIRED when type="api". HTTP method (GET or POST) used by the webhook call. Limited to GET/POST to stay iso with the lemlist UI editor. recordMode string optional linkedinVoiceNote only: "ai" generates audio from text via ElevenLabs (user adds the text after); "manual" (default) requires user-recorded audio after step creation. scoreComparator string optional Only for hasScore condition. "$gte" = score is above or equal to threshold, "$lt" = score is below threshold. Defaults to "$gte". scoreThreshold number optional Only for hasScore condition. Score threshold value (0-100). Defaults to 80. subject string optional Email subject line. Required for the first email; omit for follow-ups to send as reply thread. Supports Liquid syntax: {{ firstName }}, {% if condition %}...{% endif %} targetCampaignId string optional REQUIRED when type is "sendToAnotherCampaign". Target campaign ID (cam_xxx) the lead is moved to. Must belong to the same team as the parent campaign and not be archived. Avoid cycles (A -> B -> A). title string optional Task title (for manual/phone steps). Short label displayed in the review UI. type string optional Type of step. Use "conditional" for branching based on lead behavior, "sendToAnotherCampaign" to move a lead to another campaign, "api" to fire an outbound HTTP webhook (provide method and url). url string optional REQUIRED when type="api". Webhook URL fired during sequence execution. Supports Liquid templating against lead variables (e.g. https://example.com/leads/{{ _id }}). For POST, the request body is automatically the lead data; custom bodies and custom headers are not supported. lemlistmcp_add_unsubscribe
#
Add email to unsubscribe blocklist. Blocks all future campaign sends. Use delete_unsubscribe to reverse. 1 param
Add email to unsubscribe blocklist. Blocks all future campaign sends. Use delete_unsubscribe to reverse.
email string required The email address to add to the unsubscribe list lemlistmcp_bulk_enrich_data
#
Enrich up to 500 contacts with additional data in a single call. Returns a dataRef for polling results asynchronously. 1 param
Enrich up to 500 contacts with additional data in a single call. Returns a dataRef for polling results asynchronously.
items array required Array of enrichment items (max 500) lemlistmcp_bulk_get_enrichment_results
#
Poll the results of one or more enrichment jobs. Provide a dataRef from bulk_enrich_data or a nextPollRef from a previous poll. 2 params
Poll the results of one or more enrichment jobs. Provide a dataRef from bulk_enrich_data or a nextPollRef from a previous poll.
dataRef string optional dataRef from bulk_enrich_data (first poll) OR nextPollRef from a previous poll result (subsequent polls). Mutually exclusive with enrichmentIds. enrichmentIds array optional Array of enrichment IDs to poll (1-500, enr_xxx format). Mutually exclusive with dataRef. lemlistmcp_call_api
#
Make a direct call to the Lemlist API using a specified endpoint and method. Requires load_skill('api-reference') to be called first in the session. 4 params
Make a direct call to the Lemlist API using a specified endpoint and method. Requires load_skill('api-reference') to be called first in the session.
endpoint string required API endpoint path starting with /api/ method string required HTTP method body object optional Request body for POST/PUT/PATCH (optional) confirmed boolean optional Set to true after user confirms a write/delete action lemlistmcp_check_domain_health
#
Check DNS health for email sending domains (MX, SPF, DMARC, blacklists). Returns score (0-100), per-check status, and DNS fix records. 3 params
Check DNS health for email sending domains (MX, SPF, DMARC, blacklists). Returns score (0-100), per-check status, and DNS fix records.
domain string optional Domain to check (e.g. example.com). If omitted, checks domains from team members. mailboxId string optional Mailbox ID to check DNS for. scope string optional Check scope: user (current user) or team (all members). Default: team. lemlistmcp_connect_email_account
#
Connect a custom SMTP/IMAP email account for sending and receiving emails in Lemlist campaigns. 12 params
Connect a custom SMTP/IMAP email account for sending and receiving emails in Lemlist campaigns.
imap_host string required IMAP server hostname (e.g., "imap.company.com") imap_login string required IMAP authentication login (usually the email address) imap_password string required IMAP authentication password or app password imap_port number required IMAP server port (typically 993 for TLS) sender_email string required Email address to send from (e.g., "john@company.com") sender_name string required Display name for the sender (e.g., "John Doe") smtp_host string required SMTP server hostname (e.g., "smtp.company.com") smtp_login string required SMTP authentication login (usually the email address) smtp_password string required SMTP authentication password or app password smtp_port number required SMTP server port (typically 587 for TLS or 465 for SSL) imap_secure boolean optional Optional: Use TLS for IMAP connection (default: true) smtp_secure boolean optional Optional: Use TLS for SMTP connection (default: true) lemlistmcp_create_campaign_from_proposal
#
Create a campaign from a previously validated sequence proposal. Requires a proposal ID generated by propose_sequence. 5 params
Create a campaign from a previously validated sequence proposal. Requires a proposal ID generated by propose_sequence.
sequenceItemId string required Workspace item id of the validated sequence (from propose_sequence) userConfirmed boolean required Must be true after the user explicitly approves campaign creation emoji string optional Optional emoji for the campaign name string optional Campaign name (defaults to the sequence proposal name) timezone string optional Timezone for the campaign (e.g. Europe/Paris) lemlistmcp_create_campaign_with_sequence
#
Create campaign. If subject AND body are provided, creates the first email step. If omitted, creates an empty sequence (use add_sequence_step to add a condition or any step type as the first step). Call add_sequence_step for each additional step. Supports Liquid syntax. 5 params
Create campaign. If subject AND body are provided, creates the first email step. If omitted, creates an empty sequence (use add_sequence_step to add a condition or any step type as the first step). Call add_sequence_step for each additional step. Supports Liquid syntax.
name string required The name of the campaign body string optional Email body content for the first email (supports Liquid syntax). Omit both subject and body to create campaign without a first step. emoji string optional Optional emoji for the campaign (e.g., 🚀, 💎, 🔥) subject string optional Subject line for the first email (supports Liquid syntax). Omit both subject and body to create campaign without a first step (e.g. when first step is a condition). timezone string optional Timezone for the campaign (e.g., Europe/Paris, America/New_York) lemlistmcp_create_contact_list
#
Create a new static contact list in the CRM to organize and group contacts. 1 param
Create a new static contact list in the CRM to organize and group contacts.
name string required Name of the contact list to create (max 200 characters) lemlistmcp_create_or_update_company
#
Create a new company in the user's Lemlist company database, or update an existing one (upsert). Requires both a name AND a domain. If a company with the same domain, LinkedIn URL, or Sales Navigator URL already exists, it will be updated instead of creating a duplicate. Returns the company data and whether it was created or updated. 8 params
Create a new company in the user's Lemlist company database, or update an existing one (upsert). Requires both a name AND a domain. If a company with the same domain, LinkedIn URL, or Sales Navigator URL already exists, it will be updated instead of creating a duplicate. Returns the company data and whether it was created or updated.
domain string required Company domain (required) name string required Company name (required) companyOwner string optional Company owner email or user ID (usr_xxx format) industry string optional Company industry linkedinUrl string optional Company LinkedIn profile URL linkedinUrlSalesNav string optional Company LinkedIn Sales Navigator URL (used as an additional matching key for upsert) location string optional Company location or address picture string optional Company logo URL lemlistmcp_create_or_update_contact
#
Create a new contact in the user's Lemlist contact database, or update an existing one (upsert). Requires at least an email OR linkedinUrl as identifier. If a contact with the same email or LinkedIn URL already exists, it will be updated instead of creating a duplicate. Returns the contact data and whether it was created or updated. Use search_contacts first to check if the contact already exists. 14 params
Create a new contact in the user's Lemlist contact database, or update an existing one (upsert). Requires at least an email OR linkedinUrl as identifier. If a contact with the same email or LinkedIn URL already exists, it will be updated instead of creating a duplicate. Returns the contact data and whether it was created or updated. Use search_contacts first to check if the contact already exists.
companyDomain string optional Company domain to link the contact to a company (alternative to companyId) companyId string optional Company ID to associate the contact with companyLinkedinUrl string optional Company LinkedIn URL to link the contact to a company (alternative to companyId) contactOwner string optional Contact owner email or user ID (usr_xxx format) email string optional Contact email address (required if linkedinUrl is not provided) firstName string optional Contact first name jobDescription string optional Contact job description jobTitle string optional Contact job title lastName string optional Contact last name linkedinUrl string optional Contact LinkedIn profile URL (required if email is not provided) phone string optional Contact phone number picture string optional Contact profile picture URL salesnavUrl string optional Contact LinkedIn Sales Navigator URL (used as an additional matching key for upsert) timezone string optional Contact timezone lemlistmcp_create_webhook
#
Create a webhook for real-time campaign activity notifications. Max 200 per account, no duplicate URLs. Filter by activity type (emailsSent, emailsOpened, emailsReplied, etc.) and/or campaignId. 5 params
Create a webhook for real-time campaign activity notifications. Max 200 per account, no duplicate URLs. Filter by activity type (emailsSent, emailsOpened, emailsReplied, etc.) and/or campaignId.
targetUrl string required The webhook URL to call (must start with http:// or https://) campaignId string optional Optional: Filter to call webhook only for specific campaign (e.g., "cam_xxx") isFirst boolean optional Optional: Call webhook only for first activity of this type type string optional Optional: Filter to call webhook only for specific activity types (e.g., "emailsReplied", "emailsSent") zapId string optional Optional: Zapier integration ID lemlistmcp_delete_company
#
Permanently delete a company record from Lemlist. Only removes the Lemlist record — does not affect any connected CRM. 3 params
Permanently delete a company record from Lemlist. Only removes the Lemlist record — does not affect any connected CRM.
companyId string required Lemlist company ID to delete (cpn_xxx). userConfirmed boolean required REQUIRED: Must be true. Confirms user explicitly approved this deletion. Only set to true after user says yes. force boolean optional When true, detaches any attached contacts (unsets their companyId) before deleting the company. lemlistmcp_delete_memory
#
Delete a stored memory entry by topic so it is no longer recalled in future conversations. 2 params
Delete a stored memory entry by topic so it is no longer recalled in future conversations.
topic string required The topic key to delete (e.g. "preferred_tone") scope string optional Scope: "user" (default) or "team" lemlistmcp_delete_sequence_step
#
Delete a step from a campaign sequence. Use only when removing a step added by mistake — requires user confirmation. 4 params
Delete a step from a campaign sequence. Use only when removing a step added by mistake — requires user confirmation.
campaignId string required The campaign ID (required for status verification) sequenceId string required The sequence ID (starts with seq_) stepId string required The step ID to delete (starts with stp_) userConfirmed boolean required REQUIRED: Must be true. Confirms user explicitly approved this deletion. Only set to true after user says yes. lemlistmcp_delete_unsubscribe
#
Remove an email address from the unsubscribe list, allowing it to be contacted again in future campaigns. 2 params
Remove an email address from the unsubscribe list, allowing it to be contacted again in future campaigns.
email string required The email address to remove from the unsubscribe list confirmed boolean optional NEVER set this to true on first call. Only set to true after the user has explicitly confirmed the action (e.g. via ask_question). lemlistmcp_delete_watch_list
#
Delete a watch list and immediately stop processing signals for it. 2 params
Delete a watch list and immediately stop processing signals for it.
watchListId string required The watch list ID to delete (wat_xxx format) confirmed boolean optional Set to true only after the user has explicitly confirmed the deletion (e.g. via ask_question). lemlistmcp_delete_webhook
#
Delete a webhook from your Lemlist account, stopping all notifications to that endpoint immediately. 2 params
Delete a webhook from your Lemlist account, stopping all notifications to that endpoint immediately.
webhookId string required The webhook ID to delete (starts with hoo_) confirmed boolean optional Set to true only after the user has explicitly confirmed the deletion (e.g. via ask_question). lemlistmcp_disconnect_email_account
#
Disconnect email account. Stops sending immediately. Cannot be undone. Use get_user_channels to find account ID. 2 params
Disconnect email account. Stops sending immediately. Cannot be undone. Use get_user_channels to find account ID.
emailAccountId string required The email account ID to disconnect (starts with usm_) confirmed boolean optional Set to true only after the user has explicitly confirmed the disconnection (e.g. via ask_question). lemlistmcp_enrich_lead
#
Enrich existing campaign lead. ASYNC — poll with bulk_get_enrichment_results (pass enrichmentIds: [id]). For non-campaign contacts use bulk_enrich_data. ALL options COST CREDITS. 5 params
Enrich existing campaign lead. ASYNC — poll with bulk_get_enrichment_results (pass enrichmentIds: [id]). For non-campaign contacts use bulk_enrich_data. ALL options COST CREDITS.
leadId string required The lead ID to enrich (starts with lea_) findEmail boolean optional ⚠️ COSTS CREDITS: Find email from lead data findPhone boolean optional ⚠️ COSTS CREDITS: Find phone number linkedinEnrichment boolean optional ⚠️ COSTS CREDITS: Enrich with LinkedIn data verifyEmail boolean optional ⚠️ COSTS CREDITS: Verify lead email lemlistmcp_get_campaign_details
#
Get configuration and settings for ONE campaign (timezone, emoji, labels, senders, sequences). For metrics use get_campaigns_stats, for email content use get_campaign_sequences. 1 param
Get configuration and settings for ONE campaign (timezone, emoji, labels, senders, sequences). For metrics use get_campaigns_stats, for email content use get_campaign_sequences.
campaignId string required The campaign ID (cam_xxx format) lemlistmcp_get_campaign_sequences
#
Get the email sequences and their content (subject, body) for a specific campaign. Useful for reviewing copywriting and email flow. 1 param
Get the email sequences and their content (subject, body) for a specific campaign. Useful for reviewing copywriting and email flow.
campaignId string required The campaign ID (cam_xxx format) lemlistmcp_get_campaigns
#
List campaigns with optional search, filtering by labels, and sorting. 7 params
List campaigns with optional search, filtering by labels, and sorting.
createdBy string optional Filter by creator user ID (usr_xxx format). Use your own user ID from Context to find campaigns you created. labels array optional Filter by labels/tags. OR semantics: returns campaigns matching at least one. Accepts label names ("q2") or IDs ("lab_xxx") — both can be mixed. limit number optional Maximum number of campaigns to return (default: 20) offset number optional Number of campaigns to skip for pagination (default: 0). Use with limit to paginate through all campaigns. search string optional Search campaigns by name (case-insensitive) sortOrder string optional Sort by creation date (default: newest first) status string optional Filter by status. OMIT this parameter to get ALL campaigns regardless of status. lemlistmcp_get_campaigns_reports
#
Get lifetime stats for MULTIPLE campaigns in one call. Returns metadata, sender info, and 65+ metrics per campaign. No date filtering - for time-based analysis use get_campaigns_stats. 1 param
Get lifetime stats for MULTIPLE campaigns in one call. Returns metadata, sender info, and 65+ metrics per campaign. No date filtering - for time-based analysis use get_campaigns_stats.
campaignIds array required Array of campaign IDs to get reports for (e.g., ["cam_xxx", "cam_yyy"]) lemlistmcp_get_campaigns_stats
#
Get detailed stats for one or more campaigns including lead funnel metrics, message counts, and per-step breakdowns. 7 params
Get detailed stats for one or more campaigns including lead funnel metrics, message counts, and per-step breakdowns.
campaignIds array required Array of campaign IDs (cam_xxx format) ABSelected string optional Optional: Filter by A/B test variant channels array optional Optional: Filter stats by channels (mirrors the UI dropdown filter). When provided, both top-level totals and messageMetrics.perChannel are restricted to the requested channels. Omit to get the full breakdown across all 5 channels. endDate string optional End date. Either a calendar day "YYYY-MM-DD" (interpreted as end-of-day in the resolved timezone) or a full ISO 8601 datetime with offset (used as-is). Omit for all-time stats. sendUser string optional Optional: Filter by send user (format: usr_xxx|email@example.com) startDate string optional Start date. Either a calendar day "YYYY-MM-DD" (interpreted as start-of-day in the resolved timezone) or a full ISO 8601 datetime with offset like "2026-04-01T00:00:00+05:30" / "2026-04-01T00:00:00Z" (used as-is, the timezone arg is ignored for that bound). Omit for all-time stats. timezone string optional IANA timezone (e.g. "Asia/Kolkata", "America/New_York") used to interpret startDate/endDate ONLY when they are calendar days (YYYY-MM-DD). Ignored for full ISO 8601 datetimes. If omitted, falls back to the calling user's profile.timezone (if set), then to Europe/Paris. To exactly mirror what the Lemlist UI displays, prefer passing the same ISO 8601 strings the UI uses (capture from the campaignReportsTimePeriod session). lemlistmcp_get_contact_lists
#
Retrieve available CRM contact lists with optional search filtering. 1 param
Retrieve available CRM contact lists with optional search filtering.
search string optional Filter lists by name (case-insensitive) lemlistmcp_get_inbox_conversation
#
Get the full conversation thread for a specific contact across all channels (email, LinkedIn, WhatsApp, SMS). 4 params
Get the full conversation thread for a specific contact across all channels (email, LinkedIn, WhatsApp, SMS).
contactId string required The contact ID (ctc_xxx format) to get the conversation thread for. Do not use leadId or any other ID type. limit number optional Number of activities per page (default: 20, max: 50) markAsRead boolean optional Whether to mark the conversation as read (default: false). Note: this mutates state. page number optional Page number for pagination (default: 1) lemlistmcp_get_inbox_conversations
#
List inbox conversations with contact info and last message preview, with optional filtering by list type. 5 params
List inbox conversations with contact info and last message preview, with optional filtering by list type.
limit number optional Number of conversations per page (default: 20, max: 50) listId string optional Which inbox list to fetch: myConversations (default), unRead, favorites, snoozed, archived, sentOnly, teamConversations page number optional Page number for pagination (default: 1) search string optional Search query to filter conversations by contact name or email userId string optional The user ID (usr_xxx format). Optional — defaults to the current authenticated user if omitted. lemlistmcp_get_lemleads_filters
#
Get available filters for People Database searches. Call this FIRST before lemleads_search or display_leads/display_companies. Returns filter IDs with valid values. 0 params
Get available filters for People Database searches. Call this FIRST before lemleads_search or display_leads/display_companies. Returns filter IDs with valid values.
lemlistmcp_get_settings
#
Retrieve settings for a campaign or warmup mailbox entity. 2 params
Retrieve settings for a campaign or warmup mailbox entity.
type string required The type of settings to retrieve. id string optional Entity ID. Required for "campaign" (cam_xxx) and "lemwarm" (usm_xxx). Ignored for "sending" and "team". lemlistmcp_get_statistics
#
Retrieve statistics for one or more entities of the same type (lemwarm, campaign, lead, etc.). 3 params
Retrieve statistics for one or more entities of the same type (lemwarm, campaign, lead, etc.).
ids array required For "lemwarm": mailbox IDs (usm_xxx) — same ids used with get_settings type="lemwarm". 1-20 items. type string required The type of statistics to retrieve. Only "lemwarm" is supported for now. days number optional Lookback window in days (1-60). Defaults to 30. Applied to every id. lemlistmcp_get_team_info
#
Get basic team info (ID, name, plan, credits remaining) and minimal identity of the caller (current user id + email). For full user details call get_users with userIds: ["me"] for the caller, userIds: ["all"] for the full member list, or userIds: ["usr_xxx", ...] for one or more team members. 0 params
Get basic team info (ID, name, plan, credits remaining) and minimal identity of the caller (current user id + email). For full user details call get_users with userIds: ["me"] for the caller, userIds: ["all"] for the full member list, or userIds: ["usr_xxx", ...] for one or more team members.
lemlistmcp_get_team_overview
#
Account summary: campaign count by status. Use get_campaigns for the full list with names and details. 0 params
Account summary: campaign count by status. Use get_campaigns for the full list with names and details.
lemlistmcp_get_unsubscribes
#
List unsubscribed emails with pagination. Use delete_unsubscribe to re-enable. 2 params
List unsubscribed emails with pagination. Use delete_unsubscribe to re-enable.
limit number optional Maximum number of unsubscribes to return offset number optional Number of unsubscribes to skip (for pagination) lemlistmcp_get_user_channels
#
Check connected sending channels (email, LinkedIn, WhatsApp). Returns connection status, plan availability, and accounts. WhatsApp requires separate addon purchase. Use show_connect_channel to guide setup (one channel at a time). 0 params
Check connected sending channels (email, LinkedIn, WhatsApp). Returns connection status, plan availability, and accounts. WhatsApp requires separate addon purchase. Use show_connect_channel to guide setup (one channel at a time).
lemlistmcp_get_users
#
Retrieve team member details by user IDs, or pass 'all' to fetch all team members. 1 param
Retrieve team member details by user IDs, or pass 'all' to fetch all team members.
userIds array required List of userIds to fetch. Each item is "all" (every team member, lightweight), "me" (caller, full profile), or a usr_xxx id (full profile). 1-20 items. lemlistmcp_get_webhooks
#
List all configured webhooks. Returns array with _id, targetUrl, createdAt, type, campaignId, isFirst. 0 params
List all configured webhooks. Returns array with _id, targetUrl, createdAt, type, campaignId, isFirst.
lemlistmcp_lemleads_search
#
Search the People Database (450M+ B2B contacts) by people or company. Returns results with total count and pagination. 8 params
Search the People Database (450M+ B2B contacts) by people or company. Returns results with total count and pagination.
filters array required Array of filter objects from get_lemleads_filters. Each filter MUST have filterId, in (array), and out (array). mode string required MUST be "people" for contacts or "companies" for organizations. Do NOT use "leads". description string optional Prose describing the target company as if you were writing ITS "About us" section (companies mode only, max 1000 chars per string). MUST be 2-4 full sentences each, NOT a keyword list. The embedding index was built on real company descriptions, so keyword-stacked strings ("SaaS treasury cash management tool") score poorly. Write complete sentences: who they are, who they serve, what they do, how. GOOD: "We build treasury management software for mid-market finance teams. Our platform helps CFOs and treasurers automate cash forecasting, consolidate bank accounts, and optimize liquidity across entities." BAD: "SaaS software solution for treasury management cash management". Accepts (a) a single string for the simple case, or (b) an array of up to 3 strings covering different angles (e.g. anchor + product + customer/problem). Multi-angle triggers parallel vector searches with RRF fusion — recommended for niche verticals where one phrasing risks missing matches. Combine with keywords (grouped) and country/headcount filters for narrowing. excludes array optional Fields to exclude from results keywords string optional Optional hybrid BM25 + vector terms (companies mode only). Pass as GROUPS whenever possible — each group is a category of signal, and the document must match at least one term per group (AND-of-ORs). Grouping is how you force "editor, not consultancy": one group for the domain, one for the product-type marker. Example for "French SaaS treasury editors": [["treasury management", "cash forecasting", "gestion de trésorerie", "prévisions de trésorerie"], ["software", "SaaS", "logiciel", "platform", "plateforme"]]. A flat string[] is still accepted as a single implicit group (all terms OR-matched, any one hit passes). Keep groups small (2-5 terms each), max 5 groups. page number optional 1-based page index (default: 1) seed string optional Random seed for consistent ordering. Must be a STRING like "abc123", not a number. size number optional Results per page (default: 10, max: 100) lemlistmcp_list_watch_lists
#
List watch lists for the current team with optional type, status, and pagination filters. 4 params
List watch lists for the current team with optional type, status, and pagination filters.
limit integer optional Max watch lists per page (default 50, max 100) page integer optional Page number (1-based, default 1) status string optional Comma-separated list of statuses to filter. Accepted values: active, inactive, draft, insufficient_credits, empty_crm_lists, error. Excludes soft-deleted by default. type string optional Comma-separated list of watch list types (e.g. "companyIsHiring,jobChange") lemlistmcp_load_skill
#
Load specialized guidance for a specific domain (e.g. campaign-builder, api-reference) to assist with complex tasks. 2 params
Load specialized guidance for a specific domain (e.g. campaign-builder, api-reference) to assist with complex tasks.
skillName string required Name of the skill to load section string optional Optional: specific reference section to load lemlistmcp_preview_sequence_update
#
SAFE READ-ONLY: Preview what would change in an email sequence step before applying modifications. Shows current vs proposed content and campaign status. Must call this before update_sequence_step. 5 params
SAFE READ-ONLY: Preview what would change in an email sequence step before applying modifications. Shows current vs proposed content and campaign status. Must call this before update_sequence_step.
campaignId string required Campaign ID (cam_xxx) sequenceId string required Sequence ID (seq_xxx) stepId string required Step ID (stp_xxx) newMessage string optional Proposed new message body newSubject string optional Proposed new subject line lemlistmcp_push_leads_to_contacts
#
Push leads from the People Database into your CRM contacts, optionally adding them to a contact list. 3 params
Push leads from the People Database into your CRM contacts, optionally adding them to a contact list.
profileIds array required People Database lead IDs to push to contacts (max 1,000) enrichFeatures array optional ⚠️ COSTS CREDITS: Enrichment features to apply when pushing leads listId string optional Target contact list ID in clt_xxx format. Omit to push to "all contacts". Get valid IDs from get_contact_lists — never invent or pass aliases like "all". lemlistmcp_recall_memory
#
Retrieve stored memories from previous conversations to restore context about user preferences or past decisions. 1 param
Retrieve stored memories from previous conversations to restore context about user preferences or past decisions.
topic string optional Exact topic key to retrieve (e.g. "preferred_tone"). Omit to retrieve all memories. lemlistmcp_report_unsupported_case
#
Report a feature request or unsupported use case to the product team. Use this ONLY when the user's request is something lemlist should support but the copilot cannot do yet, AND the user has agreed to have their feedback reported. Do NOT use for off-topic requests unrelated to lemlist. Always provide inputs in English, translate if needed. 2 params
Report a feature request or unsupported use case to the product team. Use this ONLY when the user's request is something lemlist should support but the copilot cannot do yet, AND the user has agreed to have their feedback reported. Do NOT use for off-topic requests unrelated to lemlist. Always provide inputs in English, translate if needed.
description string required What the user asked for that is not supported yet (MUST be in English) conversationContext string optional Brief summary of the conversation context leading to this request (MUST be in English) lemlistmcp_save_business_context
#
Save the user business context for future conversations. Use this after collecting company information from the user to remember it across conversations. 9 params
Save the user business context for future conversations. Use this after collecting company information from the user to remember it across conversations.
companyName string required Company name mainActivity string optional What the company does painPointsSolved array optional Pain points the company solves for customers shortDescription string optional Company and offering summary targetCompanySizes array optional Target sizes (1-10, 11-50, etc.) targetIndustries array optional Target industries targetJobTitles array optional Target job titles valueProposition string optional Main value proposition of the company websiteUrl string optional Website URL lemlistmcp_save_memory
#
Save a piece of information to persistent memory so it can be recalled in future conversations. 3 params
Save a piece of information to persistent memory so it can be recalled in future conversations.
content string required The information to remember (max 5000 chars, in the user language) topic string required Unique topic key in snake_case english (e.g. "preferred_tone", "icp_details", "campaign_naming") scope string optional Scope: "user" (default, personal) or "team" (shared with all team members) lemlistmcp_search_campaign_leads
#
Find leads in your campaigns by email, lead ID, or by listing all leads in a campaign. 5 params
Find leads in your campaigns by email, lead ID, or by listing all leads in a campaign.
campaignId string optional Campaign ID. Required when listing all leads (no email/id). Optional filter when searching by email/id. email string optional Lead email address to search for id string optional Lead ID to search for (alternative to email) limit number optional Max leads to return (default: 50, max: 100). offset number optional Pagination offset (default: 0). Use nextOffset from a previous result to load more. lemlistmcp_search_companies
#
Search your team's Lemlist companies. Returns a paginated list with each company's id, domain, name, owner, and a curated `crmSync` block describing how the record is synced to your active CRM (Hubspot, Salesforce, or Pipedrive). Use the `crmSyncStatus` filter to find companies in a specific sync state — most notably `unique_index_error_company` to list lemlist companies blocked from syncing because another lemlist company already occupies their CRM record. For each result in that state, look at `crmSync.errors[].metadata.alreadyExistingCompanyId` — that is the canonical lemlist company you should remap contacts to before deleting the duplicate (see `search_contacts` with companyId, then `delete_company`). 6 params
Search your team's Lemlist companies. Returns a paginated list with each company's id, domain, name, owner, and a curated `crmSync` block describing how the record is synced to your active CRM (Hubspot, Salesforce, or Pipedrive). Use the `crmSyncStatus` filter to find companies in a specific sync state — most notably `unique_index_error_company` to list lemlist companies blocked from syncing because another lemlist company already occupies their CRM record. For each result in that state, look at `crmSync.errors[].metadata.alreadyExistingCompanyId` — that is the canonical lemlist company you should remap contacts to before deleting the duplicate (see `search_contacts` with companyId, then `delete_company`).
crmSyncStatus string optional Filter by CRM sync status. Requires a CRM (Hubspot, Salesforce, Pipedrive) to be connected on the team — otherwise the call returns NO_CRM_CONNECTED. limit number optional Max companies per page (1-100, default 100). page number optional Page number (1-based, default 1). search string optional Free-text search on the company name (case insensitive, accent insensitive). sortBy string optional Sort field (default `createdAt`). sortOrder string optional Sort direction (default `desc`). lemlistmcp_search_contacts
#
Search or list your team's Lemlist contacts by name, email, contact list, or attached company. Returns matching contacts with their details (ID, name, email, phone, job title, company, campaign count). All filters are optional — calling the tool without any filter returns the paginated list of all contacts of the team (useful for discovery, e.g. obtaining a Record ID before associating it with another resource). Use this to find if a contact already exists in Lemlist before creating a new one. You can filter by a specific contact list using listId (get valid IDs from get_contact_lists first). Use notInAnyCampaign=true to find contacts that are not part of any campaign (orphan contacts). To list contacts attached to a given company, use companyId (cpn_xxx) or one of companyDomain / companyLinkedinUrl / companySalesnavUrl — only one company* filter at a time. URL/domain filters return an empty list if no company matches. For searching leads WITHIN campaigns, use search_campaign_leads instead. For prospecting NEW leads from the People Database, use lemleads_search instead. 10 params
Search or list your team's Lemlist contacts by name, email, contact list, or attached company. Returns matching contacts with their details (ID, name, email, phone, job title, company, campaign count). All filters are optional — calling the tool without any filter returns the paginated list of all contacts of the team (useful for discovery, e.g. obtaining a Record ID before associating it with another resource). Use this to find if a contact already exists in Lemlist before creating a new one. You can filter by a specific contact list using listId (get valid IDs from get_contact_lists first). Use notInAnyCampaign=true to find contacts that are not part of any campaign (orphan contacts). To list contacts attached to a given company, use companyId (cpn_xxx) or one of companyDomain / companyLinkedinUrl / companySalesnavUrl — only one company* filter at a time. URL/domain filters return an empty list if no company matches. For searching leads WITHIN campaigns, use search_campaign_leads instead. For prospecting NEW leads from the People Database, use lemleads_search instead.
companyDomain string optional Filter contacts by their company's website domain (resolved to a companyId). Empty list if no company matches. companyId string optional Filter contacts by attached lemlist company ID (cpn_xxx). Mutually exclusive with companyDomain/companyLinkedinUrl/companySalesnavUrl. companyLinkedinUrl string optional Filter contacts by their company's LinkedIn URL (resolved to a companyId). Empty list if no company matches. companySalesnavUrl string optional Filter contacts by their company's LinkedIn Sales Navigator URL (resolved to a companyId). Empty list if no company matches. email string optional Exact email address to search for (takes priority over search parameter) limit number optional Maximum number of contacts to return (1-100, default: 20) listId string optional Filter by contact list ID (clt_xxx format). Can be combined with search/email, or used alone to list all contacts in a list. Get valid IDs from get_contact_lists. notInAnyCampaign boolean optional When true, only returns contacts that are not part of any campaign. Can be used alone or combined with other filters. offset number optional Number of contacts to skip for pagination (default: 0) search string optional Free-text search: matches against contact full name or email address (min 2 chars, case-insensitive) lemlistmcp_search_help_center
#
Search the lemlist help center for official documentation and guides. Use this when you need to provide guidance on how to do something in lemlist that you cannot do directly via tools. Returns relevant help center articles with content excerpts and links. Do NOT use this for questions you can answer from context or tools. 1 param
Search the lemlist help center for official documentation and guides. Use this when you need to provide guidance on how to do something in lemlist that you cannot do directly via tools. Returns relevant help center articles with content excerpts and links. Do NOT use this for questions you can answer from context or tools.
query string required Search query in English using 1-3 keywords (e.g., "inbox rotation", "email provider", "signals") lemlistmcp_send_message
#
Send a message to a contact or lead via email, LinkedIn, WhatsApp, or SMS from the Lemlist inbox. 11 params
Send a message to a contact or lead via email, LinkedIn, WhatsApp, or SMS from the Lemlist inbox.
channel string required Channel to send through. message string required Message content (channel-specific format). sendUserId string required User ID sending the message (usr_xxx format). cc array optional channel="email": optional list of CC email addresses. contactId string optional Contact ID to send to. Required if leadId is not provided. from string optional channel="sms": sender phone number. leadId string optional Lead ID to send to. Alternative to contactId. sendUserEmail string optional channel="email": email address to send from. sendUserMailboxId string optional channel="email": mailbox ID (usm_xxx) to use for sending. sendUserWhatsappAccountId string optional channel="whatsapp": WhatsApp account ID (uwa_xxx) to use for sending. subject string optional channel="email": email subject line. lemlistmcp_set_campaign_senders
#
Assign team members as senders for a campaign's outreach messages. 2 params
Assign team members as senders for a campaign's outreach messages.
campaignId string required Campaign ID (cam_xxx format) senderIds array required Array of user IDs (usr_xxx format) to assign as senders. Get IDs from get_users (userIds: ["all"]). lemlistmcp_set_campaign_state
#
Start, pause, archive, or unarchive a campaign to change its running state. 3 params
Start, pause, archive, or unarchive a campaign to change its running state.
action string required "start" to launch the campaign, "pause" to pause a running campaign, "archive" to archive a campaign, "unarchive" to restore an archived campaign campaignId string required The campaign ID (cam_xxx format) userConfirmed boolean optional REQUIRED for action="start" and action="archive": Must be true. Confirms user explicitly approved the action. Not required for pause or unarchive. lemlistmcp_test_email_account
#
Test SMTP/IMAP connectivity of an email account. No actual email sent. Use get_user_channels to find account ID. 1 param
Test SMTP/IMAP connectivity of an email account. No actual email sent. Use get_user_channels to find account ID.
emailAccountId string required The email account ID to test (starts with usm_) lemlistmcp_update_lead
#
Update standard fields on an existing lead (firstName, lastName, jobTitle, companyName, email, phone, linkedinUrl, picture, timezone, jobDescription, companyDomain). Requires leadId + at least one field to update. For custom variables, use update_lead_variables instead. 12 params
Update standard fields on an existing lead (firstName, lastName, jobTitle, companyName, email, phone, linkedinUrl, picture, timezone, jobDescription, companyDomain). Requires leadId + at least one field to update. For custom variables, use update_lead_variables instead.
leadId string required The lead ID (starts with lea_) companyDomain string optional Lead company domain companyName string optional Lead company name email string optional Lead email address firstName string optional Lead first name jobDescription string optional Lead job description jobTitle string optional Lead job title lastName string optional Lead last name linkedinUrl string optional Lead LinkedIn profile URL phone string optional Lead phone number picture string optional Lead profile picture URL timezone string optional Lead timezone lemlistmcp_update_lead_variables
#
Set custom variables on an existing lead (upsert). Requires leadId + variables (key-value pairs of non-empty strings). Automatically handles both updating existing variables and adding new ones. IMPORTANT: Do NOT pass standard lead fields as variables — the following keys are FORBIDDEN and will be rejected: email, firstName, lastName, picture, phone, linkedinUrl, timezone, jobTitle, jobDescription, companyName, companyDomain. To update these fields, use the update_lead tool instead. Empty string values are rejected — omit the variable instead. 2 params
Set custom variables on an existing lead (upsert). Requires leadId + variables (key-value pairs of non-empty strings). Automatically handles both updating existing variables and adding new ones. IMPORTANT: Do NOT pass standard lead fields as variables — the following keys are FORBIDDEN and will be rejected: email, firstName, lastName, picture, phone, linkedinUrl, timezone, jobTitle, jobDescription, companyName, companyDomain. To update these fields, use the update_lead tool instead. Empty string values are rejected — omit the variable instead.
leadId string required The lead ID (starts with lea_) variables object required Custom variables as key-value pairs to set (e.g., {"comicFrame": "panel_3", "tone": "friendly"}). Values must be non-empty strings — omit the variable rather than passing an empty string. lemlistmcp_update_sequence_step
#
Update a step in an existing campaign sequence. Requires user confirmation for email or content step changes. 15 params
Update a step in an existing campaign sequence. Requires user confirmation for email or content step changes.
campaignId string required The campaign ID (required for status verification) sequenceId string required The sequence ID (starts with seq_) stepId string required The step ID to update (starts with stp_) userConfirmed boolean required REQUIRED: Must be true. Confirms user explicitly approved this change after seeing the preview. Only set to true after user says yes. conditionKey string optional New condition key (for conditional steps only) delay number optional New delay value in days delayType string optional New delay type for conditional steps. "within" = must happen within delay days, "waitUntil" = wait indefinitely. For field-check conditions, use "within" with delay 0. emailStatusFilter array optional Only for hasEmailAddress condition. Filter by email status: ["deliverable","risky","undeliverable","unverified"]. message string optional New email body content (for email steps, supports Liquid syntax) method string optional New HTTP method for "api" (webhook) steps. Limited to GET/POST to stay iso with the lemlist UI editor. Ignored on non-api steps. scoreComparator string optional Only for hasScore condition. "$gte" = score above or equal, "$lt" = score below. scoreThreshold number optional Only for hasScore condition. Score threshold (0-100). subject string optional New subject line (supports Liquid syntax: {{ firstName }}, {% if condition %}...{% endif %}) title string optional New task title (for manual/phone steps). Short label displayed in the review UI. url string optional New webhook URL for "api" steps. Supports Liquid templating against lead variables (e.g. https://example.com/leads/{{ _id }}). Ignored on non-api steps. lemlistmcp_update_settings
#
Update settings for a campaign or warmup mailbox entity. 7 params
Update settings for a campaign or warmup mailbox entity.
id string required Entity ID. For "lemwarm": the mailbox ID (usm_xxx) — the same id used with get_settings type="lemwarm". type string required The type of settings to update. Only "lemwarm" is supported for now. action string optional Optional state change. "start" activates warmup, "pause" stops it. Omit when only updating settings. internalCommunicationPercent number optional Percentage of warmup emails sent to internal participants (0-100). Only applied when the team has the lemwarmInternalCommunication beta. userConfirmed boolean optional REQUIRED when action="start": must be true after user confirms activating warmup. warmEmailMax number optional Daily warmup email target (0-40). Server enforces 1-40 unless the team has the lemwarm0limit beta. warmEmailRampup number optional Ramp-up increment per day (0-40). Server enforces 1-40 unless the team has the lemwarm0limit beta. lemlistmcp_validate_campaign_readiness
#
Validate that a campaign is ready to launch by checking step content, sender configuration, DNS health, and daily limits. 2 params
Validate that a campaign is ready to launch by checking step content, sender configuration, DNS health, and daily limits.
campaignId string optional Campaign ID (cam_xxx format). Provide this or campaignName. campaignName string optional Campaign name to search for. Provide this or campaignId.