Tools · Members
MCP tools for members: listing and searching members, inviting one person or a class, importing a spreadsheet, custom fields, changing roles, removing someone, organizing groups and tags, and building the org chart; surveys, forms, recognition, feedback, development plans, time tracking and messages.
Who is in the community and how it is organized: listing and searching members, inviting one person or a whole class, importing a spreadsheet, creating custom fields and filling in the values, changing roles, removing someone, creating groups, tagging people and saying who reports to whom in the org chart; plus the Surveys, Forms, Recognition, Feedback, Development Plan, Time Tracking and Messages tools.
Inviting and changing a role happen on the first call, as in the dashboard; since the invite sends a real e-mail, the assistant shows beforehand who will receive it. These ask for your confirmation in two steps: removing a member, deleting a group, a tag or a field, starting an import (which sends e-mails in bulk) and an imported person's decline. See Money and confirmation.
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
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_members | Members with role and join date; search across all fields, extra columns and a filter for who was active or joined in a period | Moderator or finance | Read-only |
invite_member | Invites one person, with role, groups and tags | Admin | Changes |
invite_members | Invites up to 100 people at once, with the result line by line | Admin | Changes |
update_member_role | Changes a member's role | Admin | Changes |
remove_member | Removes a person from the community | Admin | Asks to confirm |
list_signup_requests | The join requests in the queue | Admin | Read-only |
approve_signup_request | Approves up to 100 join requests at once | Admin | Changes |
reject_signup_request | Rejects join requests, with a reason | Admin | Asks to confirm |
list_groups | Groups, with color, leader, parent group and how many people | Moderator or finance | Read-only |
create_group | Creates a member group | Moderator or finance | Changes |
update_group | Renames or changes a group | Moderator or finance | Changes |
delete_group | Deletes a group; the people stay in the community | Moderator or finance | Asks to confirm |
update_group_members | Adds or removes people from a group | Admin | Changes |
list_tags | Tags in use, with color and how many people | Moderator or finance | Read-only |
update_member_tags | Tags or untags one or more people | Moderator or finance | Changes |
update_tag | Renames a tag or changes its color | Moderator or finance | Changes |
delete_tag | Removes a tag from everyone | Moderator or finance | Asks to confirm |
get_org_chart | Who reports to whom, with the groups | Moderator or finance | Read-only |
set_manager | Sets who a person reports to | Admin | Changes |
get_my_team | Whether you lead anyone, who reports to you and whether there are indirect reports | Any | Read-only |
list_activity_logs | Who did what: team, assistant, members and API keys | Admin | Read-only |
list_logs | The community's Logs: team, platform, assistant, members, e-mails, imports, financial, moderation and API keys | Admin or finance (finance: financial only) | Read-only |
get_member | A member's profile | Any | Read-only |
update_member | Edits another member | Admin | Changes |
update_me | Edits yourself, in this community | Any | Changes |
update_my_profile | Edits your member page: cover, company, country, languages, links, experience and privacy | Any | Changes |
list_member_page_activity | The Activity tab of a member's page | Any | Read-only |
update_avatar | Sets or removes a profile picture, by link or file | Any | Changes |
list_member_fields | The community's custom fields | Moderator or finance | Read-only |
create_member_field | Creates a custom field | Admin | Changes |
update_member_field | Changes a field's name, type, options or required flag | Admin | Changes |
reorder_member_fields | Puts the fields in a new order | Admin | Changes |
delete_member_field | Deletes a field (the values are kept) | Admin | Asks to confirm |
update_member_field_values | Fills in a person's field values | Any (your own); moderator for other people's | Changes |
analyze_member_import | Reads a spreadsheet and suggests where each column goes | Admin | Changes |
preview_member_import | The import summary with the mapping, saving nothing | Admin | Read-only |
start_member_import | Imports and sends the invitations | Admin | Asks to confirm |
get_member_import | An import's progress and report | Admin | Read-only |
list_member_imports | The import history | Admin | Read-only |
get_member_import_file | The original file or the CSV of skipped rows | Admin | Read-only |
withdraw_from_community | An imported person declines the invite and leaves | Any (only the person themself) | Asks to confirm |
list_survey_templates | The survey templates (NPS, satisfaction, event, course, eNPS, blank), with sections and questions | Admin | Read-only |
list_surveys | The surveys (or only those of a space_id), with the space, status, mode, recipients, responses and the public link | Admin | Read-only |
get_survey | One survey, with the space, sections, questions and public link | Admin | Read-only |
create_survey | Creates a draft survey in a Surveys space (space_id), from a template and/or with your own sections and questions | Admin | Changes |
update_survey | Edits the whole draft or scheduled survey (and moves it to another Surveys space), with the period (starts_at, closes_at) and the response type (response_mode); once open, only title, introduction, end and public link | Admin | Changes |
preview_survey_audience | How many people have access to the space today (by space_id or by the survey), with up to 10 names | Admin | Read-only |
open_survey | Opens the survey (or schedules it, with a future starts_at): freezes who has access to the space, sends each of them an e-mail invitation and returns the recipients and the public address | Admin | Asks to confirm |
close_survey | Closes the survey now, for good | Admin | Asks to confirm |
delete_survey | Deletes the survey; the link stops working | Admin | Asks to confirm |
get_survey_results | The aggregated results, with one filter (group, tag, company or origin; anonymous: origin only) and, on identified required or immediate surveys, who still has to answer | Admin | Read-only |
list_survey_responses | Who answered what and when (identified surveys only) | Admin | Read-only |
export_survey_csv | The responses as CSV, the same file as the app | Admin | Read-only |
get_my_email_preferences | Your e-mail preference in this community: each category, on or off, and the shortcut | Any | Read-only |
update_my_email_preferences | Changes your preference: a shortcut (receive everything, block announcements, block all) or categories | Any | Changes |
get_my_notice_preferences | Your notices in this community, per channel (e-mail, SMS and WhatsApp): the masked phone and whether it is verified, the consents, the channel and the categories | Any | Read-only |
update_my_notice_preferences | Turns SMS and WhatsApp on or off, and the categories of each | Any | Changes |
list_my_contact_consents | Your SMS and WhatsApp consents: channel, purpose, origin and date | Any | Read-only |
request_phone_verification | Sends the 6-digit code by SMS to your phone | Any | Changes |
confirm_phone_verification | Verifies your phone with the code | Any | Changes |
list_member_contact_consents | A member's SMS and WhatsApp consents, never the IP | Admin | Read-only |
attest_contact_consent | Records the SMS or WhatsApp consent the community declares it collected, for up to 200 members | Admin | Asks to confirm |
list_my_pending_surveys | The open surveys waiting for your answer, with the response type and the link to answer in the app | Any | Read-only |
list_forms | The forms (or only those of a space_id): whoever manages them sees all of them, in any status, with public_url and the submissions by status | Any | Read-only |
get_form | A form as whoever manages it sees it: settings, status, public_url, responsibles, steps and fields | Any | Read-only |
get_forms_space_settings | The space's mode (single, one form; multi, a list) and whether you can create in it | Any | Read-only |
update_forms_space_settings | Switches the space's mode | Admin | Changes |
create_form | Creates a draft form in a Forms space, with steps and fields of the 13 types | Any | Changes |
update_form | Edits the form in any status | Any | Changes |
publish_form | Publishes the draft | Any | Changes |
close_form | Closes it now: the link shows "form closed" | Any | Changes |
reopen_form | Reopens a closed form (deadline passed or cap reached: change them first with update_form) | Any | Changes |
delete_form | Deletes the form | Any | Asks to confirm |
list_form_submissions | The submissions, newest first: status, origin, name, e-mail, phone, member and the save-as-member result | Any | Read-only |
get_form_submission | One submission, with all the answers (a copy of what was submitted) and the proof of consent | Any | Read-only |
update_form_submission_status | Changes the status: new, in_contact or done, in any order | Any | Changes |
delete_form_submission | Deletes a submission: it leaves the list and the CSV (the submission cap doesn't reopen) | Any | Asks to confirm |
export_form_submissions_csv | The submissions as CSV, the same file as the app, with the same filters | Any | Read-only |
get_form_to_fill | A published form as whoever fills it in sees it, with the values that come from the profile (prefill) | Any | Read-only |
submit_form | Submits the form on your behalf, linked to your profile | Any | Changes |
list_recognitions | The Recognition wall, with a filter by person ("me", name, e-mail or id) and by value (value) | Any | Read-only |
get_recognition | One recognition, with reactions and comments | Any | Read-only |
search_recognition_recipients | Who can be recognized (has access to the space), by name | Any | Read-only |
create_recognition | Recognizes 1 to 20 people, with a message and an optional value; dry_run shows first who gets the e-mail | Any | Changes |
react_to_recognition | Reacts with an emoji, or removes the reaction | Any | Changes |
create_recognition_comment | Comments on or replies in a recognition | Any | Changes |
list_company_values | The community values, active and deactivated | Any | Read-only |
delete_recognition | Deletes a recognition; the points it gave are taken back | Author or team | Asks to confirm |
delete_recognition_comment | Deletes a comment on a recognition | Author or team | Asks to confirm |
create_company_value | Adds a community value | Admin | Changes |
update_company_value | Changes a value's name or description, or deactivates it (active: false) | Admin | Changes |
reorder_company_values | Puts the values in an order | Admin | Changes |
get_recognition_dashboard | Recognitions made, people who recognized and people recognized, in a period, with the by-value block | Admin | Read-only |
get_recognition_card | The recognition's card as a PNG image, to share | Any (author, people recognized and team) | Read-only |
list_recognition_types | The recognition types, with label, phrase, art and whether each is on | Any | Read-only |
update_recognition_type | Turns a recognition type on or off; turning off asks for confirmation | Admin | Changes |
upload_recognition_type_art | Uploads a type's own art (URL or image); replacing own art that already exists asks for confirmation | Admin | Changes |
remove_recognition_type_art | Puts the type back on the default art, the same in every community | Admin | Asks to confirm |
list_feedbacks | Your feedback received or sent (box) | Any | Read-only |
get_feedback | One of your feedbacks, with the text | Any (only your own) | Read-only |
search_feedback_people | Who can give or receive feedback (has access to the space), by name | Any | Read-only |
create_feedback | Gives feedback to a colleague (text in Markdown); dry_run shows first who gets the notice | Any | Changes |
thank_feedback | Thanks the author for a feedback received | Any (the recipient) | Changes |
list_feedback_requests | The requests asked of you or by you, with a status filter | Any | Read-only |
get_feedback_request | One of your requests | Any (only your own) | Read-only |
create_feedback_request | Asks a colleague for feedback, with an optional message; dry_run shows first who gets the notice | Any | Changes |
answer_feedback_request | Answers a request with a feedback | Any (the person asked) | Changes |
decline_feedback_request | Declines a request, with no e-mail | Any (the person asked) | Changes |
delete_feedback | Deletes your feedback; it is gone for both | Any (the author) | Asks to confirm |
cancel_feedback_request | Cancels your pending request | Any (the requester) | Asks to confirm |
get_feedback_dashboard | The space's numbers, by period and group, with the by-theme block, with no text at all; as CSV with format: csv | Admin | Read-only |
list_feedback_themes | The community's themes and behaviors (include_inactive lets the team see the deactivated ones) | Any | Read-only |
create_feedback_theme | Creates a theme, with an optional description | Admin | Changes |
update_feedback_theme | Renames, describes, deactivates or reactivates a theme | Admin | Changes |
reorder_feedback_themes | Changes the order of the themes | Admin | Changes |
create_feedback_behavior | Adds a behavior to a theme | Admin | Changes |
update_feedback_behavior | Renames, deactivates or reactivates a behavior | Admin | Changes |
reorder_feedback_behaviors | Changes the order of a theme's behaviors | Admin | Changes |
list_development_plans | The development plans you can see (scope: mine, team, to_approve, all), filtered by person and status | Any | Read-only |
get_development_plan | One plan, with its actions, delays and what you can do with it | Any (whoever sees the plan) | Read-only |
list_development_plan_team | Your team: direct and indirect reports, with each one's status, progress and delays | Any (whoever leads) | Read-only |
get_development_plan_dashboard | The dashboard per direct leader | Any (the management team: the space; a leader: their team) | Read-only |
create_development_plan | Creates your plan, or a direct report's by name; dry_run shows who gets the e-mail | Any | Changes |
update_development_plan | Changes title, period or actions; the person's change to an approved plan sends it back to approval | Any (the person and whoever approves) | Changes |
delete_development_plan | Deletes a draft plan | Any (the person and whoever approves) | Asks to confirm |
submit_development_plan | Sends your plan for approval | Any (the person) | Changes |
approve_development_plan | Approves a waiting plan | Any (the direct leader, the owner or the admin) | Changes |
return_development_plan | Returns a plan with a required note | Any (the direct leader, the owner or the admin) | Changes |
complete_development_plan | Completes an approved plan | Any (the person and whoever approves) | Changes |
create_development_plan_action | Adds an action, with a due date (due_on); course_id links a course | Any (the person and whoever approves) | Changes |
update_development_plan_action | Changes an action or only its progress (status: TODO, IN_PROGRESS, DONE); course_id links a course | Any (the person and whoever approves) | Changes |
delete_development_plan_action | Removes an action from the plan | Any (the person and whoever approves) | Asks to confirm |
get_current_development_cycle | The PDI cycle open for you, with the deadlines and where you stand | Any | Read-only |
list_development_cycles | The space's PDI cycles, open and closed | Admin or finance | Read-only |
get_development_cycle | One PDI cycle | Admin or finance | Read-only |
create_development_cycle | Opens the PDI cycle: name, deadlines, audience and reminders; dry_run shows it first | Admin | Changes |
update_development_cycle | Changes the cycle's name, deadlines, audience or reminders | Admin | Changes |
close_development_cycle | Closes the cycle and stops the reminders; it doesn't reopen | Admin | Asks to confirm |
get_development_cycle_adhesion | Who sent, got approved or is late in the cycle, per leader | Any (the team: the audience; a leader: their team) | Read-only |
get_my_chat_preferences | Your chat preferences: your status (Available, Busy or Unavailable), show when I've read, whether you can start conversations and your unread messages | Any | Read-only |
update_my_chat_preferences | Changes your chat status (Available, Busy or Unavailable) and turns Read receipts on or off | Any | Changes |
list_chat_online_members | Who is available and online now, with each person's status (Available, Away or Busy; only for someone who is available too) | Any | Read-only |
list_chat_conversations | Your conversations, with the last message and the unread count | Any | Read-only |
get_chat_conversation | One of your conversations, with its messages, newest first | Any (only the two people) | Read-only |
send_chat_message | Sends a message in a conversation or to a person, opening the conversation if there is none | Any | Asks to confirm |
mark_chat_conversation_read | Marks one of your conversations as read | Any (only the two people) | Changes |
delete_chat_message | Deletes one of your messages: it becomes "message deleted" for both | Any (only the author) | Asks to confirm |
clear_chat_history | Clears a conversation's history for you only: the messages so far disappear for you, the other person still sees everything; nothing is deleted | Any (only the two people) | Asks to confirm |
list_chat_blocks | The people you blocked | Any | Read-only |
block_chat_member | Blocks a person in the chat; nobody is told | Any | Changes |
unblock_chat_member | Undoes your block; the conversation stays saved | Any | Changes |
get_chat_settings | Whether the chat is on in the community and who can start conversations | Admin | Read-only |
update_chat_settings | Turns the chat on or off, chooses who can start and whether people must add each other first | Admin | Changes |
list_chat_members | The People panel: who is available to chat, online first, with search by name (only for someone who is available too) | Any | Read-only |
list_chat_connections | Your accepted connections in this community | Any | Read-only |
list_chat_connection_requests | Pending connection requests, received (incoming) or sent (outgoing) | Any | Read-only |
request_chat_connection | Asks a person to connect; if they had already asked, the connection is accepted at once | Any | Changes |
accept_chat_connection | Accepts a connection request you received | Any | Changes |
decline_chat_connection | Declines a request you received, without telling the person who asked | Any | Changes |
remove_chat_connection | Cancels your request or ends a connection | Any | Asks to confirm |
send_member_notice | Sends a bell notice to up to 100 people, with title and text (no e-mail) | Moderator | Changes |
list_notifications | Your notifications in this community (the bell), with unread and type filters | Any | Read-only |
get_notification | One of your notifications | Any | Read-only |
mark_notifications_read | Marks one notification, or all, as read | Any | Changes |
delete_notification | Removes a notification from your list; what it announced stays | Any | Asks to confirm |
get_welcome_settings | The welcome, the missions and each one's numbers | Admin | Read-only |
update_welcome_settings | Changes the screens, the mode and the missions, with confirmation | Admin | Asks to confirm |
get_my_referral | Your referral link and how many joined through it | Any | Read-only |
get_referral_report | Who brought whom, with the totals | Moderator (not finance) | Read-only |
get_referral_settings | Whether referrals are on | Admin | Read-only |
update_referral_settings | Turns referrals on or off | Admin | Changes |
get_my_data_export | Your data export: the status, how long it lasts and when you can ask for another | Any | Read-only |
export_my_data | Asks for a ZIP with your data; the link arrives by e-mail only | Any | Asks to confirm |
export_member_data | Asks for a member's data export, at their request; the link goes to their e-mail | Admin | Asks to confirm |
get_my_account_deletion | Your account deletion request and the effective date | Any | Read-only |
delete_my_account | Requests the deletion of your account in this community, with the password; disconnects the assistant | Any (not the owner) | Asks to confirm |
cancel_my_account_deletion | Cancels the deletion of your account | Any | Asks to confirm |
erase_member_data | Erases a member's data, at their request, with no period to change your mind | Admin | Asks to confirm |
list_members
Read-only
List members. The members, with role, job title, tagline, tags, join date and last access. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
search | text | No | Searches the name, email, job title, tagline, tags, group names, text and list custom fields (the value or the option name) and, with 4 digits or more, the phone. Case and accents don't matter |
role | owner, admin, moderator, member, finance | No | Only one role |
sort_by | joinedAt, lastSeenAt, displayName, role, fullName, jobTitle | No | joinedAt for "who joined", lastSeenAt for "who showed up", jobTitle to sort by job title |
sort_by_custom_field | field key | No | Sorts by a custom field (the key comes from list_member_fields) instead of sort_by. People who left the field empty come last |
order | asc, desc | No | Ascending or descending |
include | list: phone, groups, plan, custom_fields | No | Extra columns: the phone, the groups (with color and which one is the main one), the plan (the current subscription that isn't an add-on; only for owner, admin and finance, never for the moderator) and all custom fields |
custom_field_keys | list of keys, up to 50 | No | Only these custom fields |
field_filter | { key: [options] } | No | Filters by choice and multiple-choice fields: on a multiple choice, who ticked any of the options; on a choice, who picked one of them. Different fields add up. Option by value or name |
active_from, active_to | date YYYY-MM-DD | No | Only who was active in the period (posted, commented, reacted and the other actions the Dashboard's Active members card counts). From today − 6 days to today, the total is the card's number |
joined_from, joined_to | date YYYY-MM-DD | No | Only who joined in the period. Whoever joined and already left is not listed |
page, limit | number | No | Pagination |
The periods are whole days in the community time zone, both ends included; one side alone leaves the other open, and they add up with the other filters. An invalid date or a start after the end comes back as a message to show the person.
Returns: the profiles (display name, name, role, job title, join date, avatar), the columns requested in include and the pagination. Custom fields come in custom_fields, each with the field name, the type, the value and, for a list, the name of the chosen option. On a multiple choice, the list of ticked options (value_labels), with min_selections and max_selections.
Ask like this: "Who was active in the last 7 days?" · "Who joined this month?" · "Who are the moderators?" · "List the members with phone, groups and plan, sorted by job title." · "Who works at Acme?"
welcome (pending, completed, skipped) filters by the welcome; with groups, groups[].expiresAt shows each one's validity.
invite_member
Changes
Invite one person. Invites a person to the community, with a name, role, groups and tags. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
email | Yes | The person's e-mail | |
name | text, 2 to 100 | No | The person's name: the new account is created with it and the invitation email goes out with it. Without it, the account starts with the part of the e-mail before the @ |
role | member, moderator, admin, finance | No | Default: member. Nobody joins as owner through an invite |
groups | list of names or ids, up to 20 | No | The groups the person joins (from list_groups) |
tags | list of texts, up to 20 | No | The person's tags |
Returns: the e-mail's result: invited, updated (already a member and got the groups and tags) or skipped, with the reason (invalid_email, duplicate, already_member, opted_out) and the message in your language.
Ask like this: "Invite [email protected] as a moderator, in the March class group."
Notes: the invite sends a real e-mail on the first call; the assistant shows beforehand who will receive it. Every invitee gets the link to set a password, including someone who already belongs to another community (accounts are per community). Someone who asked not to take part in this community comes back opted_out, with no e-mail. A group that doesn't exist refuses the call before anything is sent. See Invite members.
invite_members
Changes
Invite a class. Invites up to 100 people at once, each with their own name, role, groups and tags, or with a default for everyone. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
people | list of 1 to 100 | Yes | Each person with email (required), name (sent with the invite, as in invite_member), role, groups and tags |
role | member, moderator, admin, finance | No | The role for anyone without their own. Default: member |
groups | list, up to 20 | No | The groups for anyone without their own |
tags | list, up to 20 | No | The tags for anyone without their own |
Returns: the result per e-mail (invited, updated or skipped with the reason: invalid_email, duplicate, already_member, opted_out, failed) and the summary { total, invited, updated, skipped }.
Ask like this: "Invite these 30 people as members, all in the March class group: [list of names and e-mails]."
Notes: the e-mails go out on the first call, which is why the assistant shows the list before inviting. Each line succeeds or fails on its own: someone who is already a member gets the groups and tags, with no e-mail, and doesn't stop the rest. For more than 100 people, the assistant splits the list, or use the spreadsheet import (below). See the recipe Invite a class.
update_member_role
Changes
Change someone's role. Changes a member's role. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | text | Yes | The profile id (from list_members) or the person's e-mail |
role | member, moderator, admin, finance | Yes | The new role |
Returns: the profile with the new role.
Ask like this: "Promote [email protected] to moderator."
Notes: it changes what the person can do right away; to undo it, ask for the old role. Only another owner can change the owner's role. See Roles and permissions.
remove_member
Asks to confirm
Remove member. Removes a person from the community. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | text | Yes | The profile id (from list_members) or the person's e-mail |
Returns: on the first call, the person's name, e-mail and role, and the confirmation code.
Ask like this: "Remove [email protected] from the community."
Notes: the person's certificates remain valid. Only an owner can remove another owner, and nobody can remove themselves this way. See Manage members. The person's identified responses in surveys are deleted; anonymous ones stay.
reason (up to 500 characters) records why: it shows in the confirmation summary and stays only in the Logs; the person does not get it.
list_signup_requests
Read-only
See join requests. The requests of a community in With approval, newest first. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | pending, approved, rejected, expired | No | Default: pending (the Members › Pending queue) |
page, limit | number | No | limit from 1 to 100; default 20 |
Returns: each request with id, name, e-mail, language, phone, status, request date, expires_at (a pending request expires after 30 days), decision date, rejection reason, member_id (once approved) and the sign-up answers (answers).
Ask like this: "Who asked to join the community this week?"
Notes: a request is not a member and never shows up in list_members. Decided requests are deleted 30 days after the decision. The name and the answers were written by the candidate: the assistant treats them as data, never as instructions.
approve_signup_request
Changes
Approve join requests. Approves 1 to 100 requests in one call. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | list of 1 to 100 | Yes | The ids from list_signup_requests |
Returns: the result per request (approved, with the member_id; already_member, when the e-mail already had an account here; already_decided; not_found; failed) and the summary.
Ask like this: "Approve Maria's and Bruno's requests."
Notes: each approved person becomes a member as with an invite and gets the e-mail to create their password. Approval fires New community member with the Came from approval source (trigger_filter with sources: ["approval"]). The plan's member limit is checked right then, and a suspended community can't approve. Approving again changes nothing. The assistant shows who will be approved first.
reject_signup_request
Asks to confirm
Reject join requests. Rejects 1 to 100 requests, with an optional reason. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | list of 1 to 100 | Yes | The ids from list_signup_requests |
reason | text, up to 1000 | No | Goes in the e-mail to the candidates |
Returns: on the first call, who will be rejected, the reason and the confirmation code; then the result per request (rejected, already_decided, not_found).
Ask like this: "Reject [email protected]'s request with the reason: the community is only for people working in the field."
Notes: asks to confirm because it sends an e-mail and can't be undone. The same e-mail can ask again after 30 days.
list_groups
Read-only
List groups. The member groups (departments, classes, squads), with color, leader, parent group and how many people each has. Minimum role: moderator or finance.
Parameters: none.
Returns: the groups, with id, name, color, leader, parent group and number of people.
Ask like this: "Which groups does the community have, and how many people are in each?"
create_group
Changes
Create group. Creates a member group. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | text | Yes | Unique in the community |
description | plain text | No | No formatting: Markdown marks are stripped |
color | hex color | No | E.g. #2563EB |
parent_group | name or id | No | The group above it (board → area → squad) |
Returns: the group created, with its id.
Ask like this: "Create the March class group, in blue, inside Students."
See Groups and org chart.
update_group
Changes
Rename or change group. Changes a group's name, description, color or parent group. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
group | name or id | Yes | The group |
name | text | No | The new name |
description | plain text | No | No formatting: Markdown marks are stripped |
color | hex color | No | |
parent_group | name or id | No | The new group above it |
Returns: the updated group.
Ask like this: "Rename the March class group to Class 2026.1."
delete_group
Asks to confirm
Delete group. Deletes a group. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
group | name or id | Yes | The group |
Returns: on the first call, the summary (the group and how many people it has) and the code; on the second, the deletion.
Ask like this: "Delete the Class of 2024 group."
Notes: the people leave the group but stay in the community; the groups below it move up one level.
update_group_members
Changes
Add or remove people from a group. Adds people to a group or removes them, without touching their other groups. Since a group can open spaces, only the owner and the admin change someone's groups. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
group | name or id | Yes | The group |
add | list of profile ids or e-mails | No | Who joins |
remove | list of profile ids or e-mails | No | Who leaves |
Returns: the result person by person.
Ask like this: "Put everyone who bought the mentoring this month in the Mentoring group."
Only the owner and the admin change someone's groups. expires_at (YYYY-MM-DD or an ISO date; null = no end) gives a Valid until to whoever joins in add; someone already in the group only gets the new date (status: dated). See Groups and org chart.
list_tags
Read-only
List member tags. The tags used in the community, with their color and how many people have each one. Minimum role: moderator or finance.
Parameters: none.
Returns: the tags, with name, color and number of people.
Ask like this: "Which tags exist, and how many people have each one?"
update_member_tags
Changes
Tag or untag. Adds and removes tags on one or more people, keeping their other tags. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
members | list of profile ids or e-mails | Yes | The people |
add | list of tags | No | The tags to add |
remove | list of tags | No | The tags to remove |
Returns: the result person by person.
Ask like this: "Tag [email protected] and [email protected] with Mentor."
Notes: system tags, such as Speaker, can't be set by hand. See Tags.
update_tag
Changes
Rename or recolor tag. Renames a tag on everyone who has it and changes its color. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
tag | text | Yes | The tag |
new_name | text | No | The new name |
color | hex color | No |
Returns: the updated tag.
Ask like this: "Rename the Mentor tag to Coach and make it purple."
delete_tag
Asks to confirm
Delete tag. Removes a tag from everyone who has it. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
tag | text | Yes | The tag |
Returns: on the first call, the summary and the code; on the second, the deletion.
Ask like this: "Delete the Event 2024 tag."
Notes: the people stay in the community; only the tag goes.
get_org_chart
Read-only
View org chart. Who reports to whom, with each person's groups. Minimum role: moderator or finance.
| Parameter | Type | Required | Description |
|---|---|---|---|
root_member | profile id or e-mail | No | Who sits at the top |
group | name or id | No | Draws only that group |
depth | number | No | How many levels to go down |
Returns: the tree, person by person, with their manager and groups.
Ask like this: "Show the org chart of the Product area."
See Groups and org chart.
set_manager
Changes
Set who someone reports to. Sets a person's manager in the org chart, or removes it. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | profile id or e-mail | Yes | The person |
manager | profile id or e-mail | No | Who they report to |
no_manager | yes or no | No | true removes the manager |
Returns: the person with the new manager.
Ask like this: "Bruno now reports to Ana."
Notes: a cycle (A reports to B, who reports to A) is refused. Only the owner and admins change the leader, because the direct leader approves the person's development plan and reads feedback about them; moderators and finance keep organizing groups. Nobody sets their own leader, not even the owner: the API refuses, and the assistant explains that another owner or admin has to do it. Beyond that, the org chart grants no permission: what someone can do is still their role.
get_my_team
Read-only
See my team. Says whether you lead anyone in the community (isLeader), who reports directly to you (directReports, with name and photo) and whether the tree goes one level further down (hasIndirectReports). Only your own team, never someone else's. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
space_id | space id | No | Keeps in directReports only those who open that space today |
Returns: isLeader, directReports and hasIndirectReports.
Ask like this: "Who reports to me?"
list_activity_logs
Read-only
Activity logs. Who did what in the community, newest first: the team's actions on subscriptions, the AI assistant, the members and the API keys, the timeline of the Members › Logs tab. For all of the community's records, use list_logs. Minimum role: admin (owner or admin).
| Parameter | Type | Required | Description |
|---|---|---|---|
source | team, assistant, members, apiKeys | No | Team (actions on subscriptions: cancel, reactivate, discount, complimentary, extension, add-on, payment link), assistant (what an AI assistant did through MCP, including connections authorized and disconnected) members (the actions that earn engagement points) or API keys (key created, renamed, with IPs changed or revoked, and every write made with a key, "via key n8n"; see Integrations & APIs). Without it, all of them |
profile | profile id, e-mail or app link | No | Only what this person did |
from, to | ISO 8601 date | No | The period. A date without a time in to covers the whole day |
page, limit | numbers | No | Up to 100 per page |
Returns: each entry with when, who, the action (in your language), on what, and the details: the before and after of a team action, the result of an assistant call (completed, error, refused or awaiting confirmation) or the points of a member action. The arguments of assistant calls come summarized, with no confirmation codes or images.
Ask like this: "Who canceled Ana's subscription?" · "What did the assistant do yesterday?" · "What did [email protected] do this week?" · "What did the n8n key do this week?"
Notes: if an assistant call failed, the response suggests get_connection_diagnostics; with a person in the filter, it suggests member_activity. A profile or link from another community is refused.
list_logs
Read-only
Community Logs. Everything the community records, newest first: the same timeline as Administration › Logs. See Logs. Minimum role: owner, admin or finance; finance reads only the financial type.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | team, platform, assistant, members, emails, imports, financial, moderation, apiKeys | No | A single type: Team (roles, removals and departures, community data and settings, subscriptions, Attendance fixes), Platform (business registration and payout account, sales turned on or paused, member entry, streaming), AI assistant, Members (actions that earn points), E-mails (campaign sends), Imports, Financial (sales, refunds and payouts, with the gross amount), Moderation and API keys (keys created, renamed, with IPs changed or revoked, and each write made with a key). Without it, all the ones your role reads |
actor | profile id, e-mail, name or app link | No | Only what this person did. A name works when only one person has it; with two or more, the response says who they are |
from, to | date YYYY-MM-DD or date and time | No | The period, in the community time zone. A date without a time covers the whole day |
search | text, up to 100 | No | Name of who acted or of what was affected, title, file, campaign or tool |
page, limit | numbers | No | Up to 100 per page (default 20) |
Returns: each entry with type, the action, who acted (with via: through the app, through the assistant, through an API key (api_key), by the Memberfy team or by the system), what was affected, a ready summary in your language ("Changed Ana Souza's role from Member to Admin"), the date and the safe details. It never returns assistant arguments, codes, bank details, e-mails, fees or net amount.
Ask like this: "Who made Ana an admin?" · "Who changed the community settings this week?" · "What happened yesterday?" · "How much did we sell and refund in September?" (finance) · "What did the n8n key do this week?" (type: apiKeys)
Notes: finance asking for another type gets a refusal. With more pages, the response suggests the next one; with a person in the filter, it suggests member_activity; if an assistant call failed, it suggests get_connection_diagnostics.
get_member
Read-only
A member's profile. A member's profile in this community. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | id, e-mail or link | Yes |
Returns: name, display name, tagline, role, when they joined and when they were last seen. For the team and for the person themself, also the custom fields (fields) and the origin (source, importedAt when they came from an import). And the engagement (engagement), already filtered for whoever asks: points and level (with gamification on), the badges you can see and the certificates (the person's, for them and the team; for others, only if they chose to show them to the whole community).
Ask like this: "Show me Ana's profile."
Notes: e-mail and phone come only on your own profile or for moderator, finance and up; finding someone else by e-mail also needs moderator. A person from another community isn't found.
Member page: also cover_url, company, country, languages, links, experiences, the signup fields the page shows and the In the community numbers, each only if the section is visible to whoever asks. On your own page (and for the team), also each section's level (privacy). Also leader (id, name, avatarUrl), directReportsCount and groups (id, name), absent when there is nothing to show; the person and the team see every group, other members only the ones they share. Suggests update_my_profile (yours) and list_member_page_activity (with Activity visible). See Your profile.
Returns welcome (with the missions) and, for the owner, the admin and the moderator, referredBy: who referred the person.
update_member
Changes
Edit a member. Changes someone's name and tagline in this community. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | id, e-mail or link | Yes | |
name | text, up to 100 | No | The person's name |
tagline | text, up to 200 | No | The line under the name; "" clears it |
Returns: the updated member, with name.
Ask like this: "Change João's name to João Silva."
Notes: the name changes only for someone with a role below yours, and only in this community; if the person still had the name taken from the e-mail and is only in this community, it becomes the account name. See Name. Only another owner edits an owner. The photo, e-mail and phone don't change here. For yourself, use update_me.
update_me
Changes
Edit myself. Edits you as a member of this community: name, tagline, language and phone. Also who sees your certificates (certificates_visibility). Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | text, up to 100 | No | Your name in this community |
tagline | text, up to 200 | No | In this community; "" clears it |
language | one of the 10 languages, or null | No | In this community; null follows the community's language |
phone | text, up to 32 | No | In this community; "" or null clears it. E.g. +55 41 99999-8888 |
phone_country | 2-letter code | No | E.g. BR, when the phone has no + |
certificates_visibility | team, community | No | Who sees your certificates on your profile: team (you and the team, the default) or community (the whole community) |
Returns: what changed: account (language and phone) and member (name and tagline).
Ask like this: "Change my language to English and my phone to +55 41 99999-8888."
Notes: the name changes only in this community; in the others you belong to, it stays the same. The picture is update_avatar.
update_my_profile
Changes
Edit my page. Edits your member page in this community; only what is sent changes. Never someone else's, whatever your role. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
company | text, up to 100 | No | Where you work; null or "" clears |
country | 2-letter code | No | E.g. BR; null clears |
languages | list of codes, up to 10 | No | E.g. ["pt", "en"]; [] clears |
links | linkedin, website, instagram, github, x, youtube | No | Full addresses (https://…); only the ones sent change (null or "" removes one); links: null removes all |
experiences | list, up to 30 | No | The whole list (replaces the stored one): title, company, start_date and end_date (YYYY-MM; no end = current role) |
privacy | object | No | Each section's level: header and about PUBLIC or MEMBERS; location, experience and activity PUBLIC, MEMBERS or PRIVATE; fields (field by id, key or name) MEMBERS or PRIVATE |
image_url / image_base64 | link or file | No | The cover (3:1, 1800 × 600 recommended) |
remove_cover | yes or no | No | true removes the cover (the page shows the community gradient) |
Returns: your page as you see it, with the level in force for each section.
Ask like this: "Make my page public, except my experience." · "Add that I've worked at Acme as Product Manager since March 2024." · "Use this image as my page cover: https://…"
Notes: it doesn't ask for confirmation. The bio is the tagline in update_me, and the picture is update_avatar. PUBLIC only applies with public pages on in the community; a choice above the community's limit is kept and counts as the limit. A field the community set to Never or Always doesn't change. The cover is checked before anything changes: if the image doesn't work, nothing changes.
list_member_page_activity
Read-only
A member's activity. The posts and comments in the Activity tab of someone's page, only from spaces you can open, newest first. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | id, e-mail or link | Yes | By e-mail, moderator or finance and above only |
cursor | text | No | The nextCursor of the previous page |
limit | 1 to 50 | No | Items per page (default 20) |
Returns: the items and the pagination. With pagination.hidden: true, the person doesn't show their Activity to you: the assistant says so, not that they didn't post.
Ask like this: "What has Ana posted lately?"
update_avatar
Changes
Set or remove a picture. Sets or removes a member's picture, by link or file. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | id, e-mail or link | No | Whose picture. Leave out for your own. Someone else's needs a role above theirs, and only for people in the connected community |
remove | yes or no | No | true removes the picture |
image_url / image_base64 | link or file | No | The new picture (square; 800 × 800 is recommended) |
Returns: member_id and avatar_url, the address of the new picture; when removing, removed: true.
Ask like this: "Change my picture to this one: https://example.memberfy.net/me.png." · "Remove [email protected]'s picture."
Notes: it doesn't ask for confirmation. Any role changes their own picture, which changes only in this community (Profile photo). Someone else's changes only in the connected community and needs a role above theirs: the owner changes everyone's except another owner's; the admin, moderators', finance's and members'; the moderator and finance, members' only. JPEG, PNG, WebP or GIF (SVG becomes PNG), up to 5 MB as a file; if the image can't be used, nothing changes. See Images.
Custom fields
The extra registration details (company, job title, city). See the article Custom fields. A field is given by its id, its key (company) or its name. Types: text, number, date, select, multi_select, boolean, email, phone, url.
list_member_fields
Read-only
Custom fields. The community's fields, in order, with key, type, options, whether it's required and whether it already has values. Minimum role: moderator or finance.
Ask like this: "Which fields does the community ask for at registration?"
create_member_field
Changes
Create a field. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
label | text, up to 120 | Yes | The field's name; the key comes from it and doesn't change |
type | text, number, date, select, multi_select, boolean, email, phone, url | Yes | The type. email is stored in lowercase; phone in international format (without a country code, the community's applies); url accepts only http/https |
options | list | For select and multi_select | The options: at least two; on a multiple choice, up to 50, up to 80 characters each |
min_selections, max_selections | number, 1 to 50 | No | Only on multi_select: how many the person can tick, at least and at most; null removes the limit. With required, the minimum is 1 |
required | yes or no | No | Everyone must fill it in (default: no). Whoever lacks a value is asked to complete their registration on their next visit |
order | number | No | The position, from 0 |
pattern | text, up to 200 | No | Only for text: the regular expression the whole value must match. An invalid expression, or one that could hang validation, is refused |
pattern_message | text, up to 120 | No | The hint shown under the field and when the value doesn't match |
ask_on_signup | yes or no | No | Asks for the field on sign-up. A required field is always asked |
profile_visibility | NEVER, MEMBER_CHOOSES, ALWAYS or null | No | On the member page: never, the person chooses or always (at most for members). null or left out is automatic: a sensitive field (phone, e-mail, date, documents, health, address…) becomes NEVER. |
Ask like this: "Create the field Ticket type, a choice, with VIP, In person and Online." · "Create the field Member ID, required, in the format ABC-1234." · "Ask for the business phone on sign-up."
update_member_field
Changes
Edit a field. Changes the name, type, options, required flag, position, pattern, pattern_message and ask_on_signup, profile_visibility. Switching a text field to another type clears its pattern. The type can't change once there are values filled in. Exception: from select to multi_select (each answer becomes a one-item list; it doesn't go back). Renaming an option keeps the answers; removing takes the option out of the profile, filters and variables, and the answer comes back with the option. Minimum role: admin.
reorder_member_fields
Changes
Reorder fields. fields is the list in the new order. Minimum role: admin.
delete_member_field
Asks to confirm
Delete a field. The field disappears from the record, the profile and the campaign variables; the values are kept. Shows the summary and only deletes after your yes. Minimum role: admin.
update_member_field_values
Changes
Fill in fields. Fills in or changes a person's values. Minimum role: any, for your own; moderator, for someone else's.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | id, e-mail or link | No | Without it, your own profile |
values | { key: value } | Yes | Only the keys sent change; empty clears (a required one can't be left empty). Dates as YYYY-MM-DD; a choice by its option; a multiple choice as a list of options, by value or name ([] clears) |
Ask like this: "Fill in [email protected]'s company: Studio X."
Notes: errors come back together, one per field, and nothing is saved. Finance only fills in their own.
Spreadsheet import
The same flow as the Import spreadsheet tab (Import members from a spreadsheet), in three steps: analyze, preview and start. Owner and admin. The spreadsheet goes by public link (file_url) or, for a CSV, as text (csv_text); there's no base64 upload. In Claude and ChatGPT, just attach the spreadsheet: the assistant reads it and sends the content as CSV. See the recipe Import a spreadsheet through the assistant and the ready-made prompt Import members from a spreadsheet (import_members).
analyze_member_import
Changes
Analyze the spreadsheet. Uploads the file (.xlsx or .csv, up to 5 MB, 5,000 rows and 100 columns) and returns the analysis. Nobody is imported or e-mailed; the original is kept in private storage, and an unconfirmed analysis expires in 24 hours. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_url | link | One of the two | Public link to the .xlsx or .csv |
csv_text | text | One of the two | The CSV content |
file_name | text | No | The name kept in the history |
Returns: the sheets, the header row found, the total rows and each column with 3 samples, the suggested destination (with high or low confidence), the suggested type for a new field and the distinct values.
preview_member_import
Read-only
Preview. Rereads the file with another sheet, header row, delimiter or encoding and, with the mapping, returns the summary, saving nothing. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
import_id | id | Yes | From the analysis |
sheet, header_row, delimiter, encoding | No | How to read the file | |
mapping | list | No | Where each column goes: column (0 = column A) and target: email, first_name, last_name, phone, job_title, tagline, tags, groups, consent, sms_consent, whatsapp_consent, field (with field_key), new_field (with new_field.label and type) or ignore. job_title is the profile job title (up to 100 characters) and tagline the bio (up to 200): anything longer is cut with a TOO_LONG warning, and for people already in the community both only fill an empty one |
role | member, moderator | No | Default: member |
groups, tags | lists, up to 20 | No | For everyone. The groups must exist |
origin | text, up to 150, no links | No | Where the list came from; it goes in the e-mail |
consent_values | list | With a consent column | The values that count as yes |
consent_declaration | yes | Without a consent column | The declaration that everyone agreed |
sms_consent_values, whatsapp_consent_values | lists | No | With an sms_consent or whatsapp_consent column: the values that count as yes (default: yes, y, sim, x, 1…) |
sms_consent_attestation, whatsapp_consent_attestation | yes | To record the column's consent | The declaration that the community collected the consent of the people marked yes; without it, no yes is recorded. Applies to new people and to existing members |
Returns: new people, already members, skipped by reason, declines, e-mails that will be sent and the groups, tags and fields that will be created. In unknownOptions, per choice or multiple-choice field, the sheet values that aren't options yet: the assistant offers to add them with update_member_field. A Linux; Cloud cell (split by ; or ,) fills a multiple choice, and new_field.type takes multi_select.
The badges and points targets (one column each) bring the history of people coming from another platform; on a badges entry, ignore_names ignores names. The summary carries summary.badges (unknown, ignored, grants) and summary.points (rows, invalid, already imported, levels); an unknown badge points to create_badge. groups_expire_at dates the row's groups.
start_member_import
Asks to confirm
Import. The same parameters as the preview, with origin required and the consent (column or declaration). It's a bulk e-mail send that can't be undone: the first call returns the summary (file, origin, role, groups, tags, how many e-mails go out and to whom) and a confirmation_token; the assistant shows it and only imports after your yes. Minimum role: admin.
Notes: it runs in the background; follow it with get_member_import. Each new person gets the invitation with the origin and the decline link; existing members get nothing. With the community suspended, it's refused before the summary. If another spreadsheet is being read in the community, the answer asks you to try again in a moment. With sms_consent or whatsapp_consent and the attestation, the summary shows the channels and the declaration, and warns that those rows' phones can receive right away, without being verified. The consent also applies to existing members, whose phone the sheet replaces (not verified); rows may come back with CONSENT_WITHDRAWN (the person left the channel or withdrew consent: nothing recorded) or PHONE_KEPT_VERIFIED (another verified number was kept). The summary also shows unknown_options.
Ask like this: "Import this spreadsheet as members, in the Members 2026 group. The origin is Active members of 2026."
get_member_import
Read-only
Follow the import. Status (QUEUED, PROCESSING, DONE, FAILED, INTERRUPTED by the community's suspension…), rows processed, imported, updated, skipped and invitations sent, and the skipped rows or rows with a warning, with the reason. Minimum role: admin.
list_member_imports
Read-only
Import history. Who imported, when, file, status, counts, origin and the consent recorded. Minimum role: admin.
get_member_import_file
Read-only
Import files. file: original returns a 5-minute link to the spreadsheet as it was uploaded; file: skipped_rows_csv, the CSV of skipped rows with the reason. Minimum role: admin.
withdraw_from_community
Asks to confirm
Decline the invite. For someone who joined the community through an import: declines the invite and leaves, like the e-mail's Thanks for the invitation, but I do not want to join link. The account stays; the community can no longer import or invite that e-mail. Refused for someone who didn't come from an import, for team members and for anyone with a subscription in the community. Minimum role: any, only for themself.
Ask like this: "I don't want to take part in this community."
Surveys
Questionnaires in sections, identified or anonymous, in a Surveys space, for whoever has access to the space and/or through the public link, with no sign-in. See Surveys. All 12 are for the owner and the admin; opening (it sends the e-mail invitation), closing and deleting ask to confirm, the others act on the first call.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_survey_templates | The survey templates (NPS, satisfaction, event, course, eNPS, blank), with sections and questions | Admin | Read-only |
list_surveys | The surveys (or only those of a space_id), with the space, status, mode, recipients, responses and the public link | Admin | Read-only |
get_survey | One survey, with the space, sections, questions and public link | Admin | Read-only |
create_survey | Creates a draft survey in a Surveys space (space_id), from a template and/or with your own sections and questions | Admin | Changes |
update_survey | Edits the whole draft or scheduled survey (and moves it to another Surveys space), with the period (starts_at, closes_at) and the response type (response_mode); once open, only title, introduction, end and public link | Admin | Changes |
preview_survey_audience | How many people have access to the space today (by space_id or by the survey), with up to 10 names | Admin | Read-only |
open_survey | Opens the survey (or schedules it, with a future starts_at): freezes who has access to the space, sends each of them an e-mail invitation and returns the recipients and the public address | Admin | Asks to confirm |
close_survey | Closes the survey now, for good | Admin | Asks to confirm |
delete_survey | Deletes the survey; the link stops working | Admin | Asks to confirm |
get_survey_results | The aggregated results, with one filter (group, tag, company or origin; anonymous: origin only) and, on identified required or immediate surveys, who still has to answer | Admin | Read-only |
list_survey_responses | Who answered what and when (identified surveys only) | Admin | Read-only |
export_survey_csv | The responses as CSV, the same file as the app | Admin | Read-only |
Create. First the space: create_space with module: "surveys" and mode multi (several surveys, the default) or single (one survey). create_survey takes space_id (required), title, template (the key from list_survey_templates: nps, csat, event, course, enps or blank) and/or sections with the questions: single_choice and multiple_choice (2 to 30 options), scale (min 0 or 1, max 2 to 10, min_label, max_label and display as numbers or stars), nps (0 to 10) and text (display short or long). Also anonymity (identified or anonymous, fixed once open), public_link_enabled, the period (starts_at and closes_at, the end after the start) and response_mode (optional, the default, no window in the app; required, marked as required, with the window the person can put off with "Not now"; immediate, the window that only goes away with the answer), fixed once open. There is no audience: whoever has access to the space answers (change it with update_space_access). In a single space that already has its survey, a second one is refused. With both a template and sections, the sections win. The survey starts as a draft: nobody sees it, not even through the link.
Edit. In a draft or a scheduled survey, update_survey replaces the whole tree: send every section and question (get_survey shows the current ones). In a draft, space_id moves the survey to another Surveys space. On a scheduled survey, starts_at: null cancels the schedule (back to draft). Once open, only title, description, closes_at and public_link_enabled.
Open. open_survey first returns a summary, with how many people get the e-mail invitation and up to 10 names; show it to the person and repeat with the confirmation_token after the yes. Whoever gets access to the space later is not included; editing doesn't resend the invitation. With a future starts_at, open_survey schedules instead of opening (status: "scheduled"): the survey opens by itself at starts_at, with the audience frozen at that time and the invitation 10 minutes later; the answer carries schedule_note. Before the start and after the end, nobody answers.
The public link. public_url (on the community's domain, such as clube.memberfy.net/s/…) comes in list_surveys, get_survey, create_survey, update_survey and open_survey when the link is on, and is null when it is off. open_survey also returns recipient_count.
Results. get_survey_results takes one filter at a time: group_id, tag, company_id or origin (member or visitor). In an anonymous survey, only origin: group_id, tag and company_id are refused. The results move in blocks of 3 new responses from the same origin (the total grows by 3), under 3 published they come locked (no number, no text), and origin only applies when the slice and the rest both have 3 or more. list_survey_responses only exists for identified surveys; a visitor from the link comes with member null. export_survey_csv returns the same file as the app (anonymous: only the published responses, from 3). On identified surveys with response_mode required or immediate, the results carry pending (count, members, truncated): who still has to answer. On anonymous ones, pending never comes, in any response type.
Responses per day. get_survey_results returns activity (null when locked), counts only and following the filter: days ([{date, count}], in the community's time zone, from the first day with a response to today or the close day, zeros included, at most the last 180 days), last_at, last_week (how many in the last 7 days) and basis. On an identified survey, basis is response: each response counts on its day. On an anonymous one, it is publication: an anonymous response keeps no time at all, so the count is of the blocks that entered the results each day ("N responses became visible that day"), and the assistant never says when someone answered; untracked counts the ones published before this tracking existed.
Answering has no tool. The assistant does not answer surveys on anyone's behalf: the record of what it does would identify who answered.
For the member. list_my_pending_surveys (any role) lists the open surveys waiting for the person's own answer, with the deadline, whether it is anonymous, the response_mode and the url to answer in the app. Closing the app's notice has no tool.
Ask like this: "Create an Event survey space, with a single survey, and build the satisfaction survey in it, anonymous, with the public link on. Show it to me before opening." · "How is the NPS of the community survey? Split members and visitors."
Recurring survey and heat map
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
pause_survey_recurrence | Pauses the repeat: no new round opens, and the open one runs until it closes | Admin | Changes |
resume_survey_recurrence | Resumes a paused repeat | Admin | Changes |
end_survey_recurrence | Ends the repeat, for good; no round is deleted | Admin | Asks to confirm |
list_survey_rounds | The rounds, newest to oldest, with the response rate and the value of each NPS and scale question | Admin | Read-only |
get_survey_evolution | The round-by-round evolution of each NPS and scale question, ready for a line chart | Admin | Read-only |
get_survey_heatmap | The identified survey's heat map, by primary group, tag or company (dimension), for one round (round_id), with the change against the previous one | Admin | Read-only |
export_survey_heatmap_csv | The heat map as CSV, the same file as the app | Admin | Read-only |
Repeat. create_survey and update_survey take, in the draft, recurrence with frequency (weekly, biweekly, monthly or quarterly), day (the day of the week from 0, Sunday, to 6, for weekly and biweekly; the day of the month from 1 to 28 for monthly and quarterly), time (HH:mm, in the community's time zone), duration_days (up to 7, 14, 28 or 90, depending on the frequency) and notify_by_email. recurrence: null turns it off. A recurring survey doesn't open with open_survey (the tool refuses): each round opens and closes by itself.
Heat map. Identified surveys only; on an anonymous one, both map tools refuse the request.
Ask like this: "Create the monthly eNPS in the HR Surveys space, every day 1 at 9am, open for 7 days", "How has the eNPS evolved over the last rounds?", "Show the heat map of the last round by group."
Forms
Forms in a Forms space, for members with access to the space and/or for anyone with the link, with the submissions list. See Forms. All 17 are open to every role, and the API decides case by case: creating follows the space's Who can post (the owner and the admin can always create); managing a form and seeing the submissions belongs to whoever created it, the team (owner, admin, moderator and finance) and the responsibles; the others get 403. Deleting a form or a submission asks to confirm; the others act on the first call.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_forms | The forms (or only those of a space_id): whoever manages them sees all of them, in any status, with public_url and the submissions by status; the others, only the ones open to members in the spaces they can open | Any | Read-only |
get_form | A form as whoever manages it sees it: settings, status, public_url, responsibles, steps and fields | Any | Read-only |
get_forms_space_settings | The space's mode (single, one form; multi, a list), whether you can create in it (can_create) and turn on the team's options (can_configure_access) | Any | Read-only |
update_forms_space_settings | Switches the space's mode; single is refused with 2 or more forms, and nothing is deleted | Admin | Changes |
create_form | Creates a draft form in a Forms space, with steps and fields of the 13 types | Any | Changes |
update_form | Edits the form in any status; sections replaces the whole tree | Any | Changes |
publish_form | Publishes the draft; with dry_run: true, it first shows how many people get the notice e-mail (email_recipient_count) and what each submission does | Any | Changes |
close_form | Closes it now: the link shows "form closed" | Any | Changes |
reopen_form | Reopens a closed form (deadline passed or cap reached: change them first with update_form) | Any | Changes |
delete_form | Deletes the form; the link goes offline (404) and the submissions stay stored for the owner | Any | Asks to confirm |
list_form_submissions | The submissions, newest first: status, origin, name, e-mail, phone, member and the save-as-member result; filters status, origin, from, to and q | Any | Read-only |
get_form_submission | One submission, with all the answers (a copy of what was submitted) and the proof of consent | Any | Read-only |
update_form_submission_status | Changes the status: new, in_contact or done, in any order | Any | Changes |
delete_form_submission | Deletes a submission: it leaves the list and the CSV (the submission cap doesn't reopen); the summary carries no personal data | Any | Asks to confirm |
export_form_submissions_csv | The submissions as CSV, the same file as the app, with the same filters | Any | Read-only |
get_form_to_fill | A published form as whoever fills it in sees it, with the values that come from the profile (prefill; locked ones don't change) | Any | Read-only |
submit_form | Submits the form on your behalf, linked to your profile | Any | Changes |
Create. First the space: create_space with module: "forms" and the mode multi (several, the default) or single (one form). create_form takes space_id, title, description and sections, each with fields of the types name, email, phone, company, job_title, short_text, long_text, single_choice, multiple_choice (2 to 50 options), number (min, max), date, url and consent; each field has label, help, placeholder, required and, on name, e-mail and phone, lock_to_profile. The settings: accept_members, accept_visitors, save_as_member, send_confirmation (on by default), thank_you_message or redirect_url (https), privacy_policy_url, access_password (6 to 100 characters, never returned or logged), closes_at, max_submissions and responder_ids (up to 20; without them, the creator is the responsible). In a single space that already has its form, a second one is refused (409). The form starts as a draft: the link doesn't open.
Team only. Only the team turns on accept_visitors and save_as_member. A member who asks gets 403 teamOnlyOption: the assistant says only the team turns those options on. A form open to visitors always keeps the consent field.
Edit. update_form changes only what goes in the call. sections replaces the whole tree: send every step and field, with the fields' id to keep the CSV columns (get_form shows them).
Publish. publish_form needs at least one field besides the consent. Call it first with dry_run: true and show the person how many get the notice e-mail and what happens on each submission (with save_as_member, the e-mail invitation); only then call it without dry_run. With the form open to members and notify_by_email other than false, a publication by the team notifies whoever has access to the space (once, 10 minutes later, in the Forms category); a member's publication sends no e-mail. The answer carries public_url (clube.memberfy.net/f/…) and email_notice.
Submissions. list_form_submissions carries member_outcome when the form saves as a member: invited, tagged, plan_limit, invite_limit (the daily invitation limits were hit: nobody was created), opted_out or failed. The answers come in get_form_submission. On a deleted form, only the owner reads and deletes the submissions (list_forms with include_deleted).
Fill in. get_form_to_fill and submit_form submit on behalf of the person themselves, signed in, as in the app. answers has one answer per field (field_id): text; number; date YYYY-MM-DD; the option's value; a list of values; the phone as text or { number, country }. Consent is true only after the person has read the text and said yes: the assistant never accepts on their behalf. A missing or invalid field returns 422 with errors[].param = answers.<field_id>.
Privacy. The answers, the search and the access password never go into the assistant's audit log.
Ask like this: "Create a Request a demo form open to anyone with the link, with name, e-mail, company and job title, and show it to me before publishing." · "Which submissions of the sign-up form are still new? Mark Maria's as in contact."
E-mails from this community
Your own e-mail preference in this community, as in My Account › Notices. Each person only reads and changes their own; the team reads no one's. See E-mails from this community.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
get_my_email_preferences | Your e-mail preference in this community: each category, on or off, and the shortcut | Any | Read-only |
update_my_email_preferences | Changes your preference: a shortcut (receive everything, block announcements, block all) or categories | Any | Changes |
Change. update_my_email_preferences takes shortcut (all turns everything on, campaigns_off turns off only the team's announcements, none turns everything off) and/or categories, such as { "events": false, "surveys": true }. The keys: events, courses, callsForPapers, surveys, posts, downloads, store, recognition, feedbacks, developmentPlan, timeTracking, chat, announcements and participation. Security, receipts and legal notices always arrive.
Notify on publish. create_event, create_post, create_poll (in Content), update_course, update_download_item, publish_product, update_call_status and open_survey take notify_by_email (on by default, like the app's Notify by e-mail box) and return email_notice (scheduled, recipient_count and, when it does not go out, reason), which the assistant reports. get_email_notice_recipient_count counts beforehand. See New content notices by e-mail.
Ask like this: "I don't want event e-mails from this community anymore." · "Which e-mails do I get from here?"
SMS and WhatsApp notices
Your SMS and WhatsApp notices in this community, as in My Account › Notices, and verifying your phone. Each person only reads and changes their own; the owner and the admin also see a member's consents.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
get_my_notice_preferences | Your notices per channel (e-mail, SMS and WhatsApp): the masked phone and whether it is verified, the consents, the channel and the categories, and the stop by a STOP reply, which applies to every community (global_opt_out) | Any | Read-only |
update_my_notice_preferences | Turns SMS and WhatsApp on or off (sms, whatsapp: enabled and categories), each platform message on WhatsApp (whatsapp.moments) and news on WhatsApp (whatsapp.marketing); with the channel stopped by a STOP reply, enabled: true turns it back on in every community and asks for confirmation saying so | Any | Changes |
list_my_contact_consents | Your consents: channel, purpose (service or marketing), origin and date | Any | Read-only |
request_phone_verification | Sends the 6-digit code by SMS to your phone, valid for 10 minutes | Any | Changes |
confirm_phone_verification | Verifies the phone with the code; the number then counts on the account | Any | Changes |
list_member_contact_consents | A member's SMS and WhatsApp consents, with origin (including team, declared by the team) and date, never the IP | Admin | Read-only |
attest_contact_consent | Records the SMS and/or WhatsApp consent the community declares it collected: attestation: true, channels, purpose (service, marketing or all), optional collected_at and collection_method, and members (up to 200: id, e-mail, name or link, with optional phone). Returns, per member, the status, phone_verified and sendable | Admin | Asks to confirm |
request_phone_verification does not ask for confirmation: the code only goes to your own number, and Memberfy limits requests (one a minute, 3 an hour for the same number). Turning a channel on requires a verified phone and records the service consent for that channel, with the origin My account.
attest_contact_consent is only used when you say the community collected the consent; the assistant never assumes it. The summary before your yes carries the declaration (the responsibility is the community's) and warns that the phone provided can receive SMS and WhatsApp right away, without the code verification, while it is the profile's current phone, but is not verified: verification codes still require the person. Each result has phone_verified and sendable (whether the current phone can receive). Someone who left the channel or withdrew consent is not re-enrolled (withdrawn), a different verified number is kept (kept_verified) and the admin doesn't touch the owner (owner_protected). See Consent declared by the team.
Ask like this: "I want this community's notices on WhatsApp." · "Verify my phone: the code is 482913." · "Did Maria agree to get SMS?" · *"Let me know on WhatsApp about unread direct messages." · "Record that Maria and João agreed to SMS on the October meetup sign-up form."
Recognition
The wall of praise between colleagues in the Recognition space. Whoever has access to the space lists, recognizes, reacts and comments; deleting asks to confirm (the author or the team; the summary says the points are taken back); community values and the dashboard belong to the owner and the admin.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_recognitions | The Recognition wall, with a filter by person ("me", name, e-mail or id) and by value (value) | Any | Read-only |
get_recognition | One recognition, with reactions and comments | Any | Read-only |
search_recognition_recipients | Who can be recognized (has access to the space), by name | Any | Read-only |
create_recognition | Recognizes 1 to 20 people, with a message and an optional value; dry_run shows first who gets the e-mail | Any | Changes |
react_to_recognition | Reacts with an emoji, or removes the reaction | Any | Changes |
create_recognition_comment | Comments on or replies in a recognition | Any | Changes |
list_company_values | The community values, active and deactivated | Any | Read-only |
delete_recognition | Deletes a recognition; the points it gave are taken back | Author or team | Asks to confirm |
delete_recognition_comment | Deletes a comment on a recognition | Author or team | Asks to confirm |
create_company_value | Adds a community value | Admin | Changes |
update_company_value | Changes a value's name or description, or deactivates it (active: false) | Admin | Changes |
reorder_company_values | Puts the values in an order | Admin | Changes |
get_recognition_dashboard | Recognitions made, people who recognized and people recognized, in a period, with the by-value block | Admin | Read-only |
get_recognition_card | The recognition's card as a PNG image, to share | Any (author, people recognized and team) | Read-only |
list_recognition_types | The recognition types, with label, phrase, art and whether each is on | Any | Read-only |
update_recognition_type | Turns a recognition type on or off; turning off asks for confirmation | Admin | Changes |
upload_recognition_type_art | Uploads a type's own art (URL or image); replacing own art that already exists asks for confirmation | Admin | Changes |
remove_recognition_type_art | Puts the type back on the default art, the same in every community | Admin | Asks to confirm |
Recognize. create_recognition takes people (1 to 20, by name, e-mail or id; nobody themself), message (up to 500 characters) and value (by name or id, optional). With dry_run: true, it shows who gets the e-mail without publishing; show it to the person first. The answer carries email_notice. Points follow engagement rules: get_ranking_rules and update_ranking_rules know GIVE_RECOGNITION and RECEIVE_RECOGNITION. In the feed, list_posts with type: recognition. The space: create_space with module: "recognition".
Several spaces. The community can have more than one Recognition space. list_recognitions, search_recognition_recipients, create_recognition and get_recognition_dashboard accept space_id (from list_spaces, module recognition): optional with a single space, required with several to recognize and search people. The list without space_id gathers the spaces the person opens, and each card carries its spaceId; the dashboard without space_id adds them all up. The community values are the same in every space. A member names people by name or id: the e-mail search is for the team, and the assistant points to search_recognition_recipients.
Ask like this: "Recognize Ana and Bruno for Saturday's support, with the value Customer first. Show me first who gets the e-mail." · "How many recognitions did we have in October?"
By value and card. list_recognitions takes value (the value's name or id, or none for those without one). get_recognition_dashboard brings byValue: how many recognitions each value got in the period and the 5 most recognized people in each. get_recognition_card returns the recognition's card as a PNG image, which the person saves or shares; only for the author, the people recognized and the team (others get the API's refusal). get_recognition offers the card to whoever may download it. See Recognition › The card to share. Every recognition brings canShare (the connected person may get the card), canPostToLinkedIn (canShare and they are the author or one of the recipients: only then does the assistant suggest posting on LinkedIn) and hasCustomArt (the art is the community's own; otherwise it is the type's default art, the same in every community). The card is 1200 px wide and as tall as its content.
Ask like this: "How many Customer first recognitions did we have in October, and who got the most?" · "Give me the card of Ana's recognition."
Types and art. list_recognition_types, for whoever opens the space, lists the seven types with label, phrase, art and whether each is on. create_recognition takes type (appreciation, welcome, milestone, award, event, graduation or work_anniversary; without it, Appreciation), and the dry_run shows the type, the phrase and the art; list_recognitions filters by type; get_recognition brings the type and the art. The owner and the admin turn types on and off with update_recognition_type (turning off asks for confirmation), upload own art with upload_recognition_type_art (from a URL or an image; a type's first own art goes straight up, and replacing own art that already exists asks for confirmation) and go back to the default with remove_recognition_type_art (asks for confirmation). Own art is a 3:1 banner: up to 5 MB, at least 1200 px wide, 1800×600 recommended, stored at 1800×600.
Feedback
Feedback between colleagues in the Feedback space. Only the giver and the recipient read the text (in feedback about another person, the internal part belongs to the leader and the requester, and the person reads only the message): the tools read only the connected person's own feedback and requests, and someone else's (for the owner and the admin too) comes back as not found. The text never goes into the log of what the assistant does. Deleting your own feedback and canceling your own request ask to confirm, with a summary without the text.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_feedbacks | Your feedback received or sent (box) | Any | Read-only |
get_feedback | One of your feedbacks, with the text | Any (only your own) | Read-only |
search_feedback_people | Who can give or receive feedback (has access to the space), by name | Any | Read-only |
create_feedback | Gives feedback to a colleague (text in Markdown); dry_run shows first who gets the notice | Any | Changes |
thank_feedback | Thanks the author for a feedback received | Any (the recipient) | Changes |
list_feedback_requests | The requests asked of you or by you, with a status filter | Any | Read-only |
get_feedback_request | One of your requests | Any (only your own) | Read-only |
create_feedback_request | Asks a colleague for feedback, with an optional message; dry_run shows first who gets the notice | Any | Changes |
create_feedback_about_request | Asks colleagues for feedback about a direct report (up to the space's limit); dry_run shows who gets the notice and the limit | Any (the person's direct leader; the team, about anyone) | Changes |
answer_feedback_request | Answers a request with a feedback | Any (the person asked) | Changes |
decline_feedback_request | Declines a request, with no e-mail | Any (the person asked) | Changes |
delete_feedback | Deletes your feedback; it is gone for both | Any (the author) | Asks to confirm |
cancel_feedback_request | Cancels your pending request | Any (the requester) | Asks to confirm |
get_feedback_dashboard | The space's numbers, by period and group, with the by-theme block, with no text at all; as CSV with format: csv | Admin | Read-only |
get_feedback_settings | The space's nominee limit per request (max_nominees) | Any | Read-only |
update_feedback_settings | Changes the nominee limit per request (1 to 20; empty goes back to 5) | Admin | Changes |
list_feedback_themes | The community's themes and behaviors (include_inactive lets the team see the deactivated ones) | Any | Read-only |
create_feedback_theme | Creates a theme, with an optional description | Admin | Changes |
update_feedback_theme | Renames, describes, deactivates or reactivates a theme | Admin | Changes |
reorder_feedback_themes | Changes the order of the themes | Admin | Changes |
create_feedback_behavior | Adds a behavior to a theme | Admin | Changes |
update_feedback_behavior | Renames, deactivates or reactivates a behavior | Admin | Changes |
reorder_feedback_behaviors | Changes the order of a theme's behaviors | Admin | Changes |
Give and ask. create_feedback takes the person (name, e-mail or id) and body in Markdown; create_feedback_request, the person and an optional message. Both take dry_run to show first who gets the e-mail notice (which never carries the text) and return email_notice. list_feedback_requests filters by box (received, sent) and status (PENDING, ANSWERED, DECLINED, CANCELED). get_feedback_dashboard, for the owner and the admin, returns numbers only. The space: create_space with module: "feedbacks".
Themes and behaviors. The catalog belongs to the community and applies to every Feedback space; the first read creates the default set (5 themes, 6 behaviors each, in the community language). Anyone who opens the space reads the active ones with list_feedback_themes; the owner and the admin create, edit, reorder and deactivate themes and behaviors, which are never deleted. create_feedback_request takes themes (up to 10, by name or id) and behaviors of those themes. create_feedback and answer_feedback_request take, instead of body, sections: one per theme, with observed, impact and suggestion in Markdown (a blank prompt is left out; at least one with text) and the behaviors observed; with dry_run, they return the assembled text in body_preview without sending. get_feedback and get_feedback_request carry the themes only for the two people involved. In get_feedback_dashboard, the by-theme block hides counts of 1 and 2 and is left out with group_id. The sections, like the text, never go into the log of what the assistant does.
Several spaces. The community can have more than one Feedback space, and each feedback and request stays in the space where it was made. list_feedbacks, search_feedback_people, create_feedback, list_feedback_requests, create_feedback_request and get_feedback_dashboard accept space_id: optional with a single space, required with several to give, request and search people. Lists without space_id gather the spaces the person opens; the numbers without space_id add them all up. One pending request per pair in each space. A member names the person by name or id: the e-mail search is for the team, and the assistant points to search_feedback_people.
About another person. create_feedback_about_request takes the person and the nominees (name, e-mail or id), with optional message and themes: each nominee gets their own request, and the answer brings round_id, max_nominees and email_notice. The person's direct leader can ask, and so can the owner or the admin, about anyone; others get the API's refusal. create_feedback takes about (the person it's about, instead of who receives; the feedback goes to their direct leader, and the dry_run says so) and message_to_person, the Message to the person, which answer_feedback_request also takes; the answer brings message_notice. list_feedbacks and list_feedback_requests filter with about (true only those about another person, false only direct ones). The message, like the internal feedback, never goes into the log of what the assistant does. Who reads each part: Feedback › Feedback about another person.
Ask like this: "Ask Carla for feedback on yesterday's presentation." · "Do I have pending feedback requests?" · "Ask Ana and Diego for feedback about Bruno."
Export. get_feedback_dashboard with format: "csv" returns the dashboard as a CSV file (csv, file_name), with the same filters and the same protection (counts of 1 and 2 as "< 3"); Excel stays in the app. See the recipe Download the feedback numbers as CSV. Above 2,000 rows, the file does not come back in the conversation: the answer carries status: "queued", rows and email, and the assistant tells you which address the email with the link (valid for 72 hours) goes to.
Development plans
The individual development plan in the Development Plan space. There are 21 tools. The 14 plan tools, get_current_development_cycle and get_development_cycle_adhesion show up for every role, and Memberfy decides for each plan, at that moment, who reads and who acts: the person, the direct leader, the owner and the admin act; the indirect leader and finance only read; for everyone else, the plan comes back as not found. Deleting a draft and removing an action ask to confirm.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_development_plans | The development plans you can see (scope: mine, team, to_approve, all), filtered by person and status | Any | Read-only |
get_development_plan | One plan, with its actions, delays and what you can do with it | Any (whoever sees the plan) | Read-only |
list_development_plan_team | Your team: direct and indirect reports, with each one's status, progress and delays | Any (whoever leads) | Read-only |
get_development_plan_dashboard | The dashboard per direct leader | Any (the management team: the space; a leader: their team) | Read-only |
create_development_plan | Creates your plan, or a direct report's by name; dry_run shows who gets the e-mail | Any | Changes |
update_development_plan | Changes title, period or actions; the person's change to an approved plan sends it back to approval | Any (the person and whoever approves) | Changes |
delete_development_plan | Deletes a draft plan | Any (the person and whoever approves) | Asks to confirm |
submit_development_plan | Sends your plan for approval | Any (the person) | Changes |
approve_development_plan | Approves a waiting plan | Any (the direct leader, the owner or the admin) | Changes |
return_development_plan | Returns a plan with a required note | Any (the direct leader, the owner or the admin) | Changes |
complete_development_plan | Completes an approved plan | Any (the person and whoever approves) | Changes |
create_development_plan_action | Adds an action, with a due date (due_on); course_id links a course | Any (the person and whoever approves) | Changes |
update_development_plan_action | Changes an action or only its progress (status: TODO, IN_PROGRESS, DONE); course_id links a course | Any (the person and whoever approves) | Changes |
delete_development_plan_action | Removes an action from the plan | Any (the person and whoever approves) | Asks to confirm |
get_current_development_cycle | The PDI cycle open for you, with the deadlines and where you stand | Any | Read-only |
list_development_cycles | The space's PDI cycles, open and closed | Admin or finance | Read-only |
get_development_cycle | One PDI cycle | Admin or finance | Read-only |
create_development_cycle | Opens the PDI cycle: name, deadlines, audience and reminders; dry_run shows it first | Admin | Changes |
update_development_cycle | Changes the cycle's name, deadlines, audience or reminders | Admin | Changes |
close_development_cycle | Closes the cycle and stops the reminders; it doesn't reopen | Admin | Asks to confirm |
get_development_cycle_adhesion | Who sent, got approved or is late in the cycle, per leader | Any (the team: the audience; a leader: their team) | Read-only |
Create and send. create_development_plan takes title, the period (starts_on, ends_on) and actions (each with title, optional description and due_on, as YYYY-MM-DD, in the community's time zone). Without person, the plan is yours, and nobody gets an e-mail until you call submit_development_plan. With person (a direct report's name, an id or an e-mail), the plan is for that person, who gets the notice by e-mail, without the content: use dry_run to show first who gets it. One active plan per person in each space.
Decide. list_development_plans with scope: "to_approve" lists the ones waiting for your decision; approve_development_plan approves and return_development_plan returns with note (required, up to 2,000 characters), which the person reads. The assistant never decides without your yes.
Change an approved plan. If the person changes the title, period or actions of an approved plan (update_development_plan, create_development_plan_action, delete_development_plan_action), it goes back to the leader for approval; the same change by whoever approves keeps it approved. Changing only an action's status never asks for a new approval.
Several spaces. The tools take space_id: optional with a single space, required with several. The space: create_space with module: "developmentPlan".
Recipe. Review my team's development plans (review_development_plans) goes through the team, shows the waiting ones for you to approve or return and points out who has no plan and the overdue actions. See Recipes.
Ask like this: "Create my 2026 plan with three actions: communication course by 04/30, present at the all-hands by 06/30 and mentor an intern by 10/31. Then send it for approval." · "Which of my team's plans are waiting for my approval?" · "Mark the communication course action in my plan as done."
The company cycle. get_current_development_cycle shows the cycle open for the connected person (leaders and the team see it too, even outside the audience; for everyone else, nothing, with a note). list_development_cycles and get_development_cycle belong to the owner, the admin and finance. create_development_cycle (owner and admin) takes name, submit_by, approve_by (YYYY-MM-DD, in the community's time zone), the audience (audience ALL, GROUP with group_id or TAG with tag) and reminder_days (up to 5 numbers from 0 to 60; the default is 7 and 1). Opening sends no e-mail right away, so it doesn't ask to confirm: use dry_run: true to show the cycle and the reminder rule first. update_development_cycle changes the cycle; close_development_cycle asks to confirm, because there's no reopening. get_development_cycle_adhesion gives the adhesion per leader (the team sees the audience; a leader, their team; others get the API's refusal). One open cycle per space.
Action linked to a course. create_development_plan (on each action), create_development_plan_action and update_development_plan_action take course_id (null unlinks); the action comes back with course, with the person's progress. A completed course marks the action as done. See Development Plan › The company cycle and the recipe Open the PDI cycle and follow the adhesion.
Ask like this: "Open the 2027 PDI cycle for everyone, sending by 11/30 and approval by 12/15. Show me first." · "Who on my team hasn't sent the cycle's plan yet?"
Performance review
The team (owner and admin) builds and runs the cycle; the reading and answering tools show up for every role, and Memberfy decides for each item who sees what: the leader, their own team; each person, their own reviews and their own result.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
create_review_cycle | Creates a draft cycle: 90°, 180° or 360° model, period reviewed, answering window, audience and questions | Admin | Changes |
update_review_cycle | Edits the cycle; once open, only title, instructions, closing date, reminders, rating rule and weights | Admin | Changes |
update_review_cycle_questions | Replaces the draft's questions | Admin | Changes |
delete_review_cycle | Deletes a draft cycle | Admin | Asks to confirm |
preview_review_cycle | What opening creates: participants, reviews per relationship and who has no manager | Admin | Read-only |
open_review_cycle | Opens the cycle and e-mails whoever has a review; refuses, with the names, while anyone has no manager | Admin | Asks to confirm |
close_review_cycle | Closes the cycle and calculates the ratings, for good | Admin | Asks to confirm |
release_review_cycle_results | Releases the results; first shows who gets the e-mail | Admin | Asks to confirm |
send_review_reminders | Sends the reminder to whoever has a review pending; the first call shows who gets it | Admin | Asks to confirm |
add_review_assignment | Adds a review to an open cycle | Admin | Changes |
cancel_review_assignments | Cancels a person's reviews (takes them out of the cycle) | Admin | Asks to confirm |
list_review_cycles | The cycles you can see, with the status | Any | Read-only |
get_review_cycle | One cycle, with the dates, the model and the questions | Any | Read-only |
get_review_cycle_progress | Progress per relationship and per person (the leader: their own team) | Any | Read-only |
list_review_cycle_assignments | Who reviews whom in the cycle, per person, with status and dates, never the answers | Admin | Read-only |
list_review_cycle_results | The results of the closed cycle (the leader: their own team) | Any | Read-only |
get_review_result | One person's result in the cycle | Any | Read-only |
get_my_review_result | Your result, after the release | Any | Read-only |
list_my_review_assignments | The reviews you have to answer | Any | Read-only |
get_review_assignment | One of your reviews, with the questions and the saved answers | Any | Read-only |
save_review_answers | Saves answers to one of your reviews, without sending | Any | Changes |
submit_review_assignment | Sends one of your reviews; it can't be edited afterwards | Any | Changes |
create_space takes module: "performanceReview", with mode multi (several cycles) or single (one cycle). A review's answers don't go into the audit log, and who wrote a peer's or a direct report's review shows up in no tool.
Ask like this: "Build the 2026 Review cycle, 180°, for the Technology group, with answers until December 15", "Who still hasn't sent their reviews?", "Which reviews do I have to answer?"
Scale of 2 to 10 levels. create_review_cycle and update_review_cycle accept scale_labels with 2 to 10 distinct names, worst first, draft only (null: the five defaults); each level is worth its position (1 to N). In save_review_answers, rating goes from 1 to N, and so does level in calibration; the 9-box splits the scale into thirds.
Numbers per cycle. list_review_cycles returns, for the owner and the admin (viewer_role team), stats on each cycle: participants (people reviewed), assignments_total, assignments_submitted and assignments_pending, without the canceled reviews (completion is submitted ÷ total). stats is null on a draft and absent for leaders and participants.
Who reviews whom. list_review_cycle_assignments, owner and admin only, shows per person the reviews they receive and the ones they write: who reviews, the relationship, the status (not started, in progress, submitted) and the dates, never the answers. For every other role, the leader and the person included, peer and report anonymity holds. With the cycle open, it suggests send_review_reminders.
Ask like this: "In the 2026 Review cycle, who still hasn't reviewed Ana?"
Peer nomination, calibration, 9-box and matrix
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
nominate_review_peers | Nominates the peers who will review you, within the cycle's minimum and maximum | Any | Changes |
get_my_review_nominations | Your nominations, with status and deadline | Any | Read-only |
list_review_nominations | The nominations to validate (a leader: their direct team's; owner and admin: all) | Any | Read-only |
approve_review_nomination | Approves a nomination; the nominee gets the peer review | Any | Changes |
replace_review_nomination | Swaps a nominee for another, already approved | Any | Changes |
remove_review_nomination | Removes a nomination and cancels the peer review | Any | Asks to confirm |
finalize_review_nominations | Ends nominations now: approves the pending ones and fills in from the hierarchy | Admin | Asks to confirm |
get_review_calibration | The closed cycle's calibration: how many at each level and the adjustment history | Admin | Read-only |
calibrate_review_result | Adjusts a person's final level (and potential, with the 9-box), with a comment | Admin | Changes |
get_review_nine_box | The cycle's 9-box: performance × potential, with the people in each box | Any | Read-only |
get_review_matrix | The cycle's person × topic matrix, without comments | Any | Read-only |
export_review_results_csv | The results as CSV, one row per person | Any | Read-only |
create_review_development_action | Brings a point of the released result into the Development Plan as an action | Any | Changes |
Ask like this: "Nominate Ana, Bruno and Carla as my peers in the 2026 cycle", "Show the Technology team's 9-box", "Take the communication point from my result into my Development Plan, due in March".
Goals & OKRs
Cycles belong to the owner and the admin. The other tools show up for every role, and Memberfy decides for each objective, with the app's rules: a company objective belongs to the team; a group one, to the group's leader or a group above; a personal one, to the person themselves, their direct leader or the team; a restricted one only shows up for whoever can read it.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
create_goal_cycle | Creates a goals cycle (title, period and check-in reminder) | Admin | Changes |
update_goal_cycle | Edits the cycle | Admin | Changes |
close_goal_cycle | Closes the cycle, for good: check-ins and reminders stop | Admin | Asks to confirm |
list_goal_cycles | The goals cycles | Any | Read-only |
get_goal_cycle | One cycle, with what you can create in it | Any | Read-only |
list_objectives | The company → group → person tree, with a filter by group or owner | Any | Read-only |
get_objective | One objective, with the KRs, the progress and the status light | Any | Read-only |
create_objective | Creates an objective with 1 to 20 KRs (parent_id aligns it) | Any | Changes |
update_objective | Edits title, description, visibility and alignment | Any | Changes |
delete_objective | Deletes the objective and its KRs | Any | Asks to confirm |
create_key_result | Adds a KR: type (direction), unit, values, owner and weight | Any | Changes |
update_key_result | Edits a KR | Any | Changes |
delete_key_result | Removes a KR and its check-ins | Any | Asks to confirm |
list_key_result_check_ins | A KR's check-in history | Any | Read-only |
create_key_result_check_in | Records a check-in: current value (or delivered), status light and note | Any | Changes |
list_my_key_results | Your KRs in open cycles; pending_check_in shows only the ones without a check-in in the period | Any | Read-only |
get_review_assignment_objectives | The goals of the period of whoever you review, in the self-review and in the manager's review | Any | Read-only |
direction is increase, decrease, maintain or deliverable. create_space takes module: "goalsOkrs", with mode multi (several cycles) or single (one cycle).
Ask like this: "Create the company objective Grow the community with quality, with the KR activation from 40% to 60%", "Which of my KRs have no check-in?", "Record 52% on activation, at risk."
OKR score. list_goal_cycles, list_objectives and get_objective bring score (0 to 1; for an objective, the weighted average of its KRs; for the cycle, the average of its objectives) and score_band: MET (0.7 or more), PARTIAL (0.4 to 0.69) and MISSED (below 0.4). The cycle's summary counts KRs by those bands, plus those without a check-in.
The current cycle. list_goal_cycles returns next_reminder_on (the next day of the check-in reminder, in the community's time zone; today while the reminder's hour has not passed; null on a closed cycle, with the reminder off or no reminder day left in the period). On an open cycle, the summary also has needs_check_in (the KRs the person can read without a check-in in the reminder period), my_key_results and my_needs_check_in (their own KRs and their own still without a check-in; null on a closed cycle) and top_objectives (up to four objectives they can read, the non-aligned first, then company, group and personal: id, title, level, key_results, progress, score, score_band and health). With KRs of yours pending, it suggests list_my_key_results with pending_check_in.
1:1
They all show up for every role, and Memberfy decides: only the two participants read and change a series; the adherence belongs to the owner, the admin and the indirect leader; the owner and the admin also read every pair's 1:1s, read only. A private note that isn't the asker's never shows up in any answer, and the text of notes doesn't go into the audit log.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_one_on_ones | Your series, with the next meeting | Any | Read-only |
get_one_on_one | One series: next meetings, history and open agreements | Any | Read-only |
create_one_on_one | Starts a series with your direct leader or a direct report (the owner and the admin, between any direct pair) | Any | Changes |
pause_one_on_one | Pauses the series | Any | Changes |
resume_one_on_one | Resumes the series | Any | Changes |
end_one_on_one | Ends the series, for good; the history stays | Any | Asks to confirm |
get_one_on_one_meeting | One meeting: agenda, notes and agreements | Any | Read-only |
reschedule_one_on_one_meeting | Reschedules only this meeting | Any | Changes |
cancel_one_on_one_meeting | Cancels only this meeting | Any | Asks to confirm |
complete_one_on_one_meeting | Marks the meeting as done; topics not discussed move to the next one | Any | Changes |
add_one_on_one_topic | Adds a topic to the agenda | Any | Changes |
reorder_one_on_one_topics | Reorders the agenda | Any | Changes |
update_one_on_one_topic | Edits a topic or marks it as discussed | Any | Changes |
delete_one_on_one_topic | Removes a topic from the agenda | Any | Asks to confirm |
add_one_on_one_note | Writes a shared or private note | Any | Changes |
update_one_on_one_note | Edits a note of yours | Any | Changes |
delete_one_on_one_note | Deletes a note of yours | Any | Asks to confirm |
create_one_on_one_action | Creates an agreement, with an owner and a due date | Any | Changes |
update_one_on_one_action | Edits an agreement or marks it as done | Any | Changes |
delete_one_on_one_action | Deletes an agreement | Any | Asks to confirm |
send_one_on_one_action_to_pdi | Takes an agreement of the report to their Development Plan | Any | Changes |
get_one_on_one_adherence | The adherence per leader: active and paused series, meetings done and canceled in 30 and 90 days | Any (owner, admin and indirect leader) | Read-only |
create_space takes module: "oneOnOnes".
You can also log the 1:1 that happened and read the history by person; and the owner and the admin read every pair's 1:1s, read only (a write of theirs in someone else's pair comes back as observer_read_only). No answer carries someone else's private note, and logged topics, notes and agreements stay out of the audit log.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
log_one_on_one | Logs a 1:1 with your direct leader or a direct report: date (today or before, done; later, scheduled, with no invite), length, topics, shared note, private note and agreements. No e-mail: the other person gets the notice in the bell | Any | Asks to confirm |
update_one_on_one_log | Changes the date, time or length of a 1:1 you logged | Any (whoever logged it) | Changes |
delete_one_on_one_log | Deletes a 1:1 you logged; open agreements stay | Any (whoever logged it) | Asks to confirm |
list_one_on_one_pairs | Your 1:1s by person: last, next and open agreements. With all, every pair in the community, read only | Any (all: owner and admin) | Read-only |
get_one_on_one also takes person (your whole pair history with that person, logged and from the series) and person with with_person (the pair between two people, for the owner and the admin, read only).
get_one_on_one_dashboard (read-only, any role; the API decides) returns the 1:1 space's Manage dashboard, numbers and dates only: adherence, 1:1s held, overdue pairs and pairs that never met, open and past-due agreements and the average time between 1:1s, each with the previous period (none for all); 1:1s per week (per month past 6 months), adherence by leader and by team, and every pair with its status (onTrack, late, never, history). period: all (default), 30, 90 or quarter; leader_id and team_id narrow everything. The owner and the admin see the community; whoever leads someone, their own tree; whoever leads nobody is refused. get_one_on_one_adherence also returns allTime. See 1:1 · Manage.
Ask like this: "Log the 1:1 I just had with Ana", "When was my last 1:1 with Bruno and what did we agree?" See recipe 92.
Ask like this: "When is my next 1:1 and what's on the agenda?", "Add 'vacation plan' to the agenda of the 1:1 with Maria", "Take the English course agreement to her Development Plan."
Time tracking
The working-hours record in the Time Tracking space. There are 38 tools: 20 for the time tracking management (owner, admin and finance), three only for the owner and the admin (reopening a month and setting or removing the allowed radius) and 15 for every role, where Memberfy decides at that moment who reads and who acts: the person sees what is theirs, the direct and indirect leaders see the team, the management team sees everyone; for everyone else, the punch or the timesheet comes back as not found.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
get_time_clock | The server time that counts for the punch, with the community's time zone | Any | Read-only |
get_time_tracking_space | The space as you see it: establishment, your employee record, whether you can clock in and whom to ask | Any (whoever opens the space) | Read-only |
get_time_establishment_prefill | Suggests the establishment from the community's company details | Admin or finance | Read-only |
list_time_establishments | The community's establishments and each one's spaces | Admin or finance | Read-only |
get_time_establishment | One establishment, with its spaces | Admin or finance | Read-only |
create_time_establishment | Registers the employer (CNPJ or CPF, CEI/CAEPF/CNO, legal name, workplace) | Admin or finance | Changes |
update_time_establishment | Changes the employer's details; every change stays in the record | Admin or finance | Changes |
export_time_afd | Generates an establishment's AFD for a period, with the .sha256; 5-minute links | Admin or finance | Read-only |
set_time_tracking_space_establishment | Links the time tracking space to the establishment | Admin or finance | Changes |
list_time_tracking_space_people | Who opens the space and who doesn't have an employee record yet | Admin or finance | Read-only |
list_time_employees | An establishment's employee records | Admin or finance | Read-only |
create_time_employee | Registers a person as an employee (CPF, hire date, job title) | Admin or finance | Changes |
update_time_employee | Changes an employee record | Admin or finance | Changes |
delete_time_employee | Ends a record; the punches already made are kept | Admin or finance | Asks to confirm |
list_time_punches | The punches (scope: mine, team, all), with NSR, hash, IP and location and the outside-the-radius badge (outsideRadius) | Any (the API decides) | Read-only |
get_time_punch | One punch, with the receipt's details | Any (whoever sees the punch) | Read-only |
get_time_punch_receipt | The punch receipt as a PDF, in a 5-minute link | Any (whoever sees the punch) | Read-only |
list_time_rules | The space's rules: the defaults, the ones in effect and the versions | Admin or finance | Read-only |
create_time_rules | Saves a new version of the rules, for the space or a person's exception, with the start date | Admin or finance | Changes |
list_time_holidays | The year's holidays: the national ones and the community's | Any (whoever opens the space) | Read-only |
create_time_holiday | Adds a community holiday | Admin or finance | Changes |
delete_time_holiday | Removes a holiday; a removed national holiday doesn't come back | Admin or finance | Asks to confirm |
list_time_adjustments | The adjustments (scope: mine, to_decide, team, all), filtered by status and month | Any (the API decides) | Read-only |
get_time_adjustment | One adjustment, with the reason and the decision | Any (whoever sees the adjustment) | Read-only |
create_time_adjustment | Requests an adjustment to your time record: include (add, with the time) or disregard (disregard, with the punch), with the reason | Any (the employee) | Changes |
decide_time_adjustment | Approves or rejects an adjustment (rejecting with a note); notifies the person by e-mail | Any (the direct leader; without a leader, the management team) | Changes |
cancel_time_adjustment | Cancels your adjustment request that is still waiting | Any (whoever requested it) | Asks to confirm |
get_timesheet | A person's monthly timesheet | Any (the person, the leaders and the management team) | Read-only |
list_timesheets | The month's totals per person (scope: team, all) | Any (the API decides) | Read-only |
list_timesheet_months | The closed and reopened months, with the history | Any (whoever opens the space) | Read-only |
close_timesheet_month | Closes the month and freezes the totals; each employee gets an e-mail | Admin or finance | Asks to confirm |
reopen_timesheet_month | Reopens a closed month, with the reason | Admin | Asks to confirm |
acknowledge_timesheet_month | Acknowledges your timesheet for a closed month | Any (the employee) | Changes |
export_timesheet_csv | Exports the month as CSV, in a 5-minute link | Admin or finance | Read-only |
export_time_aej | Generates an establishment's AEJ for a period, with the .sha256; 5-minute links | Admin or finance | Read-only |
set_time_tracking_geofence | Sets the time tracking space's allowed radius: place, radius and mode (block or flag) | Admin | Changes |
remove_time_tracking_geofence | Removes the allowed radius; no punch is refused or flagged | Admin | Asks to confirm |
list_time_geofence_refusals | The punch attempts refused by the radius, with the distance | Admin or finance | Read-only |
The assistant doesn't clock in. There is no tool to clock in/out or to accept the IP and location notice: punching is the person's own act, in the app, on the Clock in/out tab. If you ask, the assistant explains this and points to the app. It looks up the punches, the receipts (with the PDF link), the timesheet and the adjustments, requests adjustments and acknowledges.
Set up. create_space with module: "timeTracking" creates the space; get_time_establishment_prefill suggests the employer from the company details; create_time_establishment saves it (with responsible_cpf, the CPF of whoever registers, when you have no employee record; the assistant asks, never makes one up); set_time_tracking_space_establishment links the two; list_time_tracking_space_people shows who still needs a record, and create_time_employee takes the person (name, id or e-mail), cpf, admission_date and job_title.
Rules. create_time_rules saves a new version from effective_from, for the space or, with person, a person's exception. By default it merges what you give into the rule in effect; with replace: true, whatever is missing goes back to the default. Weekdays go by name; overtime.destination is paid or bank, hour_bank.validity_months goes up to 12, night has enabled (on by default) and reduced_hour, and weekly_rest_day goes from 0 (Sunday) to 6, or null for none.
Adjustments. create_time_adjustment is always for your own time record: type: "add" with time (YYYY-MM-DDThh:mm, never in the future) or type: "disregard" with target_punch_id, and reason. decide_time_adjustment approves (approve) or rejects (reject, with note): only the person's direct leader or, for people without a leader, the management team; the sole owner decides their own and the adjustment comes back with selfDecided: true. The decision notifies the person by e-mail and runs on the first call. Reasons and notes stay out of the log of what the assistant does.
Timesheet and files. get_timesheet brings a person's month (month, person), with the totals, the flags, night work (night, nightMinutes) and the hour bank (hourBank, with the batches and their expiry); a closed month comes back with frozen: true. export_timesheet_csv, export_time_afd and export_time_aej return private links that work for 5 minutes (for the AFD and the AEJ, also the .sha256 one): the assistant passes them on right away. CPF, IP, location and links never go into the log of what the assistant does.
Confirmations. These ask for your yes to a summary: delete_time_employee, delete_time_holiday, cancel_time_adjustment, reopen_timesheet_month (with the reason) and close_timesheet_month, which works like a bulk send: the summary says how many people get the e-mail (up to 10 names) and how many adjustments are still waiting for a decision.
Several spaces. The tools take space_id: optional with a single time tracking space, required with several. The AFD and AEJ files are per establishment (establishment_id; without it, the only one).
Recipes. Set up time tracking (set_up_time_tracking) creates the space, registers and links the establishment and registers the employees, asking you for each one's CPF, hire date and job title. Close the time tracking month (close_time_tracking_month) decides the pending adjustments with you, shows the totals and the flags, closes the month after your yes and exports the CSV. See Recipes.
Ask like this: "Who still has no employee record in Time tracking?" · "Show me my September timesheet." · "Request to include my punch-out yesterday at 6 p.m.: I forgot to punch." · "Close September in time tracking and export the CSV."
Allowed radius. set_time_tracking_geofence (owner and admin) saves on the space the place (latitude, longitude), radius_meters (10 to 50,000), mode (BLOCK refuses outside the radius or without a location; FLAG records with the badge) and an optional address, which is only a label; the assistant asks for the coordinates and never makes them up. remove_time_tracking_geofence asks to confirm. list_time_geofence_refusals (time tracking management) lists the refused attempts, which aren't punches. get_time_tracking_space brings fence_note, which explains the mode and the radius to whoever is about to punch, and list_time_punches brings outsideRadius and the distance. The assistant still doesn't clock in. The rule is the company's: see Time Tracking › Allowed radius and the recipe Set the radius for clocking in.
Messages
The 1:1 chat of the Messages panel. The assistant reads and writes only the connected person's own conversations: other people's conversations come back as not found for every role, owner and admin included. With the chat turned off in the community, the tools return the API's refusal.
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
get_my_chat_preferences | Your chat preferences: your status (Available, Busy or Unavailable), show when I've read, whether you can start conversations and your unread messages | Any | Read-only |
update_my_chat_preferences | Changes your chat status (Available, Busy or Unavailable) and turns Read receipts on or off | Any | Changes |
list_chat_online_members | Who is available and online now, with each person's status (Available, Away or Busy; only for someone who is available too) | Any | Read-only |
list_chat_conversations | Your conversations, with the last message and the unread count | Any | Read-only |
get_chat_conversation | One of your conversations, with its messages, newest first | Any (only the two people) | Read-only |
send_chat_message | Sends a message in a conversation or to a person, opening the conversation if there is none | Any | Asks to confirm |
contact_team | Opens (or reuses) the conversation with someone on the team about a padlocked section or space only the team can open; sends nothing | Any | Changes |
mark_chat_conversation_read | Marks one of your conversations as read | Any (only the two people) | Changes |
delete_chat_message | Deletes one of your messages: it becomes "message deleted" for both | Any (only the author) | Asks to confirm |
clear_chat_history | Clears a conversation's history for you only: the messages so far disappear for you, the other person still sees everything; nothing is deleted | Any (only the two people) | Asks to confirm |
list_chat_blocks | The people you blocked | Any | Read-only |
block_chat_member | Blocks a person in the chat; nobody is told | Any | Changes |
unblock_chat_member | Undoes your block; the conversation stays saved | Any | Changes |
get_chat_settings | Whether the chat is on in the community and who can start conversations | Admin | Read-only |
update_chat_settings | Turns the chat on or off, chooses who can start and whether people must add each other first | Admin | Changes |
list_chat_members | The People panel: who is available to chat, online first, with search by name (only for someone who is available too) | Any | Read-only |
list_chat_connections | Your accepted connections in this community | Any | Read-only |
list_chat_connection_requests | Pending connection requests, received (incoming) or sent (outgoing) | Any | Read-only |
request_chat_connection | Asks a person to connect; if they had already asked, the connection is accepted at once | Any | Changes |
accept_chat_connection | Accepts a connection request you received | Any | Changes |
decline_chat_connection | Declines a request you received, without telling the person who asked | Any | Changes |
remove_chat_connection | Cancels your request or ends a connection | Any | Asks to confirm |
send_member_notice | Sends a bell notice to up to 100 people (ids, e-mails or profile links), with a title of up to 120 characters and a text of up to 500; sends no e-mail and runs on the first call | Moderator | Changes |
list_notifications | Your notifications in this community (the bell), with unread and type filters | Any | Read-only |
get_notification | One of your notifications | Any | Read-only |
mark_notifications_read | Marks one notification, or all, as read | Any | Changes |
delete_notification | Removes a notification from your list; what it announced stays | Any | Asks to confirm |
Preferences. update_my_chat_preferences takes available_to_chat and read_receipts, each optional. Available: the person shows in Online now while the app is open and others can start a conversation with them; unavailable: no new conversations and no notices, but existing conversations stay and can be answered. get_my_chat_preferences also says whether the person can start conversations (canStart) and, if not, why (teamOnly, paidOnly).
The chat status. update_my_chat_preferences takes status: available, busy (Busy: gets everything, new conversations and e-mail included, but without sound and without the window popping open) or unavailable (the same as available_to_chat: false). Prefer status: an available_to_chat that contradicts it in the same call is refused and nothing changes. Away cannot be chosen; it is automatic. get_my_chat_preferences returns chatStatus, the chosen status (never AWAY), and, when Busy, suggests going back to Available. list_chat_online_members returns each person's status: AVAILABLE, BUSY or AWAY (yellow, automatic after about 10 minutes with every tab of theirs idle); someone busy or away still gets the message and the e-mail, they may just answer later. Any role, your own status only, no confirmation. See Your chat status and recipes 109 and 110.
update_my_chat_preferences takes show_last_seen (Show when I was last online, on by default) and get_my_chat_preferences shows it. It is reciprocal: off, nobody sees when you were last online, and you don't see other people's either. Any role, no confirmation.
Who is online. list_chat_online_members only works for someone who is available (otherwise, the API's refusal) and never lists anyone unavailable or anyone blocked either way. Someone available but out of the app still gets messages: send_chat_message with to.
Reading. get_chat_conversation returns the messages newest first (limit up to 100; for older ones, before with the next_cursor). A deleted message comes with deleted: true and no text. Reading does not mark it read: mark_chat_conversation_read does (the "Seen" only shows when both people turned on Read receipts).
Sending. send_chat_message takes conversation_id or to (the person's id, name, e-mail or app link) and the text, 1 to 4,000 characters. It asks to confirm: the first call returns a summary with the recipient and the length, never the text; the assistant shows it and repeats with the confirmation_token only after your yes. A new conversation needs the other person available, no block and the rule on who can start; replying to an existing conversation is always allowed unless there is a block. The text never goes into the log of what the assistant does.
Talking to the team. contact_team takes space_id or section_id (one of the two) of a padlocked area whose refusal carries can_contact_team: true (closed by group, or with nothing on sale). It opens or reuses the direct conversation with whoever answers (the first admin online, then the first moderator online; with nobody online, the owner; never finance) and returns the conversation, with who answers in other. No confirmation: it sends nothing and notifies nobody. The request then goes with send_chat_message and the conversation_id, which asks for confirmation. It ignores the who-can-start rule; a new conversation counts toward the new-conversations limit. Refusals: contactTeamNotAllowed (the area isn't padlocked for that person), teamUnavailable (nobody on the team available) and disabled (chat off). See recipe 97.
Deleting and blocking. delete_chat_message asks to confirm and only works for the author. block_chat_member is personal: nobody is told and nobody reads anything; unblock_chat_member undoes it.
For the team. get_chat_settings and update_chat_settings (owner and admin): enabled turns the chat on or off, who_can_start picks EVERYONE, PAID_MEMBERS or TEAM, and start_mode picks FREE (Open) or CONNECTION (Add first). No tool reads another person's conversation.
Clearing the history. clear_chat_history (with conversation_id) asks to confirm and works only for the two people in the conversation, in any mode and even with a block: the messages up to then stop showing for whoever cleared, nothing is deleted and the other person is not told. Conversations carry clearedAt.
People and connections. list_chat_members is the People panel: only people who are available, online first, with q (name) and cursor; it works only for someone who is available too. With Add first (start_mode: CONNECTION in update_chat_settings), a new conversation and a new message need an accepted connection: request_chat_connection (with person: id, name, e-mail or app link) asks, and accepts at once if the person had already asked; list_chat_connection_requests with direction (incoming or outgoing) shows the pending ones; accept_chat_connection and decline_chat_connection answer (declining tells nobody, and the person who asked keeps seeing the request as sent); remove_chat_connection cancels your request or ends the connection and asks to confirm. get_member returns connection and limited: true when you see only the profile card. update_my_chat_preferences also takes availability_notice_seen, which closes the first-time hint.
Notifications. list_notifications lists your notifications in this community (the bell), with unread, type (for example chat.connectionRequested) and cursor; get_notification returns one; mark_notifications_read marks one (notification_id) or, without it, all; delete_notification removes one from the list and asks to confirm (a connection request stays pending: decline it with decline_chat_connection). Each person sees only their own.
Recipes. See my unread messages, Write to someone and See who asked to connect and accept.
Ask like this: "Do I have unread messages? Show me the conversations." · "Write to Ana: I'll be at the meeting at 3 pm." · "Make me available to chat." · "Who asked to connect with me? Accept Bruno."
Messages. Browser and phone notifications: get_my_push_preferences, update_my_push_preferences, list_my_push_devices, remove_my_push_device (asks to confirm) and send_test_push. The categories are chat, channels, team_notices (Team notices, on by default), one_on_ones, upvotes, achievements, workflows and signup_requests (owner and admin). See Browser and phone notifications.
Welcome and First steps
The first-access welcome and the First steps missions, for the owner and the admin.
get_welcome_settings
Read-only
The welcome and the First steps. How the welcome is set: on or off, the mode (required: every new person goes through it before entering; skippable: they may skip), whether it applies to existing members, the screens (1 to 5: title, text, video, rules, fields) and the numbers (completed, skipped, pending). For the First steps: on or off, the missions (1 to 6: complete the profile, first post in a space, answer a form, register for an event, complete a course, each with points and a badge), the final badge and each mission's numbers. The team never goes through the welcome. Minimum role: admin.
Parameters: none.
Ask like this: "How many people have not finished the welcome yet?"
Notes: who is pending: list_members with welcome: pending.
update_welcome_settings
Asks to confirm
Change the welcome. Partial: what is left out stays. screens and missions replace the saved lists, so the assistant reads get_welcome_settings first and sends each kept screen and mission with its id (a mission sent back with its id, kind and item keeps who already did it; without the id it starts from zero). Turning it on needs at least one screen; mode: required locks the community until the person finishes. Always asks to confirm: the summary shows what is on, what changes, a warning when the welcome is about to be turned on and the missions that lose their progress. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
enabled | true/false | No | Turns the welcome on or off |
mode | required or skippable | No | Required or Can skip |
apply_to_existing | true/false | No | When turning it on: existing members also go through it (default: no) |
screens | list, 1 to 5 | No | The screens, in order: title, body, video_url (YouTube, Vimeo or Loom) or video_media_id (an uploaded video, the only one with require_video_finish), rules_text, field_ids |
missions_enabled | true/false | No | Turns the First steps on or off |
missions_show_existing | true/false | No | Existing members also see the card |
missions | list, 1 to 6 | No | The missions, in order: kind, title, the item (space_id, form_id, event_id, course_id), points, badge_id |
final_badge_id | id | No | The badge for whoever completes them all; null removes it |
Ask like this: "Turn on a required welcome with a rules screen and the mission of introducing yourself in the Introductions space, worth 20 points."
Notes: errors come back field by field (screens[0].title, missions[1].form_id…).
Member referrals
Member referrals: each member's link, the report of who brought whom and turning it on or off. None asks to confirm.
get_my_referral
Read-only
Your referral link. Your referral link (the community address with ?ref= and your code), to share, and how many people joined through it. The code is made on the first read. With referrals off, enabled is false and there is no link. Whoever opens the link and joins (or has their signup request approved) within 30 days counts once. Minimum role: any.
Parameters: none.
Ask like this: "What is my referral link, and how many people have I brought?"
get_referral_report
Read-only
Referral report. Who brought new people through the links, one line per person, most referrals first: name, photo, whether they are still in the community, how many they referred and the latest; the totals and pagination. Minimum role: moderator (not finance).
| Parameter | Type | Required | Description |
|---|---|---|---|
from | date YYYY-MM-DD | No | First day the referred person joined |
to | date YYYY-MM-DD | No | Last day (inclusive) |
page | number | No | |
limit | number, up to 100 | No |
Ask like this: "Who brought the most new members in October?"
Notes: who referred a given member is in get_member (referredBy).
get_referral_settings
Read-only
Are referrals on?. Whether the community has referrals on (enabled). Minimum role: admin.
Parameters: none.
Ask like this: "Are member referrals on?"
update_referral_settings
Changes
Turn referrals on. Turns referrals on or off, without confirmation. On: every member gets a link (get_my_referral), and whoever joins through it counts for the referrer (points for the Refer a member action, badge rules, the workflows' Referred someone trigger). Off: links stop counting; what was already counted stays. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
enabled | true/false | Yes |
Ask like this: "Turn on member referrals."
Privacy
Each person's requests about their own data: download your data, delete your account and, for the team, handle an erasure request. Every tool that exports or deletes asks for confirmation.
get_my_data_export
Read-only
Your data export. The latest export of your data in this community: the status (queued being built, ready until expires_at, 72 hours, failed, refused, expired), who asked for it (you, or the team at your request), can_request and next_available_at (one request at a time; a new one only 24 hours after the last one that did not fail). When it is ready, delivery_note says the link is in your e-mail: the assistant never hands over the file. Minimum role: any.
Parameters: none.
Ask like this: "Is my data file ready yet?"
export_my_data
Asks to confirm
Export my data. Asks for a ZIP with everything the community keeps about you (profile, consents, purchases, subscriptions, registrations, posts, messages, forms, attendance, certificates, points, courses, activity and the files you uploaded). Through the assistant, no password is asked; that is why the link goes to your e-mail only, never through the conversation, and you download it by signing in with your account. The file lasts 72 hours. Minimum role: any.
Parameters: none (only the confirmation code, on the second call).
Returns: on the first call, the summary and the confirmation code; on the second, the request as queued. With an export being built, export_in_progress; before the 24 hours, export_too_soon with next_available_at.
Ask like this: "Export my data from this community."
Notes: only for the connected person. For someone else, the team uses export_member_data. See Download your data.
export_member_data
Asks to confirm
Export a member's data. Asks, at the person's own request, for the same ZIP as export_my_data. The link goes to the member's e-mail, and only they can download it: the team never gets the file. Only on a role below yours (the admin on moderator, finance and member; the owner also on the admin). Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | text | Yes | The id (from list_members), e-mail, name or link of the member |
reason | text, 3 to 1,000 | Yes | Where the request came from; goes to the Logs |
Ask like this: "Maria ([email protected]) asked for her data by e-mail today. Generate the export."
Notes: the same one-at-a-time and 24-hour rules. For your own data, use export_my_data.
get_my_account_deletion
Read-only
Your deletion request. Your request to delete your account in this community, or nothing: the source (you, or the team at your request), scheduled_at (the effective date) and paid_until. Minimum role: any.
Parameters: none.
Ask like this: "When will my account be deleted?"
delete_my_account
Asks to confirm
Delete my account. Requests the deletion of your account in this community. The first call, without a password, returns the summary (the effective date, which is the later of 30 days and the end of the period already paid; subscriptions stop renewing, with no refund) and the confirmation code; the second carries the code and your password, which is never stored nor shown in the assistant's log. Minimum role: any, except the owner.
| Parameter | Type | Required | Description |
|---|---|---|---|
password | text | On confirmation | Your password, asked after the summary |
reason | text, up to 1,000 | No | Why you are leaving |
Ask like this: "I want to delete my account in this community."
Notes: the request disconnects the assistant: the person's AI assistant connections and API keys are turned off, this one included. To cancel before the date, use the e-mail link, the app or cancel_my_account_deletion from a new connection. The owner cannot delete their account while the community exists. Without a password, the team handles it with erase_member_data. See Delete your account.
cancel_my_account_deletion
Asks to confirm
Cancel the deletion. Cancels your deletion request before the effective date: everything goes back as it was, subscriptions included. The assistant connections and API keys turned off by the request do not come back on their own. A deletion done by the team cannot be canceled. Minimum role: any.
Parameters: none (only the confirmation code, on the second call).
Ask like this: "I changed my mind: cancel the deletion of my account."
erase_member_data
Asks to confirm
Erase a member's data. Handles a member's erasure request, including someone without a password. There is no period to change your mind and it cannot be undone: subscriptions stop renewing, and the member's sessions, assistant connections and API keys end right away; afterwards, the profile is anonymized. Only on a role below yours, never the owner. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
member | text | Yes | The id (from list_members), e-mail, name or link of the member |
reason | text, 3 to 1,000 | Yes | Where the request came from; goes to the Logs |
Ask like this: "Bruno ([email protected]) asked us by e-mail to erase his data. Handle the request."
Notes: confirm the identity of whoever asks first. See Handle an erasure request.