LinkedIn Evidence MCP (victoryotzev/linkedin-mcp) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 44 tools. No publisher has claimed this listing.

C
Emerging
74/100

LinkedIn Evidence MCP

A local-first LinkedIn workspace that turns your own documents, CVs, repositories, and exports into a verifiable claim ledger and evidence-backed canonical profile, enabling evidence import, claim verification, profile patching, post drafting, content planning, analytics, and publication approvals through MCP tools — all stored locally in SQLite with an optional human-review dashboard.

Emerging. No concerning findings. Grades remain capped until the project builds reputation through adoption. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

victoryotzev

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
// tools this server exposes44 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

linkedin_analytics_import

Record metrics the member transcribed from their own LinkedIn UI (impressions, reactions, comments, profile views, followers). LinkedIn's member-analytics APIs require Community Management access that individuals cannot obtain, so manual import is the supported path. Duplicate (subject, metric, time

linkedin_analytics_query

List observations, summarise metrics, or compare two groups of posts. Comparisons always return their sample size, mandatory confounders and a confidence label capped at "moderate" — a single account cannot support a causal claim.

linkedin_capability_status

List LinkedIn credential/API readiness with status, blockers, and remediation. This is separate from shared feature settings. Credentials use the dashboard or CLI; verification and non-secret feature decisions can also be performed through MCP with confirmation.

linkedin_feature_control

List every MCP/dashboard feature group with its description and effective state, or enable/disable one after explicit confirmation. All groups default enabled except live_publishing. Secrets are not a feature setting and cannot be configured through MCP.

linkedin_changeset_generate

Generate exact old/new field patches from the canonical-vs-snapshot diff, evidence-linked. Cited claims are re-verified at generation time. Applying a patch is ALWAYS a manual copy/paste by the user — no profile-edit API exists.

linkedin_changeset_review

Accept, reject, edit, or supersede a field patch. Editing re-hashes the patch and drops it back to proposed — approvals never survive content changes. Get a change set by generating it or via the id returned earlier.

linkedin_changeset_export

Copy-paste bundle for all APPROVED patches in a change set: exact text (byte-identical to the approved patch), char counts vs limits, and where in the LinkedIn UI to paste each field. Blocks if any approved patch exceeds its char limit.

linkedin_patch_mark_applied

Record that the user manually pasted an approved patch into LinkedIn. The next linkedin_snapshot_import auto-verifies it when the new text appears in the snapshot.

linkedin_changeset_get

Fetch a change set with all its patches and states.

linkedin_claim_list

Search the evidence ledger. Filters: state, stale (verified past review_by), sensitivity, artifact, full-text. With id set, returns the claim plus its evidence locations.

linkedin_claim_manage

Propose, verify, reject, mark_ambiguous, or merge claims. Verification and rejection are HUMAN decisions: verify requires confirm:true after the user has reviewed the evidence (>=1 primary link required; authorship-shaped statements cannot cite local_clone_reference sources). Rejections persist as p

linkedin_conflict_list

List detected evidence conflicts with their member claims.

linkedin_conflict_resolve

Resolve or dismiss a conflict, optionally applying member claim transitions atomically (all-or-nothing). Human decision: requires confirm:true.

linkedin_coverage_check

Map each sentence of a text to supporting VERIFIED claims (deterministic token-overlap screening). Persists a content-addressed report; identical text returns the same report.

linkedin_content_opportunities

Rank verified claims by novelty — how little they overlap with what has already been published or drafted. Each idea carries its claim id and any allowed-wording limitations, so a draft can cite it directly.

linkedin_voice_profile

Descriptive statistics of the member's own published posts (length, language mix, hashtag habits, cadence). Use it to match how they actually write instead of inventing a tone. Import the history first with linkedin_published_import.

linkedin_published_import

Parse the Shares file of an imported LinkedIn export into the member's own published-post history (used for repetition checks and the voice profile).

linkedin_draft_write

Create a post draft or append a new revision. Revisions are append-only and every write drops the draft back to "draft" state, invalidating any earlier validation — text and approval are always bound to one revision hash.

linkedin_draft_list

List drafts, or with id return the current revision text, its latest validation report and the exact preview that a publication approval would bind to.

linkedin_draft_validate

Run the deterministic gates on the current revision: evidence coverage (unsupported sentences block), secret leakage, fabricated metrics (quantities absent from verified claims), repetition against published posts and other drafts, filler language, character limit and link shape. Passing moves the d

linkedin_calendar_plan

Create or update content pillars and calendar entries, or list them. Planning metadata only — nothing is ever published from a date; publishing always requires an explicit human approval.

linkedin_capability_verify

Probe LinkedIn to confirm a configured capability actually works, then record the result. Requires a stored token, which is entered in the dashboard or masked companion CLI and never passes through MCP. Fails closed with the exact blocker while no developer app exists.

linkedin_dma_sync

Pull the member's own data through the EU Data Portability API: Snapshot for profile and post history, Changelog for the rolling 28-day event window. Runs only when invoked — this app ships no scheduler — and sensitive domains (messages, connections, logins, ad profiling) are excluded by default. Sn

linkedin_profile_read_latest

Initiate a NEW read of the member's own profile through the EU Data Portability lane: reconcile the Member Changelog, then fetch all ten non-sensitive profile Snapshot domains. Every call issues fresh upstream requests — unlike linkedin_profile_get, which returns the local canonical profile and call

linkedin_backup_run

Create a verified backup (online SQLite snapshot + artifacts + hash manifest) inside the managed data directory, or produce an export bundle of the member's own data. There is no path parameter: backups only ever land in the managed location. Secrets are never included.

linkedin_purge_run

Run retention, permanently delete one uncited artifact, prune or delete EU Data Portability data, or schedule a full local purge. prune_dma drops portability history older than a cutoff while keeping the current observed profile; purge_dma deletes the portability lane outright, which is how a member

linkedin_readiness_check

Report what is configured, what needs attention, and the single most useful next step. Read-only: it never enables, imports, migrates, or verifies anything. Use this first on a new install, and whenever something appears not to work. A check reported as "unavailable" is not a task — it is something

linkedin_intake_describe

Store a short self-description as evidence, for a member who has no CV to hand. The text is stored as a self-attested artifact: it ranks below a document the member wrote earlier, and claims resting only on it are self-reported rather than evidence-backed. Ask the member to write it in their own wor

linkedin_profile_get

The LOCAL canonical profile: evidence-backed sections this app holds as authoritative (append-only revisions; null = never written), plus the snapshot index. This is not a live LinkedIn read and makes no claim about what linkedin.com currently shows. linkedin_profile_read_latest does call LinkedIn,

linkedin_profile_update

Append a new revision of a canonical section (headline, about, experience, ..., audiences, positioning_brief, keyword_map). Every cited claim must be VERIFIED; based_on_revision enforces optimistic concurrency (pass the current revision id, or null for a first write).

linkedin_snapshot_import

Parse an imported LinkedIn source (linkedin_export archive or profile-PDF document) into a versioned snapshot with normalized fields for diffing. Import the source with linkedin_import_run first.

linkedin_profile_diff

Field-level diff between profile states: 'canonical', 'snapshot:latest', or 'snapshot:<id>'. Snapshot fields are mapped onto canonical section keys.

linkedin_profile_score

Explained profile scores — completeness, evidence coverage, freshness — as transparent ratios with per-finding details. Recomputed deterministically on demand (no fake precision, no persistence). Keyword-alignment scoring activates once a positioning_brief section exists.

linkedin_publish_request

Create a pending, revision-bound approval for a validated draft and return the exact preview a human must review. A later grant, rejection, or revision requires a separate explicit user confirmation through linkedin_approval_decide, the dashboard, or the human-control CLI.

linkedin_approval_status

List approvals and their states, or inspect one with the exact text it binds. Approvals are single-use and die when the draft is edited.

linkedin_approval_decide

Act on a pending publication request only after the user explicitly confirms the decision in the current conversation. Grant binds to the exact revision hash; deny requires a reason; revise appends new text and invalidates the pending approval. Ask for confirmation first and never infer approval fro

linkedin_publish_execute

Consume a GRANTED approval and publish through an adapter. Dry-run simulates the path. The real LinkedIn adapter requires live_publishing enabled, a verified write credential, and the exact PUBLISH command from the user. The approval is consumed before sending and is never reusable; a lost response

linkedin_publication_reconcile

Resolve a publication whose outcome is unknown because the response was lost. The user checks their LinkedIn activity and reports whether the post exists; a retry after "not found" requires a fresh approval.

linkedin_audit_query

Read the append-only, hash-chained audit log and optionally verify the chain. A broken chain blocks all approvals and publications until the database is restored from a verified backup.

linkedin_settings_set
linkedin_source_manage

Register, enable, disable, or archive an evidence source root. Registration lands in 'pending_review'. Enabling filesystem access requires confirm:true and the exact command ENABLE <source_id> after the user reviews the path and trust class.

linkedin_source_list

List registered evidence sources with status and import stats.

linkedin_import_run

Copy files from an ENABLED source into the immutable content-addressed store (originals are never moved), extract text with secret redaction, dedup by hash, and supersede changed files. Per-file failures become reject entries; the run continues. LinkedIn-export archives skip third-party-PII files by

linkedin_artifact_list

List imported artifacts (filter by source, mime, or full-text query). With id+detail, returns metadata plus a capped text preview wrapped in an UNTRUSTED-content envelope, after hash-verifying the stored bytes (fails closed on tampering).

// quality suggestions

License file

No license file

Add a LICENSE file (MIT, Apache-2.0, etc.).

Tests exist

No test files found

Add tests that exercise each declared tool.

Domain consistency

npm scope @linkedin-mcp doesn't match GitHub owner victoryotzev

Use the same org name across GitHub, npm, and your homepage so users can verify the publisher.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 3 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/victoryotzev/linkedin-mcp)](https://m8ven.ai/mcp/victoryotzev/linkedin-mcp)
Shows your grade and updates automatically. Prefer no grade? Append ?variant=verified to the badge URL.
commit: 0ce3646ff5876791e048663131ecf923416089d5
code hash: 6d51793e6055937105645a0206a7b1412406501a079d1bb0676973b34a28f6a9
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client