Skip to content
Flux logo

Flux MCP server

Which MCP servers are Flux's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-11-02

← Back to Flux

Whose server it is
  • Registry nameapp.fluxgraph/linkedinverified in the MCP registry

The registry name sits under fluxgraph.app. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-11-02
  • Stateanswerschecked 2026-11-02
  • Tools66
  • Server calls itselfflux
  • Server version0.1.0
  • Protocol version2025-06-18

On 2026-11-02 the server answered initialize and tools/list without a sign-in. First answer in 107 ms.

Should an agent connect itNot proven either way yet
  • Its tools do every use case we checked: Compare which post topics and formats earn the most engagement; Find the best days and hours to publish; Score a draft post before publishing it.
  • Checked on 3 of the 7 days it takes to judge reliability.

Once connected

  • For "Score a draft post before publishing it", the likely first call is score_draft.
  • create_stream, delete_stream, linkedin_post_reactions, linkedin_post_comments, create_segment change data without a sign-in: anyone with the address can call them.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 3, the first on 2026-11-02
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 3 so far
  • What an agent can do with it3 of 3 use cases
  • Answeredmeasuring3 of the 7 daily checks it takes to print a share
  • Median first answer142 ms
  • Space in an agent's context≈ 14,719 tokensthe definitions of all its tools (67), which an agent carries on every turn
  • Tool definitionsB · 83 of 100
  • Typed results0 of 67 toolsdeclared outputSchema: results come typed, read once
  • Not saying whether it only reads or can destroy: 67 of 67

What an agent can do with it

  • can do · Compare which post topics and formats earn the most engagement
  • can do · Find the best days and hours to publish
  • can do · Score a draft post before publishing it

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: create_stream, delete_stream, linkedin_post_reactions, linkedin_post_comments, create_segment

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers66 tools · read 2026-11-02
  • list_profiles

    List all tracked LinkedIn profiles for the authenticated user. Returns profile IDs needed by other tools.

  • preview_profile

    Analyze a public LinkedIn profile or company page without a Flux account: pulls the latest ~50 posts (once per profile) and returns a preview id, post count and a one-line posting summary. Use preview_posting_insights with the preview_id…

  • preview_posting_insights

    Best day, hour, format and length for a previewed profile (from preview_profile). No account needed.

  • claim_preview

    Make a profile from preview_profile your own Flux dashboard. Requires sign-in; creates your own_profile stream on the free plan pointing at the same posts. Refuses if you already track that profile.

  • get_posts

    List a tracked profile's persisted posts with full metrics and text — query against the local post library, no LinkedIn pull, free. Use this when the caller already has a profile_id and wants to read its posts. Filter by date range, post…

  • get_profile_summary

    Get KPI summary for a tracked profile: total posts, average engagement (broken down by likes/comments/shares/conversation rate), posts per week, engagement trend, top format, and posting goal status.

  • get_posting_insights

    Get optimal posting patterns for a profile: best day of week, best hour, format performance breakdown, and character length sweet spot. Includes full metric breakdown (likes, comments, shares, conversation rate) for every bucket. All…

  • get_topic_insights

    Surface the most-frequent topics in a profile's posts, with engagement context. Returns top N unigrams and (optionally) top N bigrams ranked by post count, each with avg_engagement, vs_baseline, and a sample_post_url. Mirrors the…

  • get_engagement_trends

    Get engagement time series for a profile with gap-filled buckets, rolling averages, and trend direction. Each bucket includes avg engagement, likes, comments, shares, and conversation rate. Useful for understanding whether engagement is…

  • search_posts

    Keyword + semantic search over persisted posts in the local library — full-text + pgvector cosine, no LinkedIn pull, free. Use this when the caller has a query string and wants ranked persisted-post results. Pass `scope` (a…

  • get_credit_balance

    Return the authenticated user's current credit balance, this period's monthly allocation, and credits used since the period started. Free.

  • get_usage_history

    Return recent credit_ledger transactions for the authenticated user. Filter by tool name, reason, or date range. Paginated. Free.

  • get_cost_estimate

    Given an MCP tool name, return its credit cost so you can preview an action before running it. Also accepts a stream type (external_profile, company, topic, person_interests, hiring_signals, ad_watch) to preview the per-page cost…

  • create_stream

    Create a new research stream (external profile, company, topic, person interests, hiring signals, or ad watch). Running the stream on its schedule costs credits (see get_cost_estimate for the per-type cost). own_profile streams are not…

  • list_streams

    List all research streams for the authenticated user (external profiles, companies, topics, person interests, hiring signals, ad watches, and own_profile). Pass `type` to filter. Replaces list_profiles for the streams-first world, but…

  • get_stream_feed

    Return the most recent posts a stream has collected into the library, newest first by published_at. Use this to browse what a topic / external profile / person_interests / company stream has surfaced on its schedule.

  • pause_stream

    Pause a stream so it stops running on its cron schedule. Existing posts remain in the library. Use resume_stream to re-enable it. own_profile streams are billing-managed and cannot be paused here.

  • resume_stream

    Resume a paused stream. Sets active=true and queues it to run on the next cron tick by clearing next_run_at. own_profile streams are billing-managed and cannot be resumed here.

  • delete_stream

    Delete a stream and its stream_runs. Posts collected by the stream stay in your library (stream_id is set to NULL via ON DELETE SET NULL) so historical data isn't lost. Auto-collection is deleted with the stream. own_profile streams…

  • run_stream_now

    Trigger an immediate run of an active stream, bypassing its schedule. The run is fire-and-forget — the response confirms the dispatch but post collection happens asynchronously. Credits are charged for pages actually walked, not pages…

  • linkedin_profile_info

    Fetch a LinkedIn person profile (headline, current role, work history, education, location). Costs 5 credits per call. Results are upserted into `people` (structured fields) and `linkedin_profiles` (so profile-brief renders) — same…

  • linkedin_profile_posts

    Fetch recent posts from a LinkedIn person profile. 5 credits per page of 50, up to 250 posts, charged only for pages actually fetched. Results are stored in the post library (source_type='external') and linked to a linkedin_profiles row…

  • linkedin_company_posts

    Fetch recent posts from a LinkedIn company page. 5 credits per page of 50, up to 250 posts, charged only for pages actually fetched. Results are stored in the post library (source_type='external') and linked to a linkedin_profiles row…

  • linkedin_post_search

    Search LinkedIn posts by keyword. Costs 5 credits per call. Returns a single page of matching posts.

  • linkedin_profile_reactions

    Fetch the recent posts a LinkedIn person has reacted to. Useful for inferring interests. Costs 5 credits per call.

  • linkedin_profile_comments

    Fetch the recent posts a LinkedIn person has commented on. Useful for inferring interests and conversation partners. Costs 5 credits per call.

  • linkedin_job_search

    Search LinkedIn job postings. Useful for tracking hiring signals at target companies. Costs 5 credits per call.

  • linkedin_ad_search

    Search the LinkedIn ad library. Useful for tracking competitor ad creative and messaging. Costs 10 credits per call.

  • linkedin_people_search

    Search LinkedIn people. Filter by company, title, location, or free-text keywords. Costs 5 credits per call. Returns a single page of matching profiles.

  • linkedin_company_search

    Search LinkedIn companies. Filter by keywords, industryId, or location. Costs 5 credits per call. Returns a single page of matching companies.

  • linkedin_post_reactions

    Fetch the people who reacted to a single LinkedIn post. Costs 5 credits per call. Engagers (with reaction kind) are persisted to the post_engagements graph so subsequent queries about who-engages-with-whom are SQL, not API calls.

  • linkedin_post_comments

    Fetch the people who commented on a single LinkedIn post (and their comment text). Costs 5 credits per call. Each comment is persisted to post_engagements with the commenter and full comment text.

  • find_similar_posts

    Find persisted posts whose embeddings are nearest to a free-text query — pgvector cosine over the local post library, no LinkedIn pull, free. Use when you have a *block of text* (a draft, a paragraph, a competitor's post) and want similar…

  • score_draft

    Predict how a draft post will perform against the user's historical data. Uses an OLS regression model with detrending, ridge regularization, and recency weighting — the same model used on the /score page. Returns a predicted engagement…

  • suggest_angles

    Given a topic, suggest distinct content angles informed by what performs well in the user's scoped data. Pulls top-performing historical posts as context and calls OpenAI to generate 5 concrete angles. Costs 5 credits per call. Pass…

  • list_segments

    List all audience segments for the authenticated user, with member counts. Audience segments are named groups of people (e.g. 'ICP — VPs of Marketing', 'Champions'). Free — costs 0 credits.

  • create_segment

    Create a new audience segment (named group of people) for the authenticated user. Set type='manual' for a hand-curated list (use add_to_segment to populate it), type='smart' with a `config` predicate (e.g. {title_contains:'VP'}) to define…

  • add_to_segment

    Add one or more people (by person_id) to an audience segment. Existing members are silently ignored. Free — costs 0 credits.

  • remove_from_segment

    Remove one or more people (by person_id) from an audience segment. Missing members are silently ignored. Free — costs 0 credits.

  • resolve_segment

    Resolve an audience segment into a concrete list of person_ids. For manual / auto_stream segments, returns stored members. For smart segments, evaluates the segment's `config` predicate against the people table and returns matches. Free…

  • list_segment_templates

    List available smart-segment templates. Pass a template id to create_segment to pre-fill its `config` predicate without crafting one from scratch. Free — costs 0 credits.

  • get_alerts

    Return recent alerts for the authenticated user's streams. An alert is emitted whenever a scheduled stream run surfaces new items. Pass `unread_only=true` to skip alerts the user has already marked read. Free — costs 0 credits.

  • create_collection

    Create a new post collection for the authenticated user. Set type='manual' to hand-curate posts with add_to_collection, or type='smart' with a `config` predicate (e.g. {format:'video',min_likes:50}) to define a dynamic collection resolved…

  • add_to_collection

    Pin one or more posts (by post_id) into a collection you own — works on any collection type. On a 'manual' collection this is the only membership mechanism; on a 'smart' collection it adds the posts as extras alongside whatever the rule…

  • remove_from_collection

    Remove one or more posts (by post_id) from a collection. Missing members are silently ignored. Free — costs 0 credits.

  • list_collections

    List all post collections for the authenticated user, with member counts. Includes manual collections, smart collections (predicate-based), and auto_stream collections (system-managed). Free — costs 0 credits.

  • resolve_collection

    Resolve a post collection into a concrete list of post_ids. For manual / auto_stream collections, returns stored members. For smart collections, evaluates the collection's `config` predicate against the user's posts and returns matches…

  • create_campaign

    Create a Constellation outreach campaign. A campaign groups target accounts, the people you care about at those accounts, and the warm connections you could approach to reach them. Free — costs 0 credits.

  • add_campaign_accounts

    Add one or more target companies to a Constellation campaign. Each account is a company you want to reach; map_constellation is then run per-account. Free — costs 0 credits.

  • map_constellation

    Map the professional graph around a target company. Finds senior decision-makers at the account, pulls each target's recent posts/reactions/comments to identify engagers, then scores every connection and produces a prioritized outreach…

  • score_connections

    Re-score all constellation entries in a campaign and rewrite queue positions from highest to lowest composite score. Use after new engagers or targets are added. Free — costs 0 credits. Note: this tool requires a `campaign_id` because it…

  • get_outreach_queue

    Return a prioritized outreach queue. Provide *exactly one* of three scopes: • `campaign_id` — full Constellation queue with composite_score, pool, recommended_action, and prior outreach_log entries (the original campaign-scoped behavior)…

  • get_engagement_brief

    For one person, return their recent posts most relevant to what you post about — plus suggested talking points. Use before a warm comment or DM. Free — costs 0 credits. Identify the person via *exactly one* of: `target_id` (a…

  • log_outcome

    Append an entry to the outreach log for a Constellation campaign. Use to record connection requests, acceptances, replies, or no-responses so get_campaign_stats can compute acceptance / reply rates over time. Free — costs 0 credits.

  • get_campaign_stats

    Summary stats for a Constellation campaign: target count, entry count, outreach volume, and acceptance / reply rates broken down by pool (coworker / engager / mutual) and composite-score tier. Free — costs 0 credits.

  • save_post

    Save a LinkedIn post to your library by its URL. Resolves the post and stores it with source_type='saved'. Optionally pins the post into any collection you own (manual or smart — pinning into a smart collection adds it as an extra…

  • get_post_engagers_by_company

    Given a LinkedIn post URL or id, return the companies whose people engaged (reacted/commented), ranked by engager count. Joins through person_positions(is_current=true). Pure DB read — no LinkedIn pull, no credits charged. Engagers…

  • get_engagement_industry_breakdown

    Histogram of engagers' companies grouped by industry. Pivots on companies.industry_hierarchy (e.g. 'Tech > Software Development'). Depth=1 buckets by top-level, =2 by top+mid, =3 by full hierarchy. Engagers with no current company / no…

  • get_alumni_engagers

    Given a company URL or id, return engagers (across your collected posts) who have a position at that company. Relation filter: 'coworker' = current employees, 'alumni' = any past or current position (most useful for page_type='SCHOOL'…

  • get_engager_position_history

    Return a person's full employment timeline from the position graph. Person must have engaged on at least one of your collected posts (engagement gate). Sorted current-first, then most-recent past by started_at desc. Pure DB read — no…

The first 60 of 66, as the server listed them.

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "linkedin": {
      "type": "http",
      "url": "https://www.fluxgraph.app/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http fluxgraph https://www.fluxgraph.app/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://www.fluxgraph.app/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.