io.github.alexey-pelykh/linkedctl
NPM · LINKEDCTL · SCANNED SEP 20
CLI and MCP server for the LinkedIn API
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 100 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to alexey-pelykh/linkedctl). View diagnostics → Pass
- Clear OSI-approved license (AGPL-3.0-only).Pass
- Actively maintained (last published 185 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability82
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 1989 tokens (~90/item across 22 items; 22 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "auth_revoke" implies "revoke" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.alexey-pelykh/linkedctl MCP server?
io.github.alexey-pelykh/linkedctl runs locally as an npm package, launched with npx -y linkedctl. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · linkedctl
claude mcp add alexey-pelykh-linkedctl -- npx -y linkedctl
{
"mcpServers": {
"alexey-pelykh-linkedctl": {
"command": "npx",
"args": [
"-y",
"linkedctl"
]
}
}
} {
"servers": {
"alexey-pelykh-linkedctl": {
"command": "npx",
"args": [
"-y",
"linkedctl"
]
}
}
} codex mcp add alexey-pelykh-linkedctl -- npx -y linkedctl
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"alexey-pelykh-linkedctl": {
"type": "local",
"command": [
"npx",
"-y",
"linkedctl"
],
"enabled": true
}
}
} openclaw mcp add alexey-pelykh-linkedctl --command npx --arg -y --arg linkedctl
mcp_servers:
alexey-pelykh-linkedctl:
command: "npx"
args: ["-y", "linkedctl"] {
"McpServers": {
"alexey-pelykh-linkedctl": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"linkedctl"
]
}
}
} assistant mcp add alexey-pelykh-linkedctl -t stdio -c npx -a -y linkedctl
{
"mcpServers": {
"alexey-pelykh-linkedctl": {
"command": "npx",
"args": [
"-y",
"linkedctl"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −3
- Stability: pass → 0.80 functional
- 19 Sept 26 0
- Stability: 0.97 → pass security
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 0
- Security disclosure: unverified → fail ▼ functional
- 14 Sept 26 +1
- Security disclosure: fail → unverified ▼ functional
- 13 Sept 26 −3
- Stability: pass → 0.80 functional
- 12 Sept 26 0
- Stability: 0.97 → pass security
- Security disclosure: unverified → fail ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/linkedctl@0.5.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | alexey-pelykh/linkedctl |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/alexey-pelykh/linkedctl/.github/workflows/release.yml@refs/tags/v0.5.0 |
| Rekor log index | 1076116867 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:731f548dc0036dcebcf629091beea418c97d1c35f3cfa9831e2aa0eb05513c76516415e54f1e9424f44bf050d35334a83a1f73c013a04ba057ffdd54a |
Background: How many MCP packages publish verified provenance →
Dependencies 100 packages
| Packages resolved | 100 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
auth_revoke Revoke Auth Token ~41
Revoke the access token server-side and clear local credentials for a profile
| Name | Type | Req | Description |
|---|---|---|---|
| profile | string | – | Profile name to revoke (uses default if not specified) |
No output schema declared.
No examples provided.
auth_status Auth Status ~32
Show authentication status for a profile
| Name | Type | Req | Description |
|---|---|---|---|
| profile | string | – | Profile name to check (uses default if not specified) |
No output schema declared.
No examples provided.
comment_create Create Comment ~97
Create a comment on a LinkedIn post. Use as_org to comment as an organization.
| Name | Type | Req | Description |
|---|---|---|---|
| as_org | string | – | Organization ID to act as (numeric, e.g. 12345) |
| post_urn | string | yes | Post URN to comment on (e.g. urn:li:share:...) |
| profile | string | – | Profile name to use from config file |
| text | string | yes | The comment text |
No output schema declared.
No examples provided.
comment_delete Delete Comment ~62
Delete a comment by URN
| Name | Type | Req | Description |
|---|---|---|---|
| comment_urn | string | yes | Comment URN to delete (e.g. urn:li:comment:(urn:li:activity:123,456)) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
comment_get Get Comment ~61
Get a specific comment by URN
| Name | Type | Req | Description |
|---|---|---|---|
| comment_urn | string | yes | Comment URN (e.g. urn:li:comment:(urn:li:activity:123,456)) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
comment_list List Comments ~56
List comments on a LinkedIn post
| Name | Type | Req | Description |
|---|---|---|---|
| post_urn | string | yes | Post URN to list comments for (e.g. urn:li:share:...) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
document_upload Upload Document ~85
Upload a document to LinkedIn (PDF, DOCX, PPTX, DOC, PPT; max 100 MB). Returns the document URN.
| Name | Type | Req | Description |
|---|---|---|---|
| as_org | string | – | Organization ID to upload as (e.g. 12345) |
| file | string | yes | Absolute path to the document file |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
org_followers Get Organization Followers ~51
Get the follower count for a LinkedIn organization
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Organization ID (numeric, e.g. 12345) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
org_get Get Organization ~49
Fetch a single LinkedIn organization by ID
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Organization ID (numeric, e.g. 12345) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
org_list List Organizations ~67
List LinkedIn organizations the authenticated user administers
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | – | Number of results to return (default 10, max 100) |
| profile | string | – | Profile name to use from config file |
| start | number | – | Starting index for pagination (default 0) |
No output schema declared.
No examples provided.
post_create Create Post ~360
Create a post on LinkedIn with optional media attachment. Supports URNs for pre-uploaded media or local file paths for combined upload+post.
| Name | Type | Req | Description |
|---|---|---|---|
| article_url | string | – | Article URL to attach |
| as_org | string | – | Post as an organization (numeric organization ID). The authenticated user must be an admin. |
| document | string | – | Document URN to attach (e.g. urn:li:document:D123...) |
| document_file | string | – | Path to a local document file to upload and attach |
| draft | boolean | – | Save as draft instead of publishing (defaults to false) |
| image | string | – | Image URN to attach (e.g. urn:li:image:C5608AQ...) |
| image_file | string | – | Path to a local image file to upload and attach |
| image_files | array | – | Array of local image file paths to upload and attach (minimum 2) |
| images | array | – | Array of image URNs for multi-image post (minimum 2) |
| poll | string | – | Poll question text (creates a poll post) |
| poll_duration | string | – | How long the poll stays open (defaults to THREE_DAYS) |
| poll_options | array | – | Array of poll answer options (minimum 2, maximum 4; required when poll is set) |
| profile | string | – | Profile name to use from config file |
| text | string | yes | The text content of the post |
| video | string | – | Video URN to attach (e.g. urn:li:video:D5608AQ...) |
| video_file | string | – | Path to a local video file to upload and attach |
| visibility | string | – | Post visibility (defaults to PUBLIC) |
No output schema declared.
No examples provided.
post_delete Delete Post ~52
Delete a LinkedIn post by URN
| Name | Type | Req | Description |
|---|---|---|---|
| profile | string | – | Profile name to use from config file |
| urn | string | yes | Post URN (e.g. urn:li:share:123) |
No output schema declared.
No examples provided.
post_get Get Post ~53
Fetch a single LinkedIn post by URN
| Name | Type | Req | Description |
|---|---|---|---|
| profile | string | – | Profile name to use from config file |
| urn | string | yes | Post URN (e.g. urn:li:share:123) |
No output schema declared.
No examples provided.
post_list List Posts ~89
List LinkedIn posts with pagination
| Name | Type | Req | Description |
|---|---|---|---|
| as_org | string | – | List posts of an organization (numeric organization ID). The authenticated user must be an admin. |
| count | number | – | Number of posts to return (default 10, max 100) |
| profile | string | – | Profile name to use from config file |
| start | number | – | Starting index for pagination (default 0) |
No output schema declared.
No examples provided.
post_update Update Post ~67
Update the commentary text of an existing LinkedIn post
| Name | Type | Req | Description |
|---|---|---|---|
| profile | string | – | Profile name to use from config file |
| text | string | yes | New text content for the post |
| urn | string | yes | Post URN (e.g. urn:li:share:123) |
No output schema declared.
No examples provided.
reaction_create Create Reaction ~128
Add a reaction to a LinkedIn post. Supports LIKE (default), PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT. Use as_org to react as an organization.
| Name | Type | Req | Description |
|---|---|---|---|
| as_org | string | – | Organization ID to act as (numeric, e.g. 12345) |
| entity_urn | string | yes | Entity URN to react to (e.g. urn:li:share:abc123) |
| profile | string | – | Profile name to use from config file |
| reaction_type | string | – | Type of reaction (defaults to LIKE) |
No output schema declared.
No examples provided.
reaction_delete Delete Reaction ~90
Remove a reaction from a LinkedIn post. Use as_org to delete an organization's reaction.
| Name | Type | Req | Description |
|---|---|---|---|
| as_org | string | – | Organization ID to act as (numeric, e.g. 12345) |
| entity_urn | string | yes | Entity URN to remove reaction from (e.g. urn:li:share:abc123) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
reaction_list List Reactions ~58
List reactions on a LinkedIn post
| Name | Type | Req | Description |
|---|---|---|---|
| entity_urn | string | yes | Entity URN to list reactions for (e.g. urn:li:share:abc123) |
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
stats_me My Stats ~121
Get aggregated analytics across all your LinkedIn posts (impressions, reach, reactions, comments, reshares). Requires the Community Management API product (r_member_postAnalytics scope).
| Name | Type | Req | Description |
|---|---|---|---|
| aggregation | string | – | Aggregation mode (defaults to TOTAL). DAILY returns per-day breakdown. |
| from | string | – | Start date inclusive (YYYY-MM-DD). If omitted, lifetime totals are returned. |
| profile | string | – | Profile name to use from config file |
| to | string | – | End date exclusive (YYYY-MM-DD). If omitted, lifetime totals are returned. |
No output schema declared.
No examples provided.
stats_org Organization Share Statistics ~181
Get share statistics for a LinkedIn organization. Returns lifetime aggregate statistics by default. When time_granularity and start/end are provided, returns time-bucketed statistics.
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | – | End of time range (ISO 8601 date, e.g. 2026-02-01). Requires start. |
| id | string | yes | Organization ID (numeric, e.g. 12345) |
| profile | string | – | Profile name to use from config file |
| shares | string | – | Comma-separated share URNs to filter statistics for specific posts |
| start | string | – | Start of time range (ISO 8601 date, e.g. 2026-01-01). Requires end. |
| time_granularity | string | – | Time granularity for bucketed results (DAY or MONTH). Requires start and end. |
No output schema declared.
No examples provided.
stats_post Post Stats ~152
Get analytics for a single LinkedIn post (impressions, reach, reactions, comments, reshares). Requires the Community Management API product (r_member_postAnalytics scope).
| Name | Type | Req | Description |
|---|---|---|---|
| aggregation | string | – | Aggregation mode (defaults to TOTAL). DAILY returns per-day breakdown. |
| from | string | – | Start date inclusive (YYYY-MM-DD). If omitted, lifetime stats are returned. |
| post_urn | string | yes | Post URN (e.g. urn:li:share:123 or urn:li:ugcPost:123) |
| profile | string | – | Profile name to use from config file |
| to | string | – | End date exclusive (YYYY-MM-DD). If omitted, lifetime stats are returned. |
No output schema declared.
No examples provided.
whoami Who Am I ~37
Show the current LinkedIn user's name, email, and profile picture URL
| Name | Type | Req | Description |
|---|---|---|---|
| profile | string | – | Profile name to use from config file |
No output schema declared.
No examples provided.
What is the io.github.alexey-pelykh/linkedctl MCP server?
io.github.alexey-pelykh/linkedctl is an MCP server listed in the public MCP registry as io.github.alexey-pelykh/linkedctl. CLI and MCP server for the LinkedIn API. This page covers its npm package (linkedctl).
Is the io.github.alexey-pelykh/linkedctl MCP server safe to use?
io.github.alexey-pelykh/linkedctl scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.alexey-pelykh/linkedctl MCP server expose?
io.github.alexey-pelykh/linkedctl exposes 22 tools: whoami, auth_status, auth_revoke, post_create, post_get, and 17 more. Their descriptions and schemas cost roughly 1,989 tokens of context every time the server is loaded.
Is the io.github.alexey-pelykh/linkedctl MCP server still maintained?
io.github.alexey-pelykh/linkedctl is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.alexey-pelykh/linkedctl MCP server under?
io.github.alexey-pelykh/linkedctl declares the AGPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.