Leadspicker Robots (MCP)
Creates and launches robots (LinkedIn scraping automations) in Leadspicker through the
Leadspicker MCP server via mcp__leadspicker__create_robot. Each robot scrapes LinkedIn
data and deposits the results as leads into a target Leadspicker project.
4 supported robot types:
| Robot type | robot_type |
What it does |
|---|---|---|
| Post Scrape | li_posts_extract |
Scrape likers / commenters from specific LinkedIn posts |
| Post Monitor | li_posts_monitor |
Track new posts by specific LinkedIn profiles or companies |
| Post Feed Search | li_posts_feed |
Search LinkedIn posts by keywords |
| People Search | salesnav_monitor |
LinkedIn people search (Sales Nav, normal search, event attendees) |
MCP tools used
| MCP tool | Purpose |
|---|---|
mcp__leadspicker__list_projects |
Look up project by name (search_query) or list recent (order_by="last_active") |
mcp__leadspicker__get_project |
Fetch project detail |
mcp__leadspicker__create_project |
Create a new target project (name, timezone) |
mcp__leadspicker__list_linkedin_accounts |
List connected LinkedIn accounts (filter by is_revoked: false, sales_nav_session_connected, linkedin_session_connected) |
mcp__leadspicker__create_robot |
Create and launch the robot. Parameters: target_project_id, robot_type, robot_urls, frequency, plus type-specific fields. |
mcp__leadspicker__list_robots |
List robots (optionally scoped by project) |
mcp__leadspicker__get_robot |
Get robot detail / logs / export (info_type) |
mcp__leadspicker__control_robot |
Pause / unpause / restart / delete robot |
mcp__leadspicker__get_current_time |
Use to generate a robot name with the current timestamp |
User input
| Parameter | Required | Description | Example |
|---|---|---|---|
target_project_id |
Yes | Target Leadspicker project (resolved by name) | 30877 |
| URL(s) | Yes | One or more LinkedIn URLs — determines robot type | see URL detection below |
If anything is missing, ask for ALL missing parameters in a single follow-up — not one by one.
Project resolution
Display format: always render as {name} (#{id}).
- User named a project →
mcp__leadspicker__list_projects(search_query="{name}", limit=5). Confirm; if multiple, ask which one. - No named project →
mcp__leadspicker__list_projects(order_by="last_active", limit=20)and ask:Which project should receive the scraped leads? 1. CEOs Czechia (#30877) — last active 2026-03-23 2. SaaS Founders (#30512) — last active 2026-03-21 … New: create a new project - User wants a new project → ask for a name, then
mcp__leadspicker__create_project(name="{name}", timezone="Europe/Prague"). Use the returnedid.
URL detection — auto-routing to robot type
| URL pattern | Robot type | Example |
|---|---|---|
Contains /feed/update/ or /posts/ |
li_posts_extract |
https://www.linkedin.com/feed/update/urn:li:activity:7441864955731103744/ |
Contains /in/ or /company/ (profile, NOT a search URL) |
li_posts_monitor |
https://www.linkedin.com/in/tblatak/, https://www.linkedin.com/company/leadspicker |
Contains /search/results/content |
li_posts_feed |
https://www.linkedin.com/search/results/content/?keywords=… |
Contains /sales/search/people |
salesnav_monitor |
Sales Navigator people search URL |
Contains /search/results/people (no eventAttending) |
salesnav_monitor |
https://www.linkedin.com/search/results/people/?keywords=ceo |
Contains eventAttending |
salesnav_monitor |
https://www.linkedin.com/search/results/people/?origin=EVENT_PAGE_CANNED_SEARCH&eventAttending=… |
Rules:
- Profile URLs (
/in/...or/company/...) NOT inside a search URL →li_posts_monitor. - If ambiguous, ask the user which type they intend.
- Multiple URLs of the same type are fine — concatenate them with newlines in
robot_urls. - Do NOT mix URL types in a single robot — for mixed input, create separate robots.
Sales Navigator URL — how to obtain
This MCP skill does not generate Sales Navigator URLs from filter descriptions. If the user needs a Sales Nav URL:
- Ask them to build it manually in LinkedIn Sales Navigator (set filters, copy the URL).
- Or ask them to paste an existing URL.
- Or, when running outside MCP, generate it programmatically with their preferred tool.
Then use the URL as robot_urls input here.
Robot type details
1) li_posts_extract — scrape specific posts
Scrapes likers and commenters from specific LinkedIn post URLs.
URL input: one or more post URLs (/feed/update/ or /posts/).
| Parameter | Default | Notes |
|---|---|---|
frequency |
"once" |
Always once — do not ask |
max_likers |
250 |
User can override |
max_commenters |
250 |
User can override |
max_posts |
500 |
Default |
should_scrape_authors |
False |
Always false — do not ask |
max_post_age |
— | Not applicable |
linkedin_account_id |
— | Not needed — omit |
Questions to ask the user: none beyond the URLs. Use defaults and proceed.
2) li_posts_monitor — track posts by account
Monitors posts published by specific LinkedIn profiles or company pages.
URL input: one or more profile URLs (/in/...) or company URLs (/company/...).
| Parameter | Default | Notes |
|---|---|---|
max_post_age |
"month" |
Options: "day", "week", "month", "year", "any" |
frequency |
"once" |
Options: "once", "daily", "3days", "weekly" |
max_posts |
500 |
Default |
max_likers |
250 |
Default |
max_commenters |
250 |
Default |
should_scrape_authors |
False |
Always false — do not ask |
linkedin_account_id |
— | Optional — omit by default |
Ask the user: how far back to look (max_post_age, suggest "month"); whether they want recurring runs (frequency, suggest "once").
3) li_posts_feed — search posts by keywords
Searches LinkedIn for posts matching specific keywords.
URL input: content search URL (/search/results/content).
| Parameter | Default | Notes |
|---|---|---|
should_scrape_authors |
True |
Always true for keyword search |
max_post_age |
"week" |
Options: "day", "week", "month", "year", "any" |
frequency |
"once" |
Options: "once", "daily", "3days", "weekly" |
max_posts |
500 |
Default |
max_likers |
250 |
Default |
max_commenters |
250 |
Default |
linkedin_account_id |
— | Optional — omit by default |
Ask the user: same as li_posts_monitor — max_post_age and frequency.
4) salesnav_monitor — LinkedIn people search
Searches for people via Sales Navigator, normal LinkedIn search, or event attendees.
URL input: one of:
- Sales Navigator —
/sales/search/people - Normal LinkedIn people search —
/search/results/people(noeventAttending) - Event attendees — contains
eventAttending
| Parameter | Default | Notes |
|---|---|---|
max_posts |
500 |
IMPORTANT: despite the field name, this controls max number of PEOPLE to scrape, not posts. API field is reused. |
max_likers |
0 |
Not relevant for people search |
max_commenters |
0 |
Not relevant for people search |
should_scrape_authors |
True |
Always true |
max_post_age |
"all" |
Default for people search |
frequency |
"once" |
Supports recurring |
linkedin_account_id |
see below | Required for Sales Nav and event URLs |
LinkedIn account selection
| URL type | linkedin_account_id |
Why |
|---|---|---|
| Sales Navigator | Required | Needs a LinkedIn account with Sales Navigator access |
| Event attendees | Required | Needs a LinkedIn account that has attended the event |
| Normal people search | Optional | Omit by default |
When required:
mcp__leadspicker__list_linkedin_accounts().- Filter:
- Always exclude
is_revoked: True. - Sales Nav URLs → keep only
sales_nav_session_connected: True. - Event URLs → keep only
linkedin_session_connected: True.
- Always exclude
- Show a table of valid accounts and ask the user to pick.
- Use the selected
idaslinkedin_account_id. - If no valid accounts exist, stop and tell the user:
- Sales Nav: "No LinkedIn accounts with Sales Navigator connected. Please connect one in Leadspicker first."
- Events: "No connected LinkedIn accounts found. Please connect one in Leadspicker first."
Robot name
Auto-generate the robot's name with a timestamp:
{Type Label} ({DD. M. YYYY HH:MM:SS})
| Robot type | Type label |
|---|---|
li_posts_extract |
Post Tracker |
li_posts_monitor |
Post Tracker |
li_posts_feed |
Post Tracker |
salesnav_monitor |
LinkedIn people |
Use mcp__leadspicker__get_current_time(timezone="Europe/Prague") for the timestamp.
Examples: Post Tracker (23. 3. 2026 17:45:28), LinkedIn people (23. 3. 2026 18:10:02).
Workflow
Step 1 — collect input
Resolve target_project_id and the URL(s).
Step 2 — detect robot type
Apply URL detection. Tell the user:
Detected: Post Scrape (li_posts_extract) — scraping likers and commenters from 2 LinkedIn posts.
Step 3 — collect type-specific parameters
li_posts_extract: none — proceed with defaults.li_posts_monitor: askmax_post_age(default"month"),frequency(default"once").li_posts_feed: askmax_post_age(default"week"),frequency(default"once").salesnav_monitor: if Sales Nav or event URL → run LinkedIn account selection above; ask aboutfrequencyif relevant (default"once").
Step 4 — show payload preview
Assemble the parameters and show them to the user for approval:
Robot ready to launch:
Type: Post Scrape (li_posts_extract)
Name: Post Tracker (23. 3. 2026 17:45:28)
Target project: CEOs Czechia (#30877)
URLs: 2 LinkedIn posts
Max likers: 250
Max commenters: 250
Frequency: once
Proceed?
For salesnav_monitor also show: linkedin_account_id (account name) and max_posts (= max people).
Step 5 — launch
mcp__leadspicker__create_robot(
target_project_id=30877,
robot_type="li_posts_extract",
robot_urls="https://www.linkedin.com/feed/update/urn:li:activity:7441864955731103744/",
frequency="once",
max_posts=500,
max_likers=250,
max_commenters=250,
should_scrape_authors=False,
deduplicate_results=True,
status="ready",
)
For people search with Sales Nav:
mcp__leadspicker__create_robot(
target_project_id=30877,
robot_type="salesnav_monitor",
robot_urls="https://www.linkedin.com/sales/search/people?query=…",
linkedin_account_id=4773,
frequency="once",
max_posts=500,
max_likers=0,
max_commenters=0,
max_post_age="all",
should_scrape_authors=True,
deduplicate_results=True,
status="ready",
)
Step 6 — confirm result
Report:
- Robot ID, name, type, target project.
- If recurring, note the frequency.
- On error, show HTTP status and resolution.
Managing existing robots
| Action | MCP tool |
|---|---|
| List all robots | mcp__leadspicker__list_robots() |
| List robots in a project | mcp__leadspicker__list_robots(project=X) |
| Get robot detail | mcp__leadspicker__get_robot(robot_id=X, info_type="detail") |
| Get robot logs | mcp__leadspicker__get_robot(robot_id=X, info_type="logs") |
| Export robot results | mcp__leadspicker__get_robot(robot_id=X, info_type="export") |
| Pause | mcp__leadspicker__control_robot(robot_id=X, action="pause") |
| Unpause | mcp__leadspicker__control_robot(robot_id=X, action="unpause") |
| Restart | mcp__leadspicker__control_robot(robot_id=X, action="restart") |
| Delete | mcp__leadspicker__control_robot(robot_id=X, action="delete") |
| Copy to another project | mcp__leadspicker__copy_robot(robot_id=X, target_project=Y) |
Common errors
| Symptom | Likely cause | Fix |
|---|---|---|
Tool returns 404 |
Wrong project / endpoint | Re-list and reconfirm target_project_id |
Tool returns 400 |
Invalid URL, missing required field | Validate the URL pattern and required parameters |
Tool returns 422 |
Invalid robot_type or validation error |
Robot type must be one of the four; for Sales Nav, linkedin_account_id is required |
Tool returns 429 |
Rate limit | Wait 2–3 s and retry |
Safety
- Always show the full payload to the user before launching.
- Never execute without explicit user confirmation.