npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

salesrobot-cli

v1.0.42

Published

MCP server for the SalesRobot API — LinkedIn automation from AI agents

Downloads

5,832

Readme

salesrobot-mcp

MCP server for the SalesRobot API. Manage LinkedIn accounts, campaigns, prospects, messaging, and AI features from your terminal or from any AI agent via the Model Context Protocol (MCP).


Campaign Creation Flow

  ┌───────────────────────────────────┐
  │  Step 0 · Account Settings        │  ← once per account
  └─────────────────┬─────────────────┘
                    │
                    ▼
  ┌───────────────────────────────────┐
  │  Step 1 · Create Campaign         │
  └─────────────────┬─────────────────┘
                    │
                    ▼
  ┌───────────────────────────────────┐
  │  Step 2 · Add Prospects           │
  └─────────────────┬─────────────────┘
                    │
                    ▼
  ┌───────────────────────────────────┐
  │  Step 3 · Campaign Settings       │
  └─────────────────┬─────────────────┘
                    │
                    ▼
  ┌───────────────────────────────────┐
  │  Step 4 · Create Sequence         │
  └─────────────────┬─────────────────┘
                    │
                    ▼
  ┌───────────────────────────────────┐
  │  Step 5 · Start Campaign          │
  └─────────────────┬─────────────────┘
                    │
                    ▼
  ┌───────────────────────────────────┐
  │  Step 6 · Monitor & Optimize      │
  └───────────────────────────────────┘

Prerequisites

Before creating a campaign:

  1. API key configured - Get your api key from Salesrobot's settings

  2. LinkedIn account connected — list your accounts and copy the UUID you'll use.

    Tool: linkedin_account_list
    Returns a list of all connected LinkedIn accounts. Copy the uuid field.
  3. Account settings (optional but recommended) — quotas, schedule, and blacklist apply to the LinkedIn account and protect it across all campaigns. Set these once per account before you start creating campaigns. These settings take effect for every campaign on this account. You can update them at any time.

    Daily quotas:

    Tool: setting_quota
    Parameters:
      linkedinAccountUuid: "<ACCOUNT_UUID>"
      dailyViewQuota: 100
      dailyConnectQuota: 25
      dailyMessageQuota: 50
      dailyFollowQuota: 20

    Sending schedule:

    Tool: setting_add_schedule
    Parameters:
      linkedinAccountUuid: "<ACCOUNT_UUID>"
      name: "Business Hours"
      startTime: "09:00"
      endTime: "17:00"
      timeZone: "America/New_York"
      maxProspects: 50

    Pending invite handling:

    Tool: setting_pending_invite
    Parameters:
      linkedinAccountUuid: "<ACCOUNT_UUID>"
      dailyConnectQuota: 30
      dailyMessageQuota: 60

    Blacklist by company:

    Tool: setting_update_blacklist
    Parameters:
      linkedinAccountUuid: "<ACCOUNT_UUID>"
      companyNames: ["Competitor Inc", "Existing Customer Corp"]

    Blacklist by profile URL:

    Tool: setting_update_blacklist
    Parameters:
      linkedinAccountUuid: "<ACCOUNT_UUID>"
      profileUrls: ["https://linkedin.com/in/exclude-this-person"]

    Copy blacklist from another account:

    Tool: setting_copy_blacklist
    Parameters:
      linkedinAccountUuid: "<ACCOUNT_UUID>"
      copyFromAccount: "<SOURCE_ACCOUNT_UUID>"

MCP Server (AI Agents)

Prerequisites

The MCP server requires Node.js v18 (the package is built targeting Node 18). The recommended way to manage Node versions is nvm.

macOS / Linux — nvm

1. Install nvm (skip if already installed):

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# then restart your terminal or run: source ~/.zshrc

2. Install Node 18 and set it as the active version:

nvm install 18
nvm use 18
node --version   # should print v18.x.x

3. Install the MCP package globally under Node 18:

npm install -g salesrobot-cli

This puts the MCP server script at:

~/.nvm/versions/node/v18.20.x/lib/node_modules/salesrobot-cli/dist/mcp.js

Windows — nvm-windows

Windows uses a separate tool called nvm-windows (different project, same concept).

1. Install nvm-windows:

Download and run the latest nvm-setup.exe installer from the nvm-windows releases page, then open a new Command Prompt or PowerShell as Administrator.

2. Install Node 18 and set it as the active version:

nvm install 18
nvm use 18
node --version   # should print v18.x.x

3. Install the MCP package globally under Node 18:

npm install -g salesrobot-cli

This puts the MCP server script at:

C:\Users\YOUR_USERNAME\AppData\Roaming\nvm\v18.x.x\node_modules\salesrobot-cli\dist\mcp.js

MCP Setup

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "salesrobot": {
      "command": "npx",
      "args": ["-y", "salesrobot-cli"],
      "env": {
        "SR_API_KEY": "your_api_key_here"
      }
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "salesrobot": {
      "command": "salesrobot-mcp",
      "env": {
        "SR_API_KEY": "your_api_key_here"
      }
    }
  }
}

Using nvm (recommended — avoids Node version conflicts):

If npx or salesrobot-mcp picks up the wrong Node version, pin the full paths from your nvm installation:

{
  "mcpServers": {
    "salesrobot": {
      "command": "/Users/YOUR_USERNAME/.nvm/versions/node/v18.20.8/bin/node",
      "args": ["/Users/YOUR_USERNAME/.nvm/versions/node/v18.20.8/lib/node_modules/salesrobot-cli/dist/mcp.js"],
      "env": {
        "SR_API_KEY": "your_api_key_here"
      }
    }
  }
}

What each field means:

| Field | Purpose | |-------|---------| | command | Full path to the Node.js binary. Using the nvm path (instead of just node) guarantees Claude Desktop uses exactly Node v18 regardless of what your shell's PATH is set to. Find yours by running nvm which 18 in a terminal. | | args[0] | Full path to the MCP server entry point — dist/mcp.js inside the globally-installed salesrobot-cli package. The folder is ~/.nvm/versions/node/v18.20.x/lib/node_modules/salesrobot-cli/. | | env.SR_API_KEY | Your SalesRobot API key. Get it from SalesRobot → Settings → API Key. Passing it here means Claude Desktop injects it into the MCP server process automatically — you don't need to set it in your shell. |

All 55 tools are available instantly. Tool names use snake_case: campaign_list, prospect_add, inbox_send_message, etc.

Campaign Creation Flow (MCP)

Step 0: linkedin_account_list  →  get your account UUID
Step 1: campaign_create
Step 2: prospect_sync_sales_nav / prospect_import_linkedin_search / prospect_import_post_comments / prospect_import_post_reactions / prospect_import_linkedin_group / prospect_import_linkedin_event / prospect_import_recruiter_lite / prospect_add / prospect_upload_csv
Step 3: campaign_update_settings
Step 4: campaign_create_sequence_from_steps
Step 5: campaign_start

Step 0 — Get LinkedIn Account UUID

Tool: linkedin_account_list
Returns a list of all connected LinkedIn accounts. Copy the uuid field.

Step 1 — Create Campaign

Tool: campaign_create
Parameters:
  linkedinAccountUuid: "your-account-uuid"
  campaignName: "Q1 2026 Enterprise Outreach"
Returns the new campaign UUID. Save it for subsequent steps.

Step 2 — Add Prospects

Option A — Sales Navigator URL

Tool: prospect_sync_sales_nav
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/sales/search/people?..."

Option B — LinkedIn search URL (regular)

Tool: prospect_import_linkedin_search
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/search/results/people/?keywords=..."
  connectionLevels: ["2nd", "3rd"]   (optional)
  premiumOnly: false                  (optional)
  collectContactInfo: true            (optional)
  enrichData: true                    (optional)

Option C — Post comments

Tool: prospect_import_post_comments
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/posts/some-post-id"
  collectContactInfo: true  (optional)
  enrichData: true          (optional)

Option D — Post reactions

Tool: prospect_import_post_reactions
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/posts/some-post-id"
  collectContactInfo: true  (optional)
  enrichData: true          (optional)

Option E — LinkedIn Group

Tool: prospect_import_linkedin_group
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/groups/12345678/"
  sendMessageUsingGroup: true  (optional — enables group DM context)
  collectContactInfo: true     (optional)
  enrichData: true             (optional)

Option F — LinkedIn Event

Tool: prospect_import_linkedin_event
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/events/87654321/"
  sendMessageUsingEvent: true  (optional — enables event DM context)
  collectContactInfo: true     (optional)
  enrichData: true             (optional)

Option G — Recruiter Lite

Tool: prospect_import_recruiter_lite
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  searchUrl: "https://www.linkedin.com/talent/search?..."
  premiumOnly: false        (optional)
  collectContactInfo: true  (optional)
  enrichData: true          (optional)

Option H — Single prospect by LinkedIn URL

Tool: prospect_add
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  profileUrl: "https://www.linkedin.com/in/johndoe"

Option I — Single prospect by details

Tool: prospect_add
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  firstName: "John"
  jobTitle: "VP Sales"
  companyName: "Acme Corp"

Option J — Bulk upload via CSV

Tool: prospect_upload_csv
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  filePath: "/path/to/prospects.csv"
  enrichData: true          (optional)
  collectContactInfo: false (optional)

IMPORTANT RULES — always follow these exactly:

  1. connectionLevels is always required in campaign_update_settings. The backend throws HTTP 500 if it is missing. Always include it, even if the user did not mention connection levels — default to ["2nd", "3rd"] for LinkedIn search campaigns.

  2. searchUrl and searchType are set automatically by the import call in Step 2 — they persist the prospect source so the UI shows the correct label and URL. Do NOT pass them to campaign_update_settings; they have no effect there.

  3. Match searchType to the import tool used in Step 2 (for reference — these are sent internally by each import tool):

| Step 2 tool used | searchType sent | |----------------------------------------|----------------------| | prospect_import_linkedin_search | normal | | prospect_sync_sales_nav | salesnav | | prospect_import_post_comments | comment | | prospect_import_post_reactions | react | | prospect_import_linkedin_group | group | | prospect_import_linkedin_event | event | | prospect_import_recruiter_lite | recruiter | | prospect_add / prospect_upload_csv | not applicable |


Step 3 — Update Campaign Settings

Tune the campaign-level filters and enrichment options that control how prospects are processed for this specific campaign.

Account-wide settings (quotas, schedule, blacklist) are set once per LinkedIn account in the Prerequisites step — not here.

Campaign settings

Field reference

| Field | Type | Purpose | |-------|------|---------| | connectionLevels | string[] | Array of connection degrees to include. Examples: ["1st"], ["2nd","3rd"], ["1st","2nd","3rd"]. Drives which step types are allowed (e.g. SEND_MESSAGE requires 1st). | | enrichData | boolean | Auto-enrich prospects with company, email, and profile data before the sequence runs. | | premiumOnly | boolean | Restrict outreach to LinkedIn Premium members only. | | openInmailDiscover | boolean | Use Open InMail Discover for prospect targeting (requires Sales Nav / LinkedIn premium). | | fetchAllAtOnce | boolean | Fetch the full prospect list up front instead of streaming in batches. | | groupMessageUrl | string \| null | LinkedIn Group URL used when a step is SEND_MESSAGE_USING_GROUP. | | eventMessageUrl | string \| null | LinkedIn Event URL used when a step is SEND_MESSAGE_USING_EVENT / INVITE_TO_EVENT. | | dontAddIfInAnotherLinkedinAccountForMyUser | boolean | De-dup across the user's other connected LinkedIn accounts — skip prospects already targeted elsewhere. |

IMPORTANT: connectionLevels is always required. The backend throws HTTP 500 if it is missing. Always include it, even if the user did not mention connection levels — default to ["2nd", "3rd"] for LinkedIn search campaigns.

Example:

Tool: campaign_update_settings
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  connectionLevels: ["2nd", "3rd"]
  enrichData: true
  dontAddIfInAnotherLinkedinAccountForMyUser: true

Step 4 — Create Sequence

Build the outreach sequence — the ordered list of steps each prospect goes through.

Add Sequence Steps

Available step types

| Step type (sequenceStepType) | Description | Connection level | |--------------------------------|-------------|------------------| | SEND_CONNECTION_REQUEST | Send LinkedIn connection request (optional note) | 2nd / 3rd only | | SEND_CONNECTION_REQUEST_BROWSER | Browser-based connection request | 2nd / 3rd only | | SEND_CONNECTION_USING_EMAIL | Email-channel connection | Any | | SEND_MESSAGE | Send LinkedIn DM | 1st only | | SEND_MESSAGE_IN_MAIL | Send InMail | 2nd / 3rd (premium) | | SEND_VOICE_MESSAGE | LinkedIn voice note | 1st only | | SEND_VIDEO_MESSAGE | LinkedIn video | 1st only | | SEND_MESSAGE_USING_GROUP | DM via LinkedIn Group context | Any | | SEND_MESSAGE_USING_EVENT | DM via LinkedIn Event context | Any | | VIEW_PROFILE | View prospect's profile (soft touch) | Any | | FOLLOW | Follow prospect | Any | | LIKE_POST | Like prospect's recent post | Any | | LIKE_AND_COMMENT | Like + comment on post | Any | | ENDORSE | Endorse skills | 1st only | | INVITE_TO_EVENT | Invite to a LinkedIn event | 1st only | | WITHDRAW_CONNECTION_REQUEST | Withdraw a pending invite | — |

Per-step inputs

For each step you configure:

  • TypesequenceStepType (see table above)
  • Timingday (days after previous step) + hours (additional hours)
  • Title / description — display labels in the UI
  • Message contentsubject + messageBody (with merge tags)
  • A/B variants — multiple entries in multiVariateMails
  • AI variables — referenced by id/name on the variant
  • MediavoiceMessageURL, videoMessageURL, uploadedFile
  • Email threadingemailThreadMode (NEW | GROUPED) + emailThreadGroupId
  • Event contexteventUrl for INVITE_TO_EVENT / SEND_MESSAGE_USING_EVENT
  • Post age filtermaxPostAgeInDays for LIKE_POST / LIKE_AND_COMMENT
Merge tags

Always use double curly braces {{tag}}. Single braces {tag} will not be resolved and will appear as literal text in the sent message.

| Tag | Resolves to | |-----|-------------| | {{firstName}} | Prospect's first name | | {{lastName}} | Prospect's last name | | {{companyName}} | Prospect's company | | {{jobTitle}} | Prospect's job title | | {{avatarFirstName}} | Sender's first name (avatar) | | {{customField}} | Custom field value | | {{aiVariableName}} | AI variable output (from ai-features create-ai-variable) |

Basic example — connection request + follow-up

Tool: campaign_create_sequence_from_steps
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  campaignFamily: "LINKEDIN"
  sequenceSteps: [
    {
      stepOrdinal: 1,
      day: 0,
      sequenceStepType: "SEND_CONNECTION_REQUEST",
      title: "Connection Request",
      messageBody: "Hi {{firstName}}, I noticed you're the {{jobTitle}} at {{companyName}}. I'd love to connect!"
    },
    {
      stepOrdinal: 2,
      day: 1,
      sequenceStepType: "SEND_MESSAGE",
      title: "Follow-up",
      messageBody: "Hi {{firstName}}, thanks for connecting! Would you be open to a 15-minute call?"
    }
  ]

AI variable — personalised icebreaker

Create the variable first, then reference it with {{variableName}} in any message body.

Tool: ai_features_create_variable
Parameters:
  linkedinAccountUuid: "..."
  name: "icebreaker"
  prompt: "Write a single, friendly sentence referencing {{firstName}}'s recent LinkedIn activity that could open a cold outreach message."

Tool: campaign_create_sequence_from_steps
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  sequenceSteps: [
    {
      stepOrdinal: 1,
      day: 0,
      sequenceStepType: "SEND_CONNECTION_REQUEST",
      messageBody: "{{icebreaker}} Would love to connect, {{firstName}}!"
    }
  ]

AI voice clone — personalised voice notes

Clone your voice once, then use SEND_VOICE_MESSAGE steps to reach prospects at scale.

Tool: ai_features_create_voice_clone
Parameters:
  linkedinAccountUuid: "..."
  voiceName: "My Voice"
  description: "Sales outreach voice"
  removeBackgroundNoise: true

Tool: ai_features_test_voice_clone   (optional verification)
Parameters:
  linkedinAccountUuid: "..."
  text: "Hi {{firstName}}, just wanted to reach out personally!"

Tool: campaign_create_sequence_from_steps
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  sequenceSteps: [
    {
      stepOrdinal: 1,
      day: 0,
      sequenceStepType: "VIEW_PROFILE"
    },
    {
      stepOrdinal: 2,
      day: 1,
      sequenceStepType: "SEND_VOICE_MESSAGE",
      messageBody: "Hi {{firstName}}, I noticed your work at {{companyName}} and wanted to reach out personally!"
    }
  ]

AI video avatar — personalised video messages

Upload a video of yourself to create an avatar, then send AI-personalised videos to each prospect.

Tool: ai_features_create_video_avatar
Parameters:
  linkedinAccountUuid: "..."
  name: "My Avatar"
  description: "Personalised sales outreach"
  gender: "MALE"

Tool: ai_features_generate_sample_video   (optional verification)
Parameters:
  linkedinAccountUuid: "..."
  text: "Hi {{firstName}}, great to connect!"

Tool: campaign_create_sequence_from_steps
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  sequenceSteps: [
    {
      stepOrdinal: 1,
      day: 0,
      sequenceStepType: "SEND_CONNECTION_REQUEST",
      messageBody: "Hi {{firstName}}, would love to connect!"
    },
    {
      stepOrdinal: 2,
      day: 2,
      sequenceStepType: "SEND_VIDEO_MESSAGE",
      messageBody: "Hi {{firstName}}, I made this short video specifically for you about how we help {{companyName}} leaders at {{companyName}}."
    }
  ]

Step 5 — Start Campaign

Tool: campaign_start
Parameters:
  linkedinAccountUuid: "..."
  campaignUuid: "..."
  hasInviteMessage: true

All MCP Tools

linkedin-account (4 tools)

| Tool | Description | |------|-------------| | linkedin_account_list | List all connected LinkedIn accounts | | linkedin_account_check | Check if a LinkedIn email or cookie account exists | | linkedin_account_add_tags | Add tags to an account | | linkedin_account_auth_link | Get LinkedIn authentication URL |

campaign (9 tools)

| Tool | Description | |------|-------------| | campaign_create | Create a new campaign | | campaign_list | List campaigns for an account | | campaign_start | Start a campaign | | campaign_pause | Pause or resume a campaign | | campaign_stats | Get time-based campaign statistics | | campaign_update_settings | Update campaign settings | | campaign_get_prospects | Get prospects in a campaign | | campaign_delete_prospects | Delete multiple prospects | | campaign_create_sequence_from_steps | Create a message sequence |

prospect (15 tools)

| Tool | Description | |------|-------------| | prospect_add | Add a single prospect to a campaign | | prospect_delete | Delete a prospect | | prospect_execution_time | Get last execution time for a prospect | | prospect_list | List prospects | | prospect_pause | Pause or resume a prospect's sequence | | prospect_import_linkedin_search | Import from a LinkedIn search URL | | prospect_import_post_comments | Import prospects who commented on a post | | prospect_import_post_reactions | Import prospects who reacted to a post | | prospect_import_linkedin_group | Import members of a LinkedIn Group | | prospect_import_linkedin_event | Import attendees of a LinkedIn Event | | prospect_import_recruiter_lite | Import from a Recruiter Lite search | | prospect_sync_sales_nav | Import from a Sales Navigator search URL | | prospect_update_settings | Update campaign settings for prospects | | prospect_update | Update prospect details | | prospect_upload_csv | Bulk-add prospects from CSV |

inbox (3 tools)

| Tool | Description | |------|-------------| | inbox_get_messages | Get synced inbox messages | | inbox_send_message | Send a LinkedIn message | | inbox_tag_chat | Tag a conversation |

dashboard (1 tool)

| Tool | Description | |------|-------------| | dashboard_daily_stats | Get daily campaign activity statistics |

setting (5 tools)

| Tool | Description | |------|-------------| | setting_add_schedule | Create a sending schedule | | setting_pending_invite | Update pending invite settings | | setting_quota | Update daily quotas | | setting_update_blacklist | Update blacklist | | setting_copy_blacklist | Copy blacklist from another account |

ai-features (9 tools)

| Tool | Description | |------|-------------| | ai_features_create_variable | Create an AI personalization variable | | ai_features_get_variables | List AI variables | | ai_features_create_video_avatar | Create an AI video avatar | | ai_features_get_video_avatar | Get the configured video avatar | | ai_features_generate_sample_video | Generate a sample personalized video | | ai_features_create_voice_clone | Create an AI voice clone | | ai_features_delete_voice_clone | Delete the voice clone | | ai_features_test_voice_clone | Generate a test voice message |

job (5 tools)

| Tool | Description | |------|-------------| | job_create | Post a new job on LinkedIn | | job_list | List job postings | | job_applicants | Get job applicants | | job_update | Edit a job posting | | job_search_params | Search for location/company/job title IDs |

raw (4 tools)

| Tool | Description | |------|-------------| | raw_get_profile | Fetch a LinkedIn profile by username or URL | | raw_get_post | Get a LinkedIn post by URL | | raw_get_posts | Get recent posts for a profile or company page | | raw_send_connection | Send a LinkedIn connection request |

Common Workflows (MCP)

Check Campaign Performance

1. dashboard_daily_stats
   linkedinAccountUuid: "..."
   campaignUuids: ["campaign-uuid"]
   weeksBack: 4

2. campaign_stats
   linkedinAccountUuid: "..."
   campaignUuid: "..."

Manage Your Inbox

1. inbox_get_messages
   linkedinAccountUuid: "..."
   isUnread: true

2. inbox_send_message
   linkedinAccountUuid: "..."
   prospectUuid: "..."
   messageToSend: "Thanks for connecting! Let's schedule a call..."

3. inbox_tag_chat
   linkedinAccountUuid: "..."
   threadId: "..."
   tags: ["hot-lead", "schedule-call"]

Set Up Account Settings (Before First Campaign)

1. setting_quota
   linkedinAccountUuid: "..."
   dailyViewQuota: 100
   dailyConnectQuota: 25
   dailyMessageQuota: 50
   dailyFollowQuota: 20

2. setting_add_schedule
   linkedinAccountUuid: "..."
   name: "Business Hours"
   startTime: "09:00"
   endTime: "17:00"
   timeZone: "America/New_York"
   maxProspects: 50

3. setting_pending_invite  (optional)
   linkedinAccountUuid: "..."
   dailyConnectQuota: 30
   dailyMessageQuota: 60

4. setting_update_blacklist  (optional — blacklist by company)
   linkedinAccountUuid: "..."
   companyNames: ["Competitor Inc", "Existing Customer Corp"]

4. setting_update_blacklist  (optional — blacklist by profile URL)
   linkedinAccountUuid: "..."
   profileUrls: ["https://linkedin.com/in/exclude-this-person"]

5. setting_copy_blacklist  (optional — copy from another account)
   linkedinAccountUuid: "..."
   copyFromAccount: "<SOURCE_ACCOUNT_UUID>"

Environment Variables

| Variable | Description | Default | |----------|-------------|---------| | SR_API_KEY | SalesRobot API key (required) | — |


License

MIT