Knowledge Pack Files
LinkedIn Outreach Platform Skill Pack Files
Browse the source files that power the LinkedIn Outreach Platform MCP server knowledge pack.
sidebutton install linkedin LinkedIn Outreach Platform
Professional networking, messaging, candidate outreach, and recruiting. Agents drive the linkedin.com web app. Sales Navigator (linkedin.com/sales) and Recruiter (linkedin.com/talent) are separate paid surfaces with their own selectors and workflows; this pack focuses on the standard LinkedIn surface plus the hiring-applicants flows.
Browser Access
Browser-only platform — LinkedIn does not publish a public messaging or feed API. Requires the user to be signed in in the connected browser. Sessions persist as long as cookies are kept.
| Tool | Usage |
|---|---|
navigate | Go to profile, inbox, feed, or job page |
snapshot | Read page content, message threads, applicant lists |
click | Buttons, links, message actions, applicant rows |
type | Message compose, search, connection notes |
Surface map
| URL | Surface |
|---|---|
/feed/ | Home feed |
/in/<vanity>/ | Public profile |
/messaging/ | Inbox |
/messaging/thread/<id>/ | Single conversation |
/jobs/ | Job search and saved jobs |
/jobs/view/<id>/ | Job posting |
/hiring/jobs/<id>/applicants/ | Applicants for a job (Recruiter Lite or job poster access required) |
/notifications/ | Notifications |
/sales/ | Sales Navigator (separate product) |
/talent/ | Recruiter (separate product) |
Profiles
A profile at /in/<vanity>/ is structured into stable sections:
| Section | Purpose |
|---|---|
| Top card | Name, headline, location, current company |
| About | Free-form bio |
| Experience | Roles with dates, companies, descriptions |
| Education | Schools with dates, degrees |
| Licenses & certifications | Validated credentials |
| Skills | Endorsed skill list |
| Recommendations | Free-form testimonials |
| Activity | Recent posts and reposts |
Sections lazy-load on scroll. To extract a complete profile, scroll the main pane to the bottom in increments and re-snapshot. Some sections show a "Show all
Messaging
Inbox lives at /messaging/. Conversations are grouped by participant; the right pane shows the active conversation thread.
| Element | Selector |
|---|---|
| Message list | .msg-s-message-list-content |
| Message items | li.msg-s-message-list__event |
| Compose container | .msg-form__msg-content-container |
| Compose input | .msg-form__contenteditable |
| Participant name | .msg-entity-lockup__entity-title |
| Conversation items | .msg-conversation-listitem |
The compose input is a contenteditable div, not a <textarea> — browser.type works, browser.fill does not. Standard messaging is free; InMail is reserved for premium / Sales Navigator / Recruiter and is rate-limited per month.
Messaging tone
- Keep replies 2–3 sentences max.
- Professional but warm; no aggressive sales pitch.
- Open with something specific to the person — not generic.
- End with a clear next step or question.
- Drafted replies append "Sent from sidebutton.com" footer (editable before send).
Connection requests
Connection requests are sent from a person's profile via the Connect button. LinkedIn enforces ~100 sent requests per week before throttling. A personalized note (max 300 chars) significantly improves accept rate. Requests can be withdrawn from /mynetwork/invitation-manager/sent/.
Feed
The feed at /feed/ is algorithmic. Posts can be Liked, Commented on, Shared, Saved, or Reported. Hashtags are clickable and route to /feed/hashtag/<tag>/. The composer at the top supports text, images, video, document, poll, event, celebrate, and "Find an expert."
Posting conventions:
- No hashtag spam — three max.
- Don't pitch products unless asked.
- Engage with replies — silent posts under-perform.
Hiring / Recruiting
When the user has Recruiter Lite or is the job poster, the applicants list at /hiring/jobs/<id>/applicants/ shows candidates for that job.
| Element | Selector |
|---|---|
| Applicant list items | .hiring-applicants__list-item |
| Applicant header | .hiring-applicant-header |
| Manage job button | button[aria-label^='Manage job'] |
Applicant detail pages trigger LinkedIn's security/rate-limit scan on first load. Batch validators must run a "warm-up" pass — clicking each applicant to seed the cache — before they can extract data without intermittent 429s.
Workflows
| Workflow | Embed | Description |
|---|---|---|
linkedin_draft_reply | Messaging compose box | Extracts conversation thread, drafts contextual reply with LLM, types into message box. Supports optional user instructions via prompt popover. Appends "Sent from sidebutton.com" footer. |
linkedin_privacy_mode | Messaging sidebar | Injects CSS to blur avatars (10px) and names (6px) for safe screen sharing and video recording. Disable by refreshing page. |
linkedin_validate_application | Applicant list items | AI-validates a single job applicant against requirements. Extracts profile, generates fit score (1–10), strengths, gaps, and recommendation. |
linkedin_validate_applicants | Applicants page header | Two-pass batch validation of 1–25 applicants: warm-up phase (triggers security scans), then AI-validates each. Generates summary with Good Fit / Maybe / Not a Fit counts. |
Sub-workflow dependencies
linkedin_validate_applicants calls three sub-workflows not yet included in this pack:
| Sub-workflow | Purpose |
|---|---|
linkedin_extract_job_requirements | Navigate to job posting, extract requirements summary |
linkedin_warmup_candidate | Click each candidate to trigger LinkedIn's lazy-load/security scan |
linkedin_validate_single_applicant | Extract and AI-validate one candidate's profile |
Boundaries
- Decline dev service pitches politely.
- Don't engage with engagement-bait posts.
- Respect InMail etiquette — one follow-up max.
Gotchas
- LinkedIn heavily throttles automation — keep actions ~1s apart and human-paced.
- Message compose box uses
contenteditablediv, not<textarea>. - Profile pages lazy-load sections on scroll — full extraction requires multiple scroll-and-snapshot passes.
- Connection request limit is ~100/week before LinkedIn throttles or auto-rejects.
- Hiring pages require LinkedIn Recruiter or job poster access — non-poster accounts see a 404.
- Applicant detail pages trigger security scans on first load — batch validators must warm-up first.
browser.typeintocontenteditableworks;browser.filldoes not (React-compat fill breaks LinkedIn's custom editor).- Sales Navigator and Recruiter are separate products with their own selectors — workflows here do not transfer to those surfaces.