Communities

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

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

add_community_discussion_reply

Scope: communities:write

Post a reply on a discussion thread (blocked if the thread is locked).

ParameterTypeRequiredDescription
discussion_idstringyes
contentstringyes

add_community_moderator

Scope: communities:write

Promote a user to community moderator. user_id is the auth user id (from a member row's user_id). permissions optionally sets approve_members/approve_products/edit_community.

ParameterTypeRequiredDescription
user_idstringyes
permissionsobject

add_community_tab

Scope: communities:write

Add a content tab to the community. module is a tab-module slug from list_community_catalog (about, members, products, feed, events, discussions, resources, rooms, custom_page). config holds module-specific settings, e.g. custom_page → { paper_id }, products → { source_role_slug, require_approval }. Appended to the end unless sort_order is given.

ParameterTypeRequiredDescription
modulestringyesTab-module slug (see list_community_catalog).
namestringTab label (defaults to the module's name).
iconstring
configobjectModule-specific config.
sort_ordernumber
is_visiblebooleanShow the tab (default true).

approve_community_member

Scope: communities:write

Approve a pending community member application. member_id is the community member row id from list_community_members.

ParameterTypeRequiredDescription
member_idstringyes

create_community_course

Scope: communities:write

Create a classroom course (auto-creates a Classroom tab if missing). Add lessons with create_community_lesson.

ParameterTypeRequiredDescription
titlestringyes
descriptionstring
cover_urlstring
sort_ordernumber

create_community_discussion

Scope: communities:write

Start a discussion thread (auto-creates a Discussions tab if missing). Optionally pin/lock it or file it under a category_id.

ParameterTypeRequiredDescription
titlestringyes
bodystring
category_idstring
is_pinnedboolean
is_lockedboolean

create_community_discussion_category

Scope: communities:write

Create a discussion category (auto-creates a Discussions tab if missing).

ParameterTypeRequiredDescription
namestringyes
descriptionstring
sort_ordernumber

create_community_event

Scope: communities:write

Schedule an event on the community calendar (auto-creates an Events tab if missing). starts_at is an ISO timestamp. location_type online|in_person. Add cover_url/video_url so the event presents well, and people to bill the hosts and guests. Admission: audience 'community' (every approved member) or 'roles' (only allowed_role_ids — empty admits nobody but the organiser); approval_required adds a per-request review on top; ticket_product_id makes it paid (the marketplace listing IS the ticket — price/stock live there); rsvp_form_id attaches registration questions (a Space Form); capacity caps attendance; private_details holds the address/link/instructions revealed only to people who are in.

ParameterTypeRequiredDescription
titlestringyes
descriptionstring
location_typeonline | in_person
locationstring
starts_atstringyesISO timestamp, e.g. 2026-08-01T18:00:00Z
ends_atstring
cover_urlstringBanner image for the event card.
video_urlstringOptional trailer shown on the event.
video_poster_urlstringStill frame for video_url.
peopleobject[]The event's line-up. REPLACES the whole list. A Wakato person needs user_id (attendees can then open their profile); anyone else needs name.
audiencecommunity | rolesWho may join: every approved member, or only members holding one of allowed_role_ids.
allowed_role_idsstring[]community_role_ids admitted when audience='roles' (from list_community_roles). Empty admits nobody but the organiser.
approval_requiredbooleanReview each request instead of auto-admitting whoever qualifies.
approval_before_paymentbooleanFor ticketed events: approve first, then charge (default true).
capacitynumberMax attendees; omit or null for unlimited.
ticket_product_idstringMarketplace listing that IS the ticket. Must be the community owner's own listing.
rsvp_form_idstringSpace Form whose questions each request must answer.
private_detailsobjectJoining details revealed only to admitted (and, if ticketed, paid) attendees.

create_community_lesson

Scope: communities:write

Add a lesson to a classroom course. content is rich text; video_url optional; attachments is an array of {url, name, type}.

ParameterTypeRequiredDescription
course_idstringyes
titlestringyes
contentstring
video_urlstring
attachmentsobject[]
sort_ordernumber

create_community_resource

Scope: communities:write

Add a resource to the community library (auto-creates a Resources tab if missing). Provide a url OR a file_url. Optional category groups items.

ParameterTypeRequiredDescription
titlestringyes
categorystring
descriptionstring
urlstring
file_urlstring
file_namestring
iconstringOptional icon: a Lucide icon name (e.g. 'BookOpen') or an image URL.

create_community_role

Scope: communities:write

Create a membership role for the community (e.g. Member, Seller, VIP). auto_approve grants it without owner review; is_public shows it on the community's join page. Attach abilities with set_community_role_permissions and join gating with set_community_role_requirements.

ParameterTypeRequiredDescription
namestringyes
descriptionstring
iconstring
colorstring
auto_approveboolean
is_publicboolean
sort_ordernumber

create_community_room

Scope: communities:write

Create a community video/voice room. mode audio|video. schedule.mode: 'always' (persistent), 'once' (one-time — set scheduled_start/end), or 'daily'/'weekly'/'monthly' (recurring open hours). Access control: allowed_roles (community_role_ids; empty = all members) and allowed_members (user_ids); require_approval enables a waiting room.

ParameterTypeRequiredDescription
titlestringyes
descriptionstring
modeaudio | video
scheduleobject{ mode: always|once|daily|weekly|monthly, timezone, openTime, closeTime, weekdays[]… }
scheduled_startstringISO timestamp (schedule.mode='once').
scheduled_endstring
require_approvalboolean
track_attendanceboolean
record_sessionsboolean
allowed_rolesstring[]
allowed_membersstring[]

delete_community_course

Scope: communities:write

Delete a classroom course and all its lessons. course_id from list_community_courses.

ParameterTypeRequiredDescription
course_idstringyes

delete_community_discussion

Scope: communities:write

Delete a discussion thread and its replies. discussion_id from list_community_discussions.

ParameterTypeRequiredDescription
discussion_idstringyes

delete_community_discussion_category

Scope: communities:write

Delete a discussion category (threads in it are kept, uncategorized). category_id from list_community_discussion_categories.

ParameterTypeRequiredDescription
category_idstringyes

delete_community_discussion_reply

Scope: communities:write

Delete a reply from a discussion thread (moderation). reply_id from list_community_discussion_replies.

ParameterTypeRequiredDescription
reply_idstringyes

delete_community_event

Scope: communities:write

Delete a community event.

ParameterTypeRequiredDescription
event_idstringyes

delete_community_lesson

Scope: communities:write

Delete a classroom lesson. lesson_id from list_community_lessons.

ParameterTypeRequiredDescription
lesson_idstringyes

delete_community_resource

Scope: communities:write

Remove a resource from the community library.

ParameterTypeRequiredDescription
resource_idstringyes

delete_community_role

Scope: communities:write

Delete a community role. Fails if members still hold it — reassign them first with set_community_member_role.

ParameterTypeRequiredDescription
role_idstringyes

delete_community_room

Scope: communities:write

Delete a community video/voice room. room_id from list_community_rooms.

ParameterTypeRequiredDescription
room_idstringyes

get_community

Scope: communities:read

Get the community connected to this space: profile, status, member counts (approved/pending/suspended), moderator count, public URL, and member_intro (the members-only welcome note). Errors if no community is linked.

get_community_attendance

Scope: communities:read

Room attendance overview for the connected community (mirrors the owner Attendance dashboard): totals, per-member and per-room minutes/sessions. Only tracked rooms count.

get_community_classroom_progress

Scope: communities:read

Classroom completion stats: per-course lesson_count, learners, completed, in_progress. Optional course_id narrows to one course.

ParameterTypeRequiredDescription
course_idstring

get_community_membership_plan

Scope: communities:read

Get the connected community's active paid membership plan, or free:true when the community is free to join.

get_community_referral_program

Scope: communities:read

Get the community's Partner commission (referral program) — the cut of member sales the community earns: commission_pct, terms, is_active, version, and how many sellers have agreed. Returns program:null when none is set.

get_community_role

Scope: communities:read

Get one community role in full: its fields, assigned permission tags, and join requirements. role_id from list_community_roles.

ParameterTypeRequiredDescription
role_idstringyes

get_community_stats

Scope: communities:read

One-call overview of the connected community: member counts (approved/pending/suspended), moderators, tabs, roles, and content counts (discussions, events, resources, classroom courses/lessons, rooms) plus paid-membership snapshot.

invite_to_community

Scope: communities:write

Invite people into the connected community by email. Each address gets its own link; someone without a Wakato account signs up and lands in the community. Optionally names the role they are admitted into. The invitation comes from the community owner.

ParameterTypeRequiredDescription
emailsstring[]yesUp to 20 addresses.
messagestringA note that rides along, max 500 chars.
role_idstringFrom list_community_roles. Defaults to the first public role.

list_community_catalog

Scope: communities:read

Discover the building blocks for community structure: tab_modules (about, members, products, feed, events, discussions, resources, rooms, custom_page…), permission_tags (for role permissions), and role_requirement_types (join rules). Call this first so add_community_tab / set_community_role_permissions / set_community_role_requirements use valid slugs.

list_community_courses

Scope: communities:read

List the connected community's classroom courses with lesson_count each.

list_community_discussion_categories

Scope: communities:read

List the connected community's discussion categories (optional groupings for threads).

list_community_discussion_replies

Scope: communities:read

List replies on a discussion thread (oldest first). discussion_id from list_community_discussions.

ParameterTypeRequiredDescription
discussion_idstringyes
limitnumber

list_community_discussions

Scope: communities:read

List the connected community's discussion threads (pinned first). Optionally filter by category_id.

ParameterTypeRequiredDescription
category_idstring
limitnumber

list_community_event_rsvps

Scope: communities:read

List RSVPs for a community event (going/maybe/not_going) plus its going_count. event_id from list_community_events.

ParameterTypeRequiredDescription
event_idstringyes
statusgoing | maybe | not_going
limitnumber

list_community_events

Scope: communities:read

List the connected community's events with their line-up, admission settings (audience, allowed_role_ids, approval_required, capacity, ticket_product_id, rsvp_form_id) and private_details (organiser view). upcoming:true returns only future events.

ParameterTypeRequiredDescription
upcomingboolean
limitnumber

list_community_lessons

Scope: communities:read

List lessons in a classroom course (title, content, video_url, attachments, sort_order).

ParameterTypeRequiredDescription
course_idstringyes

list_community_members

Scope: communities:read

List the connected community's members with profile info. Filter by status (pending|approved|rejected|suspended|left). Use member ids with approve/reject/suspend/remove_community_member.

ParameterTypeRequiredDescription
statuspending | approved | rejected | suspended | left
limitnumber
offsetnumber

list_community_moderators

Scope: communities:read

List the connected community's moderators with their permissions (approve_members, approve_products, edit_community).

list_community_pending_posts

Scope: communities:read

Discussions and replies waiting for review, because their author's role was granted the permission WITH approval. Empty unless a role has that switch on.

ParameterTypeRequiredDescription
limitnumber

list_community_recordings

Scope: communities:read

Recorded sessions across the community's rooms, newest first, with the room they came from and a playable url when the recording is ready.

ParameterTypeRequiredDescription
limitnumber

list_community_resources

Scope: communities:read

List the connected community's resource-library items (links/files grouped by category).

ParameterTypeRequiredDescription
limitnumber

list_community_roles

Scope: communities:read

List the connected community's roles (id, slug, name, auto_approve, is_public).

list_community_rooms

Scope: communities:read

List the connected community's video/voice rooms (persistent + scheduled) with their status and settings.

list_community_tabs

Scope: communities:read

List the connected community's content tabs in display order (id, slug, name, module, config, sort_order, is_visible).

open_community

Scope: communities:write

Open a community FOR this space when it has none. It belongs to the space owner and is connected to the space in the same step, so every other community tool works on it immediately. Refuses when the space already runs one. The space owner must have allowed the agent to open one (space → Community page).

ParameterTypeRequiredDescription
namestringDefaults to the space's own name.
descriptionstring
categorystringFrom list_community_catalog; defaults to 'community'.
visibilitypublic | private

reject_community_member

Scope: communities:write

Reject a community member application (optional reason shown to the applicant).

ParameterTypeRequiredDescription
member_idstringyes
reasonstring

remove_community_member

Scope: communities:write

Permanently remove a member from the community.

ParameterTypeRequiredDescription
member_idstringyes

remove_community_membership_plan

Scope: communities:write

Make the community free to join by archiving its active paid plan.

remove_community_moderator

Scope: communities:write

Demote a moderator (removes the community_moderators row).

ParameterTypeRequiredDescription
moderator_idstringyes

remove_community_tab

Scope: communities:write

Remove a community tab. Deleting a tab also removes the content that lives on it (e.g. an Events tab's events, a Resources tab's resources).

ParameterTypeRequiredDescription
tab_idstringyes

reorder_community_tabs

Scope: communities:write

Set the display order of the community's tabs. Pass tab_ids as the full ordered array of tab ids from list_community_tabs.

ParameterTypeRequiredDescription
tab_idsstring[]yes

review_community_post

Scope: communities:write

Approve a pending discussion or reply so everyone can see it, or reject it. Use list_community_pending_posts to find them.

ParameterTypeRequiredDescription
kindthread | reply
post_idstringyes
approvebooleanDefault true.
reasonstringWhy it was turned down.

set_community_discovery

Scope: communities:write

Submit the community to the Wakato directory for review ('submit'), or take it back out ('withdraw'). A live community is always reachable by its own link either way.

ParameterTypeRequiredDescription
actionsubmit | withdrawyes

set_community_member_role

Scope: communities:write

Assign a member to a role (or omit role_id to clear it). member_id from list_community_members, role_id from list_community_roles.

ParameterTypeRequiredDescription
member_idstringyes
role_idstringRole id from list_community_roles; omit or null to clear the member's role.

set_community_membership_plan

Scope: communities:write

Set (or replace) the community's paid membership plan. price_cents is in CENTS (min 100 = $1.00). billing one_time or subscription (subscription needs billing_interval month|year). lapse_behavior remove|downgrade.

ParameterTypeRequiredDescription
billingone_time | subscriptionyes
price_centsnumberyes
currencystring
billing_intervalmonth | year
lapse_behaviorremove | downgrade

set_community_referral_program

Scope: communities:write

Set (or replace) the community's Partner commission — the % of member sales the community keeps. commission_pct 0–50. terms optionally describes what sellers get for it (omit/null keeps existing terms). is_active defaults true; false pauses new agreements. Rate changes bump the program version: sellers who accepted an older rate keep it until they accept the new one.

ParameterTypeRequiredDescription
commission_pctnumberyesPercent of each member sale, 0–50.
termsstringWhat sellers get for the commission (shown at agreement time).
is_activeboolean

set_community_role_permissions

Scope: communities:write

Replace a role's abilities. permissions is the full array of permission-tag slugs (from list_community_catalog), e.g. ["can_view_directory","can_post_feed","can_create_events"]. Empty array clears them all.

ParameterTypeRequiredDescription
role_idstringyes
permissionsstring[]yes

set_community_role_requirements

Scope: communities:write

Replace a role's join requirements (gating applicants must meet). requirements is the full ordered array of { rule_type, config }, rule_type a slug from list_community_catalog (kyc_verified, email_verified, profile_complete, has_tag {tag_slug}, answers_custom_question {question,…}, min_account_age_days {days}). Empty array clears them.

ParameterTypeRequiredDescription
role_idstringyes
requirementsobject[]yes

suspend_community_member

Scope: communities:write

Suspend an approved community member (revokes access; reversible by re-approving).

ParameterTypeRequiredDescription
member_idstringyes

update_community

Scope: communities:write

Edit the connected community's profile & settings: name, description, short_description, logo_url, banner_url, visibility (public|private), category, media (ordered gallery [{ id, type, url, thumbnail_url, caption }]), and member_intro (the members-only welcome note shown at the top of the community interior — markdown, readable only by members; the description stays the public visitor pitch). (The community's cut of member sales is the Partner commission — see get/set_community_referral_program.)

ParameterTypeRequiredDescription
namestring
descriptionstring
short_descriptionstring
logo_urlstring
banner_urlstring
visibilitypublic | private
categorycommerce | services | jobs | dating | community | other
mediaobject[]
member_introstringMembers-only welcome (markdown). What this place is FOR, what happens where, what to do first. Empty string clears it.

update_community_course

Scope: communities:write

Edit a classroom course (title, description, cover_url, sort_order). course_id from list_community_courses.

ParameterTypeRequiredDescription
course_idstringyes
titlestring
descriptionstring
cover_urlstring
sort_ordernumber

update_community_discussion

Scope: communities:write

Edit a discussion thread — title/body, pin/lock (moderation), or move to a category. discussion_id from list_community_discussions.

ParameterTypeRequiredDescription
discussion_idstringyes
titlestring
bodystring
is_pinnedboolean
is_lockedboolean
category_idstring

update_community_event

Scope: communities:write

Edit a community event, including its admission controls (audience/allowed_role_ids, approval_required, ticket_product_id, rsvp_form_id, capacity, private_details — same semantics as create_community_event; private_details: null wipes the joining details). event_id from list_community_events. Passing people REPLACES the whole line-up — read it from list_community_events first and send the full list you want.

ParameterTypeRequiredDescription
event_idstringyes
titlestring
descriptionstring
location_typeonline | in_person
locationstring
starts_atstring
ends_atstring
cover_urlstring
video_urlstring
video_poster_urlstring
peopleobject[]The event's line-up. REPLACES the whole list. A Wakato person needs user_id (attendees can then open their profile); anyone else needs name.
audiencecommunity | roles
allowed_role_idsstring[]
approval_requiredboolean
approval_before_paymentboolean
capacitynumber,null
ticket_product_idstring,nullnull makes the event free again.
rsvp_form_idstring,nullnull detaches the registration form.
private_detailsobject,null

update_community_lesson

Scope: communities:write

Edit a classroom lesson (title, content, video_url, attachments, sort_order). lesson_id from list_community_lessons.

ParameterTypeRequiredDescription
lesson_idstringyes
titlestring
contentstring
video_urlstring
attachmentsobject[]
sort_ordernumber

update_community_membership_plan

Scope: communities:write

Patch the community's ACTIVE paid membership plan in place (price, interval, granted role, lapse behavior). Use set_community_membership_plan to create one, remove_community_membership_plan to make the community free.

ParameterTypeRequiredDescription
billingone_time | subscription
price_centsnumber
currencystring
billing_intervalmonth | year
lapse_behaviorremove | downgrade
grants_community_role_idstringRole granted while the membership is active.
lapse_role_idstringRole to downgrade to when it lapses (if lapse_behavior=downgrade).

update_community_moderator

Scope: communities:write

Update a moderator's permissions. moderator_id is the community_moderators row id from list_community_moderators.

ParameterTypeRequiredDescription
moderator_idstringyes
permissionsobject

update_community_resource

Scope: communities:write

Edit a resource in the community library (title, description, url/file, category, order). resource_id from list_community_resources.

ParameterTypeRequiredDescription
resource_idstringyes
titlestring
descriptionstring
categorystring
urlstring
file_urlstring
file_namestring
iconstringA Lucide icon name (e.g. 'BookOpen') or an image URL.
sort_ordernumber

update_community_role

Scope: communities:write

Edit a community role's fields (name, description, icon, color, auto_approve, is_public, sort_order). role_id from list_community_roles.

ParameterTypeRequiredDescription
role_idstringyes
namestring
descriptionstring
iconstring
colorstring
auto_approveboolean
is_publicboolean
sort_ordernumber

update_community_room

Scope: communities:write

Edit a community room (title, description, recording, schedule, access control). room_id from list_community_rooms.

ParameterTypeRequiredDescription
room_idstringyes
titlestring
descriptionstring
modeaudio | video
record_sessionsboolean
scheduled_startstring
scheduled_endstring
require_approvalboolean
track_attendanceboolean
scheduleobject
allowed_rolesstring[]
allowed_membersstring[]

update_community_tab

Scope: communities:write

Edit a community tab (name, icon, visibility, sort_order, or merge into its config). tab_id from list_community_tabs.

ParameterTypeRequiredDescription
tab_idstringyes
namestring
iconstring
configobjectMerged into the existing config.
sort_ordernumber
is_visibleboolean

On this page

add_community_discussion_replyadd_community_moderatoradd_community_tabapprove_community_membercreate_community_coursecreate_community_discussioncreate_community_discussion_categorycreate_community_eventcreate_community_lessoncreate_community_resourcecreate_community_rolecreate_community_roomdelete_community_coursedelete_community_discussiondelete_community_discussion_categorydelete_community_discussion_replydelete_community_eventdelete_community_lessondelete_community_resourcedelete_community_roledelete_community_roomget_communityget_community_attendanceget_community_classroom_progressget_community_membership_planget_community_referral_programget_community_roleget_community_statsinvite_to_communitylist_community_cataloglist_community_courseslist_community_discussion_categorieslist_community_discussion_replieslist_community_discussionslist_community_event_rsvpslist_community_eventslist_community_lessonslist_community_memberslist_community_moderatorslist_community_pending_postslist_community_recordingslist_community_resourceslist_community_roleslist_community_roomslist_community_tabsopen_communityreject_community_memberremove_community_memberremove_community_membership_planremove_community_moderatorremove_community_tabreorder_community_tabsreview_community_postset_community_discoveryset_community_member_roleset_community_membership_planset_community_referral_programset_community_role_permissionsset_community_role_requirementssuspend_community_memberupdate_communityupdate_community_courseupdate_community_discussionupdate_community_eventupdate_community_lessonupdate_community_membership_planupdate_community_moderatorupdate_community_resourceupdate_community_roleupdate_community_roomupdate_community_tab