MCP Tools Reference
Every tool the SociaHive MCP server exposes — parameters, required API-key scopes, feature flags, and confirmation requirements.
The SociaHive MCP server advertises 70 tools (29 read, 37 write, 4 destructive). Every one runs through the same chokepoint the in-app copilot uses, so auth, tier limits, rate limits, credits, and audit logging apply identically whether the caller is Claude Desktop, the CLI, or the dashboard.
Connect a client first — see the setup guide.
tools/list reports 72 rather than 70: it also carries __cache_anchor
(an internal prompt-cache sentinel — ignore it) and get_more_tools (injected by the
analytics layer so an assistant can report a capability it wishes existed; it returns a
plain-text acknowledgement, not JSON).
How access is decided
A tool call has to clear four gates, in order:
- API key +
agent:execute— enforced at/api/mcpbefore the server is reached. - Per-tool scopes — the "Required scopes" column below. A key with
*clears all of them. - Feature flag — tools in the "Notes" column with a
flag:entry are inert unless that flag is on for your account. Most are admin-only today. - Confirmation — tools marked
confirmare irreversible. The first call returns apending_confirmationenvelope with a token; call again passing__confirmToken. Keyed surfaces (CLI, SDK) can instead passconfirm: truewhere the tool accepts it.
Tools marked not on connect keys need a scope the one-click Connect to AI key doesn't carry. Mint a key with the scopes you need in Settings → API Keys.
Tools
Session & capability
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
whoami | Returns the calling user's identity, tier, surface, and currently selected connected account (when account scope is enforced). | — | — (no scope) | — |
list_capabilities | Returns the list of tools available to this user (filtered by tier + flags). | — | — (no scope) | — |
current_page_context | Returns what the user is currently looking at on screen — route, entity type/id/name, selection. | — | — (no scope) | — |
Flows — read
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
list_flows | List the user's automation flows. | status, limit, sortBy, sortOrder, cursor | flows:read | — |
list_flows_with_stats | Rank flows by a performance metric — triggers, completions, unique_users, or button_clicks. | metric, sortOrder, limit, status | flows:read | — |
get_flow | Fetch one flow by id. | flowId | flows:read | — |
summarize_flow_purpose | Summarize what a flow does in one sentence. | flowId | flows:read | — |
get_flow_stats | Fetch execution analytics for one flow — total triggers, button clicks, unique users, status breakdown, last 7 days daily timeline. | flowId | flows:read | — |
get_collected_data | Summarize the data collected by a flow — total count, breakdown by field type, last N submissions (metadata only — actual values are not exposed to the LLM for privacy). | flowId, fieldType, limit | flows:read | — |
list_system_templates | Browse pre-built system flow templates — common automations like welcome messages, lead generation, and customer support. | category, limit, cursor | flows:read | — |
get_flow_revisions | List the version history of a flow. | flowId, limit | flows:read | — |
search_flows | Resolve implicit flow reference ("the welcome flow"). | query, limit, accountId | flows:read | pass accountId on multi-account keys |
find_references | Flows referencing a tag. | entityType, entityId, limit | flows:read tags:read | not on connect keys |
Flows — write
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
activate_flow | Publish (activate) a flow so it processes triggers in production. | flowId | flows:write | — |
deactivate_flow | Unpublish (deactivate) a flow so it stops processing triggers. | flowId | flows:write | — |
duplicate_flow | Create a copy of an existing flow as a new draft. | flowId, newName | flows:write | — |
update_flow | Update a flow's identity fields (name, description). | flowId, name, description | flows:write | — |
create_flow | Create a new empty automation flow as a draft. | name, description, accountId, platformUserId, platform, trigger | flows:write | — |
[email protected] | DEPRECATED — use [email protected] (inline streaming in chat). | description, accountId, platformUserId, platform | flows:write | flag: AI_FLOW_BUILDER, deprecated |
generate_flow | Generate a complete automation flow from a natural-language description. | description, platform, variants, iterateOnFlowId, businessContext | flows:write | flag: AI_FLOW_BUILDER |
add_node | Add a node to a flow's graph. | flowId, type, position, name, data | flows:write | — |
update_node | Update an existing node's data, position, or name. | flowId, nodeId, data, position, name | flows:write | — |
add_edge | Connect two nodes in a flow with an edge. | flowId, source, target, sourceHandle, targetHandle, type, data | flows:write | — |
delete_node | Remove a single node from a flow. | flowId, nodeId | flows:write | — |
delete_edge | Remove a single edge (connection) from a flow. | flowId, edgeId | flows:write | — |
bulk_update_flows | Update identity fields (name, description) on up to 50 flows in one call. | flowIds, patch | flows:write | — |
revert_flow_to_version | Revert a flow to a previous version. | flowId, targetVersion | flows:write | — |
create_automation | Draft an automation from a natural-language outcome. | outcome, accountId | flows:write | flag: OUTCOME_API_TOOLS |
generate_multiple_flows | Bulk-build automations from ONE whole-setup description (migration: "rebuild my ManyChat setup"). | description, accountId | flows:write | confirm, flag: AI_BULK_FLOW_GENERATION |
Posts & scheduler — read
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
list_scheduled_posts | List posts the user composed in the SociaHive Content Scheduler — drafts, queued, recurring, recently-published-via-scheduler. | status, platform, limit, sortOrder, cursor | posts:read | — |
get_scheduled_post | Fetch one scheduler-side post by id (drafts / queued / recurring / scheduler-published). | postId | posts:read | — |
get_scheduler_calendar | Get scheduler-side posts in a date range. | fromDate, toDate, platform | posts:read | — |
get_post_analytics | Fetch per-platform analytics for one published post — impressions, reach, engagement, likes, comments, shares, saves, clicks. | postId | posts:read | — |
get_analytics_overview | Fetch aggregate analytics across all published posts — total impressions, total engagement, post count, per-platform breakdown, and the last 30 days timeline. | startDate, endDate, platform | posts:read | — |
list_evergreen | List the user's evergreen queue (recyclable posts that fill failed Autopilot slots). | — | posts:read | flag: SCHEDULER_EVERGREEN |
Posts & scheduler — write
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
schedule_post | Schedule a draft post to publish at a future time. | postId, scheduledAt, timezone, attach_funnel | posts:write | — |
update_scheduled_post | Edit a scheduler-side post (draft or scheduled) — text, scheduled time, timezone. | postId, text, scheduledAt, timezone | posts:write | — |
cancel_scheduled_post | Cancel a scheduled post — reverts to draft so it won't publish. | postId | posts:write | — |
publish_post_now | Publish a post immediately to all configured platforms. | postId | posts:write | confirm |
create_scheduled_post | Create a new social post as a draft, optionally scheduled. | text, media, platforms, scheduledAt, timezone | posts:write | — |
bulk_reschedule_posts | Move up to 50 scheduled posts to a new publish time in one call. | postIds, scheduledAt, timezone | posts:write | — |
publish | Publish a prepared post (by postId) to its platforms NOW. | postId, platforms | posts:write | confirm, flag: OUTCOME_API_TOOLS |
add_to_evergreen | Add a recyclable post (caption text) to the user's evergreen queue. | text, sourcePostId | posts:write | flag: SCHEDULER_EVERGREEN |
Accounts & media
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
list_accounts | List the user's connected social media accounts (Instagram, Facebook, etc.). | platform, status | accounts:read | — |
list_published_media | List recent media on the user's connected platform (Instagram first), recency-sorted. | mediaType, limit, accountId | accounts:read | pass accountId on multi-account keys |
get_latest_published_media | Resolve the user's SINGLE most recent published item — for singular intents like "my latest reel", "the most recent post", "our recent post", or when targeting a specific post for a flow trigger. | mediaType, accountId | accounts:read | pass accountId on multi-account keys |
get_published_media | Fetch a single platform-published media item by its mediaId (the platform's own ID, e.g. | mediaId, accountId | accounts:read | pass accountId on multi-account keys |
search_published_media | Semantic search across captions of media published on the connected platform (Instagram first). | query, mediaType, limit, accountId | accounts:read | pass accountId on multi-account keys |
get_capabilities | List what each connected account can DO — automation (DM/comment triggers) vs scheduler (post scheduling). | accountId | accounts:read | — |
resolve | Auto-resolve a support conversation (by sessionId) from the knowledge base. | sessionId, message | accounts:write | flag: OUTCOME_API_TOOLS, not on connect keys |
capture_lead | Capture a lead: find-or-create a contact from (platform, platformUserId) and record a lead-outcome. | platform, platformUserId, source, username, displayName | accounts:write | flag: OUTCOME_API_TOOLS, not on connect keys |
Autopilot
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
get_autopilot_status | Use ONLY to report Autopilot's state: is it on, review mode (approve vs autopublish), posts/week, target-account count, pause reason, and this week's batch summary (planned/ready counts, status). | — | autopilot:read | flag: AI_COPILOT_AUTOPILOT_TOOLS |
update_autopilot_brand_kit | Set/update the Brand Kit grounding Autopilot's content (business name, what-you-do, audience, voice preset, banned words, pillars). | businessName, whatYouDo, audience, voice, voiceNote, bannedWords, pillars | autopilot:write | flag: AI_COPILOT_AUTOPILOT_TOOLS |
generate_autopilot_week | Use when the user asks to generate/create/make/plan this week's content ("generate my week"). | feedback | autopilot:write | flag: AI_COPILOT_AUTOPILOT_TOOLS |
adjust_autopilot_week | Use when the user asks to change/adjust/revise the current week with feedback ("make it more casual", "fewer promos") OR to regenerate it from scratch (omit feedback). | feedback, batchId | autopilot:write | flag: AI_COPILOT_AUTOPILOT_TOOLS |
approve_autopilot_week | Use when the user asks to approve/ship/publish the week ("approve the week", "ship it"). | batchId, confirm | autopilot:write | confirm, flag: AI_COPILOT_AUTOPILOT_TOOLS |
turn_on_autopilot | Use when the user asks to set up/turn on/enable/start Autopilot ("set up autopilot", "turn on autopilot"). | postsPerWeek, reviewMode, accountIds, confirm | autopilot:write | confirm, flag: AI_COPILOT_AUTOPILOT_TOOLS |
Content insights
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
get_content_insights | Get this account's content performance insights: which formats, days of week, and content pillars index above/below the account's average engagement (with sample sizes), plus top/bottom posts. | weeks | analytics:read | flag: SCHEDULER_LEARNING_LOOP |
Tags
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
search_tags | Resolve tag reference ("tagged X"). | query, limit | tags:read | not on connect keys |
create_tag | Create a tag. | name, color | tags:write | not on connect keys |
CRM & growth
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
create_broadcast | Call DIRECTLY on any broadcast/announcement ask — no whoami or context lookup first. | name, channel, message, audience | broadcasts:write | confirm, flag: AI_MAIN_FEATURE_TOOLS, not on connect keys |
create_sequence | Create a drip sequence as a DRAFT. | name, description, steps | sequences:write | confirm, flag: AI_MAIN_FEATURE_TOOLS, not on connect keys |
create_landing_page | Create a hosted lead-capture landing page as a DRAFT (disabled — not publicly live until the human enables it). | name, headline, body, button_text, slug | growth_tools:write | confirm, flag: AI_MAIN_FEATURE_TOOLS, not on connect keys |
create_growth_widget | Create a website growth widget (popup / slide-in / bar / embed box) as a disabled DRAFT — not live until the human enables it in Growth Tools. | name, widget_type, headline, body, button_text | growth_tools:write | confirm, flag: AI_MAIN_FEATURE_TOOLS, not on connect keys |
create_ref_url | Create a shareable tracked ref link (Growth Tools) — per-link click counting; the primitive behind referral/invite links and link-in-bio tracking. | name, flow_id, platform | growth_tools:write | flag: AI_MAIN_FEATURE_TOOLS, not on connect keys |
get_pixel_embed | Get the user's SociaHive Pixel install snippet + instructions. | — | analytics:read | flag: AI_MAIN_FEATURE_TOOLS |
Destructive
| Tool | What it does | Parameters | Required scopes | Notes |
|---|---|---|---|---|
delete_flow | Soft-archive a flow (status='archived'). | flowId | flows:write agent:destructive | confirm, flag: AI_COPILOT_DESTRUCTIVE_TOOLS, not on connect keys |
delete_scheduled_post | Delete a scheduler-side post — hidden from all dashboards, won't publish. | postId | posts:write agent:destructive | confirm, flag: AI_COPILOT_DESTRUCTIVE_TOOLS, not on connect keys |
disconnect_account | Disconnect a connected social account — clears OAuth tokens and flips status to "disconnected". | accountId | accounts:write agent:destructive | confirm, flag: AI_COPILOT_DESTRUCTIVE_TOOLS, not on connect keys |
bulk_delete_scheduled_posts | Soft-delete up to 50 scheduler-side posts in one call. | postIds | posts:write agent:destructive | confirm, flag: AI_COPILOT_DESTRUCTIVE_TOOLS, not on connect keys |
Resources
Read-only context the client can fetch by URI, no tool call needed. Eleven are listed
by resources/list; the two templated URIs are readable but not enumerated.
| URI | Contents |
|---|---|
sociahive://platforms | Supported platforms and their capabilities |
sociahive://trigger-types | Flow trigger types per platform |
sociahive://node-types | Flow node types |
sociahive://post-statuses | Scheduled-post status machine |
sociahive://flows | Your flows |
sociahive://posts/upcoming | Next 14 days of scheduled posts |
sociahive://accounts | Your connected accounts |
sociahive://audit/recent | Recent agent actions taken on your account |
sociahive://health | Account health signals |
sociahive://changelog | Platform changelog |
sociahive://docs/quick-start | Quick-start guide |
sociahive://flows/{id} | One flow, full detail (template — not listed) |
sociahive://posts/{id} | One scheduled post (template — not listed) |
Clients that support notifications/resources/updated get pushed refreshes when a post
publishes or a flow changes.
Prompts
One-click workflows the client surfaces as slash commands.
| Prompt | Arguments | What it does |
|---|---|---|
weekly-report | timezone | Reads upcoming posts + flow stats, writes a Monday recap |
content-audit | lookback_days | Reviews scheduled posts for tone, clashes, platform-fit |
flow-cleanup | — | Finds inactive/underperforming flows, proposes archives |
onboard-agency | client_name, platforms | Scaffolds a new agency client's flows and draft posts |
Known gaps
A live audit on 2026-08-20 found six defects here. All are now fixed; this section records what remains.
- Scope catalog: no gaps. Every scope enforced at a chokepoint is mintable on a granular key, guarded by
api-key-scope-catalog.test.ts. - 14 tools are unreachable from a one-click connect key — they need scopes outside the connect grant (deliberately: the connect key is fixed and non-destructive). Mint a custom key with the scopes you need.
- 5 tools need an explicit
accountIdon a multi-account key. MCP keys are workspace-level with no account picker, so a default account is bound only when the owner has exactly one. On a key with two or more, passaccountId(fromlist_accounts) tosearch_flows,list_published_media,get_latest_published_media,get_published_media,search_published_media. Omitting it returnsauth_error / no_account_selected; an id you don't own returns the same error rather than leaking that it exists. - Deleting a scheduled post needs
posts:write, not admin.DELETE /api/v1/posts/{id}performs the same soft-delete as the dashboard. The agent tools (delete_scheduled_post,bulk_delete_scheduled_posts) additionally require the admin-onlyAI_COPILOT_DESTRUCTIVE_TOOLSflag plusagent:destructive.
Errors and limits
Typed error envelopes and retry guidance: errors · rate limits.