agentic-linkedin
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINKEDIN_READ_ONLY | No | Set to 1 or true to block every write tool outright | 0 |
| AGENTIC_LINKEDIN_VOICE_PATH | No | Per-user voice profiles | ~/.agentic-linkedin/voice |
| AGENTIC_LINKEDIN_DEDUPE_PATH | No | Persisted post-dedupe keys | ~/.agentic-linkedin/posts.json |
| AGENTIC_LINKEDIN_OVERLAY_PATH | No | Runtime selector-registry fixes | ~/.agentic-linkedin/overlay.json |
| AGENTIC_LINKEDIN_SESSION_PATH | No | Where the session persists | ~/.agentic-linkedin/session.json |
| AGENTIC_LINKEDIN_PACING_MAX_MS | No | Randomized delay range before writes | 5000 |
| AGENTIC_LINKEDIN_PACING_MIN_MS | No | Randomized delay range before writes | 1000 |
| AGENTIC_LINKEDIN_ARTIFACTS_PATH | No | Redacted failure artifacts | ~/.agentic-linkedin/artifacts |
| AGENTIC_LINKEDIN_BUDGET_PER_HOUR | No | Total writes per sliding hour | 60 |
| AGENTIC_LINKEDIN_BUDGET_PER_SIGNIN | No | Browser-context writes per sign-in (the authwall threshold) | 3 |
| AGENTIC_LINKEDIN_PROBE_INTERVAL_MS | No | Session health-probe interval | 60000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| session_statusA | Reports the health of the LinkedIn session (healthy, unhealthy with a reason, or no-session) and whether the server runs read-only. |
| loginA | Opens a browser window for a one-time sign-in. Sign in and close the window; the session is then persisted and restored across restarts. |
| get_meA | Returns the signed-in member: id, name, headline, vanity name. |
| get_profileB | Returns a member profile (id, name, headline, location, about) by identifier. |
| get_postsB | Returns recent feed posts with id, author, text, and publish time. |
| get_conversationsC | Returns recent messaging conversations with participants and last activity. |
| get_connections_summaryA | Returns the first-degree connection count. |
| get_jobsB | Searches jobs by keywords and location id. |
| get_analyticsA | Returns profile view counts for the signed-in member. |
| get_conversation_historyC | Returns the events of a conversation with id, sender, text, and sent time. |
| get_invitationsB | Returns pending connection invitations with id, profile, and sent time. |
| update_profileA | Edits headline, about, or top-skills and returns the verified profile (read-back). |
| add_skillB | Adds a skill to the profile and returns the verified skills state. |
| remove_skillA | Removes a skill by its profile-skill URN and returns the verified skills state. |
| reorder_skillsB | Reorders top skills (newest first) and returns the verified skills state. |
| delete_ghost_entryC | Removes a profile entry that standard deletes miss, routed through SDUI. |
| create_postA | Publishes a text post, verifies it by read-back, and refuses to double-post the same content. Reports verified:false honestly when the read-back cannot confirm. |
| edit_postA | Replaces a post's text and verifies the edit by read-back. |
| delete_postB | Deletes a post through SDUI and verifies it no longer appears in the feed. |
| commentB | Leaves a text comment on a post. |
| reactA | Leaves a reaction on a post: LIKE, PRAISE, APPRECIATION, EMPATHY, INTEREST, or ENTERTAINMENT. |
| send_messageA | Sends a message in a conversation. Returns the originToken idempotency key — pass it back on a retry so nothing double-sends. |
| recall_messageB | Recalls (deletes) a message you sent. |
| react_to_messageC | Leaves an emoji reaction on a message. |
| connectA | Sends a connection request with a note via the quota-checked endpoint; LinkedIn invite limits surface as clear errors. |
| respond_invitationB | Accepts, ignores, or withdraws a connection invitation; verified by read-back. |
| followC | Follows or unfollows a person (SDUI) or a company (Voyager patch). |
| endorse_skillC | Endorses a skill on someone's profile. |
| remove_connectionB | Removes a connection by vanity name. |
| planA | Turns intended writes into an ordered plan with per-action previews (diffs for profile changes, rendered previews for posts/messages, raw args always available). Nothing executes until approve. |
| dry_runA | Produces the same plan and previews as plan, but nothing is stored and nothing can be approved. |
| approveA | Executes the actions of a pending plan, in order, through the same gated write path as direct tool calls. |
| rejectA | Marks a pending plan rejected; nothing executes. |
| show_artifactB | Returns a redacted failure artifact (failed request, failed strategies, optional DOM dump). |
| update_registryB | Applies a reviewed selector entry to the runtime overlay — fixes land without a redeploy. |
| get_voice_profileA | Returns the voice profile for a user, or an error if none exists yet. |
| set_voice_profileB | Creates or updates the voice profile for a user (tone, vocabulary, emoji, sentence length, stories, notes). |
| bootstrap_voice_profileA | Derives a starting voice profile from the user's past posts (emoji use and sentence length); tune it afterwards. |
| audit_draftA | Scans a draft for AI tells (inflated claims, formulaic structure, em-dash overuse, chatbot phrasing, robotic rhythm) and returns suggested fixes — never rewrites. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 39 tools
Each tool targets a distinct resource and action, with clear separation between posts, comments, reactions, messages, connections, profile editing, skills, session management, and voice profile operations. Even similar-sounding tools like react and react_to_message are clearly differentiated by their target.
The dominant pattern is snake_case verb_noun (create_post, send_message, get_profile), but there are several bare verbs like comment, react, connect, follow, login, plan, approve, and reject, plus non-verb names like session_status and dry_run. The mixed conventions are still readable and not chaotic, but they are inconsistent enough to prevent a higher score.
39 tools is well beyond the 25-tool threshold where a tool set starts to feel heavy. While the domain is broad—covering posts, messaging, connections, profile management, voice, and approval workflows—the sheer count makes it difficult for an agent to efficiently select among many highly specialized operations.
The surface covers core LinkedIn lifecycles well: posts can be created, read, edited, and deleted; messaging has send/recall/history; connections have invite/respond/remove/follow; and profiles support updating, skills management, and endorsements. Minor gaps exist—comments cannot be edited or deleted, reactions cannot be removed, and media/post attachments are unsupported—but these are workable limitations rather than fatal dead ends.