LinkedIn workflows
Reliable SalesTouch MCP sequences for research, conversations, outreach, engagement, and extraction.
The strongest MCP workflows use small, inspectable tool calls. Resolve identities first, mutate second, and verify state after queued or delayed work.
Research a prospect and conversation
- Call
linkedin_accountswhen the account is unknown. - Resolve the member with
linkedin_lookup_profile. - Find the thread with
linkedin_conversations_search. - Load context with
linkedin_conversations_messages. - Ask the agent to summarize the relationship before drafting anything.
Prompt:
Look up this profile, find our LinkedIn conversation, read the message history, and summarize the relationship. Do not send anything.
Send to an existing connection
- Read the conversation or call
lead_status. - Confirm the exact message with the user.
- Call
linkedin_messagewith a member target andtext. - If SalesTouch requires queueing, retry with
queue: true. - Report whether the action was sent or queued.
Invite and follow up after acceptance
Use linkedin_invite_then_message when the follow-up should run only after the invitation is accepted. Provide the target and follow_up_message; the invitation note is optional.
Use lead_status later to inspect invitation acceptance, the persisted follow-up, or queued-message state.
Schedule a LinkedIn action
Add scheduled_for to any message, invitation, invite-then-message, like, comment, or publication. Use an ISO 8601 datetime with a timezone.
SalesTouch persists the request immediately, but never executes it before the requested time. Working hours, account limits, or a LinkedIn cooldown can move the effective scheduled_for later. Explicit schedules take priority over actions queued automatically.
The response distinguishes requested_for from the effective scheduled_for and reports whether the execution event is registered, awaiting_horizon, or pending_retry. Long-term schedules remain durable in SalesTouch until they enter the execution horizon.
Sleeping credential-based LinkedIn accounts reconnect when the action becomes due. Legacy cookie accounts can still require a manual reconnect.
Engage with a post
- Resolve ambiguous post URLs with
linkedin_lookup_post. - Call exactly one matching action:
linkedin_likeorlinkedin_comment. - Use
queue: truewhen the action cannot run immediately.
Avoid asking the agent to “engage” without specifying the exact action and comment text.
Extract post engagers
- Resolve the post with
linkedin_lookup_post. - Call
scrape_linkedin_post_reactionsorscrape_linkedin_post_comments. Comment scraping returns root commenters by default; setinclude_replies: trueonly when reply authors are required. - Read the inline preview.
- If
source_paging.exhaustedisfalse, callscrape_linkedin_post_commentsagain with the returnedsource_paging.arguments. This continues LinkedIn extraction from the saved source position and preserves the originalinclude_repliesmode after the automatic provider-request safety budget or a recoverable LinkedIn interruption. - Use
scrape_result_pagewith the returnedresult_idonly to page through profiles already stored by that call. - Use the export metadata when the complete dataset belongs outside the agent context.
Extract from search
- Use
scrape_linkedin_search_urlwhen you already have a native LinkedIn Classic people, company, post, or job search URL. - Use
scrape_linkedin_people_search,scrape_linkedin_companies_search,scrape_linkedin_posts_search, orscrape_linkedin_jobs_searchfor structured LinkedIn Classic filters. - Use
scrape_sales_navigator_search_urlwhen you already have a native Sales Navigator people or company URL and want SalesTouch to infer the result type. - Use
scrape_sales_navigator_peoplefor a Sales Navigator lead search URL or structured people filters. - Use
scrape_sales_navigator_companiesfor a Sales Navigator company search URL or structured company filters. - Use
linkedin_sales_navigator_search_parametersto discover account-specific ids for locations, industries, companies, job titles, and other enumerated filters. Setproduct: "classic"for LinkedIn Classic; the default remains Sales Navigator for compatibility. - Use
linkedin_lookup_job_postingafter a job search to fetch one complete posting, including optional hiring-team, salary, and benefits sections. - Set
preview_limitto keep the inline response small. - Page stored results instead of requesting the full extraction in one tool call.
Structured filter values accept either a known id or a human-readable query. A query is used automatically only when it resolves to one exact value. If several candidates match, retry with the selected candidate id.
Example: growth hackers in Paris at companies with 1–10 employees:
{
"filters": {
"current_job_title": { "include": [{ "query": "Growth Hacker" }] },
"location": { "include": [{ "query": "Paris" }] },
"company_headcount": [{ "min": 1, "max": 10 }]
},
"limit": 100,
"preview_limit": 20
}Example: ESN in Paris, using LinkedIn's IT services industry as the business proxy:
{
"filters": {
"industry": { "include": [{ "query": "IT Services and IT Consulting" }] },
"location": { "include": [{ "query": "Paris" }] }
},
"limit": 1000,
"preview_limit": 20
}Example: companies in Paris that are hiring:
{
"filters": {
"location": { "include": [{ "query": "Paris" }] },
"hiring_on_linkedin": true,
"department_headcount_growth": {
"department": [{ "query": "Engineering" }],
"min": 1
}
},
"limit": 1000,
"preview_limit": 20
}To find people only inside a company result, first call scrape_sales_navigator_companies. Then pass its result_id as company_result_id to scrape_sales_navigator_people, together with people filters such as current_job_title. SalesTouch validates result ownership, expiry, and LinkedIn account, then applies the companies in safe batches.
{
"company_result_id": "previous_company_result_id",
"filters": {
"current_job_title": { "include": [{ "query": "Directeur des ressources humaines" }] }
},
"limit": 100,
"preview_limit": 20
}Interpret hiring and exhaustiveness correctly
hiring_on_linkedin: true means the company has at least one LinkedIn job posting; it does not prove that the open role is a developer role. Add department_headcount_growth for the Engineering function as an intent signal, or start from a verified job-search dataset when the job title must be exact. “All companies” also means all results exposed by the selected Sales Navigator filters, subject to LinkedIn's result cap; segment broad searches when the warning asks you to narrow them.
“ESN” is not a native LinkedIn company classification. Use IT Services and IT Consulting as the broad industry proxy, then qualify the returned companies from their description or website instead of treating a keyword match as proof.
Cancel queued work or a waiting follow-up
- Get the exact identifier from
statusorlead_status. - Call
queue_cancelwith exactly one of:queued_action_idto cancel a queued invitation, message, or other action;followup_idto cancel an automatic message inwaiting_acceptancewithout altering its invitation.
- Report the cancellation result; do not assume a local request cancelled the remote action.
Trust returned state
Treat sent, queued, accepted, and cancelled states returned by SalesTouch as the source of truth. Do not infer execution from the original prompt.