Social

Space MCP tools in the Social scope (social). Reach these with a wks_live_ key over space-mcp or space-api.

Tools in the social scope, callable over space-mcp (tools/call) or space-api (REST) with a wks_live_* key that grants social.

check_social_accounts

Scope: social:read

Ask the network whether each of the space's social accounts is still connected — the Social Manager's health check. An account that is not ok has to be reconnected by its owner (Backstage → Connectors); say so rather than retrying what failed. checked_at is when the network last reported on it (it may have nothing new to say); a tool that fails with "reconnect" outranks an old ok.

check_social_post

Scope: social:read

Check a post against each network's rules BEFORE posting it — length, media count and kind, required fields — and get the errors and warnings per platform. Nothing is posted.

ParameterTypeRequiredDescription
textstring
platformsstring[]yesPlatform names, e.g. ['instagram','x'].
platform_textsobjectOwn words for a platform: { x: "shorter text" }.
media_urlsstring[]

create_social_draft

Scope: social:write

Write a DRAFT social post in the Social Manager — nothing is posted, and no account needs to be connected. Write it for platforms (instagram, facebook, linkedin, x, tiktok, threads, youtube, pinterest, bluesky, reddit); optionally name the accounts it goes on (account_ids from list_social_accounts), a planned date (planned_at — shown on the calendar, NOT a schedule), and a group (a name; a new name makes the group, e.g. "Launch week"). The answer says which platforms still need an account. Schedule or post it later with publish_social_post {draft_ids}.

ParameterTypeRequiredDescription
textstringyes
platformsstring[]Platform names, e.g. ['instagram','linkedin'].
account_idsstring[]Accounts it goes out on (list_social_accounts). Optional — pick them later.
media_urlsstring[]
planned_atstringISO time it is planned for. Not a schedule: nothing goes out until it is scheduled.
groupstringGroup name or id. A new name makes the group.
platform_optionsobjectPer-platform provider options keyed by platform name, as publish_social_post takes them.

create_social_group

Scope: social:write

Make a group of social posts (a named set of drafts, like "Launch week"). The same name twice is one group. Groups never nest.

ParameterTypeRequiredDescription
namestringyes

delete_comment_auto_reply

Scope: social:write

Delete a comment auto-reply for good (to stop it for a while, save it with status paused).

ParameterTypeRequiredDescription
auto_reply_idstringyes

delete_dm_welcome

Scope: social:write

Remove an account's welcome message (to stop it for a while, save it with on: false).

ParameterTypeRequiredDescription
account_idstringyes

delete_social_draft

Scope: social:write

Delete a DRAFT social post (never a scheduled or published one — delete_social_post takes a scheduled one back).

ParameterTypeRequiredDescription
draft_idstringyesThe draft's id from list_social_posts.

delete_social_group

Scope: social:write

Delete a group of social posts. Its posts and drafts stay, in no group.

ParameterTypeRequiredDescription
groupstringyesIts name or id.

delete_social_planner

Scope: social:write

Delete one of the space's posting schedules (planner_id from list_social_planners). Posts already scheduled stay scheduled.

ParameterTypeRequiredDescription
planner_idstringyes

delete_social_post

Scope: social:run

Take a SCHEDULED social post back before it goes out (consequential): the provider's post_id from publish_social_post's answer. A post that already published cannot be deleted this way.

ParameterTypeRequiredDescription
post_idstringyesThe post id publish_social_post returned (post._id).

detach_social_account

Scope: social:write

Detach a social account from THIS space — the Social Manager's Detach. It stays connected to its owner and any other space; nothing on the network changes. Bring it back with request_connection.

ParameterTypeRequiredDescription
account_idstringyes

edit_published_social_post

Scope: social:run

Change the words of a post that ALREADY went out — X only (the one network that allows it; consequential, it changes a live post). post_id from list_social_posts. Anywhere else: unpublish_social_post, then publish a new one.

ParameterTypeRequiredDescription
post_idstringyes
textstringyesThe post's new words.

get_google_business

Scope: social:read

The space's Google Business profile. part: locations (the profile's locations and which one is in use; search to filter), photos (its photos and videos), services (the services it lists), verification (its verification state and the ways Google offers to verify).

ParameterTypeRequiredDescription
partlocations | photos | services | verificationyes
account_idstringOnly when there is more than one Google Business account.
location_idstring
searchstring

get_social_analytics

Scope: social:read

Get social analytics. Omit post_id for account-level; pass post_id for a single post.

ParameterTypeRequiredDescription
post_idstring
platformstring
start_datestring
end_datestring

get_social_insights

Scope: social:read

The deeper social numbers the Analytics tab shows. kind: best_time (when posts do best, by day and hour), content_decay (how fast a post's reach fades), posting_frequency (how often vs how well), followers (follower growth over from_date–to_date), account (one account's reach, impressions, views… — Instagram, YouTube, TikTok, Facebook, LinkedIn), demographics (who follows — Instagram, YouTube), inbox (DM volume, heatmap, source-breakdown, response-time or top-accounts via inbox_view). Dates are YYYY-MM-DD; default the last 30 days. For a single post's numbers use get_social_analytics.

ParameterTypeRequiredDescription
kindbest_time | content_decay | posting_frequency | followers | account | demographics | inboxyes
account_idstringNeeded for account and demographics when there is more than one; narrows the others.
platformstring
from_datestring
to_datestring
granularitydaily | weekly | monthlyfollowers only.
metricsstringaccount only: comma-separated metric names; omit for the usual ones.
breakdownstringdemographics only, e.g. age, gender, country, city.
inbox_viewvolume | heatmap | source-breakdown | response-time | top-accounts

get_social_queue

Scope: social:read

The posting network's queue for the space's accounts: the weekly time slots a queued post takes, its timezone and the next free slots. (The space's own schedules are planners — list_social_planners.)

ParameterTypeRequiredDescription
account_idstringOnly needed when the accounts sit in more than one profile.

list_comment_auto_replies

Scope: social:read

The space's comment auto-replies (the Auto-Reply tab): per account, keyword rules that answer a comment publicly, DM the commenter, tag them as a contact or hand the comment to the agent — with how often each matched. auto_reply_id is what save/delete take.

list_comment_auto_reply_runs

Scope: social:read

What the comment auto-replies did lately: each comment, who wrote it, whether a rule matched, and what was sent or skipped (and why).

ParameterTypeRequiredDescription
auto_reply_idstring
limitnumber

list_dm_welcomes

Scope: social:read

The welcome messages the space's accounts send a person who writes to them for the FIRST time (Instagram, Facebook, X, Bluesky, Reddit, Telegram, WhatsApp), which accounts can have one, and the latest new conversations with whether each was welcomed.

ParameterTypeRequiredDescription
recentnumberHow many recent new conversations, default 10.

list_social_accounts

Scope: social:read

List social accounts connected to this space (platform, name, username).

list_social_comments

Scope: social:read

Read the comments people left on one of this space's PUBLISHED social posts, live from the network (post_id from list_social_posts). Each comment carries the id reply_to_social_comment and private_reply_to_comment take.

ParameterTypeRequiredDescription
post_idstringyesThe post's id from list_social_posts (a published one).
limitnumberHow many comments (default 25, max 100).
cursorstringThe cursor from the previous page, to read further.

list_social_groups

Scope: social:read

List the space's groups of social posts (a named set of drafts like "Launch week"), each with how many drafts and posts it holds.

list_social_mentions

Scope: social:read

Posts where someone tagged or mentioned the space's accounts, live from the network, newest first.

ParameterTypeRequiredDescription
account_idstringOne account. Omit for all of them.
limitnumber
cursorstringTo read further (with account_id).

list_social_planners

Scope: social:read

List the space's social posting planner templates and slots.

list_social_posts

Scope: social:read

List this space's social posts (drafts, scheduled, published, failed) from the Social Manager. Optional status filter ('draft'|'scheduled'|'published'|'failed'), group (a group's name or id), needs_account (only drafts that cannot go out yet for want of an account) and limit. A draft carries its planned_at, account_ids, group and needs_account (why a platform cannot go out yet). Use this to see the draft/post queue instead of guessing.

ParameterTypeRequiredDescription
statusstringFilter by status: draft | scheduled | published | failed.
groupstringOnly this group's posts (name or id from list_social_groups).
needs_accountbooleanOnly drafts still waiting for an account.
limitnumber

list_social_reviews

Scope: social:read

Read the reviews people left on the space's Facebook Page and Google Business profile (rating, words, who, whether it was answered and how), live from the network. unanswered_only for what still needs a reply; min_rating / max_rating to find the unhappy ones. Each review carries the review_id and account_id reply_to_social_review takes.

ParameterTypeRequiredDescription
account_idstringOne account (list_social_accounts). Omit for every Facebook and Google Business account here.
platformfacebook | googlebusiness
unanswered_onlyboolean
min_ratingnumber1–5
max_ratingnumber1–5
limitnumberDefault 25, max 50.
cursorstringTo read further (with account_id).

manage_google_business

Scope: social:run

Change the space's Google Business profile (consequential — it is public on Google). action: select_location (location_id — which location the account posts and answers for), add_photo (url of an image or video, description, category e.g. COVER, EXTERIOR, INTERIOR, PRODUCT, TEAM), set_services (services: the WHOLE list as get_google_business part=services gives it — it replaces what is there), start_verification (method from part=verification, + phone_number or email), complete_verification (verification_id + pin — the code Google sent, which only the owner has).

ParameterTypeRequiredDescription
actionselect_location | add_photo | set_services | start_verification | complete_verificationyes
account_idstring
location_idstring
google_account_idstring
urlstring
media_formatPHOTO | VIDEO
descriptionstring
categorystring
servicesobject[]
methodstring
phone_numberstring
emailstring
languagestring
verification_idstring
pinstring

private_reply_to_comment

Scope: social:run

Write to the person who left a comment PRIVATELY, as a direct message (Instagram and Facebook only; once per comment, within 7 days of it). Use it for anything that should not be public — a price, a link, a booking. post_id from list_social_posts, comment_id from list_social_comments.

ParameterTypeRequiredDescription
post_idstringyesThe post's id from list_social_posts.
comment_idstringyesThe comment's id from list_social_comments.
textstringyesThe private message.

publish_social_post

Scope: social:run

PUBLISH or schedule social posts live (consequential). Two ways: (1) FROM DRAFTS — draft_ids (from list_social_posts) or a group, with when = "planned" (at their planned dates; drafts with none go one after another from start_at), "one_after_another" (from start_at, every_minutes apart; default a day) or "now". Each draft becomes its post — nothing is copied; a platform with no account stays a draft and the answer says why. (2) A NEW post — text and platforms ([{platform, accountId}] from list_social_accounts), optional media_urls and schedule_time.

ParameterTypeRequiredDescription
draft_idsstring[]Drafts to schedule or post (list_social_posts).
groupstringEvery draft in this group (name or id).
whenplanned | one_after_another | nowFor drafts. Default planned.
start_atstringFor drafts: ISO time the first undated one goes.
every_minutesnumberFor drafts placed one after another. Default 1440 (a day).
textstringFor a new post.
platformsobject[]For a new post.
media_urlsstring[]
schedule_timestringFor a new post.
platform_optionsobject

rename_social_group

Scope: social:write

Rename a group of social posts.

ParameterTypeRequiredDescription
groupstringyesIts name or id.
namestringyesThe new name.

reply_to_social_comment

Scope: social:run

Answer a comment on one of this space's published posts PUBLICLY, under the comment, as the account the post went out on (consequential — everyone sees it). post_id from list_social_posts, comment_id from list_social_comments.

ParameterTypeRequiredDescription
post_idstringyesThe post's id from list_social_posts.
comment_idstringyesThe comment's id from list_social_comments.
textstringyesThe reply, as it will appear under the comment.

reply_to_social_review

Scope: social:run

Answer a review PUBLICLY, under it, as the business (Facebook or Google Business — consequential, everyone sees it). review_id and account_id from list_social_reviews.

ParameterTypeRequiredDescription
review_idstringyes
account_idstringyes
textstringyesThe reply, as it will appear under the review.

retry_social_post

Scope: social:run

Send a post that FAILED to go out again, as it was (consequential — it goes live). post_id from list_social_posts (status failed).

ParameterTypeRequiredDescription
post_idstringyes

save_comment_auto_reply

Scope: social:run

Create a comment auto-reply, or change one (auto_reply_id) — it then answers comments ON ITS OWN in the business's name (consequential). account_id: the account whose comments it watches; posts: ["all"] or post ids from list_social_posts; rules in order, first match wins, each {keywords: [...] or any_comment: true, match_mode: contains|word|exact, exclude_keywords, reply: public answer, dm: private message (Instagram/Facebook only), followers: any|follower|non_follower (Instagram), not_following_message, tags: tag names or ids (a new name makes the tag), hand_to_agent: true, reply_delay_seconds / dm_delay_seconds}. {{name}} and {{handle}} fill in. status active|paused pauses it without losing it. On a change, rules / posts you omit stay as they are.

ParameterTypeRequiredDescription
auto_reply_idstringChange this one instead of creating.
namestring
account_idstring
statusactive | paused
postsstring[]["all"] for every post on the account, or post ids from list_social_posts.
rulesobject[]

save_dm_welcome

Scope: social:run

Set (or change) the welcome message an account sends ON ITS OWN to anyone who DMs it for the first time (consequential). message with {{name}} / {{handle}}, delay_seconds (0–86400) so it reads human, on: false to pause it. One welcome per account.

ParameterTypeRequiredDescription
account_idstringyes
messagestring
delay_secondsnumber
onboolean

set_social_draft_accounts

Scope: social:write

Pick the account drafts go out on, once accounts are connected: account_ids (list_social_accounts) apply to every chosen draft written for that account's platform, replacing what was picked there. Choose drafts by draft_ids, by group, or leave both out for every draft in the space. Nothing is posted. (A platform with exactly one connected account needs no pick — that one is used.)

ParameterTypeRequiredDescription
account_idsstring[]yes
draft_idsstring[]
groupstringA group's name or id: its drafts.

set_social_queue

Scope: social:write

Set the posting network's queue: the weekly time slots (replaces them) and its timezone. slots: [{day: 'mon'…'sun', time: 'HH:MM'}]. queue_id + name to change a named queue; active to switch it on or off.

ParameterTypeRequiredDescription
timezonestringyesIANA name, e.g. Europe/Paris.
slotsobject[]yes
activeboolean
queue_idstring
namestring
account_idstring

sync_social_posts

Scope: social:read

Pull in the posts the space's accounts made OUTSIDE Wakato (or before they were connected), so list_social_posts, comments and numbers include them.

ParameterTypeRequiredDescription
limitnumberPer account, default 50.

unpublish_social_post

Scope: social:run

Take a post that ALREADY went out down from one network (consequential): Threads, Facebook, X, LinkedIn, YouTube, Pinterest, Reddit, Bluesky, Google Business, Telegram — Instagram and TikTok do not allow it. post_id from list_social_posts; platform when it went out on several. A scheduled post is taken back with delete_social_post instead.

ParameterTypeRequiredDescription
post_idstringyes
platformstring

update_social_draft

Scope: social:write

Change a DRAFT social post: its text, platforms, accounts (account_ids), media, planned date (planned_at; "" clears it), group (name or id; "" takes it out of its group) or platform options. Only what you send changes. Nothing is posted.

ParameterTypeRequiredDescription
draft_idstringyesThe draft's id from list_social_posts.
textstring
platformsstring[]
account_idsstring[]
media_urlsstring[]
planned_atstringISO time it is planned for; "" clears it.
groupstringGroup name or id; "" = no group. A new name makes the group.
platform_optionsobject

upsert_social_planner

Scope: social:write

Create a posting schedule in the space's Social Manager, or replace an existing one's slots (pass planner_id). Give times ([8, '12:30']) and optional days (0=Sun..6=Sat, default every day). account_ids names the accounts the schedule is FOR — anything unattended, including apps, then posts ONLY to those, which is how a schedule built for one brand stays on that brand. Omit account_ids to leave an existing scope untouched; [] opens it to any account. A planner is the space's own schedule, so anything else posting can ride the same rhythm.

ParameterTypeRequiredDescription
planner_idstringReplace this planner's slots instead of creating one.
namestringRequired when creating.
descriptionstring
timezonestringIANA name. Slots are interpreted in it.
timesstring[]8 or '08:00'.
daysnumber[]0=Sun..6=Sat. Default every day.
account_idsstring[]Accounts the schedule is for (from list_social_accounts).

On this page