Lemlist MCP

Live

API KEY

MARKETING

Marketing

Give your agent per-user access to Lemlist — so it can launch sequences, enrich leads, and track replies tied to the account owner who authorized it.

  • Acts as the user: Campaign launches, lead additions, and reply tracking stay tied to the Lemlist account owner who authorized the agent — not a shared service credential.
  • Credentials stay vaulted: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: Permissions enforced per-user. 90-day audit trail.
Lemlist MCP
agent · Acme Q3
Run
Which sequences have the highest reply rates this month?
S
lemlist_campaigns_list
85ms
Lemlist MCP agent
Found 3 top sequences this month. 'Q3 SaaS Outbound' at 18% reply rate, 'Trial Expiry Follow-up' at 14%, 'Event Invite Wave' at 11%.
Sources: 3 campaigns, Jun 1 to Jun 21
lemlistmcpmcp
3 campaigns
18:29
Message Claude...

Tools your outbound sales agent reaches for on Lemlist MCP, scoped per user.

CALL ANY TOOL
Lemlist MCP exposes tools for managing campaigns, leads, sequences, and replies — giving agents control over the full multichannel outreach lifecycle.
lemlistmcp_add_contacts_to_list
List add contacts to
Add existing CRM contacts to a contact list by list ID.
Parameters
Name
Type
Required
Description
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 leads to campaign
lemlistmcp_bulk_enrich_data
Bulk enrich data
lemlistmcp_bulk_get_enrichment_results
Bulk get enrichment results
lemlistmcp_connect_email_account
Connect email account
lemlistmcp_create_ai_variable_prompt
Create ai variable prompt
lemlistmcp_create_or_update_company
Create or update company
lemlistmcp_delete_campaign_folder
Delete campaign folder
lemlistmcp_delete_memory
Delete memory
lemlistmcp_delete_watch_list
List delete watch
lemlistmcp_display_table
Display table
lemlistmcp_get_call_details
Get call details
lemlistmcp_get_campaigns
Get campaigns
lemlistmcp_get_contact_lists
Get contact lists
lemlistmcp_get_inbox_placement_result
Get inbox placement result
lemlistmcp_get_task_content
Get task content
lemlistmcp_get_unsubscribes
Get unsubscribes
lemlistmcp_lemleads_search
Search lemleads
lemlistmcp_list_campaign_folders
List campaign folders
lemlistmcp_list_voice_profiles
List voice profiles
lemlistmcp_list_watch_lists
List watch lists
lemlistmcp_load_skill
Load skill
lemlistmcp_preview_sequence_update
Update preview sequence
lemlistmcp_provision_mailboxes
Provision mailboxes
lemlistmcp_report_unsupported_case
Report unsupported case
lemlistmcp_run_deliverability_audit
Run deliverability audit
lemlistmcp_search_companies
Search companies
lemlistmcp_send_message
Send message
lemlistmcp_set_ab_variant
Set ab variant
lemlistmcp_update_mailbox
Update mailbox

For more tools, view docs.

Build your Agent
Same auth pattern across every framework.
Python · LlamaIndex
from langchain_mcp_adapters.client import MultiServerMCPClient
from scalekit import ScalekitClient

client = ScalekitClient(env_url=ENV_URL, client_id=CLIENT_ID, client_secret=SECRET)
token = client.agent.get_token(user_id="user_id", connector="lemlistmcp")

mcp = MultiServerMCPClient({
"lemlistmcp": {
"url": "https://mcp.scalekit.com/lemlistmcp",
"headers": {"Authorization": "Bearer " + token}
}
})
tools = await mcp.get_tools()
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const client = new ScalekitClient({ envUrl, clientId, clientSecret });
const token = await client.agent.getToken({ userId: "user_id", connector: "lemlistmcp" });

const openai = new OpenAI();
// Connect to MCP at https://mcp.scalekit.com/lemlistmcp
// Pass: Authorization: Bearer + token
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const client = new ScalekitClient({ envUrl, clientId, clientSecret });
const token = await client.agent.getToken({ userId: "user_id", connector: "lemlistmcp" });

const anthropic = new Anthropic();
// Connect to MCP at https://mcp.scalekit.com/lemlistmcp
// Pass: Authorization: Bearer + token
from google.adk.agents import LlmAgent
from scalekit import ScalekitClient

client = ScalekitClient(env_url=ENV_URL, client_id=CLIENT_ID, client_secret=SECRET)
token = client.agent.get_token(user_id="user_id", connector="lemlistmcp")
# Connect to MCP at https://mcp.scalekit.com/lemlistmcp
# Pass: Authorization: Bearer + token
Try these prompts
Paste any prompt into your agent to get started.
Analyze & report
Copy the prompt
Copied
Which of my active campaigns has the highest reply rate this month and what's the subject line of its first email step?
Copy the prompt
Copied
Show me all leads who opened but never replied across my last 3 campaigns.
Copy the prompt
Copied
What is my current bounce rate and how does it compare to the previous 30-day period?
Copy the prompt
Copied
List every campaign launched in the last 90 days with their open, click, and reply rates side by side.
Manage leads
Copy the prompt
Copied
Add these 12 leads to my 'Q3 SaaS Outbound' campaign and skip any that are already enrolled.
Copy the prompt
Copied
Remove all leads marked 'notInterested' from my active campaigns and add them to the unsubscribe list.
Copy the prompt
Copied
List all leads in my 'Trial Expiry Follow-up' sequence who are still on step 1 after 5 days.
Deliverability & hygiene
Copy the prompt
Copied
Fetch sender stats for my primary email account for the last 30 days and flag if bounce rate exceeds 3%.
Copy the prompt
Copied
Unsubscribe anyone who replied with 'unsubscribe' or 'remove me' across all campaigns this week.
Copy the prompt
Copied
Pause any campaign where the bounce rate for the last 50 sends exceeds 5%.
SEE HOW AUTH WORKS
User authorises once. Every agent call after uses their token with scope enforcement.
1
Authorize
Your user connects
Lemlist MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Lemlist MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Lemlist MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Lemlist MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other connectors.
GTM and RevOps Teams
Outbound prospecting agent
Searches Apollo for prospects matching your ICP, scores and ranks them, drafts personalized outreach in Gmail, and logs every send to Google Sheets. Mail goes out as the rep, not from a shared inbox.
Support and Ops Teams
Email-to-calendar agent
Reads scheduling intent out of Gmail threads, resolves the times everyone actually has free, and creates the event on the user's own Google Calendar. No shared service account.
GTM and RevOps Teams
CRM AI agent
Reads the Granola transcript after every call, extracts next steps and updates the HubSpot record, drafts the follow-up in Gmail, and confirms in Slack, all on the rep's own delegated OAuth.
Support and Ops Teams
Freshdesk CSAT agent
Watches Freshdesk for resolved tickets, emails each requester a CSAT survey from Gmail, and writes the score and the verbatim back onto the ticket, every call on the support rep's own delegated OAuth.
Test other agents
See the same per-user auth pattern across other connectors.
SALES
Outbound prospecting agent
Search Apollo for ICP matches, rank them, draft personalised Gmail outreach, and log every send to Google Sheets.
OPS
Email-to-calendar scheduling agent
Read scheduling intent out of Gmail threads, resolve mutual free time, and create the Google Calendar event.
GTM
CRM AI agent
Turn each Granola call transcript into a HubSpot record update, a drafted Gmail follow-up, and a Slack recap.
SUPPORT
Freshdesk CSAT follow-up agent
Spot resolved Freshdesk tickets, email the CSAT survey from Gmail, and write the score back onto the ticket.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared API key looks fine in a demo. In production every campaign action traces back to a service account, not the rep who owns the sequence. Scalekit resolves the real user credential so Lemlist audit logs stay meaningful.
// shared key
audit → bot_service_account

// scalekit
audit → rep_alice ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Lemlist MCP today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Lemlist as the user or through a shared API key?
Scalekit resolves a per-user credential for each call. The Lemlist activity log shows the real account owner, not a shared service key, so campaign attribution and deliverability metrics stay accurate per sender.
Where is the Lemlist API key stored?
In Scalekit's AES-256 encrypted vault, isolated per tenant. Keys are resolved at request time and never passed through LLM context. Rotation or revocation takes effect immediately across all agents without code changes.
Can I limit what the agent is allowed to do in Lemlist?
Pass a toolNames filter to listScopedTools. Scalekit enforces the approved set before every API call — the agent cannot invoke tools outside that list, so you can restrict it to read-only reporting or block destructive operations like lead deletion.
What happens when a user revokes Lemlist access?
The credential is invalidated at the next tool call. The agent fails closed rather than falling back to a shared key. Other users' sessions are unaffected, and the revocation event is written to the audit log with a timestamp.
Can the agent accidentally add contacts to the wrong campaign or trigger unintended sends?
Scope your agent to a named toolNames list that excludes lemlist_leads_add and lemlist_campaigns_launch if you want read-only access. Scalekit enforces that list before every call, so write tools are unreachable unless you explicitly permit them. You can also restrict by campaign_id at the application layer before passing arguments to the tool.
What other MCP connectors does Scalekit support?
Scalekit runs the Mailchimp MCP server, Klaviyo MCP server, and HubSpot MCP server on the same per-user auth, token vault, and audit trail. Browse 500+ connectors in the MCP connector directory.
How do I build a Lemlist agent?
Follow the step-by-step tutorial: Build a Lemlist Reply-Intent Agent with Mastra & Scalekit. It covers per-user auth, tool scoping, and working agent code for Lemlist.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""lemlistmcp"": {
""url"": ""https://mcp.scalekit.com/lemlistmcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.lemlistmcp]
url = ""https://mcp.scalekit.com/lemlistmcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""lemlistmcp"": {
""url"": ""https://mcp.scalekit.com/lemlistmcp"",
""type"": ""http""
}
}
}