Skip to main content
Profile and company data — read 20 September 2026

Insaight

Research and record-keeping for manual outreach: it briefs you on a person or a company, mines a post's comment thread, and keeps a local ledger of what you sent and what replied. It has no send path at all. An Apify API token. No LinkedIn credentials of any kind.

Vendor API keyLow account riskActivev0.1.0
Last read
✓ Read from the repository, not from a directory listing✓ Write actions separated from read actions✓ Status derived from the last code change, not the maintainer's word✓ Every source URL published below
18 tools registered
0 write to LinkedIn
31 GitHub stars, 20 September 2026
3 clients documented
Where it fits

What it is built for, and the jobs it cannot do

The second card is the one a repository README never contains. Both are written from the project's own documentation and source, read on 20 September 2026.

Use it for

Someone doing manual LinkedIn outreach who wants the research and the record-keeping automated but intends to write and send every message themselves. Building a brief before a cold message, mining a post's comment thread for warm leads, and keeping a local ledger of what was sent and what got a reply, with a reflection loop that proposes style-memory updates you approve.

Do not use it for

Anyone who wants sending automated: no messages, no connection requests, no InMail, no posting, no commenting, no reacting. Not for reading your LinkedIn inbox. Not for Sales Navigator or Recruiter data. Not for anyone unwilling to pay Apify per record, or to accept that scraping may conflict with LinkedIn's terms. Not production-grade: one author, six commits, version 0.1.0.

Publisher
Spiros Baxevanakis — independent developer, no company behind it — not affiliated with LinkedIn or Microsoft.
Licence
MITopen source
Version
0.1.0
Runs
Self-hosted
Transport
stdio
Last read

Hosting and transport are as the project documents them: Runs locally as a stdio process. The fetching happens inside hosted Apify actors; the cache is a local SQLite file.

Authentication — the thing that decides everything else

An Apify API token. No LinkedIn credentials of any kind.

A third-party data vendor's key. No LinkedIn login, cookie or grant is involved, and the vendor's own infrastructure does the fetching.

What this route cannot do, however well the server is written

No account of yours can be restricted, because no account of yours is used. You are instead paying someone else to do what LinkedIn’s terms forbid, so the exposure is contractual and legal rather than account-level.

Low account risk

No LinkedIn account is behind the server, or it acts only through LinkedIn’s own approved API and only to read. Nothing here can get an account restricted.

What it does with the credential

An Apify API token is required, written to a local dotfile or passed in the client's env block; Apify's LinkedIn actors do the fetching and the results are cached locally in SQLite. An Anthropic API key is optional and is used only by a command-line post categoriser — the MCP server itself never reads it. The optional Notion skill needs the separate Notion MCP server. No session cookie, no LinkedIn username or password, no OAuth.

Account risk is derived from the authentication class and from whether the server writes to LinkedIn — not judged per project. The 5 classes and the rule that maps them are on the LinkedIn MCP server directory; the ceilings LinkedIn enforces on any account, automated or not, are on LinkedIn limits. What this particular server exposes, and what it does with your credentials, is below.

Exposed tools

Its write tools land off LinkedIn, not on it

These are the tool names the server registers, as a client sees them. An assistant can call any tool the server exposes once it is connected, so the list below is the whole surface, not a feature summary.

  • list_accounts
  • scrape_profile
  • scrape_people
  • scrape_person_profile
  • scrape_post_comments
  • list_posts
  • get_posts
  • search_posts
  • list_people
  • list_comments
  • get_stats
  • log_outreach
  • record_outcome
  • list_outreach
  • get_outreach_stats
  • get_memory
  • update_memory
  • get_config

All 18 tools it registers are named above. Four tools fetch through Apify. The rest query the local cache, which is why most of them are instant and free.

What it can read

15 read actions, written as what they return rather than as the tool signature.

  • Fetch fresh posts for any LinkedIn URL, through Apify.
  • Fetch a company's employees and leadership, through Apify, in a short or a full mode.
  • Enrich one person — experience, education, skills, volunteering, languages — through Apify.
  • Fetch a post's comment thread with author information, through Apify.
  • Query the local index of stored posts: metadata plus a short snippet.
  • Return full content for selected posts by identifier, at most twenty per call, from the local store.
  • Full-text keyword search across stored posts, locally.
  • Query stored employees and leadership, locally and instantly.
  • Query stored comments for a post, ranked by likes, locally.
  • Discover which companies and personal profiles are being tracked.
  • Database overview: counts, date range, categories.
  • Query the outreach ledger: whether someone was contacted before, what is pending, what the history is.
  • Reply-rate breakdown by hook type, variant and channel.
  • Read the learned style guide and strategy playbook.
  • Read the configured Notion pages and company configuration.

What it can write, and where the write lands

3 write actions, none of which touches LinkedIn. They change a vendor workspace, a connected system or a file on your own machine.

ActionWhere it landsWhat it does
log_outreachOff LinkedInRecords that you sent something, in the local SQLite ledger. It sends nothing.
record_outcomeOff LinkedInRecords a reply or a non-reply, locally. There is no inbox access: outcomes exist because you reported them.
update_memoryOff LinkedInWrites to the local Markdown memory files that hold the learned style guide.

Read the middle column before the third. A write that lands off LinkedIn — a vendor workspace, a CRM, a local file — is undone by deleting a row. A write that lands on LinkedIn has already been seen by another member.

Setup — easy

Installing it, in the project's own commands

Every command and every configuration block below is the project's own, copied unchanged on 20 September 2026. Where a project publishes no config block, this page says so rather than composing one — a snippet written here would be a snippet the maintainer never tested.

Prerequisite

Shell
curl -LsSf https://astral.sh/uv/install.sh | sh

Skip if uv is already installed. The plugin runs the server with uvx, so without uv on PATH the tools never load.

Claude Code plugin

Shell
/plugin marketplace add spirosbax/insaight
/plugin install insaight@insaight

Apify token

Shell
mkdir -p ~/.insaight && echo "APIFY_API_TOKEN=apify_api_..." >> ~/.insaight/.env

Restart the client afterwards. The first uvx run builds the server before it answers.

The configuration block

Client config keys are not interchangeable, and a block pasted under the key a different client expects fails silently rather than erroring. That is why the blocks below are the project's own, in the clients it names, rather than one block normalised here.

uvx from the Git repository

claude_desktop_config.json
JSON
{
  "mcpServers": {
    "insaight": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/spirosbax/insaight", "insaight"],
      "env": { "APIFY_API_TOKEN": "apify_api_..." }
    }
  }
}
What it needs before it will start

uv and Python 3.11 or newer on the local machine. No Docker. No headless browser locally — the browser work happens inside Apify's hosted actors. An Apify account and API token are required; the free tier is usable, with per-run costs above it. A local SQLite database and Markdown memory files live in a dotfolder in your home directory. Optionally an Anthropic API key for the categoriser, and the Notion MCP server for one skill.

Clients the project documents

Claude Code (installed as a plugin from the repository's own marketplace); Claude Desktop; Any stdio MCP client that can run uvx (not documented, but the repository's own entry is a plain stdio one). Where the file goes in each Claude surface.

How it talks to the client

stdio only. The client launches it as a local process through uvx; there is no remote endpoint.

Where the process runs

Runs locally as a stdio process. The fetching happens inside hosted Apify actors; the cache is a local SQLite file.

What it costs to run

The vendor's own figures, quoted rather than computed

The server is free and MIT-licensed. The cost is Apify usage. The README states a free Apify tier works and publishes approximate actor costs: around $1.50 per 1,000 posts; company employees around $4 per 1,000 in short mode or $8 per 1,000 in full mode; profile enrichment around $4 per 1,000. The optional categoriser additionally bills Anthropic API tokens.

Sales Navigator — Not supported

Does not touch Sales Navigator. All data comes from Apify actors over public LinkedIn pages.

Recruiter — Not supported

No Recruiter, Recruiter Lite or applicant-tracking surface.

None of the figures above are LinkedIn's. They are third-party prices in the currency and the tiering each project publishes, read on 20 September 2026 and quoted rather than converted.

Repository signals, read 20 September 2026

The code has moved recently

20 days between the last code change and the day these figures were read. Code changed within 90 days of the day this directory was checked.

How far the project has got

Early. Created April 2026, first public release 30 August 2026, six commits in total, all inside a two-day window. One author, no releases or tags published, no contributors beyond the owner.

How this status was decided

Active means code changed within 90 days of the observation date; stale means up to 365 days. It is measured from the last change to code, not to the README, and never from the maintainer's own adjective. Anything past a year is dropped from this directory rather than published as dormant.

Stars
31 — 3 forks, 0 watchers.
Last commit
Open issues
0
Status
Active
Observed

Every figure in this section was read from GitHub on , and star and issue counts move daily. The issue count is the Issues tab, not the API field of the same name — that one counts pull requests as issues and overstates every repository in this directory.

Credential handling and known problems

What to check before you point it at a real account

Both cards below are read from the repository and its own security documentation. A project saying what it does with a session is evidence of intent, not proof of behaviour.

What running it exposes

No LinkedIn account risk from automation, because the server never logs into LinkedIn and never acts as you: there is no cookie, no session and no write path to the platform. The risk moves to the scraping layer. The README states it plainly: "Insaight fetches public LinkedIn data through third-party Apify actors; automated collection may conflict with LinkedIn's Terms of Service, and you are responsible for how you use this tool. Keep volumes reasonable and respect the people behind the profiles."

How it handles your credentials

The Apify token sits in plaintext in a local dotfile or in the client's config env block. Scraped third-party profile data — names, employers, education, comment history — is persisted indefinitely in a local SQLite file, which is a GDPR consideration for anyone in the EU or UK storing profiles of people who never opted in. The README's own claim is that "Everything stays local: posts, people, the outreach ledger, and learned memory live in SQLite and Markdown on your machine, and nothing is sent anywhere except your own Apify/Anthropic/Notion accounts." That still means the LinkedIn URLs you research are sent to Apify, and post text is sent to Anthropic if you use the categoriser.

1 thing that will waste an hour

Small, checkable and specific to this project — a stale package name, a broken link, a manifest that advertises something the code removed.

  • Version 0.1.0, one author, six commits. It has not yet survived a change at either LinkedIn or Apify.
If this is not the one

The servers that do a comparable job, and how they differ

Same rows, same sources, same observation date. The first column is this server.

Insaight compared with its alternatives
 Insaightv0.1.0Anysite MCP Serverv3.0.0Bright Data MCP (LinkedIn tools)v2.11.3
Authenticates withVendor API keyVendor API keyVendor API key
Account riskLowLowLow
Writes to LinkedInNoneNoneNone
Tools registered181569
Sales Navigator toolsNoNoNo
Recruiter toolsNoNoNo
RunsSelf-hostedHosted by the vendorEither
Last code change31 August 2026 — active6 August 2026 — active15 September 2026 — active
LicenceMIT, open sourceMIT, open client, closed serviceMIT, open source
  • Anysite MCP Server

    Vendor API key

    A hosted, paid server that returns structured LinkedIn data — profiles, people search, companies, posts, jobs, the Ad Library — plus a dozen other sources, with server-side filtering and export. No LinkedIn login goes anywhere near it, and it cannot write to LinkedIn at all.

    Low riskActive
    stdio and Streamable HTTP15 toolsRead 20 September 2026
  • A general web-access server with five LinkedIn extractors: hand it a profile, company, job, post or people-search URL and it returns structured JSON. It holds no LinkedIn credential, so there is no account to restrict.

    Low riskActive
    stdio and Streamable HTTP69 toolsRead 20 September 2026
Provenance

Every page this profile was read from

6 pages — the repository, its documentation and, where one exists, the vendor's own pricing page. Nothing on this profile is summarised from another directory or from a blog post about the project.

All of them read on . A repository moves faster than a price does: if a tool list or a command here no longer matches the project, the project changed and this page has not been re-read yet.

Where to next

Check what it cannot reach before you build on it

No account of yours can be restricted, because no account of yours is used. You are instead paying someone else to do what LinkedIn’s terms forbid, so the exposure is contractual and legal rather than account-level.