Aller au contenu

Tools · Community and structure

MCP tools for the community's structure: the connection's context, sections and spaces, opening a link copied from the app, creating, editing, reordering and deleting sections and spaces, who sees each one, moving a space to another section, the community settings (including the language), the e-mail for sale notices and the API keys.

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

The starting point of every conversation and the shape of the community: which community and role the assistant is in, which sections and spaces exist, and creating, reordering, adjusting or deleting that structure, including who sees each space. This is also where the assistant understands a link you paste into the conversation, and where it views and changes the community settings (name, colors, logo, SEO, language and entry rules) and the e-mail that receives sale notices.

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

In short

ToolWhat it doesMinimum roleType
get_community_contextCommunity, role, sections and spaces with ids: the starting pointAnyRead-only
get_connection_diagnosticsWhether the assistant's tool list is up to dateAdminRead-only
list_spacesSections and spaces, filterable by moduleAnyRead-only
list_space_updatesWhat is new in your spaces since your last visitAnyRead-only
open_linkSays what a link copied from the app (or an id) isAnyRead-only
create_sectionCreates a menu sectionAdminChanges
create_spaceCreates a space in a sectionAdminChanges
update_spaceChanges a space's name, description, icon or visibility, or moves it to another sectionAdminChanges
update_sectionChanges a section's name, description or icon, what whoever has no access sees, or makes it the home sectionAdminChanges
reorder_sectionsPuts the menu sections in a new orderAdminChanges
reorder_spacesPuts a section's spaces in a new orderAdminChanges
get_space_accessWho gets into a space or a section: groups, products, plans and badgesTeamRead-only
update_space_accessWho sees a space or a section, and who posts in the spaceAdminChanges
delete_sectionDeletes an empty sectionAdminAsks to confirm
delete_spaceDeletes a spaceAdminAsks to confirm
get_community_settingsThe community's settings: name, colors, images, SEO, language, entryAdminRead-only
update_community_settingsChanges name, logo, favicon, SEO, language and entry rules (the colors belong to the theme)AdminChanges
update_community_appearanceChanges the logo for dark backgrounds (the mode and the menu belong to the theme)AdminAsks to confirm
get_notification_settingsThe e-mail that receives sale notices and the recovery e-mailAdminRead-only
update_notification_settingsChanges the sale notices e-mail and turns the recovery e-mail on or offAdminChanges
get_email_statsThe delivery numbers of the community's e-mailsAdminRead-only
list_integrationsYour API keys (owner and admin: the whole community's, the webhooks and the ready-made integrations), without secretsAnyRead-only
get_email_notice_recipient_countHow many people will get the e-mail notice of a publicationModerator or financeRead-only
get_email_providerWhether e-mails leave through the community's Resend account, the status and the senderAdminRead-only
update_email_providerChanges the sender of the Resend accountAdminChanges
verify_email_providerSends the Resend account's verification e-mailAdminChanges
disconnect_email_providerDisconnects the Resend account; everything leaves through Memberfy againAdminAsks to confirm
list_video_keysThe Bunny and Cloudflare signing keys, without the valueAdminRead-only
update_video_keySaves or replaces a video provider's signing keyAdminChanges
verify_video_keyChecks the key with one of the provider's videosAdminChanges
delete_video_keyDeletes a video provider's signing keyAdminAsks to confirm

get_community_context

Read-only

Community context. The starting point: says which community the connection is in, with which role, and lists the sections and spaces with their ids. Minimum role: any.

Parameters: none.

Returns: the community (id, name, address), you (role and name), the connection's scopes (read, write), the sections (id, title, whether it's the home section, visibility) with each section's spaces (id, title, module, visibility; the padlock as in list_spaces), the order in which things need to be created, the icons available for spaces (available_icons, with what each one is for) and member_entry: whether Memberfy has suspended joining and sales for the community (for the team, also the reason and the date). See Suspension of joining and sales.

Ask like this: "Which community are you connected to, and with what role?" · "What spaces does the community have?"

Notes: assistants usually call this tool on their own at the start of each conversation. The creation order it returns is the same as in Creation order.

list_spaces

Read-only

List sections and spaces. The sections and spaces, with id, module and visibility, filterable by module. Minimum role: any; each person sees what they can see. Each space carries layout, the display (null is the module's default).

ParameterTypeRequiredDescription
moduletextNofeed, content, courses, events, storefront, gallery… Returns only the sections that have spaces of that module

Returns: the sections with their spaces, as in get_community_context. A Courses space carries its mode (single or multi). A Feed space carries its feed_scope (space or section) and feed_widgets, with the default filled in.

With For those without access, a section or space the person can't open, but sees with a padlock, comes with locked: true and lock_reason (signIn, plan, product, subscription or group, never the group's name). The team also sees locked_display (what whoever has no access sees) and admin_only (true: only the team gets in). The assistant never picks a padlocked space to post or act in; when it opens one, it gives the reason and offers the way in: the Store (list_spaces with module: storefront) for a purchase, or the plans (quote_plan_change) for a subscription. In an area closed by group (or with nothing on sale), the refusal carries can_contact_team; when true, the assistant offers contact_team, which opens the conversation with the team, and then send_chat_message with the request (see recipe 97). When the way in is a plan and the area names no specific plan, the refusal says "Any paid plan opens it: see the community plans."

In an area closed by a badge, the refusal carries the earnBadge action, badges (public ones only, with the description of how to earn them) and has_hidden_badge; the assistant says "Earning the badge Mentor opens it" or, when the badge is private, "Earning a badge opens it: ask the community team how."

In an area closed by a level, the refusal carries the earnPoints action, level and, for a member, progress (the points, points_to_go and what is missing this week); the assistant says the level, the points to go and the week's missing activity, and suggests get_level_progress. A visitor gets only the level.

Ask like this: "Which one is the courses space?" · "List the event spaces."

list_space_updates

Read-only

List what is new in my spaces. For each Feed, Content and Events space you open, how many new items arrived since your last visit to it (other people's posts in Feed and Content, published events in Events), with the sum per section and the total. They are the same numbers as the menu badges. Minimum role: any.

ParameterTypeRequiredDescription
include_zeroyes or noNotrue also lists the spaces with nothing new (count 0)

Returns: the spaces with news, most first, each with space_id, title, section_id, section_title, module, count and last_visit_at (null: never opened); the sums per section and the total. A space you cannot open never appears.

Ask like this: "What is new in my spaces?" → list_space_updates {} · "And the ones that are up to date?" → list_space_updates {"include_zero": true}

Notes: the visit is recorded when you open the space in the app; reading through the assistant does not reset the counter. To read the news, the assistant uses list_posts (Feed and Content) or list_events (Events) with the space_id.

Read-only

Open an app link. Takes a link from your community (or a bare id or slug) and says what it is, with its id, title, space and a summary. Minimum role: any.

ParameterTypeRequiredDescription
linktextYesThe app address, a path such as /aprender/cursos/excel, an id or a slug

It understands the app's addresses: space (/section/space), post, event, course, certificate (from inside the space or from the public verification page), call for papers and proposal (?proposal=), plan (/pricing/…) and subscription (/billing?subscription=…), including the old addresses the app redirects.

Ask like this: "What is this link? https://yourcommunity.com/aprender/cursos/excel-do-zero"

When you open an event link, the result says whether it issues a certificate (with the setting for owners and admins, and the state of their own certificate for whoever confirmed attendance).

Notes: it only works with links from the connected community. A link from another community comes back as "That link belongs to another community", even if you manage both: connect the other one separately.

create_section

Changes

Create section. Creates a menu section, such as Learn or Community. Spaces live inside sections. Minimum role: admin.

ParameterTypeRequiredDescription
titletext, up to 255YesThe name in the menu
descriptionplain textNoNo formatting: Markdown marks are stripped
visibilitypublic, members, plan, privateNoWho sees the section. See Visibility and access
locked_displayhide, section, section_and_spacesNoWhat whoever has no access sees: nothing, only the section line with a padlock, or the section and its spaces with a padlock (the default). See For those without access

Returns: the new section, with the id create_space needs.

Ask like this: "Create a section called Learn, visible to members only."

create_space

Changes

Create space. Creates a space in a section, with the module that defines what it is. Minimum role: admin.

ParameterTypeRequiredDescription
section_ididYesFrom get_community_context or create_section
titletext, up to 255Yes
modulefeed, content, courses, events, storefront, gallery, ranking, url, certificates, call4papers, surveys, forms, recognition, feedbacks, developmentPlan, timeTracking, networkingYesFeed, Content, Courses, Events, Store, Gallery, Engagement, Link, Certificates, Call for papers, Surveys or Forms (forms; afterwards, create_form). timeTracking is Time Tracking: afterwards, link the establishment with set_time_tracking_space_establishment. See Modules
external_urlweb addressNoOnly for the url module: the address the space opens
iconone of the icons in the listNoThe space's icon. See Icons. Without it, Memberfy picks one from the title and the module
descriptionplain textNoNo formatting: Markdown marks are stripped
visibilitypublic, members, plan, privateNo
locked_displayinherit, hide, showNoWhat whoever has no access sees: same as the section (the default), nothing, or the space with a padlock
feed_scopespace, sectionNofeed module only: space shows only this space's posts, section brings together every space in the section. Without it, the section's only Feed starts as section and the next ones as space. See What this feed shows
feed_widgetsevents, trending, new_members, leaderboard (yes or no)Nofeed module only: the side column widgets. Without it, events and trending on, the other two off.
networkingobject: preset (COMMUNITY_MENTORING, COMPANY_MENTORING, BUSINESS, EVENT, CUSTOM) and the program optionsNoOnly in the networking module: the model fills in every option, and any options sent along apply on top. See Tools · Networking.
modesingle, multiNoIn the courses, surveys and forms modules: multi (a list, the default) or single (A single course, One survey or One form: the space opens straight into the item and refuses a second one)
courseobject: title, level, descriptionNoOnly in the courses module, in single: creates the course, as a draft, together with the space. On its own, it already implies single
layouttext or nullNoThe space's display, among those the module offers (layouts in list_space_modules); null goes back to the module's default. showcase (Showcase) is Courses only: in another module, the request is refused with the way to list_space_modules

Returns: the created space, with its id and icon (and the course, if course was sent).

Ask like this: "Create a Feed space called Announcements in the Community section, with the megaphone icon."

"Create a Courses space as a showcase" → create_space {"section_id":"…","title":"Courses","module":"courses","layout":"showcase"}; the assistant then suggests the poster cover on the courses (cover_format: "POSTER").

Notes: for a complete course or event, create_course and create_event create the space along with it. In a Call for papers space, the suggested next step is opening the first call (create_call_for_papers); in a Surveys space, creating the survey (create_survey) with the space_id. Spaces have no cover image.

update_space

Changes

Edit space. Changes the name, description, icon or visibility of an existing space, or moves it to another section. Only what is sent changes. Minimum role: admin.

ParameterTypeRequiredDescription
space_ididYesFrom list_spaces
titletext, up to 255No
descriptionplain textNoNo formatting: Markdown marks are stripped
iconone of the icons in the listNoThe space's icon. See Icons. Without it, Memberfy picks one from the title and the module
visibilitypublic, members, plan, privateNoFor a private space with groups, products or plans, use update_space_access
locked_displayinherit, hide, showNoWhat whoever has no access sees: same as the section, nothing, or the space with a padlock
section_ididNoMoves the space to this section
modesingle, multiNoOnly in a Courses or Surveys space: switches the mode. For single, the space can have at most one course or one survey (drafts, archived and closed ones count); with more, the switch is refused and nothing is deleted
feed_scopespace, sectionNoFeed spaces only: space shows only this space's posts, section brings together every space in the section. Changes no other setting of the space
feed_widgetsevents, trending, new_members, leaderboard (yes or no), or nullNoFeed spaces only, owner and admin: turns the side column widgets on or off; only the keys sent change, and null goes back to the default (events and trending on). On another module the API refuses.
layouttext or nullNoThe space's display, among those the module offers (layouts in list_space_modules); null goes back to the module's default. showcase (Showcase) is Courses only: in another module, the request is refused with the way to list_space_modules

Returns: the updated space.

Ask like this: "Swap the icon of the Jobs space for a briefcase." · "Give each space in the Learn section a different icon, matching its theme."

update_section

Changes

Edit section. Renames a menu section, changes its description or icon, or makes it the home section. Only what is sent changes. Minimum role: admin.

ParameterTypeRequiredDescription
sectionid, address or nameYesFrom get_community_context
titletext, up to 255No
descriptionplain textNoNo formatting: Markdown marks are stripped
icontextNo
is_homeyes or noNoThe section that opens first
locked_displayhide, section, section_and_spacesNoWhat whoever has no access sees: nothing, only the section line with a padlock, or the section and its spaces with a padlock
badge_idslist of ids or namesNoPrivate section: the badges that unlock the section (from list_badges). Absent keeps the ones that already unlock it; [] removes them all
min_levelnumber or idNoThe minimum level (1 is the first, or the id from get_ranking_levels): whoever is at it or above gets in. null removes; absent keeps

Ask like this: "Rename the Learn section to Courses and make it the home section." · "Show the Club section with a padlock to whoever doesn't subscribe." (calls update_section with locked_display: section_and_spaces)

Notes: who sees the section changes with update_space_access. locked_display has no effect on a public section or on a team-only one (Private with nobody on the list), which never shows with a padlock.

reorder_sections

Changes

Reorder sections. Puts the menu sections in a new order, top to bottom. The ones left out keep their order, after these. Minimum role: admin.

ParameterTypeRequiredDescription
section_idslist of idsYesFrom get_community_context, in the new order

Ask like this: "Put the Events section right after Community."

reorder_spaces

Changes

Reorder spaces. Puts a section's spaces in a new order. The ones left out keep their order, after these. Minimum role: admin.

ParameterTypeRequiredDescription
sectionid, address or nameYesThe section
space_idslist of idsYesFrom list_spaces, in the new order

Ask like this: "In the Learn section, put the Excel from Scratch space first."

Notes: to move a space to another section, use update_space with section_id.

get_space_access

Read-only

See who gets in. The Who gets in of a space or a section: the visibility and, when private, the groups, products, plans and badges (any one is enough). For a space, also what its section requires on top (required_by_section) and the products that open it from the products screen (access_from_products); admin_only: true when only the team gets in. Minimum role: team (owner, admin, moderator and finance). Also the minimum level (min_level: id, level, name, min_points), when there is one.

ParameterTypeRequiredDescription
space or sectionid, link, slug or nameOne of the twoThe space or the section

Ask like this: "Who gets into the Veterans' Room?"

Notes: to change it, use update_space_access.

update_space_access

Changes

Change who sees a space. Sets who sees a space or a whole section and, in a space, who can post. Minimum role: admin.

ParameterTypeRequiredDescription
space or sectionid, link, address or nameOne of the twoThe space or the section
visibilitypublic, members, plan, privateNoPublic, members, any active subscription, or private
group_idslist of idsNoWhen private: the groups that get in (from list_groups)
product_idslist of idsNoWhen private: the products whose purchase unlocks it (from list_products)
plan_idslist of idsNoWhen private: the plans whose subscription unlocks it (from list_plans)
badge_idslist of ids or namesNoWhen private: the badges that unlock it (from list_badges; private ones count). Absent keeps the ones that already unlock it; [] removes them all
min_levelnumber or idNoThe minimum level (1 is the first, or the id from get_ranking_levels): whoever is at it or above gets in. null removes; absent keeps
can_createanyone, staff, adminsNoSpace only: Anyone, Staff or Admins can post

Returns: the updated space or section.

Ask like this: "Make the Excel from Scratch space visible only to people who bought the course product or subscribe to the Student plan."

Notes: the groups, products and plans you send replace the ones that were there; any one of them is enough for a person to get in. A space is never more open than its section. It changes who sees what right away: ask the assistant to show you what will change first, if you want to check. See Visibility and access.

Notes: each list sent (group_ids, product_ids, plan_ids, badge_ids) replaces only that list; the ones left out stay as they are. To check first, get_space_access.

delete_section

Asks to confirm

Delete section. Deletes a menu section. The section must be empty: if it still has spaces, the deletion is refused; delete them first with delete_space. Minimum role: admin.

ParameterTypeRequiredDescription
sectionid, address or nameYes

Returns: on the first call, the section, the spaces still in it (they must be deleted first) and the confirmation code.

delete_space

Asks to confirm

Delete space. Deletes a space, and what it holds, from the menu. Minimum role: admin.

ParameterTypeRequiredDescription
spaceid, link, address or nameYes

Returns: on the first call, the space, the module and the section, and the confirmation code.

get_community_settings

Read-only

View community settings. The community's settings as they are. Minimum role: admin.

Parameters: none.

Returns: the name, the description, the colors (primary and secondary in hex, and the full scale), the logo, the favicon, the sharing image, the SEO, the entry rules (open sign-up, sign-up model, visitors), moderation and engagement. Nothing secret, such as integrations or DNS. From Google Analytics come the ID and, for the API secret, only whether it is set and its last 4 characters.

Ask like this: "What are the community's colors and SEO right now?"

Minimum age: also returns minimum_age (16 when the community has not set another) and serves_minors. See Minimum age.

AI assistant access: get_community_settings also returns assistant_access (members, staff, admins), and the moderator and finance can read it too. Writing the three switches (assistant_members, assistant_staff, assistant_admins) is for the owner only; the reply says who lost access, and the owner never locks themselves out. See General settings.

For a Courses space, the summary says how many courses will be deleted with it, for example: "Warning: this is a Courses space. Deleting it also deletes its 1 course. Enrollments and certificates already issued stay as they are, and no new certificates will be issued from those courses." (plural: "Warning: this is a Courses space. Deleting it also deletes its N courses. Enrollments and certificates already issued stay as they are, and no new certificates will be issued from those courses."). Certificates already issued stay valid.

For the owner, shows the storage and monthly upload usage against the limits, with the warning (read-only; the platform sets the limits).

update_community_settings

Changes

Change community settings. Changes the settings; only what is sent changes. Minimum role: admin.

ParameterTypeRequiredDescription
name, descriptiontextNoThe community's name and description
seo_title, seo_descriptiontextNoSee Images and SEO
google_site_verification, bing_site_verificationtext or nullNoThe Google Search Console and Bing Webmaster Tools verification code: the code or the whole <meta> tag (only the code is kept); null or empty removes it. See Verify the community on Google and Bing
signup_modeopen, approval, closedNoWho can join: Open, With approval (sign-ups become requests, see list_signup_requests) or Closed. Don't send it together with signup_open. When leaving approval, the answer says how many requests stay in the queue (pending_signup_requests)
signup_openyes or noNoAnyone can sign up (with signup_mode available, prefer it)
signup_modelFREE, PAIDNo
guest_accessyes or noNoVisitors see what is public
content_moderationyes or noNo
global_rankingyes or noNo
languagept-BR, pt-PT, en-US, es-ES, es-MX, es-AR, it-IT, de-DE, de-AT, de-CHNoThe community's language: the one used for e-mails and for anyone who hasn't picked a language yet. See Languages
assistant_memberstrue/falseNoOwner only. Lets members use the AI assistant
assistant_stafftrue/falseNoOwner only. Lets in moderators, finance and admins
assistant_adminstrue/falseNoOwner only. Lets in only the admins (use with assistant_staff off to restrict further)
member_api_keystrue/falseNoOwner only. Members may create personal API keys (the team always may); off, members' keys stop at once, without being deleted, and come back when it's turned on again
minimum_agenumber from 16 to 99, or nullNoOwner only. The minimum age to have an account; null or 16 go back to the platform's 16
serves_minorstrue/falseNoOwner only. This community serves minors
linkedin_idnumberNoThe community's LinkedIn page ID, for certificates
ga_api_secrettext, 8 to 100 (letters, digits, _ and -)NoThe GA4 Measurement Protocol API secret; null clears it. With it, Memberfy sends your GA4 the purchases and refunds. It never comes back: the summary shows only the last 4 characters and the call log hides it. See Google Analytics
logo_url or logo_base64link or fileNoThe logo
favicon_url or favicon_base64link or fileNoThe favicon
share_image_url or share_image_base64link or fileNoThe image shown when someone shares the link

Returns: the applied settings, with the before → after of each field.

Ask like this: "Change the primary color to #4F46E5 and use this logo: https://…"

Notes: all of this shows to the whole community as soon as the call runs; to undo it, ask again with the old value, which is in the before → after. Domain and integrations can't be changed here. See General settings.

Member pages. public_member_pages (true or false, off by default) turns on member pages that open without signing in, for people who set their Header to Public. member_page_ceilings is the most open level allowed per section: header and about PUBLIC or MEMBERS; location, experience and activity PUBLIC, MEMBERS or PRIVATE; fields MEMBERS or PRIVATE. Only the sections sent change; null goes back to the default. Owner and admin; get_community_settings shows both. See Your profile.

Drops in comments. drops_in_comments (true or false, off by default; owner and admin) turns on Drops in post and short-post comments, like the app's Allow Drops in comments switch. See Drops.

update_community_appearance

Asks to confirm

Change the logo for dark backgrounds. Uploads, replaces or removes the Logo for dark backgrounds, always with confirmation, showing the before → after. The mode and the menu belong to the theme: see Themes. Minimum role: admin.

ParameterTypeRequiredDescription
dark_logo_url or dark_logo_base64link or fileNoThe Logo for dark backgrounds; ideally a PNG with a transparent background. It does not replace the regular logo
remove_dark_logoyes or noNoRemoves the logo for dark backgrounds

Ask like this: "Use this logo for dark backgrounds: https://…": the first call returns the summary (before → after) and the confirmation_token; the change only applies after your yes.

Notes: get_community_settings shows the theme in appearance (mode, effective_mode, dark_logo_url, dark_mode_allowed and sidebar_default, read from the active theme). Only Memberfy enables the dark theme, never the assistant. See Dark mode.

get_notification_settings

Read-only

See sale notices. Where the community's notices go: the e-mail that receives a notice for every sale., and whether the abandoned-cart recovery e-mail is on (abandonedCartEmailEnabled). Minimum role: admin.

Parameters: none.

Ask like this: "Who gets the notice when a sale comes in?"

update_notification_settings

Changes

Change sale notices. Sets the e-mail that receives a notice for every sale and turns the abandoned carts' recovery e-mail on or off. It only changes what you ask for: the other field stays as it is. Runs on the first call, without confirmation. Minimum role: admin.

ParameterTypeRequiredDescription
sales_notification_emaile-mailNoEmpty ("") turns the notices off
abandoned_cart_email_enabledyes or noNoTurns the recovery e-mail on or off

One of the two is required.

Ask like this: "Send the sale notices to [email protected]." · "Turn on the recovery e-mail for abandoned carts."

See Sales notices and Abandoned carts.

Icons

Spaces use the same icons as the dashboard picker. The assistant gets the list with what each one is for (in get_community_context, field available_icons, and in the tool descriptions) and is told to pick by theme, without always repeating the same one. If it doesn't pick, Memberfy picks from the title (Live schedule gets calendar, Jobs gets briefcase) or, with no clue in the title, from the module (Courses gets book-open, Gallery gets image).

Some examples: calendar (events, schedule), book-open (courses, lessons), graduation-cap (training, mentoring), megaphone (announcements), message-square (forum, questions), briefcase (career, jobs), image (gallery, photos), trophy (engagement, challenges), shopping-bag (store), crown (premium, VIP), lock (private).

get_connection_diagnostics

Read-only

Connection diagnostics. Tells whether the tool list the assistant is using is up to date. Minimum role: admin (owner or admin).

ParameterTypeRequiredDescription
connection_ididNoWithout it, this conversation's connection

Returns: the assistant, who authorized it and when, the server version and the list the connection would get now (the list's code and how many tools), what it received last time, the last call and the last attempt to use a tool it doesn't have, and listUpToDate. When listUpToDate is false, the assistant has the old list: open a new conversation or reconnect the connector.

Ask like this: "One of your calls failed. Is your Memberfy tool list up to date?"

get_email_stats

Read-only

Community e-mails. The delivery numbers of the e-mails the community sent (invites, certificates, notices…). Minimum role: admin.

Parameters: none.

Returns: total, sent, failed, pending, delivered, opened, clicked, bounced and complaints, with the rates.

Ask like this: "Did the invites arrive?"

get_email_notice_recipient_count

Read-only

How many will get it. The "N people" of the Notify by e-mail box: how many people will get the new content notice of a publication, already without those who turned the category off and without you. Nobody sees a person's preference. Minimum role: moderator or finance.

ParameterTypeRequiredDescription
typeevent, course, call_for_papers, survey, post, download, productYesThe item type
item_ididNoThe item, when it already exists
space_ididNoThe space, to count before the item exists
visibilitypublic, members, plan, privateNoVisibility, to count an event or post before it exists

Returns: recipient_count and, for an item that already sent its notice, already_notified. See New content notices by e-mail.

Ask like this: "If I publish this event now, how many people get the e-mail?"

list_integrations

Read-only

Integrations. What is connected to the community from outside: the personal API keys that a CRM, n8n or a script use to call the API and, for owner and admin, the community's webhooks and ready-made integrations. It only lists: creating, renaming, changing IPs and revoking a key; creating, editing, testing, resending, disabling and deleting a webhook; and turning on, testing, disabling and removing an app, happen on screen only; no secret or credential ever comes back. Minimum role: any (the whole community's keys, the webhooks and the apps: owner or admin).

ParameterTypeRequiredDescription
scopemine, communityNomine (default): your keys. community: everyone's, only for owner and admin; other roles get a refusal
member_idmember idNoWith scope: community: only that person's keys
statusactive, revoked, expired, stoppedNoOnly the keys in that status (stopped: the owner left the community)
typeapi_keys, webhooks, appsNoA single type. Without it, everything your role sees. webhooks and apps are for owner and admin only; other roles get a refusal

Returns: each key with its name, the key start (mfk_7Hq2Lx9a…), the scopes (module and level, with the screen's names in your language: Bookings · read), the status, the owner, the allowed IPs, the last use, the last refused IP, the expiration and, if revoked, when and by whom. For owner and admin, in any scope, the webhooks come too: the URL masked in the middle (never the full one or the secret), the description, the events, the status (ACTIVE, DISABLED, DISABLED_FAILING: disabled after failures), whether it uses fixed IPs, the last successful delivery, the failures in a row, the last delivery and, when it's failing, the latest failed deliveries (without the body), plus the community's webhook limit. And the apps (Discord, Slack, Telegram, RD Station, HubSpot) that were ever turned on, on or off: the name, the status (ACTIVE, DISABLED, DISABLED_FAILING), the events, the last successful delivery, the failures in a row, when it was turned on and changed and, when it's failing, the latest failed deliveries (without the body). The app's settings never come back, not even masked; the Zapier, Make and n8n shortcuts show up as webhooks. If the integrations service doesn't answer, the keys still come, with a notice. On the community list, it suggests list_activity_logs with source: apiKeys to see what the keys did; list_logs with type: apiKeys reads the same in the Logs.

Ask like this: "Which API keys do I have?" · "Is any webhook failing? Why?" · "Is HubSpot on? Did it fail?" · "Which community keys are active, and whose are they?"

E-mail campaigns

Draft, audience, test and send of an e-mail campaign. The tools live on this page, under Community and structure.

ToolWhat it doesMinimum roleType
list_campaignsLists the campaigns, with the last send and the numbers; status and the send period sent_from/sent_toTeam (owner, admin, moderator, finance)Read-only
get_campaignOne campaign: subject, blocks, audience, status and the 10 latest sends, with totals for delivered, opens, clicks, bounces and complaintsTeamRead-only
create_campaignCreates a draft (text, button and image blocks; audience); sends nothingTeamChanges
update_campaignEdits a draft; blocks and audience replace the whole valueTeamChanges
preview_campaign_audienceWho would receive it: how many in the selection, how many the exclusion removed, how many are left out and why, and a sample with masked e-mailsTeamRead-only
send_campaign_testSends the campaign only to your own e-mail, with [Test] in the subject; does not use the quota (up to 10 per hour)TeamChanges
send_campaignSends now to the whole audience, with confirmation and consentOwner or adminAsks to confirm
get_campaign_quotaHow many sends the community used and still has today, this week and this month, and when it resets; recipients.viaOwnProvider counts what left through the community's Resend accountTeamRead-only
delete_campaignDeletes a draft (a sent campaign stays in the history)TeamAsks to confirm
list_campaign_opt_outsWho unsubscribed, with masked e-mail, scope, date and sourceTeamRead-only
list_campaign_variablesThe per-recipient campaign variables ({{nome}}, {{lider}}…), with name, description and exampleTeamRead-only
create_campaign_from_contentCreates a campaign draft from a published post (content_id), with the audience of people who can access it; sends nothingTeamChanges

From a post. create_campaign_from_content (content_id, from list_posts) does what Create email does in the app: it creates the draft with the title, the subtitle, the cover, the whole text and the buttons, and the post's item_access audience. It asks for no confirmation, because nothing goes out. create_campaign, update_campaign and preview_campaign_audience accept item_access: { type: "content", id } in the audience, exclusive like all (exclude applies), recalculated on every send; the preview and the send_campaign and schedule_campaign confirmations show the post title and how many people receive it ("people with access to {title}: N people") and, if the post went offline (deleted or no longer public) after the draft, warn that nobody will receive the campaign. A post that is a draft, private, pending or rejected in moderation comes back as text, with a step to list_posts. get_campaign carries sourceItem, the source post. Workflows do not accept item_access. See Send a post by e-mail.

Sending. send_campaign is a bulk send that cannot be undone and uses one send of the quota. It requires consent: true (the person confirms the recipients are community members who accept announcements). The first call returns only the summary (subject, audience total, how many are left out, quota left) and a confirmation_token; the assistant shows the summary and only repeats the call with the code after an explicit yes. See Money and confirmation.

Excluding from the audience. create_campaign, update_campaign and preview_campaign_audience accept, in the audience, exclude: { group_ids, tags, member_ids }: anyone matching an exclusion is out, even if they are in an included group or tag. On its own the exclusion picks nobody. The preview and the confirmation of send_campaign and schedule_campaign carry the summary sentence (audience_summary): "1,240 people in the selection, 312 excluded by the rule, 9 unsubscribed, bounced or complained: 919 will receive it." The audience and the exclusion also accept fields, the custom field conditions: each with field (id or key), operator (one_of, contains_any, contains_all, is_true, is_false) and values, up to 10 conditions in total, including and excluding together. A 422 points to list_member_fields, with the fields and options. Warnings about a field that changed show in note on get_campaign and in the preview, and the send_campaign and schedule_campaign confirmation repeats them (field_warnings).

Sent in a period. list_campaigns takes sent_from and sent_to (YYYY-MM-DD, whole days in the community time zone, both included; one side alone leaves the other open): it keeps the campaigns, manual and automatic, with a send that started in the period, the same rule as get_campaign_stats. "Which campaigns went out last week?"

Refusals that come back as text. An empty subject or content, an empty audience or one over 20,000 people (422), and an exhausted quota (429, saying the limit and when it frees up).

Ask like this: "Create a campaign for the March cohort group with the opening-class notice, show who receives it and send me a test."

Another 14 tools complete campaigns through the assistant:

ToolWhat it doesMinimum roleType
schedule_campaignSchedules the send (once, every day or weekdays), with summary, quota and consentOwner or adminAsks to confirm
pause_campaignPauses a scheduled or sending campaignOwner or adminChanges
resume_campaignResumes a paused campaignOwner or adminChanges
cancel_campaignCancels the campaign (what already went out stays sent)Owner or adminAsks to confirm
list_campaign_runsA campaign's sends, with the numbersTeamRead-only
campaign_reportThe sum of all sends: delivered, opens, clicks, bounces and complaintsTeamRead-only
preview_campaignThe e-mail as it would go out now, without sending or using quotaTeamRead-only
list_automatic_campaignsThe automatic e-mails and whether they are onTeamRead-only
update_automatic_campaignTurns an automatic on or off and adjusts it; always confirms, and requires consent when turning onOwner or adminAsks to confirm
upload_campaign_imageUploads an image for a block, by link or fileTeamChanges
delete_campaign_imageDeletes an uploaded image (confirms)TeamAsks to confirm
get_campaign_statsThe numbers of every campaign over a period (default: 30 days), compared with the previous period, with each metric's sentenceTeamRead-only
list_campaign_block_itemsThe products, events or courses a block accepts (only what everyone sees), with search and pagesTeamRead-only
duplicate_campaignCreates a Copy of… draft with the original's subject, blocks and audience; sends nothing (automatics are not duplicated)TeamChanges

create_campaign and update_campaign also accept the blocks latestPosts, upcomingEvents, newCourses, newClassifieds, course, event and product. The last three take 1 to 6 items (course_ids, event_ids, product_ids), which go out in a grid of 2 per row; the ids come from list_campaign_block_items, and an item not everyone sees comes back with the block's sentence and a hint.

Variables. The subject, the preview text and the text and button blocks take per-recipient variables: {{nome}}, {{lider}}, {{pontos}}… (or the English aliases {{first_name}}, {{leader}}, {{points}}) and a fallback after \|, like {{leader\|our team}}. list_campaign_variables gives the list, including the custom fields ({{field_company}}, in the customFields group). A variable that does not exist is refused with a sentence naming the field and the name (subject: "xyz"), and the suggested next step is list_campaign_variables. preview_campaign and send_campaign_test fill them with the data of whoever asks. Avoid {{tags}} if the community uses internal tags: each person reads their own.

E-mail library and default e-mails

ToolWhat it doesMinimum roleKind
list_emailsThe library's e-mails, with their languages and where they are usedTeamRead-only
get_emailAn e-mail, with its versions per languageTeamRead-only
create_emailCreates an e-mail in the libraryTeamChanges
update_emailRenames the e-mail or changes the main languageTeamChanges
update_email_versionSaves the version of a languageTeamChanges
delete_email_versionDeletes the version of a languageTeamAsks to confirm
get_email_usagesWhere the e-mail is usedTeamRead-only
duplicate_emailCopies the e-mail with all its versionsTeamChanges
delete_emailDeletes the e-mail; shows first where it is usedTeamAsks to confirm
preview_emailShows how the e-mail arrives, with your detailsTeamRead-only
send_email_testSends a test only to youTeamChanges
list_default_emailsThe default e-mails, with their state and customized languagesAdminRead-only
get_default_emailA default e-mail, with its fixed blocks and allowed variablesAdminRead-only
get_default_email_versionThe community's version in a languageAdminRead-only
update_default_email_versionSaves the community's version in a languageAdminChanges
update_default_emailTurns the community's version on or offAdminChanges
restore_default_emailRestores the default in a language, with no way backAdminAsks to confirm
preview_default_emailShows how the default e-mail arrivesAdminRead-only
send_default_email_testSends a test of the default e-mail only to youAdminChanges

create_campaign and update_campaign take email_id (so subject is not needed); direct content still works. The fixed blocks come and go as { type: system_slot, slot }, and a version without them is refused with the blocks that are missing. The test never goes to another address.

Ask like this: "Change the Portuguese sign-up welcome to a shorter text", "Where is the November news e-mail used?"

Workflows

ToolWhat it doesMinimum roleType
list_workflow_triggersThe triggers, with the filters and the ones that act on an itemTeamRead-only
list_workflowsThe workflows, with the state and the runsTeamRead-only
get_workflowOne workflow, with the designTeamRead-only
simulate_workflowWalks the workflow with one person, without sending anything; with send_emails_to_me, sends the simulation's e-mails only to you ([Test] in the subject, up to 10 per simulation and 10 such simulations an hour)TeamRead-only
get_workflow_estimateHow many people fired the trigger in 1, 7 and 30 days (or today, on a date trigger)TeamRead-only
list_workflow_runsA workflow's runsTeamRead-only
get_workflow_runOne run, with the stepsTeamRead-only
get_member_workflow_historyThe workflows a person went throughTeamRead-only
list_workflow_templatesThe 9 templatesTeamRead-only
list_workflow_sendersWho on the team agreed to sign messagesTeamRead-only
update_my_workflow_sender_consentAgrees or stops agreeing to sign workflow messages (only your own)TeamChanges
list_my_pending_sender_approvalsYour pending approvals of texts in your nameTeamRead-only
approve_sender_approvalApproves a version's texts in your nameTeamChanges
revoke_sender_approvalRevokes an approval of yoursTeamAsks to confirm
create_workflowCreates a draft workflow (trigger, filter, entry, frequency, design)AdminChanges
create_workflow_from_templateCreates a draft from a template, without sending anythingAdminChanges
update_workflowEdits the workflow; if it is on, saves a new versionAdminChanges
delete_workflowDeletes a workflow that is off; the history staysAdminAsks to confirm
send_workflow_testSends a step's e-mail only to youAdminChanges
activate_workflowTurns it on; first shows the trigger, the e-mails and the estimate (a date trigger asks for consent)AdminAsks to confirm
pause_workflowPauses: nobody new enters and each person stops where they areAdminChanges
resume_workflowResumes; first shows the summaryAdminAsks to confirm
cancel_workflow_runEnds one person's runAdminAsks to confirm

The design goes to the API as it is: waits, conditions, library e-mails, message, comment, reaction, tag, group, Slack and While, with the app's limits; layout keeps the canvas positions. When the community's sending is suspended, turning on and resuming answer with the end date and the reason.

ToolWhat it doesMinimum roleKind
run_workflowStarts the workflow for chosen people or an audience (Manual trigger); the first call only counts who enters and asks for your confirmationAdminAsks to confirm
stop_workflowStops the workflow: no one new enters and the runs under way are canceled; first shows how manyAdminAsks to confirm
get_workflow_summaryThe 7- and 30-day success rate, the skipped steps, the error logs, who is waiting for quota and the latest errorsTeamRead-only
list_workflow_variablesThe variables that reach a block, grouped by the block they come from (also for a design not saved yet)TeamRead-only
preview_workflow_textA text with the variables filled with sample data, as it goes out in the DM, the e-mail or SlackTeamRead-only
get_workflow_settingsOn whose behalf workflows send DMs, comment and reactAdminRead-only
update_workflow_settingsSwitches to The whole team or Owner only; first shows the changeAdminAsks to confirm
get_workflow_webhookThe status of a Webhook received trigger's address, never the tokenTeamRead-only
create_workflow_webhookCreates the address; the token and the secret are shown onceAdminChanges
rotate_workflow_webhookRotates the token and the secretAdminAsks to confirm
revoke_workflow_webhookRevokes the addressAdminAsks to confirm
list_workflow_webhook_deliveriesThe calls received, with the result of each oneTeamRead-only
get_workflow_guideThe workflow guide, one section at a time (overview, triggers, blocks, rules, variables, lifecycle, recipes, cautions), in the connection's languageTeamRead-only
suggest_workflowTurns a rule in words, or a recipe, into a draft design, with the questions to confirm and the calls; saves nothingTeamRead-only
delete_workflow_runDeletes a finished run from the history; it still counts toward how many times the person entersAdminAsks to confirm
clear_workflow_runsDeletes a workflow's finished runs from the history, all of them or up to a date; shows how many firstAdminAsks to confirm
list_envThe keys in Variables and keys: name, end of the value, allowed hosts and last use, never the valueAdminRead-only
set_envCreates or replaces a key, with the allowed hosts (optional: empty means any address); the value never comes back in a responseAdminAsks to confirm
delete_envDeletes a key: the value is erased and the blocks that use it go down the error pathAdminAsks to confirm
get_ai_limitsThe AI limits: the token ceilings per call, per run and per day, whether they are the defaults and how much was used todayAdminRead-only
update_ai_limitsChanges the ceilings (those left out stay as they are); per call up to per run, and per run up to per dayAdminChanges
get_signing_secretThe Call webhook signing secret: whether it exists, its ending and when it was created, never the valueAdminRead-only
create_signing_secretGenerates the signing secret, shown only in this answer; with rotate: true it replaces the current one and asks to confirmAdminChanges
delete_signing_secretDeletes the secret: calls stop being signedAdminAsks to confirm
  • One trigger per workflow. create_workflow and update_workflow take a single trigger block, the End: success and End: error blocks (endSuccess, endError), the actions' error exit, the Write to log block (log), each block's name, dotted variables ({{course.name}}) and the condition's Variable rule, with operators by type. A refused design comes back with graph_errors (the block, the code and the message), such as singleTriggerOnly, pathWithoutEnd and variableUnavailable.

  • The manual, schedule, webhook.received, member.returned and message.received (DM received) triggers, and each module's lifecycle. list_workflow_triggers says, for each trigger, how many times it happens (occurs) and its variables.

  • simulate_workflow shows the filled-in texts and the expected end; get_workflow_run shows the steps that failed or are waiting for quota (FAILED, DEFERRED); list_workflows brings the period, how many are on and the plan's maximum (turning on beyond it is refused before the confirmation); activate_workflow takes include_existing on the Someone has not signed in for N days trigger; list_workflow_templates brings each template's steps; list_logs takes the workflows source, with the workflow and the level.

  • On whose behalf: the individual consent and the text approvals (update_my_workflow_sender_consent, list_my_pending_sender_approvals, approve_sender_approval, revoke_sender_approval) are no longer used; the signer follows the community's setting, and a step on behalf of someone not allowed is skipped (senderNotAllowed).

  • The automation guide. For the team, the assistant knows that a need that repeats, depends on a condition or on an event is solved with a workflow: it reads the guide (get_workflow_guide, also as the memberfy://guides/workflows resource), with 61 ready-made recipes (community, badges, courses, events, sales, HR, coworking, CRM by webhook, scheduled and manual), and builds the draft with suggest_workflow. The Automate a rule with a workflow recipe does the whole path: guide, draft, e-mails, simulation, test, estimate and turning it on with confirmation.

  • Next steps. After sending or scheduling a campaign, issuing a certificate, inviting or importing members and opening a review cycle, the next_steps suggest suggest_workflow with the matching recipe.

  • New blocks: http (Call webhook: method, address, headers, body, a maximum time of 2 to 15 seconds, {{env.NAME}} only in the headers and the body and only for the allowed hosts, {{steps.<block>.status|duration|size|body.<field>}}), platformAction (the platform actions, with each one's minimum role, from list_workflow_triggers), runWorkflow and the workflow.called trigger (with the values returned by End: success).

  • Which role the steps act with: that of whoever saves, turns on, resumes or runs the workflow; an action above that role comes back in graph_errors (actionAboveRole).

  • AI blocks and new actions. The ai block (Claude and ChatGPT, with the community's own API key in keyEnv; the models and limits come from list_workflow_triggers, in ai_providers and ai_node) and the actions content.post.create, certificate.issue, recognition.give, chat.block, oneOnOne.schedule and developmentPlan.action.add. The admin acts like the owner; an ownerOnly action would show as owner, and none is today. New recipes: Feed post for a graduate, Certificate on check-in, Recognition for a passed quiz, Block the chat of a tagged account, Recurring 1:1 for who joins a team, Development plan action after a review and, with a key in the vault, Welcome DM written by AI, Support ticket triage with AI and Form answer summary with AI.

  • SMS and WhatsApp. The sendSms and sendWhatsapp blocks (text up to 300 characters, with variables; the community's name and, on SMS, the opt-out link are added when sending). list_workflow_triggers has sms_node and whatsapp_node: the limit, the 24-hour rule and the out-of-window template, the skip reasons (through "ok"), the wait reasons (quiet hours, daily cap, monthly quota) and the error ones. New recipes: Welcome by SMS, Event registration confirmed by SMS, Event rescheduled by SMS, Payment overdue by SMS, 1:1 tomorrow by SMS, Event registration confirmed by WhatsApp, Payment overdue by WhatsApp and Waitlist seat by WhatsApp (whoever cannot get WhatsApp gets the e-mail).

See Workflows and Incoming webhook.

Ask like this: "I want whoever buys the course to get 7 days of access to the mentoring: build the workflow", "Keep our CRM token in the vault, only for api.hubspot.com", "Delete the test runs up to yesterday from the history", "Create the welcome series from the template", "How many people would enter the win-back workflow today?", "Simulate the welcome workflow with Maria."

Sending reputation

When the community's sending is suspended, the tools that send (sends, automatic e-mails, turning on or resuming workflows) answer with the end date and the reason. get_community_context brings the sending reputation to the team (the alert, only to the owner and the admin), with the tips. For the SuperAdmin, in the Memberfy community:

ToolWhat it doesMinimum roleType
list_sending_reputationThe communities on alert or suspendedSuperAdminRead-only
get_community_sending_reputationA community's sending reputation, with its suspensionsSuperAdminRead-only
lift_community_sending_suspensionReleases a community's sending, with the reasonSuperAdminChanges
update_community_sending_reputation_settingsChanges a community's limitsSuperAdminChanges

Plan and extensions

11 tools for what the Memberfy plan includes. See Plan and extensions.

ToolWhat it doesMinimum roleType
list_entitlement_catalogThe catalog of plan variables: included members, extra members, the mark and the Planning & HR and Coworking extensionsAnyRead-only
get_plan_entitlementsWhat the community's plan includes, where each value comes from (never the reason for an exception), member usage and locked extensionsAdminRead-only
list_space_modulesThe space modules by Add Space tab, with locked when the extension is not in the planAdminRead-only
get_entitlement_valuesWhat a Memberfy plan or add-on includesSuperAdminRead-only
update_entitlement_valuesChanges what a plan or add-on includes; applies to every community on itSuperAdminChanges
get_entitlement_defaultsThe default for communities without a planSuperAdminRead-only
update_entitlement_defaultsChanges the default for communities without a planSuperAdminChanges
list_entitlement_overridesA community's exceptions, with value, reason and validitySuperAdminRead-only
create_entitlement_overrideCreates an exception (one per variable), with an internal reason and validitySuperAdminChanges
update_entitlement_overrideChanges an exception's value, reason or validitySuperAdminChanges
delete_entitlement_overrideEnds an exception now; the record is keptSuperAdminAsks to confirm

The SuperAdmin tools only work when connected to the Memberfy community. When the extension is not in the plan, create_space, update_space and update_space_access return MODULE_LOCKED, and the assistant explains that the extension has to be added. Spaces that already existed stay, for the owner, admin and moderator only.

Memberfy directory

4 tools for the Memberfy directory (hub.memberfy.net). None asks for confirmation: they move no money, send no e-mail and delete nothing, and a removal is undone by putting the community back.

ToolWhat it doesMinimum roleType
get_hub_listingHow the community shows in the directory: listed, category, cover, member count, a removal by Memberfy (date and reason) and the categoriesAdminRead-only
update_hub_listingTurns the listing on or off and changes the category, cover (an https link) and member count; only what is sent changesAdminChanges
get_community_hub_listingOne community's state in the directory: whether the owner left it listed, the category and whether Memberfy took it out (date and reason)SuperAdminRead-only
update_community_hub_listingTakes a community out of the directory, with a required reason of 10 to 2,000 characters that the owner sees in Settings, or puts it back; the owner's option does not changeSuperAdminChanges

Ask like this:

  • "List my community under Technology with this cover" (update_hub_listing);
  • "Is my community in the directory?" (get_hub_listing; if Memberfy took it out, the assistant gives the reason and date);
  • for the SuperAdmin: "Take community X out of the directory with this reason" (update_community_hub_listing).

The two SuperAdmin tools only work connected to the Memberfy community, and every removal or return goes to the community's history.

Themes

9 tools for the community's theme: mode, colors, fonts, corners, density and the navigation (the menu's starting state, the top bar and the hidden native elements). All of them are for the owner and the admin. Activating, restoring and deleting ask to confirm (the first call returns the summary and the confirmation_token); creating only asks when it also activates the theme.

ToolWhat it doesMinimum roleType
list_theme_presetsThe ready-made themes (Light, Dark, Premium dark, Ocean, Forest, Editorial), with the preview and whether they are available (the dark ones depend on the dark theme being enabled)AdminRead-only
list_community_themesThe community's saved themes (up to 10), with the active one markedAdminRead-only
get_community_themeOne theme with all its values; without theme_id, the active oneAdminRead-only
create_community_themeSaves a theme from a ready-made one (preset_key) or a saved one (source_theme_id), with changes in values; origin: "image" keeps the proposal from suggest_community_theme_from_logo; activate: true also activates it (asks to confirm)AdminChanges
update_community_themeChanges a theme's name or values; without theme_id, the active one, and the community changes right away: it is the way to change colors, mode, fonts, corners, density or the menuAdminChanges
activate_community_themeSwitches the theme for the whole community, showing the before → afterAdminAsks to confirm
restore_community_themeTakes the theme back to its original values; the name staysAdminAsks to confirm
delete_community_themeDeletes a saved theme (the active one can't be deleted)AdminAsks to confirm
suggest_community_theme_from_logoProposes a theme with the colors of the community's logo, with guaranteed contrast, without saving. Uses 1 AI use from the planAdminChanges

Removed from other tools: primary_color, secondary_color, reset_colors and mobile_bar_color from update_community_settings; mode and sidebar_default from update_community_appearance, which keeps the logo for dark backgrounds.

Ask like this:

  • "Which themes does the community have and which one is active?" (list_community_themes);
  • "Create a Christmas theme based on Forest, with the red #B91C1C as the primary color" (create_community_theme);
  • "Change the heading font to Manrope" (update_community_theme, on the active theme);
  • "Activate the Christmas theme" (activate_community_theme, after your yes);
  • "Put the navigation on top and hide the language selector" (update_community_theme, with navigation.layout: "top" and navigation.hidden_native: ["language_selector"]). hidden_native is the whole list ([] shows everything), only with people, leaderboard, organized_events, language_selector, report_problem and presence; the bell, billing notices, My Account, Settings and Administration can never be hidden;
  • "Suggest a theme with our logo's colors" (suggest_community_theme_from_logo; to keep it, create_community_theme with origin: "image").

Notes: through the assistant, the proposal comes only from the community's logo; any other image is uploaded in the app (Generate from an image). Without a logo, or with a logo that can't be read as an image, 422; AI quota used up, 429. A dark or automatic theme without the dark theme enabled: refused.

Custom domain

8 tools for the community's custom domain. Only removing asks to confirm: adding or changing keeps the old domain up until the new one becomes active, so it runs on the first call.

ToolWhat it doesMinimum roleType
get_custom_domainThe Memberfy address, the primary address, the active domain and the one being set up, with the DNS record to create, the step and the error with what to doAdminRead-only
set_custom_domainAdds the domain or changes the current one, without downtime, and returns the DNS record to createAdminChanges
check_custom_domainThe Check now: checks DNS, certificate and address right away; a failed request starts over, with another 7 daysAdminChanges
remove_custom_domainRemoves the domain (the community stays at the Memberfy address) or only gives up the one being set upAdminAsks to confirm
get_community_custom_domainThe same as get_custom_domain, for one community (community_id)SuperAdminRead-only
set_community_custom_domainAdds or changes a community's domain; only this tool moves on a domain another community has already usedSuperAdminChanges
check_community_custom_domainChecks a community's domain nowSuperAdminChanges
remove_community_custom_domainRemoves a community's domain, or gives up the requestSuperAdminAsks to confirm

After adding, the assistant shows the record to create (type, name and target) and suggests checking again in a few minutes; the automatic checks keep going on their own, and the owner gets the email when the domain becomes active. Each step's error message comes translated, so the assistant shows it as it is. The SuperAdmin tools only work connected to the Memberfy community.

Ask like this:

  • "Put the community at community.papodesysadmin.org. What record do I create in DNS?" (set_custom_domain);
  • "Is my domain active yet?" (get_custom_domain or check_custom_domain);
  • "Change the domain to members.papodesysadmin.org without taking the current one down" (set_custom_domain);
  • "Give up the domain that's being set up" (remove_custom_domain, with scope: pending, after your yes).

See recipe 95.

SMS and WhatsApp

8 tools for the SMS and WhatsApp notices channels. Turning a channel on needs the daily cap (daily_cap, from 1 to 50,000). Sending works for every country except those in blocked_countries (today, SMS to the United States). WhatsApp is on the Business and Scale plans (upgrade_required says when it's missing) and only goes out in approved templates, never as free text. The tests send a real message to your verified phone, so they ask for confirmation: the summary shows the masked phone, the consent and today's usage.

ToolWhat it doesMinimum roleType
get_sms_settingsThe SMS channel: on or off, the daily cap, the plan's quota and today's and this month's usage, in messages and parts; never a priceAdminRead-only
update_sms_settingsTurns SMS on or off and changes the daily cap and the per-person limit (person_daily_cap, 1 to 20, 5 by default: workflow messages per person per day, in each channel)AdminChanges
send_sms_testA test SMS to your phone, under every rule; says whether it was queued, when it goes out or why it was skippedAdminAsks to confirm
count_sms_segmentsThe parts and encoding of a text, alone and as sent (with [Community] in front and the opt-out link); sends nothingTeamRead-only
get_whatsapp_settingsThe WhatsApp channel: on or off, the daily cap, the plan's quota and usage, the platform messages (moments, with each one's default), blocked_countries, person_daily_cap and upgrade_requiredAdminRead-only
update_whatsapp_settingsTurns WhatsApp on or off, changes the daily cap and turns each platform message on or off for the community (moments: { key: true/false })AdminChanges
list_whatsapp_templatesMemberfy's WhatsApp templates, with each one's status, type (service or marketing) and fields (Community notice carries a text of your own)AdminRead-only
send_whatsapp_testA test WhatsApp to your phone, in an approved template, under every ruleAdminAsks to confirm

The next_steps lead from the settings to the test, from a skipped test to what is missing (phone, code, consent) and from the code to turning the notices on.

Ask like this:

  • "Turn on the community's SMS with a cap of 500 a day and send me a test." (update_sms_settings, then send_sms_test after your yes);
  • "How much WhatsApp have we used this month?" (get_whatsapp_settings);
  • "Does this text fit in one SMS?" (count_sms_segments);
  • "Is the WhatsApp notice template approved yet?" (list_whatsapp_templates);
  • "Don't send the new-content WhatsApp in this community." (update_whatsapp_settings with moments);
  • "Allow at most 3 workflow messages per person per day." (update_sms_settings with person_daily_cap).

Sending through your Resend account

4 tools for sending through your Resend account, on the Business plan or above. Connecting, the API key and the webhook secret stay in the app: no tool takes the key, and no answer shows more than its last 4 characters. Only disconnecting asks to confirm.

get_email_provider

Read-only

See sending through the Resend account. Whether the community sends its e-mails through its own Resend account: configured or not, whether the plan allows it (plan_allowed), the status (pending: waiting for the verification; active: e-mails leave through it; error: the key was refused and everything falls back to Memberfy; paused_by_plan: the plan no longer allows it), the sender (from_email, from_name, reply_to), the last 4 characters of the key and of the webhook secret, the last error and when it was verified. Logins, security and team notices always leave through Memberfy. Minimum role: admin.

Parameters: none.

Ask like this: "Are the community's e-mails already going out through our Resend account?"

update_email_provider

Changes

Change the sender. Changes the sender of a connection that already exists. A new from_email starts the check over (status pending): then run verify_email_provider. Without a connection, the assistant points to the app. Minimum role: admin.

ParameterTypeRequiredDescription
from_emaile-mailNoAn address of the domain verified in Resend; a free mailbox or a Memberfy address is refused
from_nametext, up to 120 charactersNoThe sender name
reply_toe-mailNoWhere replies go; null clears it

Ask like this: "Change the sender name to Papo de Sysadmin and send replies to [email protected]."

verify_email_provider

Changes

Verify the Resend account. Sends the verification e-mail: a test from the sender, through the community's key, to your address. A refusal (key, unverified domain, limit) comes back in the API's words and the connection stays pending; an accepted test turns the connection active once Resend reports it delivered, in seconds to minutes (check with get_email_provider). Minimum role: admin.

Parameters: none.

Ask like this: "Verify our Resend account."

disconnect_email_provider

Asks to confirm

Disconnect the Resend account. Wipes the key and the webhook secret at once, and every e-mail, including what is being sent, leaves through Memberfy again. Connecting again needs the key and the secret typed in the app. Asks to confirm. Minimum role: admin.

Parameters: none.

Ask like this: "Disconnect the community's Resend account."

Video signing keys

4 tools for the Bunny Stream and Cloudflare Stream signing keys: with the key saved, lessons and posts with videos from those providers play signed (see Courses). The key only goes in, never comes back (only the last 4 characters) and is kept out of the assistant's log. Only deleting asks to confirm.

list_video_keys

Read-only

See the video keys. Per provider (bunny, cloudflare): whether there is a key, the mask and the last 4 characters, the status (unverified, valid or invalid, when its players show "video unavailable") and when it was checked, never the value; and signed_ttl_seconds, how long a player's signed link lasts. Minimum role: admin.

Parameters: none.

Ask like this: "Is the Bunny key valid?"

update_video_key

Changes

Save a video key. Saves or replaces a provider's signing key. A wrong combination (a field of the other provider) is refused before any call, and a malformed key comes back in the API's words. The key starts unverified: then run verify_video_key with a link to one of the provider's videos. Minimum role: admin.

ParameterTypeRequiredDescription
providerbunny or cloudflareYes
token_keytextNoBunny only: the library's embed token authentication key
key_idtextNoCloudflare only: the signing key id
private_keytextNoCloudflare only: the signing key (PEM, base64, text or JWK)

Ask like this: "Save the Bunny token key of our library."

Notes: the key never comes back in an answer and is kept out of the assistant's audit log.

verify_video_key

Changes

Check a video key. Signs the link of a video of the same provider and asks the provider once: accepted, the key turns valid; refused, invalid (its players show "video unavailable" until a good key is saved). An unknown video or a link of another provider is refused; with no answer from the provider, the status stays. Minimum role: admin.

ParameterTypeRequiredDescription
providerbunny or cloudflareYes
video_urllinkYesA video of that provider

Ask like this: "Check the Cloudflare key with this video."

delete_video_key

Asks to confirm

Delete a video key. Wipes the key at once, and that provider's videos go out unsigned again (and stop playing if the library requires a token). Asks to confirm, with the key's mask. Minimum role: admin.

ParameterTypeRequiredDescription
providerbunny or cloudflareYes

Ask like this: "Delete the Bunny key."