lemlist integrationlemlist logo

lemlist integration for AI agents.

lemlist integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves lemlist tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real lemlist actions, managed and audited.

Your user connects lemlist once; your agent can then manage lemlist cold outreach campaigns, leads, contacts, inbox messages, enrichment, unsubscribes, and webhooks — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants lemlist access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported lemlist tools.

113 tools are generated from the published lemlist catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 113 tools. All published catalog entries are included in this page's server-rendered HTML.

Delete Company
Deletes a lemlist company. Refuses by default when contacts are still attached — pass `force=true` to detach them (the `companyId` field is unset on each contact) before deleting the company. **No CRM-side propagation:** only the lemlist record is removed. Designed for the contact-to-company remapping workflow: after reassigning the contacts of a duplicate company to the canonical one (via `POST /contacts/{idOrEmail}`), call this endpoint to drop the now-empty duplicate.
Companiescompanies
Disconnect Email Account
Disconnect Email Account
Email Accountsemail-accounts
Delete Draft
Soft-deletes a draft by setting its deletedAt timestamp.
Inboxinbox
Remove Labels from Conversation
Removes one or more labels from one conversation.
Inboxinbox
Delete or Unsubscribe Lead
Delete or Unsubscribe Lead
Leadsleads
Erase Values of Custom Variables on a Lead
Erases the values of custom variables on a lead.
Leadsleads
Unsubscribe Lead from Campaign
Unsubscribe Lead from Campaign
Leadsleads
Delete Schedule
Delete Schedule
Schedulesschedules
Delete Sequence Step
Delete Sequence Step
Sequencessequences
Delete Unsubscribe Email
Delete Unsubscribe Email
Unsubscribesunsubscribes
Re-subscribe Contact
Removes the unsubscribed (do-not-contact) flag from a contact.
Unsubscribesunsubscribes
Re-subscribe Variable
Removes a variable from the unsubscribe list. Variables with a protected source (LEAD or ABUSE) cannot be re-subscribed.
Unsubscribesunsubscribes
Delete Webhook
Delete Webhook
Webhookswebhooks
Export Campaign Leads
Export leads from a campaign with filtering options. Returns leads in CSV or JSON format based on their state (e.g., contacted, interested, replied, etc.).
Campaignscampaigns
Get Campaign
Get Campaign
Campaignscampaigns
Get Campaign Export Status
Check the status of an asynchronous campaign export.
Campaignscampaigns
Get Campaign Reports
Retrieve reports for one or multiple campaigns. Returns aggregated statistics and export status for the specified campaigns.
Campaignscampaigns
Get Campaign Stats
Retrieve detailed statistics for a specific campaign, with filtering options by date, user, A/B testing, and communication channels.
Campaignscampaigns
Get Campaign Statutes
Retrieves validation statutes for a campaign, including errors that block launching and warnings about daily limits, DNS issues, etc. Uses the same validation engine as the lemlist UI.
Campaignscampaigns
Get Many Campaigns
Get Many Campaigns
Campaignscampaigns
Start Campaign Stats Export
Start an asynchronous export of all campaign statistics. The final export result is a CSV file.
Campaignscampaigns
Get Company Notes
Get Company Notes
Companiescompanies
Get Many Companies
Get Many Companies
Companiescompanies
Export Contact List
Exports contacts or companies from a CRM list as a CSV file. The response is streamed as `text/csv` with a `Content-Disposition: attachment` header. The exported columns depend on the `entity` type: - **contact**: firstName, lastName, email, linkedinUrl, companyName, jobTitle, phone, status, owner, campaigns, contactLists, and more. - **company**: name, domain, linkedinUrl, industry, website, status, size, owner, numberOfContacts, companyLists, and more. Custom fields are included as additional columns.
Contactscontacts
Get Contact
Get Contact
Contactscontacts
Get Contact Lists
Retrieves all static and dynamic contact lists for the team. Optionally filter by name.
Contactscontacts
Get Many Contacts
Retrieves contacts by IDs/emails, or searches/lists contacts by name, email, contact list, campaign membership, or company link. When using `idsOrEmails`, returns an array of matching contacts directly. When using `search`, `email`, `listId`, `notInAnyCampaign`, any of the `company*` filters, or no filter at all, returns a paginated response with `data`, `total`, `limit`, and `offset` fields. You can combine filters together to narrow results (e.g. `listId` with `search`, or `notInAnyCampaign` with `companyId`). Calling the endpoint without any filter returns all contacts of the team, paginated. The `company*` filters (`companyId`, `companyDomain`, `companyLinkedinUrl`, `companySalesnavUrl`) are mutually exclusive — use only one at a time. `companyDomain` / `companyLinkedinUrl` / `companySalesnavUrl` are resolved to a `companyId` through the Companies collection; if no matching company exists, the endpoint returns an empty list with `total: 0` (not an error), which keeps automation flows simple.
Contactscontacts
Get CRM Filters
Get CRM Filters
Leadscrm
Get Team CRM Users
Get Team CRM Users
Teamcrm
Get Enrichment Result
Get Enrichment Result
Enrichenrich
List Fields
List Fields
Fieldsfields
Get Contact Messages
Get Contact Messages
Inboxinbox
Get Draft
Retrieves a single draft with its full content, including attachments.
Inboxinbox
Get Label
Get info of a specific label.
Inboxinbox
Get Many Inboxes
Get Many Inboxes
Inboxinbox
Get Many Labels
List all labels available to your team.
Inboxinbox
List Drafts
Lists all non-deleted drafts for a specific contact.
Inboxinbox
Get Campaign Leads
Get Campaign Leads
Leadsleads
Get Lead by Email
Get Lead by Email
Leadsleads
Get Lead by Email or ID
Retrieve a lead using either their email address or lead ID
Leadsleads
Get Database Filters
Get Database Filters
People Databasepeople-database
Get Campaign Schedules
Get Campaign Schedules
Schedulesschedules
Get Many Schedules
Get Many Schedules
Schedulesschedules
Get Schedule
Get Schedule
Schedulesschedules
Get Campaign Sequences
Get Campaign Sequences
Sequencessequences
Get Many Tasks
Retrieve tasks with optional filtering and pagination. Tasks marked as `done` are excluded from results.
Taskstasks
Get Team Credits
Get Team Credits
Teamteam
Get Team Senders
Get Team Senders
Teamteam
Get Team
Get Team
Teamteam
Export Unsubscribed Contacts
Exports all contacts with their subscription status to a CSV file.
Unsubscribesunsubscribes
Export Unsubscribed Variables
Exports all unsubscribed variables to a CSV file.
Unsubscribesunsubscribes
Export Unsubscribes
Export Unsubscribes
Unsubscribesunsubscribes
Get Contact Subscription Status
Checks whether a contact is unsubscribed (do-not-contact).
Unsubscribesunsubscribes
Get Many Unsubscribes
Get Many Unsubscribes
Unsubscribesunsubscribes
Get Unsubscribe by Email
Get Unsubscribe by Email
Unsubscribesunsubscribes
Get Unsubscribed Variable
Retrieves a specific unsubscribed variable by its value.
Unsubscribesunsubscribes
List Unsubscribed Variables
Retrieves a paginated list of all unsubscribed variables (emails, domains, LinkedIn URLs, phone numbers).
Unsubscribesunsubscribes
Get User Channels
Get User Channels
Usersusers
Get User
Get User
Usersusers
Get Signal Agent signals
Get Signal Agent signals
Signal Agentswatch-list
Get Many Webhooks
Get Many Webhooks
Webhookswebhooks
Update Campaign
Update Campaign
Campaignscampaigns
Update Draft
Partially updates an existing draft. Only the provided fields will be updated.
Inboxinbox
Update Lead in a Campaign
Update Lead in a Campaign
Leadsleads
Update Values of Custom Variables of a Lead
Update values of custom variables for a lead.
Leadsleads
Update Schedule
Update Schedule
Schedulesschedules
Update Sequence Step
Update Sequence Step
Sequencessequences
Update Task
Update task details such as assignment, due date, title, message, priority, or completion status.
Taskstasks
Create Campaign
Create Campaign
Campaignscampaigns
Duplicate Campaign
Duplicate Campaign
Campaignscampaigns
Get Batch Campaign Stats
Retrieve detailed statistics for multiple campaigns in a single request, with filtering options by date, user, A/B testing, and communication channels. Processes up to 100 campaigns per request.
Campaignscampaigns
Pause Campaign
Pause Campaign
Campaignscampaigns
Start Campaign
Start Campaign
Campaignscampaigns
Create Company Note
Create Company Note
Companiescompanies
Add and update company
Creates a new company or updates an existing one (upsert). If a company with the same domain, LinkedIn URL, or Sales Navigator URL already exists, it will be updated with the provided non-empty fields. Null or empty values are ignored during updates to preserve existing data. You can target an existing company directly by providing `companyId`, bypassing domain/LinkedIn matching — in that case `name` and `domain` become optional.
Companiescompanies
Create Contact List
Creates a new static contact list. After creating the list, use `POST /contacts/lists/{listId}/entities` to add contacts to it.
Contactscontacts
Add or Remove Contacts in a List
Adds existing CRM contacts to a static contact list, or removes them when `?action=remove` is set. - **Add** (default): send a `POST` with a `contactIds` body. Contacts already in the list are silently skipped (no duplicates) and reported in `alreadyInList`. - **Remove**: send a `POST` with `?action=remove` and a `contactIds` body. Contacts that are not in the list are silently skipped; `removedCount` reflects the associations actually removed. This only affects list membership, the contacts are not deleted from your CRM. The list must be a **static** contact list (`clt_xxx`). Dynamic lists (auto-populated by filter rules) and company lists are rejected. **Removal uses `POST ?action=remove` on purpose:** a `DELETE` request body is dropped by our stack, so `DELETE` on this path is **not supported** and returns `405 Method Not Allowed`.
Contactscontacts
Add and update contact
Creates a new contact or updates an existing one (upsert). If a contact with the same email, LinkedIn URL, or Sales Navigator URL already exists, it will be updated with the provided non-empty fields. Null or empty values are ignored during updates to preserve existing data. You can target an existing contact directly by providing `contactId`, bypassing email/LinkedIn matching. You can optionally link the contact to a company by providing `companyId`, `companyDomain`, or `companyLinkedinUrl`.
Contactscontacts
Connect Email Account
Connect Email Account
Email Accountsemail-accounts
Test Email Account
Test Email Account
Email Accountsemail-accounts
Bulk Enrich Data
Send a batch of enrichment requests for multiple entities. Maximum 500 enrichment requests per call.
Enrichenrich
Enrich Data
Enrich Data
Enrichenrich
Enrich Lead
Enrich Lead
Enrichenrich
Attach Labels to Conversations
Attaches one or more labels to one or more conversations.
Inboxinbox
Create Draft
Creates a new draft for a specific contact. The source is automatically set to "api".
Inboxinbox
Create Label
Creates a new label available to the team.
Inboxinbox
Send Email
Send Email
Inboxinbox
Send LinkedIn Message
Send LinkedIn Message
Inboxinbox
Send WhatsApp Message
Send WhatsApp Message
Inboxinbox
Add Custom Variables on Leads
Add custom variables to a lead and sets values for that specific lead.
Leadsleads
Create Lead in Campaign
Create Lead in Campaign
Leadsleads
Import Leads from CRM
Import Leads from CRM
Leadsleads
Launch Lead
Use this endpoint to launch a lead that is waiting for review, without having to enable campaign-wide auto-review. You're auto launching this specific lead, while still enforcing every other launch guard: the campaign must have no step errors, any AI variables required by the campaign must be valid for the lead, and a sender must be available. No need to enable autolaunch in the campaign. This endpoint requires an `emailPro` plan or higher.
Leadsleads
Mark Lead as Interested in Campaign
Mark Lead as Interested in Campaign
Leadsleads
Mark Lead as Interested
Mark a lead as interested across all campaigns
Leadsleads
Mark Lead as Not Interested in Campaign
Mark Lead as Not Interested in Campaign
Leadsleads
Mark Lead as Not Interested
Mark a lead as not interested across all campaigns
Leadsleads
Pause Lead
Pause Lead
Leadsleads
Resume Paused Lead
Resume Paused Lead
Leadsleads
Upload Audio for Voice Message Step
Upload Audio for Voice Message Step
Leadsleads
Search Companies Database
Search the lemlist Companies database using structured filters with pagination support. Returns comprehensive company data including technologies used, location, employee count, and other business intelligence.
People Databasepeople-database
Associate Schedule with Campaign
Associate Schedule with Campaign
Schedulesschedules
Create Schedule
Create Schedule
Schedulesschedules
Add Step to Sequence
Add Step to Sequence
Sequencessequences
Create Task
Create a manual task (opportunity) associated with a contact/company or lead.
Taskstasks
Ignore Tasks
Ignore Tasks
Taskstasks
Add Unsubscribe Email or Domain
Add Unsubscribe Email or Domain
Unsubscribesunsubscribes
Bulk Unsubscribe Variables
Unsubscribes up to 10,000 variables in a single request.
Unsubscribesunsubscribes
Unsubscribe Contact
Marks a contact as unsubscribed (do-not-contact).
Unsubscribesunsubscribes
Unsubscribe Variable
Unsubscribes a single variable. This operation is idempotent — if the variable is already unsubscribed, the existing record is returned.
Unsubscribesunsubscribes
Add Webhook
Add Webhook
Webhookswebhooks
Set Email for Campaign Export Notification
Set an email address for a given export. When the export is done, an email with the download URL will be sent to the address provided.
Campaignscampaigns
Search People Database
This endpoint allows you to query our People database. To do so, you may use the following parameters: filters (required), page (optional), size (optional), and excludes (optional). Each filter should have the following properties: filterId (filter identifier), in (list of the values you want to include), and out (list of the values you want to exclude). To know which filters you are able to use, refer to the GET Filters section. The `department` filter accepts the following values: `Sales`, `Customer service`, `Engineering`, `Marketing`, `Operations`, `Human Resources`, `Finance / Legal / Admin`, `Other`.
People Databasepeople-database
FAQ

lemlist integration, answered

How do AI agents use lemlist through Open Connector?
Your user connects lemlist once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes lemlist tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a lemlist MCP server?
Yes. Open Connector can serve lemlist as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call lemlist actions with credentials injected server-side.
Where do lemlist credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents lemlist — keep the keys.

Open source, self-hostable, with lemlist credentials that never leave your infrastructure. Run it from source today.