MCP server
create_linkedin_campaign
Creates a LinkedIn campaign in draft for a website; start it with activate_linkedin_campaign.
Create a LinkedIn campaign · Changes data
Creates a LinkedIn campaign in draft for a website; start it with activate_linkedin_campaign. A campaign sends one connection request per person through the browser extension. With audience.source sales_navigator it fills itself every day from a Sales Navigator lead search, and with inmail.enabled the first new people each day get a Sales Navigator InMail instead of a request. People already in any campaign of the website and existing 1st-degree connections are skipped. Returns campaign with its _id. Free. Not available with a website-scoped key.
| Connection | Account-owner URL or OAuth (not a team member URL) |
|---|
Parameters
| Parameter | Type | Required | Accepts | Description |
|---|---|---|---|---|
websiteId | string | Yes | any | Website ID from list_websites. |
name | string | Yes | 1–200 characters | Campaign name, 1-200 characters. |
noteTemplate | string | No | max 4000 characters | The note sent with each connection request, at most 300 characters once rendered. Supports [[option a|option b]] variations and {{ firstName }}, {{ lastName }}, {{ company }}, {{ title }} (a fallback after a bar: {{ firstName | there }}). Empty sends the request without a note. |
sendNoteIfPossible | boolean | No | default true | true (default) attaches the note when LinkedIn allows it; false always sends a plain request. |
dailyCampaignCap | integer | No | min 0 · default 0 | Most connection requests this campaign sends per day across all accounts; 0 (default) leaves pacing to each account's own daily limit. |
assignedAccountIds | string[] | No | any | LinkedIn account ids (list_linkedin_accounts) that may send for this campaign; empty or omitted uses every connected account. |
audience | object | No | any | Where the people come from. Omit for a campaign you fill yourself. |
audience.source | string | No | default "manual" · manual, sales_navigator | manual (default): people are added by you or an automation. sales_navigator: every day the browser extension runs the Sales Navigator search in salesNavSearchUrl and adds the next people it finds. |
audience.salesNavSearchUrl | string | No | max 4000 characters · uri | A Sales Navigator lead search, copied from the browser: https://www.linkedin.com/sales/search/people?… Required with source sales_navigator. Changing it starts again from the first result. |
audience.dailyRefill | integer | No | 1–100 · default 25 | How many people the campaign keeps waiting each day, 1-100 (default 25). The search is run at most once every 20 hours, only when fewer than this many are waiting. |
audience.aiFilter | object | No | any | Optional AI check of each day's new people before they are added. |
audience.aiFilter.enabled | boolean | No | default false | true keeps only the people the AI judges to match prompt; false (default) adds everyone the search finds. If the AI check fails, everyone is added. |
audience.aiFilter.prompt | string | No | max 1000 characters | Who to keep, in plain words, at most 1000 characters, e.g. "Founders or heads of marketing at B2B software companies; no agencies". Judged from each person's name, title, company, headline and summary. Required when enabled is true. |
inmail | object | No | any | Sales Navigator InMail as the first message for the first few new people each day; everyone else gets a connection request. Needs a Sales Navigator seat on the sending LinkedIn account. |
inmail.enabled | boolean | No | default false | true sends InMails; false (default) sends connection requests only. |
inmail.subjectTemplate | string | No | max 200 characters | InMail subject, at most 200 characters, same variations and {{ variables }} as noteTemplate. |
inmail.bodyTemplate | string | No | max 1900 characters | InMail message, at most 1900 characters, same variations and {{ variables }} as noteTemplate. Required when enabled is true. |
inmail.dailyCap | integer | No | 0–25 · default 3 | Most InMails per sending account per day, 0-25 (default 3). People with an Open Profile get the InMails first: they cost no credit. Other InMails are also limited by the account's remaining InMail credits spread evenly until they renew (2 a day while the credits are not known yet). Existing 1st-degree connections never get an InMail. |
Tool definition
What your assistant receives from tools/list:
{
"name": "create_linkedin_campaign",
"title": "Create a LinkedIn campaign",
"annotations": {
"title": "Create a LinkedIn campaign",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
},
"inputSchema": {
"type": "object",
"properties": {
"websiteId": {
"type": "string",
"pattern": "^[0-9a-fA-F]{24}$",
"description": "Website ID from list_websites."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Campaign name, 1-200 characters."
},
"noteTemplate": {
"type": "string",
"maxLength": 4000,
"description": "The note sent with each connection request, at most 300 characters once rendered. Supports [[option a|option b]] variations and {{ firstName }}, {{ lastName }}, {{ company }}, {{ title }} (a fallback after a bar: {{ firstName | there }}). Empty sends the request without a note."
},
"sendNoteIfPossible": {
"type": "boolean",
"default": true,
"description": "true (default) attaches the note when LinkedIn allows it; false always sends a plain request."
},
"dailyCampaignCap": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Most connection requests this campaign sends per day across all accounts; 0 (default) leaves pacing to each account's own daily limit."
},
"assignedAccountIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9a-fA-F]{24}$"
},
"description": "LinkedIn account ids (list_linkedin_accounts) that may send for this campaign; empty or omitted uses every connected account."
},
"audience": {
"type": "object",
"properties": {
"source": {
"type": "string",
"enum": [
"manual",
"sales_navigator"
],
"default": "manual",
"description": "manual (default): people are added by you or an automation. sales_navigator: every day the browser extension runs the Sales Navigator search in salesNavSearchUrl and adds the next people it finds."
},
"salesNavSearchUrl": {
"type": "string",
"format": "uri",
"pattern": "^https://www\\.linkedin\\.com/sales/search/people",
"maxLength": 4000,
"description": "A Sales Navigator lead search, copied from the browser: https://www.linkedin.com/sales/search/people?… Required with source sales_navigator. Changing it starts again from the first result."
},
"dailyRefill": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25,
"description": "How many people the campaign keeps waiting each day, 1-100 (default 25). The search is run at most once every 20 hours, only when fewer than this many are waiting."
},
"aiFilter": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": false,
"description": "true keeps only the people the AI judges to match prompt; false (default) adds everyone the search finds. If the AI check fails, everyone is added."
},
"prompt": {
"type": "string",
"maxLength": 1000,
"description": "Who to keep, in plain words, at most 1000 characters, e.g. \"Founders or heads of marketing at B2B software companies; no agencies\". Judged from each person's name, title, company, headline and summary. Required when enabled is true."
}
},
"description": "Optional AI check of each day's new people before they are added."
}
},
"description": "Where the people come from. Omit for a campaign you fill yourself."
},
"inmail": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": false,
"description": "true sends InMails; false (default) sends connection requests only."
},
"subjectTemplate": {
"type": "string",
"maxLength": 200,
"description": "InMail subject, at most 200 characters, same variations and {{ variables }} as noteTemplate."
},
"bodyTemplate": {
"type": "string",
"maxLength": 1900,
"description": "InMail message, at most 1900 characters, same variations and {{ variables }} as noteTemplate. Required when enabled is true."
},
"dailyCap": {
"type": "integer",
"minimum": 0,
"maximum": 25,
"default": 3,
"description": "Most InMails per sending account per day, 0-25 (default 3). People with an Open Profile get the InMails first: they cost no credit. Other InMails are also limited by the account's remaining InMail credits spread evenly until they renew (2 a day while the credits are not known yet). Existing 1st-degree connections never get an InMail."
}
},
"description": "Sales Navigator InMail as the first message for the first few new people each day; everyone else gets a connection request. Needs a Sales Navigator seat on the sending LinkedIn account."
}
},
"required": [
"websiteId",
"name"
]
}
}