
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
- 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.
- 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.
- 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.
- 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 →
list_profilesList all tracked LinkedIn profiles for the authenticated user. Returns profile IDs needed by other tools.
preview_profileAnalyze 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_insightsBest day, hour, format and length for a previewed profile (from preview_profile). No account needed.
claim_previewMake 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_postsList 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_summaryGet 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_insightsGet 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_insightsSurface 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_trendsGet 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_postsKeyword + 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_balanceReturn the authenticated user's current credit balance, this period's monthly allocation, and credits used since the period started. Free.
get_usage_historyReturn recent credit_ledger transactions for the authenticated user. Filter by tool name, reason, or date range. Paginated. Free.
get_cost_estimateGiven 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_streamCreate 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_streamsList 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_feedReturn 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_streamPause 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_streamResume 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_streamDelete 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_nowTrigger 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_infoFetch 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_postsFetch 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_postsFetch 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_searchSearch LinkedIn posts by keyword. Costs 5 credits per call. Returns a single page of matching posts.
linkedin_profile_reactionsFetch the recent posts a LinkedIn person has reacted to. Useful for inferring interests. Costs 5 credits per call.
linkedin_profile_commentsFetch the recent posts a LinkedIn person has commented on. Useful for inferring interests and conversation partners. Costs 5 credits per call.
linkedin_job_searchSearch LinkedIn job postings. Useful for tracking hiring signals at target companies. Costs 5 credits per call.
linkedin_ad_searchSearch the LinkedIn ad library. Useful for tracking competitor ad creative and messaging. Costs 10 credits per call.
linkedin_people_searchSearch 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_searchSearch LinkedIn companies. Filter by keywords, industryId, or location. Costs 5 credits per call. Returns a single page of matching companies.
linkedin_post_reactionsFetch 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_commentsFetch 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_postsFind 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_draftPredict 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_anglesGiven 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_segmentsList 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_segmentCreate 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_segmentAdd one or more people (by person_id) to an audience segment. Existing members are silently ignored. Free — costs 0 credits.
remove_from_segmentRemove one or more people (by person_id) from an audience segment. Missing members are silently ignored. Free — costs 0 credits.
resolve_segmentResolve 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_templatesList 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_alertsReturn 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_collectionCreate 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_collectionPin 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_collectionRemove one or more posts (by post_id) from a collection. Missing members are silently ignored. Free — costs 0 credits.
list_collectionsList 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_collectionResolve 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_campaignCreate 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_accountsAdd 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_constellationMap 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_connectionsRe-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_queueReturn 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_briefFor 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_outcomeAppend 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_statsSummary 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_postSave 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_companyGiven 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_breakdownHistogram 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_engagersGiven 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_historyReturn 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/mcpclaude.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.
Before we count this visit
Analytics and ad measurement tell us which pages and which of our ads do their job: Google Analytics and Google Ads, the Meta pixel, Yandex Metrica, and one first-party id of our own. Nothing is stored until you answer, and declining changes nothing about the site.