Aller au contenu

Tools · Content and engagement

MCP tools for what happens in the feed: searching, reading, publishing, previewing links, editing, moving and deleting posts, short posts, importing posts from a spreadsheet, commenting and replying, editing and deleting comments, reacting, pinning, the gallery (adding, listing, editing, reacting and deleting), polls (creating, voting, seeing the results, editing, seeing who voted and closing), engagement and your points, and moderation.

Cet article n’a pas encore été traduit. Vous lisez la version en anglais.

The community's day to day: engagement and the moderation queue, finding a post by its title, publishing an announcement with an image, answering the questions from a live session, reacting to introductions, pinning what matters, moving a post to the right space and looking after the gallery's photos. Posts and comments go out under the name of whoever connected the assistant.

Each tool carries a badge: Read-only changes nothing, Changes creates or changes something right away, and Asks to confirm only acts after your yes to a summary. See Money and confirmation.

In short

ToolWhat it doesMinimum roleType
list_postsThe feed, with comments and reactionsAnyRead-only
search_contentFinds posts, events, courses, sections, spaces and calls by titleAnyRead-only
list_commentsA post's commentsAnyRead-only
create_postPublishes a postAnyChanges
preview_linkShows how a link will look in the post: player or cardAnyRead-only
update_postEdits a post's title, text, cover, tags or pinAuthor, moderator or financeChanges
delete_postDeletes a post, with confirmationAuthor, moderator or financeAsks to confirm
move_postMoves a post to another Content or Feed spaceModerator or financeChanges
create_short_postPublishes a short post, with no title, in a FeedMember (not finance)Changes
list_scheduled_postsThe scheduled posts: the team sees all, everyone else their ownAnyRead-only
publish_scheduled_postPublishes a scheduled post nowAnyChanges
analyze_content_importReads a spreadsheet of posts and suggests where each column goesAdminChanges
preview_content_importThe post import summary and the first 10 rows, saving nothingAdminRead-only
start_content_importImports the spreadsheet's posts, with their original date and silentlyAdminChanges
get_content_importProgress and report of a post importAdminRead-only
create_commentComments or repliesAnyChanges
update_commentEdits a comment's textAuthor, moderator or financeChanges
delete_commentDeletes a comment, with confirmationAuthor, moderator or financeAsks to confirm
remove_comment_videoRemoves a comment's Drop; the comment keeps its textAuthor, moderator or financeAsks to confirm
set_video_posterChooses the cover of a hosted video (Drop, post video or recording) from an imageAnyChanges
set_video_cover_framePicks a hosted video's cover from the video's own framesAnyChanges
remove_video_posterRemoves the chosen cover; the automatic one comes backAnyAsks to confirm
create_drop_descriptionWrites the text of a post, short post or comment from what the person said in the DropAnyChanges
get_drop_descriptionThe state and text of a create_drop_description requestAnyRead-only
add_reactionReacts with an emojiAnyChanges
pin_postPins or unpins in the feedModerator or financeChanges
add_gallery_imageAdds an image to a Gallery spaceAnyChanges
add_gallery_imagesAdds up to 20 images, by link or file, to a Gallery spaceAnyChanges
list_gallery_imagesA gallery's images, with author and reactionsAnyRead-only
update_gallery_imageChanges an image's title or descriptionAuthor, moderator or financeChanges
react_to_gallery_imageReacts to a gallery imageAnyChanges
delete_gallery_imageDeletes a gallery imageAuthor, moderator or financeAsks to confirm
get_leaderboardThe top of the leaderboardAnyRead-only
get_my_pointsYour points and your position on the leaderboardAnyRead-only
get_member_pointsA member's points balance and statementAdminRead-only
get_points_settingsPoints as currency: on, name, start and circulationAdminRead-only
update_points_settingsTurns points on as currency and names itAdminChanges
get_ranking_rulesWhether engagement is on, and the points per actionAdminRead-only
update_ranking_rulesTurns it on or off and changes the pointsAdminChanges
get_ranking_levelsThe levels, with the minimum points and the week's activityAdminRead-only
update_ranking_levelsSaves the levels and requirementsAdminAsks to confirm
get_level_progressWhat is left this week to stay at or move up a levelAnyRead-only
list_moderation_queueWhat is waiting for approvalModerator or financeRead-only
moderate_itemApproves or rejects an item in the queueModerator or financeChanges
react_to_commentReacts to a comment with an emojiMember (not finance)Changes
get_feed_statsThe home page numbers, and yoursAnyRead-only
get_feed_highlightsThe Feed's side column: upcoming events, trending posts, new members and leaderboardAnyRead-only
get_space_highlightsA Content space's side column: its tags and what's trendingAnyRead-only
get_ranking_dashboardThe engagement page: leaderboard, levels and rulesAnyRead-only
list_my_points_historyYour points history, action by actionAnyRead-only
recalculate_member_pointsRecalculates a member's pointsAdminChanges
adjust_member_pointsAdds or takes away someone's points, with the reasonAdminChanges
list_badgesThe badge catalog, with how many people hold each oneAdminRead-only
get_badgeA badge, with who holds itAdminRead-only
create_badgeCreates a badge, with an imageAdminChanges
update_badgeChanges the name, description, image or who sees itAdminChanges
delete_badgeRemoves a badge from the catalogAdminAsks to confirm
award_badgeGives a badge to up to 100 peopleAdminChanges
revoke_badgeTakes a badge back from someone, without noticeAdminAsks to confirm
list_member_badgesA member's badgesAnyRead-only
remove_post_videoRemoves a post's video (hosted file or link) or a short post's DropAuthor, moderator or financeAsks to confirm
get_media_url1-hour link to a hosted video or imageAnyRead-only
reprocess_mediaRestarts a hosted video's conversion when it failedModerator or financeChanges

list_posts

Read-only

List feed posts. The feed (posts, statuses, events and courses), newest first, with comment and reaction counts. Minimum role: any.

ParameterTypeRequiredDescription
space_ididNoOnly one space (from list_spaces). On a Feed, it follows the Feed's feed_scope: space lists only the space's own items, section (and any other module) lists the whole section
section_ididNoA section (from list_spaces): every space in it, whatever the feed_scope. Wins over space_id
typeall, status, content, events, coursesNoOnly one kind of item
tagtextNoOnly the posts and statuses with this tag (e.g. jobs), within the same space or section, like clicking the tag in the app. Case, accents and # don't matter: Jobs = jobs = #jóbs
page, limitnumberNoPagination
sortrecent, activityNorecent (the default) or activity: pinned first, then by latest activity (publication, comment or reply); each item carries last_activity_at

Returns: the items, each with the id and the type that create_comment, add_reaction and pin_post need, the author, the title or text, the counts, whether it's pinned and its tags. Each item also brings embeds: the links in the text as a player or a card (see preview_link). For the team, each post carries canCreateCampaign: whether it can become a campaign with create_campaign_from_content.

Ask like this: "Which posts got the most comments this week?" · "What was posted in the Announcements space?" · "List the posts tagged #jobs in the Community space."

search_content

Read-only

Search by title. Searches the titles of posts, events, courses, sections, spaces and calls for papers, ignoring case and accents, in a single search across the whole community. Minimum role: any; each person finds what they can see.

ParameterTypeRequiredDescription
querytext, 2 to 200YesPart of the title. For short posts, it searches the text
typeslist: posts, events, courses, spaces, callsNoDefault: all. spaces includes sections
limitnumber, up to 50NoDefault 20

Returns: the matches, each with its type, id, title and, when there is one, the space, the section, the module, the date and the status.

Notes: people outside the team only find what is published and approved; spaces and sections closed to the person are left out. A space the person can open shows up even inside a section closed to them. It's the same search as GET /api/search.

Ask like this: "Find the post How the community works."

list_comments

Read-only

List a post's comments. The comments on a content post or a status. Minimum role: any.

ParameterTypeRequiredDescription
typecontent, statusYesThe item type, from list_posts
post_ididYesThe item id, from list_posts

Returns: the comments, with the id (which create_comment uses in reply_to), the author, the text and the date.

Ask like this: "Which comments on the welcome post haven't been answered yet?"

Accepts the types course (course discussion) and course_lesson (lesson discussion, with the course argument naming the course). Enrolled students and the team read, finance included.

create_post

Changes

Publish post. Publishes a text post in a Feed or Content space. Minimum role: any role that can post in that space.

ParameterTypeRequiredDescription
space_ididYesFrom list_spaces
titletextYes
textMarkdownYesThe body of the post, in Markdown: bold, italic, lists, links, subheadings, quote and code
image_urllinkNoThe post's cover: a public (http/https) link to a JPEG, PNG, WebP or GIF image of up to 50 MB. See Images
published_atISO 8601 date and timeNoThe publication date of a post that went out earlier (e.g. 2024-03-15T10:00:00Z): past or now, never the future. Owner and admin only
authorprofile id, e-mail, name or linkNoPosts on behalf of another member, only for someone with a role below yours. Owner and admin only
tagslist, up to 10 of 40 charactersNoThe post's clickable tags. A leading # and duplicates are dropped; above the limit, nothing is published and the assistant gets the reason
comments_disabledyes or noNotrue turns off the post's comments (nobody comments, the team included; existing ones stay), false turns them on. The author, owner, admin or moderator

Returns: the created post, with its id (for pin_post), the cover, the tags and the embeds. The text comes back in Markdown, with text_format: "markdown".

Links become a player or a card. The links in the text become a player or a card by themselves, up to 5 per post: there is no need to call preview_link first. A link that hadn't been read yet shows up in embeds a few seconds after publishing.

Ask like this: "Post a welcome in the Feed for everyone who joined this week, mentioning each of them by name."

Video. video_url (a YouTube or Vimeo link) or a video hosted on Memberfy, through video_file_url (a link; MP4, WebM or MOV up to 2 GB) or video_file_base64 (about 7 MB), with video_file_type and video_file_name. Send one video only, not both; the post goes out as a video post. The file is private: only whoever opens the post sees it. See Hosted video.

Date and author. With published_at more than 5 minutes in the past, the post goes in silently: no engagement points, out of the news e-mails and highlights, no new badge. With author, the post shows as the person's and always goes in silently, whatever the date; the Logs record who posted it. The owner posts on behalf of admins, moderators, finance and members; the admin, on behalf of moderators, finance and members. Otherwise nothing is published and the assistant gets the reason. "Bring over these 40 posts from our old blog, each with its original date and author."

Notes: without author, the post goes out with the name and photo of whoever connected. The space's Who can post rule applies: in a staff-only space, a member is refused. The post goes out immediately; scheduling isn't possible yet. If the image can't be used, nothing is published and the assistant gets the reason.

publish_at (a date and time after now, up to 1 year ahead) schedules the post: it only goes out at that time, and the answer carries schedule. See list_scheduled_posts.

Read-only

Preview a link. Shows how a link will look inside a post, before publishing: the same preview the app editor shows on paste. A player for YouTube (live streams and a start time set with t= included), Spotify, Vimeo, Loom, SoundCloud, Google Maps, Instagram posts and reels and LinkedIn posts; a card (title, description, site, image) for other pages; an app card for the app stores; the image itself for a GIF or an image link. Shorteners are followed. It asks for no confirmation and saves nothing. Minimum role: any.

ParameterTypeRequiredDescription
urlhttp or https link, up to 2,048YesThe link to preview

Returns: provider, type, title, description, site_name, thumbnail_url (or snapshot_thumbnail_url, the page snapshot, taken after the post is saved), becomes_player, the player size and shows_as, a sentence on how the link shows up, in your language.

Notes: an invalid link, or one to a private or internal address, is refused with the reason (a post with it still publishes, with the link as text). There's a limit of a few dozen previews per minute; past it, the assistant says how many seconds to wait. See Links become a player or a card.

Ask like this: "How will this YouTube video look in the post?" · "Does this Spotify link become a player?"

update_post

Changes

Edit a post. Changes a post's title, text or cover, and pins or unpins it. Only what is sent changes. Minimum role: the author, or moderator, finance and up.

ParameterTypeRequiredDescription
postid or linkYes
typecontent, statusNoDefault: content. On a status (short post), the text, the date and the Drop change
titleplain textNo
textMarkdownNoIn a short post (status), only bold, italic, links and line breaks
image_url or image_base64link or fileNoThe new cover. See Images
remove_imageyes or noNoRemoves the cover
pinnedyes or noNoPins or unpins (moderator, finance and up)
published_atISO 8601 date and timeNoChanges the publication date, also of a short post: past or now. Owner and admin only
tagslist, up to 10 of 40 charactersNoThe tags, of a post or a short post. Replaces the whole list; [] (or empty) removes them all; without the parameter, the tags stay as they are
comments_disabledyes or noNotrue turns off the post's comments (nobody comments, the team included; existing ones stay), false turns them on. The author, owner, admin or moderator

Ask like this: "In the post How the community works, swap the cover for this image and pin it to the top." · "Add the tags jobs and remote to the latest post in the Jobs space."

Changing the text redoes the embeds.

Notes: the post doesn't move to another space.

update_post also accepts video_url, video_file_url and video_file_base64 (the new video replaces the previous one, and the old file is deleted). remove_video only clears a link; for a hosted video, use remove_post_video.

On a short post (type: status), video_file_url or video_file_base64 (MP4, WebM or MOV, up to 350 MB) replaces the Drop and deletes the previous one; video_url is refused. To take the Drop off, remove_post_video with type: status.

On a post with comments off, create_comment is refused: "Comments are turned off on this post."

publish_at reschedules a post that is waiting or failed (on a status, publish_at alone is enough).

remove_post_video

Asks to confirm

Remove a post's video. Deletes the hosted video file for good (the storage comes back) or clears the link, and the post becomes a text post. On the first call it shows the post; on the second, with the confirmation_token, it removes. Role: the author, or moderator, finance and up.

ParameterTypeRequiredDescription
postid or linkYes
typecontent, statusNoDefault: content. With status, removes a short post's Drop; refused when the short post has no text, since it would be left empty (use delete_post for that).

reprocess_media

Changes

Convert a video again. Restarts the conversion of a hosted video (a post's videoMediaId or an event's recordingMediaId) when it failed. It answers 409 when the video didn't fail or the community doesn't have adaptive streaming, and it's limited to 20 per hour. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
media_ididYesThe media id of the video whose conversion failed

get_media_url

Read-only

A hosted media link. A signed link that works for 1 hour, to watch or open: a post's video (videoMediaId), an event's recording (recordingMediaId), a gallery or classified image (mediaId). Only those who can open the space and the item get it: a post in review, an expired ad or a paid event aren't open to everyone. Don't store or pass on the link; ask for another when it expires. The response says when it expires: url_expires_at (date and time) and url_valid_seconds (seconds left). Role: any. Also the Drop of a short post or comment (videoMediaId).

ParameterTypeRequiredDescription
media_ididYesThe media id on the post, event, image or ad

delete_post

Asks to confirm

Delete a post. Asks for confirmation: the first call shows the post, and only the second deletes it. Minimum role: the author, or moderator, finance and up.

ParameterTypeRequiredDescription
postid or linkYes
typecontent, statusNoDefault: content

move_post

Changes

Move post to another space. Takes a post to another Content or Feed space in the community; its place in the feed goes with it. Minimum role: moderator or finance.

ParameterTypeRequiredDescription
postid or linkYes
to_spaceid, link, address or nameYesA Content or Feed space

Ask like this: "This job post ended up in Announcements; move it to the Jobs space."

Notes: a space of another module (Courses, Events…) is refused.

create_short_post

Changes

Publish short post. A short post, up to 500 characters and with no title, in a Feed space, like the app's quick field. For a post with a title and a cover, the assistant uses create_post. Role: owner, admin, moderator or a member who can post in the space.

ParameterTypeRequiredDescription
spaceid, link, address or nameYesA Feed space
texttext, up to 500Yes, without a videoTakes only bold, italic, links and line breaks, in Markdown . With a video, it can be left out
visibilitypublic, members, privateNo
published_atISO 8601 date and timeNoA past publication date, as in create_post. Owner and admin only
authorprofile id, e-mail, name or linkNoPosts on behalf of another member with a role below yours, always silently, as in create_post. Owner and admin only
tagslist, up to 10 of 40 charactersNoThe short post's clickable tags, as in create_post
video_file_url or video_file_base64link or fileNoThe short post's Drop: a ready-made video (MP4, WebM or MOV, up to 350 MB), with video_file_type and video_file_name. The assistant doesn't record: it sends a file or link.
comments_disabledyes or noNotrue turns off the post's comments (nobody comments, the team included; existing ones stay), false turns them on. The author, owner, admin or moderator

Returns: the short post, with the embeds of the links in the text, as in create_post. With a video, also videoMediaId and video.processing_status (queued, processing, ready, failed, or empty when the community doesn't convert); the link comes from get_media_url. The video is private like the post and is prepared for streaming up to 720p in the background.

Ask like this: "Write in the Feed: 'Live today at 8 p.m., link in the event!'"

publish_at schedules the short post, as in create_post.

Scheduled posts

A post with publish_at in create_post or create_short_post waits for its time in the Scheduled list (see Content). Neither tool asks to confirm.

list_scheduled_posts

Read-only

Scheduled. The posts waiting to go out, soonest first: type (content or status), title, excerpt, space, author, publish_at, status (scheduled, or failed when the author can no longer post in the space) and can_manage. The team (owner, admin, moderator and finance) sees everyone's; anyone else only their own. Minimum role: any.

ParameterTypeRequiredDescription
space_ididNoOnly one space's
pagenumberNo
limitnumber, up to 50No

Ask like this: "What is scheduled to go out this week?"

Notes: rescheduling is update_post with publish_at; publishing now, publish_scheduled_post; canceling, delete_post.

publish_scheduled_post

Changes

Publish now. The date becomes now and the post goes out once, with the feed, the points and the e-mail notice; a failed one is tried again. The author, whoever scheduled it, the owner, the admin, the moderator and finance may do it; for anyone else, or a post that is not waiting, the answer is not found. If the author can no longer post in the space, it is refused and the post stays failed. Minimum role: any.

ParameterTypeRequiredDescription
postid or linkYesThe scheduled post (from list_scheduled_posts)
typecontent or statusNoDefault: content

Ask like this: "Publish the scheduled post about the live session now."

analyze_content_import

Changes

Analyze the spreadsheet of posts. The first step of importing content from a spreadsheet, for example when bringing the community over from another platform. Sends the file (.xlsx or .csv, up to 5 MB, 5,000 rows and 100 columns) and returns the analysis. Nothing is imported; an analysis that isn't confirmed expires in 24 hours. Minimum role: admin.

ParameterTypeRequiredDescription
file_urllinkOne of the twoPublic link to the .xlsx or .csv
csv_texttextOne of the twoThe CSV's content
file_nametextNoThe name kept in the history

Returns: the sheets, the header row, the total of rows and each column with 3 examples and the suggested destination.

preview_content_import

Read-only

Preview the post import. Reads the file again (another sheet, header row, delimiter or encoding) and, with the mapping and the options, returns the summary and the first 10 rows as they will look, saving nothing. Minimum role: admin.

ParameterTypeRequiredDescription
import_ididYesFrom the analysis
sheet, header_row, delimiter, encodingNoHow to read the file
mappinglistNoWhere each column goes: column (0 = column A) and target: title, body, author_email, published_at, space, type, tags or ignore
space_ididWithout a space columnThe default space, a Content or Feed one (from list_spaces)
typepost, article, shortNoThe type of the rows without a type column. Default: post; short only in a Feed space, up to 500 characters
visibilitypublic, membersNoDefault: members
date_orderDMY, MDYNoFor dates like 03/04/2024
unknown_authorskip, importerNoAn author e-mail that belongs to no one in the community: skips the row (default) or publishes under the name of whoever imports, with a warning

Returns: how many will be imported, by type, with their original date, skipped by reason and with warnings by code, the images to download, the date order and time zone used, and the first 10 rows (type, title, space, author, date, tags and warnings). The reasons and warnings are explained in Why a row was skipped.

start_content_import

Changes

Import the posts. The same parameters as the preview, with mapping required. Puts the import in the queue; each row becomes a post with its original date, silently: no one is notified, no e-mail goes out to members and no one earns points. That's why it doesn't ask for a confirmation_token, but the assistant shows the preview_content_import summary and waits for your yes first. Minimum role: admin.

Notes: the author is the community member with the author_email, only with a role below that of whoever imports; otherwise the row is skipped. A post with the same title and date as an existing one is skipped, so repeating the spreadsheet doesn't duplicate anything. Images in the text are hosted on Memberfy (up to 20 per row and 300, or 500 MB, per import; the rest stay as links). One post import per community at a time. Whoever imports gets an e-mail at the end.

Ask like this: "Import this spreadsheet of posts from our old blog into the Articles space, with the original dates and authors."

get_content_import

Read-only

Follow the post import. The status (ANALYZED, QUEUED, IMPORTING, COMPLETED, FAILED, CANCELLED, ABANDONED), the rows processed, imported, skipped, failed and with warnings, and the skipped rows (with the reason), the ones that failed and the ones that went in with a warning (like IMAGE_FAILED, with the image's link), with the id of what was created. Minimum role: admin.

create_comment

Changes

Comment or reply. Comments on a feed item, or replies to a comment. Minimum role: any. Commenting requires access to the item's space (403 without it).

ParameterTypeRequiredDescription
typecontent, status, event, courseYesThe item type, from list_posts
item_ididYesThe item id
textplain text, up to 2,000Yes, without a videoNo formatting: Markdown marks are stripped . On a short post (status), up to 280. With a video, it can be left out
reply_toidNoThe id of the comment to reply to (from list_comments). On content, status, course and course_lesson items
video_file_url or video_file_base64link or fileNoThe comment's Drop, only on content and status items: a ready-made video (MP4, WebM or MOV, up to 350 MB).

Returns: the new comment. With a video, also videoMediaId and video.processing_status.

Ask like this: "Reply to every unanswered question on yesterday's live post, thanking them and saying we'll cover it next time."

Accepts course and course_lesson, with reply_to to reply (one level). Enrolled students and the team write, finance included; a draft or archived course is refused (409).

update_comment

Changes

Edit a comment. Changes a comment's text. Minimum role: the author, or moderator, finance and up.

ParameterTypeRequiredDescription
typecontent, statusYes
postid or linkYesThe comment's post
comment_ididYesFrom list_comments
texttext, up to 2,000Yes, without a video
video_file_url or video_file_base64link or fileNoReplaces the comment's Drop (MP4, WebM or MOV, up to 350 MB) and deletes the previous one. Only the author sends a new video.

Also edits course and lesson comments (the author only). Courses have no Drop. To take the Drop off, remove_comment_video.

delete_comment

Asks to confirm

Delete a comment. With confirmation. Minimum role: the author, or moderator, finance and up. Same parameters, without text.

Also deletes course and lesson comments, and still asks for confirmation. The author and the team (owner, admin, moderator and finance) delete.

remove_comment_video

Asks to confirm

Remove a comment's video. Deletes for good the Drop of a comment on a post or short post; the comment keeps its text. Refused when the comment has no text, since it would be left empty (use delete_comment for that). On the first call it shows the comment; on the second, with the confirmation_token, it removes. Role: the author, or moderator, finance and up.

ParameterTypeRequiredDescription
typecontent, statusYes
postid or linkYesThe comment's post
comment_ididYesFrom list_comments

Ask like this: "Take the video off my comment on the welcome post, but keep the text."

add_reaction

Changes

React. Reacts to a feed item. Minimum role: any.

ParameterTypeRequiredDescription
typecontent, status, event, courseYes
item_ididYes
reaction👍 ❤️ 🔥 🙌 😊 👏 🎉Without removeOne of the seven reactions
removeyes or noNotrue takes your reaction back

Returns: the recorded reaction.

Ask like this: "React with 🎉 to the introductions from people who joined today." · "Take my reaction off the welcome post."

One reaction per person per item: reacting again with another emoji changes it.

Accepts course and course_lesson as the target, with the same seven reactions.

pin_post

Changes

Pin to the feed. Pins an item to the top of the feed, or unpins it. Minimum role: moderator or finance.

ParameterTypeRequiredDescription
typecontent, status, event, courseYes
item_ididYes
pinnedyes or noNoDefault: pin. With false, unpins

Returns: the item with its new state.

Ask like this: "Pin the community rules post."

Changes

Add an image to a gallery. Downloads an image from a link and puts it in a Gallery space. Minimum role: any role that can post in that space.

ParameterTypeRequiredDescription
space_ididYesA Gallery space (list_spaces with module: gallery)
image_urllinkYesA public (http/https) link to a JPEG, PNG, WebP or GIF image of up to 50 MB. See Images
titletext, up to 200NoThe image's title in the gallery

Returns: the image in the gallery, with its address and thumbnail.

The image is stored in a private area (1-hour link, see get_media_url), and can come by link (up to 50 MB) or by file (image_base64, up to 5 MB; image_type optional).

Ask like this: "Put this photo from the meetup in the Meetups gallery: https://…/photo.jpg"

Changes

Add several images to a gallery. Puts up to 20 images in a Gallery space in a single call, each by link or file, with the same delivery as add_gallery_image. Minimum role: any role that can post in that space; the space's rule of who can post and its approval apply to every image.

ParameterTypeRequiredDescription
space_ididYesA Gallery space (list_spaces with module: gallery)
imageslist, 1 to 20YesEach image with image_url (a link up to 50 MB) or image_base64 (image_type optional), plus its own optional title and description
titletext, up to 200NoThe title for images without their own
descriptiontext, up to 2,000NoThe description for images without their own
tagslist, up to 30NoTags for every image

Returns: how many were added (added) and how many failed (failed) and, in results, each image in the order sent: added, with image_id and moderation_status, or failed, with the reason.

Each base64 file goes up to 5 MB, and all of them together must fit in the call's 10 MB, so large images go by link. One bad image doesn't stop the others; ask again with only the ones that failed. If the gallery refuses the person asking (role, rule of who can post, space), the rest isn't sent. Nothing is deleted, so there's no confirmation; there's no bulk delete: delete_gallery_image deletes one at a time.

Ask like this: "Upload these photos to the Meetup 2026 gallery with the title APICON Rio: https://…/1.jpg, https://…/2.jpg, https://…/3.jpg"

Read-only

List gallery images. The images of a Gallery space, newest first, with title, author and reactions. Minimum role: any role that can see the space.

ParameterTypeRequiredDescription
spaceid, link, address or nameYesThe Gallery space
page, limitnumberNolimit up to 50

Returns: the images, with the id the other gallery tools ask for and, on each one:

FieldWhat it is
image_urlThe full-size image, which the assistant can open to look at
thumbnail_urlThe thumbnail, lighter, good for comparing photos
url_expires_atWhen both links stop working (about 1 hour later)
url_valid_secondsHow many seconds are left before they expire
size_bytes, mime_type, processing_statusSize, format and whether the image is ready

An image still processing comes with empty links and a note: just list again in a few seconds. Once the links expire, the assistant lists again or calls get_media_url with the mediaId. The links shouldn't be stored or passed on.

Ask like this: "Are there duplicate photos in the Meetup 2026 gallery? Show me and delete the copies." The assistant compares the thumbnails and deletes the copies with delete_gallery_image, which asks for confirmation. See the recipe Find the duplicate photos in the gallery.

Changes

Edit gallery image. Changes an image's title or description (and replaces the file with a new image, by link or file; the id, the title and the tags stay, and the old file is deleted). Role: whoever added the image, or moderator, finance and up.

ParameterTypeRequiredDescription
image_ididYesFrom list_gallery_images
titletext, up to 255No
descriptiontextNo

Changes

React to gallery image. With 👍 ❤️ 🔥 👏 😊 🙌 or 🎉. Reacting again changes it; remove: true takes it back. Minimum role: any.

ParameterTypeRequiredDescription
image_ididYesFrom list_gallery_images
reactionone of the seven emojisWithout remove
removeyes or noNotrue takes your reaction back

Asks to confirm

Delete gallery image. Role: whoever added the image, or moderator, finance and up.

ParameterTypeRequiredDescription
image_ididYesFrom list_gallery_images

Returns: on the first call, the image's title and author, and the confirmation code.

get_leaderboard

Read-only

View engagement. The top of the community's points engagement. Minimum role: any.

ParameterTypeRequiredDescription
periodall, 30d, 7dNoDefault: all
section_ididNoOnly the points earned in this section
limitnumber, up to 100NoHow many in the leaderboard (default 10)
courseid, slug or linkNoThat course's leaderboard instead of the community's

Returns: each row with the position, points, level and badges. People with the same points share the position (rank 1, 2, 2, 2, 5, with isTied), and the assistant says "tied for 2nd" instead of inventing an order; level (the number of the person's level in the community's ladder) with the name the community gave it in level_name (the default ones go from Newcomer to Legend), levelId and levelImageUrl; badges (the 8 most recent you may see; someone else's private badges never show) and badgeCount (the total, for the "+N"); and previousRank, the position in the previous period of the same length with 7d and 30d (null when the person didn't score in it: they are new, not down). Your own position in the period, even outside the top, comes from get_ranking_dashboard.

Ask like this: "Who are the top 10 in engagement?"

With course, returns that course's leaderboard (the top 10 by completed lessons and your position), if the course shows one.

get_my_points

Read-only

My engagement points. Your points and your position in the community's engagement. Minimum role: any.

Parameters: none.

Ask like this: "How many points do I have, and where do I stand?"

With points as currency on, it also returns balance: the balance and the statement (limit, before).

Points as currency

Points in the Store: the balance spent on products priced in points. Spending never lowers points, rank or level. Your own balance is in get_my_points; redeeming a product is redeem_product_with_points.

get_member_points

Read-only

A member's points balance. A member's balance and statement: whether the balance is on and redeeming works (usable), the currency name, the balance (it can be negative; negative buys nothing), points and level (spending lowers neither) and the entries, newest first: gain, spend (with the purchase and the product), refund, opening and an adjustment the team made on itself (it counts in points, never in the balance). Minimum role: admin.

ParameterTypeRequiredDescription
memberid or e-mailYes
limitnumber, up to 100NoEntries (default 50)
beforedateNoThe previous page's next_before

Ask like this: "What is Ana's points balance, and what did she spend it on?"

Notes: your own balance is in get_my_points.

get_points_settings

Read-only

Points as currency. Whether gamification and the balance are on, whether redeeming works, the currency name (empty = points), when and how the balance started (current: today's points became balance; zero: everyone started at 0), how much circulates (the sum of the positive balances) and, before the first start, a preview of what would circulate with each option. Minimum role: admin.

Parameters: none.

Ask like this: "How many points are circulating in the community?"

update_points_settings

Changes

Turn points on as currency. Turns the balance on or off (off by default, on every plan) and names the currency. The first time it is turned on, start chooses for good: turning it off and on again never reopens the choice, so that first start asks to confirm, with the preview; everything else runs at once. Off, nobody redeems and balances stay. Minimum role: admin.

ParameterTypeRequiredDescription
enabledtrue/falseNo
startcurrent or zeroNoFirst time only: current (default) turns today's points into balance; zero starts everyone at 0
currency_nametext, up to 30 charactersNoLike "coins"; empty or null goes back to points

Ask like this: "Turn on points as currency, called coins, starting from zero."

Notes: a product's points price is set in create_product and update_product.

get_ranking_rules

Read-only

View engagement rules. Whether engagement is on and how many points each action is worth. Minimum role: admin.

Parameters: none.

Ask like this: "How many points is a comment worth?"

update_ranking_rules

Changes

Change engagement rules. Turns engagement on or off and changes the points per action. Minimum role: admin.

ParameterTypeRequiredDescription
enabledyes or noNo
pointsaction → pointsNoThe actions come from get_ranking_rules, e.g. {"comment": 10}
daily_capsaction → numberNoThe daily points cap per action (1 to 10,000; null removes it), e.g. {"comment": 20}. Over it, the action happens with no points and does not count for badge rules

Ask like this: "Commenting is now worth 10 points."

See Engagement.

get_ranking_levels

Read-only

See the levels. The community's levels, from the first to the last. Minimum role: admin.

Parameters: none.

Returns: each level with level (the number), id, name (defaultName while it is the translated default name), minPoints, maxPoints, imageUrl and the requirements, the week's activity, each with actionType, minCount, spaceId, space_name and actionActive (false: the action is off in the points rules and is not counting). Also the limits (2 to 20 levels, names up to 40 characters, up to 5 requirements, 1 to 1,000 per week), the actions that count as a requirement, the time zone and the rule text, in the person's language. A community that never touched the levels has the 9 default ones, with no requirements.

Ask like this: "What are the community's levels and what does each one ask for?"

update_ranking_levels

Asks to confirm

Save the levels. Writes the whole ladder: send every level, in order. A level with id is kept (what it leaves out stays as it is), one without id is created, and a stored level left out of the list is removed (not possible if an access rule uses it). Beforehand, the summary shows the levels, the ones leaving and how many people move up and down; the level changes without firing any workflow or webhook. Minimum role: admin.

ParameterTypeRequiredDescription
levelslist, 2 to 20YesEach level: id (an existing level), name (up to 40 characters, no repeats), min_points (the first is 0, each one higher than the one before), image_url (null removes the image) and requirements
levels[].requirementslist, up to 5NoEach one: action (a gamification action, except the team's adjustment), min_count (1 to 1,000 times a week, Monday to Sunday in the community's time zone) and, optionally, space (id, link or exact name, only for actions that happen in a space). The first level has no requirements; [] removes them all

Ask like this: "The Kernel level now asks for 3 posts a week, on top of the 500 points."

Notes: a removed level that still opens a space or a section in Who gets in makes the save be refused, saving nothing, with code: level_in_use and the names; take the level off there with update_space_access or update_section and min_level: null and save again.

get_level_progress

Read-only

Weekly level progress. The same the profile shows: the points, the current level and the next one, and each requirement with thisWeek, lastWeek, minCount, missing_this_week and done_this_week. The week under way is the one that decides, on Monday, whether the person stays at the level; to move up, what counts is the points still missing (points_missing) and the next level's requirements this week. Minimum role: any.

ParameterTypeRequiredDescription
memberid, e-mail or linkNoWithout it (or with me), your own. Only the team (owner, admin, moderator and finance) sees someone else's; everyone else gets 403

A requirement tied to a space you cannot access comes without the space's name, with space_label "a space you cannot access"; the team sees the name.

Ask like this: "What do I still need this week to keep my level?"

list_moderation_queue

Read-only

Moderation queue. What is waiting for approval, or the moderation numbers. Minimum role: moderator or finance.

ParameterTypeRequiredDescription
typesummary, posts, courses, events, gallery, statusNoDefault: posts. summary returns the numbers

Ask like this: "Is anything waiting for approval?"

moderate_item

Changes

Approve or reject. Approves or rejects an item in the moderation queue. Minimum role: moderator or finance.

ParameterTypeRequiredDescription
typeposts, courses, events, gallery, statusYes
item_ididYesFrom list_moderation_queue
decisionapprove, rejectYesApprove or reject
reasontextNoRequired to reject

Ask like this: "Approve the posts in the queue that have no external link."

See Moderation.

react_to_comment

Changes

React to a comment. Reacts to a comment with 👍 ❤️ 🔥 🙌 😊 👏 or 🎉. Minimum role: anyone but finance.

ParameterTypeRequiredDescription
typecontent, statusYescontent for posts and articles, status for short posts
postid or linkYesThe comment's post
comment_ididYesFrom list_comments
reactionone of the 7 emojisWithout remove
removeyes or noNotrue takes your reaction back

Returns: the recorded reaction.

Ask like this: "React with 👏 to Ana's comment on the welcome post."

Notes: reacting again changes the reaction; to take it back, remove: true.

Also reacts to course and lesson comments.

get_feed_stats

Read-only

Community numbers. The numbers the home page shows. Minimum role: any.

Parameters: none.

Returns: the community's members, posts, events and courses, who was active today, and your own level, points, position, posts, comments and events attended.

Ask like this: "How many members do we have, and who was on today?"

get_feed_highlights

Read-only

Feed highlights. What the Feed's side column shows, only with what you can open. Minimum role: any.

ParameterTypeRequiredDescription
space_ididNoA Feed space: the widgets turned on in that Feed. Without it, the default ones

Returns: the widgets that have items: events (up to 5 upcoming events, with starts_at_local and ends_at_local in the event's own time zone, and isLive), trending (up to 5 trending posts from the last 7 days), newMembers (up to 6) and leaderboard (top 5 of the last 30 days, with gamification on), when on in the Feed. Suggests rsvp_event (the first event), list_comments (the first trending post), get_member (the first new member), get_ranking_dashboard and, for the team, update_space.

Ask like this: "What's trending in the community?" · "What are the upcoming events?"

get_space_highlights

Read-only

Tags and what's trending in a space. What the Content space's side column shows, only with the posts you can read. Minimum role: any, as long as you can open the space.

ParameterTypeRequiredDescription
space_ididYesA Content space (from list_spaces)

Returns: the blocks that have items: tags (up to 50, most used first, with tag, key and count, and the total of distinct tags) and trending (up to 5 posts: first the ones from the last 30 days by reactions and comments from other people, then the ones with the most reactions of all time and the most recent, with reactions, comments and the author; only missing when the space has no post you can read). {} when the module has no side column. A space from another community is not found; a space you can't open is refused with the reason. The suggested next step is list_posts with the space and the most used tag.

Ask like this: "What are the tags and what's trending in the Podcasts space?"

get_ranking_dashboard

Read-only

Engagement page. The whole Engagement page. Minimum role: any.

ParameterTypeRequiredDescription
periodall, 30d, 7dNoDefault: all
section_ididNoOnly the points earned in this section
limitnumber, up to 100NoHow many in the leaderboard (default 50)

Returns: the period's leaderboard, your position and progress to the next level, the community totals, how members spread over the levels, and the points each action is worth. It also brings the leaderboard with shared positions, level, badges and previousRank, as in get_leaderboard, and, in currentUser, periodRank and periodPoints (your position and points in the period, even outside the returned rows).

Ask like this: "Who scored the most in the last 30 days?"

list_my_points_history

Read-only

My points history. Your own points history in this community, newest first. Minimum role: any.

ParameterTypeRequiredDescription
limitnumber, up to 100NoDefault 20

Returns: each action (post, comment, event, login…), the points it earned and when.

Ask like this: "Why do my points look like this?"

recalculate_member_points

Changes

Recalculate points. Recalculates a member's engagement points from their recorded actions, when the total looks wrong. Minimum role: admin.

ParameterTypeRequiredDescription
memberid, e-mail or linkYes
section_ididNoOnly the points of this section

Returns: the profile and the recalculated score.

Ask like this: "Ana's points look wrong. Recalculate them."

Notes: afterwards, member_activity shows what the person did.

adjust_member_points

Changes

Adjust someone's points. Adds (positive points) or takes away (negative) engagement points of someone in the community, with the reason in the person's points log. The ranking and the profile change at once, and a recalculation keeps the adjustment. It is the same action as the workflows' Adjust points step. Runs without confirmation. Minimum role: admin.

ParameterTypeRequiredDescription
memberid, e-mail or linkYes
pointsinteger, from -100,000 to 100,000, not zeroYesNegative takes away
reasontext, up to 200 charactersYesShown in the person's points log

Returns: the adjusted points and the new total; with engagement off, nothing changes (skipped).

Ask like this: "Give Ana 50 points for yesterday's talk."

Badges

The seals of the badge catalog. A badge is named by its id or exact name; a person, by id, e-mail or an app link. Whoever gets a badge is notified in the bell and by e-mail (Achievements category); taking it back sends no notice. Nobody holds the same badge twice. The ready-made recipe Give a badge (award_badges) does the whole path, with the dry run first.

list_badges

Read-only

List badges. The catalog, with image, description, public or private and how many people hold each one. Minimum role: admin.

get_badge

Read-only

See a badge. The badge and who holds it, newest first (holders_limit). Minimum role: admin.

create_badge

Changes

Create a badge. name (up to 60, unique in the community), description (up to 300, optional), visibility (public by default, or private: only the holder, the owner and the admins see it) and the image, required, by image_url or image_base64 (stored as a PNG of up to 512 × 512 px). Nobody gets it yet: give it with award_badge, or let a course (completion_badge on update_course), an event (check_in_badge on update_event) or a workflow (the badge.award action) give it. Minimum role: admin. rule: awards on its own: trigger (an action from get_ranking_rules or a moment: course.completed, event.checked_in, quiz.passed, form.submitted, survey.answered, proposal.accepted, recognition.received, upvote.topic_done, attendance.checked_in), min_count (1 to 1,000), space (optional), window (always, last7, last30, month) and min_member_days (optional). The past does not count. See Award automatically.

Ask like this: "Create the Handshake badge, public, with this image, for those who finish the welcome course."

update_badge

Changes

Edit a badge. Changes name, description (null clears it), visibility and the image; it applies at once for those who already hold it. Minimum role: admin. Also rule, as in create_badge: an object replaces the rule, null removes it, absent keeps it.

delete_badge

Asks to confirm

Remove a badge. The summary says how many people hold it; after your yes, it leaves the profiles and the ranking, the course or event that gave it stops giving it, and the grants stay in the history. Minimum role: admin. When the badge opens spaces or sections in Who gets in, the summary warns how many stop opening: whoever got in only through it loses access at once.

award_badge

Changes

Give a badge. badge (id or name), members (1 to 100), reason (optional; only the team sees it) and dry_run (only shows who would get the badge and the Achievements e-mail, and who already holds it). It doesn't ask for confirmation, like the other e-mail sends: show the dry run to the person first. Returns how many got it, who already held it and who wasn't found. Minimum role: admin.

Ask like this: "Give the Speaker badge to Ana and Bruno. Show me first who gets the e-mail."

revoke_badge

Asks to confirm

Take a badge back. Takes the badge from one person (badge, member): it leaves the profile and the ranking, the grant stays in the history and the person isn't notified. Someone who doesn't hold it comes back with changed: false. Minimum role: admin.

list_member_badges

Read-only

A member's badges. Someone's badges (member, or "me"), with the origin and the date. Private ones only show for the person, the owner and the admins; the reason, only for the owner and the admins. Minimum role: any.

Ask like this: "Which badges does Ana have?"

set_video_poster

Chooses the cover of a hosted video (media_id: the videoMediaId of a post, short post or comment, or an event's recordingMediaId) from an image by link or file (JPEG, PNG or WebP; not GIF). It replaces the cover chosen before (that image is deleted). Works before or after the video is in a post. Only whoever uploaded the video and, once it is in a post or comment, only if they are its author (the team for an event recording); anyone else gets 403. Returns the signed video, with thumbnailUrl, posterUrl and posterMediaId. See Drops › The cover.

remove_video_poster

Removes the cover chosen for a hosted video: the image is deleted for good and the automatic cover (a frame of the video) comes back; the video stays. Asks to confirm: the first call shows the video; the second, with confirmation_token, removes the cover. Who: whoever uploaded the video (and its author once it is in a post).

set_video_cover_frame

Picks the cover of a hosted video from the video's own frames. Every uploaded video gets, shortly after, up to 6 frames across it; get_media_url lists them in coverCandidates, and candidate is the index the person picked. A cover chosen earlier from an image (set_video_poster) is deleted. Returns 409 while the frames aren't ready. Who can: the same as set_video_poster. Minimum role: any.

create_drop_description

Writes the text of a post (kind: content, 2 to 4 sentences), a short post (kind: status, first person, up to 280 characters) or a comment (kind: comment, short, first person) from what the person said in the Drop, in the language spoken, without inventing facts. Nothing is published: show the text to the person, then publish it with the same video (video_media_id) in create_post, create_short_post or create_comment. The video is one already uploaded (media_id) or a file the person records and hands over now (video_file_url or video_file_base64, MP4, WebM or MOV, up to 350 MB; for a comment, with post and post_type). Only whoever recorded the Drop asks (403). kind: comment needs the community's drops_in_comments setting on (see update_community_settings). Up to 10 minutes of speech. Asynchronous: it waits up to wait_seconds; while pending, use get_drop_description. Calling again with the same media_id writes a new version (up to 5 per Drop); per-person limits apply (429). See Drops › Text written by AI. With kind: lesson, it writes a lesson's text from its Drop (lesson_id); the text comes back for the person to review and goes into the lesson with update_lesson.

get_drop_description

The state of a create_drop_description request (job_id): pending, done (with the text) or failed (with the error: tooLong, noSpeech…). Only whoever asked sees it (404 otherwise); the text stays available for 24 hours.

Also: create_short_post, create_post and create_comment take video_media_id, to publish with a video already uploaded (the one from create_drop_description). On a comment, with drops_in_comments off, the Drop is refused before the upload.

Polls

A question to the community, in a Feed or Content space, with 2 to 10 options. See Polls. The tools live on this page, under Content and engagement.

ToolWhat it doesMinimum roleType
create_pollPublishes a poll in a Feed (the question is the text) or in a Content space (the question is the title)Moderator (not finance)Changes
get_pollThe results: votes and percentage per option, how many voted, the deadline and what you choseAnyRead-only
vote_pollVotes in your name, by option id or text; voting again replaces the voteAnyChanges
retract_poll_voteRemoves your vote while the poll is openAnyChanges
update_pollChanges the options, multiple choice and the deadlineModerator (not finance)Asks to confirm when the options change
close_pollCloses the poll now, with no way backModerator (not finance)Asks to confirm
list_poll_votesWho voted for what, with a filter by optionModerator (not finance)Read-only

Create. Only in a Feed or Content space; in any other, the tool refuses. create_poll takes space (id, link, slug or name), question (in the Feed, up to 500 characters; in Content, the title), options (2 to 10, up to 100 characters each, no repeats), allow_multiple (default: one option only), visibility (Feed only: public, the default, members or plan; in Content the poll is always public; a plan post, for Subscribers, only shows to people with an active subscription and to the team), closes_at (ISO 8601 in the future; without it, the poll stays open until close_poll) and, in Content only, details (text under the question, in Markdown). It does not ask for confirmation. The post goes out with the new-post notification and, like any post, can be pinned with pin_post.

Finding the poll. The tools accept in poll the poll's id (the poll.id returned by list_posts and create_poll) or the id or link of the post that carries it.

Hidden results. For someone outside the team who hasn't voted yet, get_poll returns resultsVisible: false and empty numbers (hidden, not zero) until the poll closes. The team (owner, admin and moderator) always sees them.

Voting. vote_poll and retract_poll_vote act in the name of whoever connected the assistant, without confirmation, because a vote can be changed and removed. In a single-choice poll, one option only. Once closed, both are refused.

Editing. update_poll takes the full list of options, in the new order: { id, text } keeps an option (fixing its text), { text } adds one and an id left out is removed. After the first vote, the options no longer change (neither text nor order: the API returns 409), and allow_multiple is locked. closes_at: null removes the deadline. The question is the post's text: change it with update_post.

Closing. close_poll always asks for confirmation and has no way back: nobody votes any more, and everyone sees the final results.

Ask like this: "Create a poll in the Feed asking which month is best for APICON Rio, with March, April and May." · "How is the APICON poll going? Who voted for April?"

Recipe. In Claude, Ask the community (poll) (ask_community_poll) asks for the question, the options, the space (default: the main Feed) and the deadline, creates the poll and follows the results. It shows for the owner, the admin and the moderator.

Classifieds

The ads that members post in a Classifieds space, the interest of the people who respond and moderation. The tools live on this page, under Content and engagement.

ToolWhat it doesMinimum roleType
get_classifieds_space_settingsAllowed terms, whether the value shows, whether approval is required and the categories (with the ad count) of a spaceAnyRead-only
update_classifieds_space_settingsChanges terms, value, approval and the complete category listAdminChanges
list_classified_adsLists the space's ads (category and text filters) or your own, in any status, with mineAnyRead-only
get_classified_adOne ad, with images, author and what you can do on itAnyRead-only
create_classified_adPosts an ad, with imagesWhoever can post in the spaceChanges
update_classified_adEdits your ad and adds or removes imagesAuthorChanges
delete_classified_adDeletes an ad, with its images and interested peopleAuthor, or team (owner, admin, moderator, finance)Asks to confirm
express_classified_interestSends your interest, with a messageAny (not the author)Changes
list_classified_interestsWho is interested, with name, message and the account's email and phoneAuthor, or teamRead-only
update_classified_interest_statusMarks an interest as seen or answeredAuthor, or teamChanges
list_my_classified_interestsThe interests you sentAnyRead-only
withdraw_classified_interestWithdraws your interest in an adWhoever sent itAsks to confirm

Images. create_classified_ad accepts up to 6 images, each by link or in base64; update_classified_ad accepts add_images and remove_image_ids. All are checked before anything changes: an invalid image stops the tool with nothing created.

An ad's new images are stored in a private area, with a thumbnail (image by link up to 50 MB, by file up to 5 MB). list_classified_ads and get_classified_ad return, on each image, image_url and thumbnail_url for the assistant to look at, with url_expires_at and url_valid_seconds saying when the link expires (about 1 hour); after that, just ask for the ad again or use get_media_url. remove_image_ids deletes the file.

Contact. Before sending an interest, the assistant tells the person that the ad's author and the team (owner, admin, moderator and finance) will see the name, message, and the account's email and phone, and that the platform does not intermediate the deal. It only sends after a yes. The author gets an email without the contact.

Moderation. With approval on, list_moderation_queue and moderate_item accept the classifieds type (and downloads: approving a Downloads item publishes it at once), also for finance, which moderates only this type. Rejecting asks for a reason, and the author gets the decision by email. create_space accepts the classifieds module.

Ask like this: "Show me who is interested in my bicycle ad and mark the ones I already answered."

Channel

The group conversation in a Channel space. They all show up for every role, and Memberfy decides on the spot: the assistant only reads channels the person would open in the app, and only writes and replies where the space's Who can post allows. Message text is written by members and reaches the assistant marked as data, never as instructions.

ToolWhat it doesMinimum roleType
get_channel_unreadThe unread state of each channel you open: messages, mentions and followed threads with new repliesAnyRead-only
list_channel_messagesThe channel (whether you can post, react and moderate) and a page of up to 50 messages, with replies, reactions and mediaAnyRead-only
get_channel_threadA thread: the message and up to 50 repliesAnyRead-only
list_channel_mentionable_membersWho can be mentioned in the channel (from 3 letters), with the <@id> token to put in the textAnyRead-only
post_channel_messageSends a message to the channel; first shows the channel, how many people see it and the textWhoever can post in the spaceAsks to confirm
reply_channel_threadReplies in a thread; first shows the channel, the message being answered and the textWhoever can post in the spaceAsks to confirm
update_channel_messageEdits the text of your message or reply (it shows "(edited)")AuthorChanges
delete_channel_messageDeletes a message or reply ("message deleted" stays; the thread goes on)Author, or owner, admin and moderatorAsks to confirm
set_channel_reactionAdds or takes back your emoji reaction, even without permission to postAnyChanges
follow_channel_threadFollows a threadAnyChanges
unfollow_channel_threadUnfollows a threadAnyChanges
mark_channel_readMarks the channel as read, up to now or up to a messageAnyChanges
mark_channel_thread_readMarks a thread as readAnyChanges
mute_channelMutes a channel just for you: its mentions and replies stop generating notices and e-mails (unread messages keep counting)AnyChanges
unmute_channelStarts receiving the notices of a channel's mentions and replies againAnyChanges

Mentions. To mention someone, the assistant looks the person up with list_channel_mentionable_members and writes the <@id> token in the text; the name never comes from the assistant. Limits: the same as the app (4,000 characters, 30 messages a minute, the same text 3 times an hour); past them, the answer is 429. create_space accepts module: "channel", and update_space_access changes who posts (can_create).

Ask like this: "Create a staff-only announcements channel", "What's new in the channels? Any mentions for me?", "Reply in Ana's thread that the meetup is still at 7 pm." See recipe 90.

Upvote

The topic board in an Upvote space. The reading, voting and commenting tools show up for everyone; the managing ones, for the staff (owner, admin and moderator; not finance). Titles, descriptions and comments reach the assistant marked as data written by members.

ToolWhat it doesMinimum roleType
get_upvote_boardThe board: whether you can propose and manage, prior approval and the limitsAnyRead-only
update_upvote_boardTurns the board's prior approval on or offAdminChanges
list_upvote_topicsThe topics, by most voted, newest or trending, with a state filter, yours and the ones you voted forAnyRead-only
get_upvote_topicA topic, with state, note, votes and commentsAnyRead-only
find_similar_upvote_topicsUp to 5 topics similar to a title, before creatingAnyRead-only
create_upvote_topicProposes a topic; first shows the board and the textWhoever can post in the spaceAsks to confirm
update_upvote_topicEdits the title or descriptionAuthor (until someone else votes), or moderatorChanges
delete_upvote_topicDeletes a topic with its photosAuthor (until someone else votes), or moderatorAsks to confirm
vote_upvote_topicVotes on the topic, on your behalfAnyChanges
unvote_upvote_topicTakes your vote backAnyChanges
create_upvote_commentComments or replies to a commentAnyChanges
delete_upvote_commentDeletes a comment and its repliesAuthor, or moderatorAsks to confirm
list_upvote_votersWho voted, with the date they joined the communityModerator (not finance)Read-only
set_upvote_topic_statusChanges the state (archiving included, with a reason); shows how many people will be notifiedModerator (not finance)Asks to confirm
reopen_upvote_topicReopens a Done or Archived topicModerator (not finance)Asks to confirm
merge_upvote_topicsMerges a repeated topic into the original, taking the votes along; can't be undone: the repeated one never reopensModerator (not finance)Asks to confirm

create_space accepts module: "upvotes". The limits are the app's (5 topics a day, 120 votes an hour), with 429.

Ask like this: "Check for a similar topic before creating one", "What are the 5 most voted topics that are still open?", "Move 'Dark mode in the app' to Planned with the note 'coming in March'." See recipe 91.