Skip to content
Back to search
100
MCP live MCP 2025-03-26 streamable-http

LinkedIn MCP Server (Salesbot)

cz.salesbot/linkedin-mcp-server

Human-in-the-loop LinkedIn outreach and a built-in sales CRM for AI agents. Safety-gated, anti-spam.

Uptime
100.0%
2 direct probes · 30d
Response
2464ms
last probe
Tools
52
callable
Resources
0
readable
Prompts
0
available

Tools · 52

search_linkedin_people

Search LinkedIn people. The workspace's verified Settings account type automatically selects Standard/Classic or Sales Navigator; callers cannot select the product. EXISTING CONNECTIONS reads only the…

sync_linkedin_connections

Synchronize one provider-safe page (at most 500) of the API-key owner's 1st-degree LinkedIn relations into the local workspace cache. This is a provider read, not a LinkedIn people search, and does no…

search_google_xray

Google X-Ray search for public LinkedIn profiles via Google operators (site:linkedin.com/in). Useful when you don't want to consume LinkedIn search limits, and it CAN target a specific person (put the…

upsert_linkedin_contact

Create a contact from a known LinkedIn profile URL, or return the existing contact when the profile was already imported. Use this when you already know the exact profile URL and do not need to run a …

add_contacts_to_list

Move existing contacts into an existing lead list (get list_id from list_lead_lists). Each contact belongs to exactly ONE list, so this REASSIGNS list_id (a move, not a copy). Use it to organize conta…

enrich_contacts

Enrich existing contacts with their full LinkedIn profile data via the connected LinkedIn account (Unipile) — headline, location, current company & position, full experience, education and skills are …

search_linkedin_navigator

Run a Sales Navigator or standard LinkedIn search URL. Sales Navigator URLs require Sales Navigator mode in workspace Settings and an active subscription. URL query filters are preserved. Every provid…

get_contact_profile

Return the full contact profile from the database — name (with Czech vocative), headline, company, role, location, language, current campaign status and interaction history. Used as context for person…

list_contacts

List contacts in a specific lead list with ID, name, headline, company, profile URL, gender and current status (e.g. invite_sent, connected, replied). The AI picks IDs from this list for further tools…

list_lead_lists

List the authenticated user's contact groups (lead lists) with their list_id, name, description and contact count. Use list_id with list_contacts to retrieve the contacts in a specific group.

list_campaigns

List your campaigns with ID, name, status (draft/running/paused), description and lead counts. Use this to obtain campaign_id when adding leads, generating messages or approving drafts.

add_contacts_to_campaign

Add selected contacts (by ID) to an existing campaign. Blacklist of domains/companies, duplicate checks and manual exclusion are applied automatically. The campaign's configured steps are used as-is, …

send_linkedin_message

Send a one-off LinkedIn message to a specific contact outside any campaign. A random 30–180 s delay is applied before sending for anti-detection. The action counts against the daily message limit, res…

send_connection_request

Send a LinkedIn connection invitation. The message is ALWAYS empty (no text) — policy choice to avoid account blocks, regardless of account type (free or premium). Enforces daily invitations limit, al…

get_daily_limits

Check remaining daily quota for a profile. Returns current usage vs limits, ramp-up status, allowed hours, and whether actions are currently allowed. profile_id is optional — if omitted, the user's ac…

generate_campaign_message

Generate (or regenerate) an AI personalized message draft for a specific campaign_contact and step, using the template and lead profile. The message is NOT sent — it is stored as a draft with status '…

list_pending_approvals

Return all AI drafts waiting for approval (messages_approved=false). Each draft includes the contact name, headline, company and generated text. Used as input for bulk review by an AI assistant which …

approve_message

Approve a draft and hand it to the campaign executor for sending (respecting daily limits and allowed hours). Optionally pass edited_messages to overwrite specific drafts before approval. By default e…

reject_message

Reject the current drafts on a campaign_contact with textual feedback (e.g. 'too formal, shorten to 2 sentences'). Resets generation_status to 'pending' so a new version is generated based on your fee…

publish_linkedin_post

Create a LinkedIn post on behalf of a connected profile. By default the post is saved as a 'draft' in the LinkedIn Posts page so the user can review/edit it before publishing. Set auto_publish=true to…

list_inbox_chats

List recent LinkedIn inbox conversations (chats) in real time. Returns chat_id (used by get_chat_messages / reply_to_chat), the other attendee's provider id, unread count and last-message timestamp. M…

get_chat_messages

Read the messages of a single LinkedIn conversation in real time (newest last). Use the chat_id from list_inbox_chats. `is_sender=true` marks messages sent by the account owner (you). Use this to unde…

reply_to_chat

Send a reply into an existing LinkedIn conversation (by chat_id). Only sends within the user's allowed sending hours/days (never at night) — outside them it returns OUTSIDE_ALLOWED_HOURS. When the use…

mark_chat_read

Mark a LinkedIn conversation as read (by chat_id). Useful after the AI has processed/answered a thread so it does not re-surface as unread.

create_campaign

Create a NEW campaign (saved as 'draft' — it does NOT start sending until the user activates it in the app). Provide a name, the profile_id to send from, and an ordered list of steps. Each step has an…

update_campaign_settings

Update settings of an existing campaign you own: name, description, daily_limit, sender_context, auto_approve_messages, or status. Use status='paused' to pause and status='running' to resume. Only pro…

start_campaign

Start (activate) an existing campaign: schedules the outreach actions for its contacts and sets status to 'running'. The campaign must already have contacts (add_contacts_to_campaign) and steps. Execu…

stop_campaign

Stop a running campaign: sets status to 'stopped' and cancels its pending scheduled actions (a DB trigger marks them skipped). To only pause temporarily, use update_campaign_settings with status='paus…

scrape_website

Fetch the readable text of a PUBLIC web page so you can use it as context when writing/editing messages (e.g. read a prospect's website or an article). Returns plain text (HTML stripped, truncated) pl…

get_linkedin_status

Check whether the user's LinkedIn account is connected and active. Returns the connection state and, if not connected/blocked, how to fix it. Call this first when another tool returns code ACCOUNT_NOT…

connect_linkedin

Generate a secure LinkedIn connect (or reconnect) link the user opens in their browser to authenticate. Use when get_linkedin_status shows not connected/blocked, or after an ACCOUNT_NOT_CONNECTED/ACCO…

set_deal_stage

Move a lead to a different pipeline stage. Stages are user-configurable — call list_crm_stages to see the valid stage keys (defaults: prospect, contacted, demo, won, lost). Call when the user confirms…

log_crm_note

Save a structured summary of a conversation into the CRM for a lead. Analyze the chat/context yourself, then call this with a concise summary, the prospect's pain points, and overall sentiment. Builds…

create_task

Create a follow-up task, optionally linked to a lead (e.g. 'Send pricing PDF to Jane on Thursday'). Pro plan only.

save_lead_message

Store a generated outreach message on a CRM lead so it becomes durable context — e.g. an email, an email follow-up, a LinkedIn message or LI follow-up. The CRM is a 'sponge': you save the copy here, t…

list_lead_messages

List the stored outreach messages saved on a CRM lead (email/LI drafts and follow-ups), newest first. Use to pull the copy back out of the CRM before sending it via the right channel. Optionally filte…

get_lead_context

Fetch the full CRM context for a lead before writing a pitch or follow-up: profile, current pipeline stage, custom fields, saved outreach messages (email/LI drafts & follow-ups), recent conversation s…

export_crm

Export the user's CRM (leads with pipeline stage and key fields) as CSV text to save to a file or spreadsheet. Returns up to `limit` rows; for very large databases use the in-app 'Download CRM Backup …

update_contact

Update a lead's contact details — email, phone, location, company, position or headline. Use to enrich a lead (e.g. save an email address you found). Only the fields you pass are changed; omit the res…

list_tasks

List your CRM tasks. Filter by status (open/done/cancelled, default open) and/or a specific contact. Returns task id, title, due date, status and the linked lead's name. Use to see what follow-ups are…

complete_task

Mark a CRM task done (or reopen/cancel it). Pass the task_id; status defaults to 'done'. Use after a follow-up is handled.

list_crm_stages

List the CRM pipeline stages (key, label, order, color) and how many leads are in each. Stages are user-configurable — rename/add/delete them with the other crm_stage tools.

add_crm_stage

Add a new pipeline stage. Provide a label (e.g. 'Negotiation'); a key is generated from it. Optional hex color (e.g. '#22c55e'). Appended to the end of the pipeline.

rename_crm_stage

Rename a stage's label and/or change its color, by key (use list_crm_stages to get keys). The stage key and the leads in it are unchanged.

delete_crm_stage

Delete a pipeline stage by key. Leads currently in it are moved to reassign_to (or the first remaining stage). You can't delete the last remaining stage.

list_crm_fields

List the custom fields defined on CRM leads (key, label, type). Set their values per lead with set_lead_fields.

add_crm_field

Add a custom field to CRM leads (e.g. 'Budget' of type number). type: text | number | date | url (default text). A key is generated from the label.

delete_crm_field

Remove a custom field definition by key. Values already stored on leads stay in place but are no longer shown.

set_lead_fields

Set custom field values on a lead (by contact_id). Pass `fields` as an object of { field_key: value }. Only defined field keys are accepted (see list_crm_fields). Adds the lead to the CRM if needed.

search_job_postings

Search LinkedIn job postings by keywords, location, seniority, job type, and more. Returns job offers with company info — great for finding companies that are actively hiring for a specific role. Uses…

search_web

General-purpose Google search — returns organic results for any query. Unlike search_google_xray (LinkedIn-only), this searches the entire web. Useful for finding job postings on portals (jobs.cz, pra…

get_job_posting_details

Get full details of a LinkedIn job posting, including the hiring team — the recruiter or hiring manager who posted it. Use this after search_job_postings to find the exact person to reach out to at a …

How to use

Add to your Claude Desktop / Cursor / Cline MCP config:

{
  "mcpServers": {
    "linkedin_mcp_server_(salesbot)": {
      "url": "https://app.salesbot.cz/api/mcp",
      "transport": "streamable-http"
    }
  }
}