Community (opt-in)

Groups

List Groups

read-onlyidempotentopen-world
discourse_list_groups

List visible groups. Empty input exhaustively traverses the bounded directory; any explicit page or filter field preserves the existing single-page query behavior. Both modes return one structured envelope with truthful completion metadata and JSON text fallback. Opt in with the groups toolset.

Parameters

pageinteger>= 0
orderstringnameuser_count
ascboolean
filterstring
usernamestring
typestringmyownerpubliccloseautomaticnon_automatic

Returns

groupsArray<object>required
Show child attributes
idintegerrequired
namestringrequired
metaobjectrequired
Show child attributes
totalinteger>= 0required
reported_totalinteger | nullrequired
Show child attributes
Any of
integer>= 0
null
pages_fetchedinteger>= 0required
completebooleanrequired
has_morebooleanrequired
truncated_reasonstringpage_limitdeadlinecancelledno_new_idstotal_mismatchlegacy_site_jsonanonymous_fallbackupstream_error
errorstring
extrasany
total_rows_groupsinteger>= 0
load_more_groupsstring | null

Get Group

discourse_get_group

Get complete visible group details by numeric ID or name, including caller capabilities and group settings.

Parameters

idinteger
namestring

List Group Posts

read-onlyidempotentopen-world
discourse_list_group_posts

List visible posts authored by a group using Discourse's fixed 20-row page, ID or timestamp cursor, and optional category filter. Group authorship is cohort evidence, not proof of organizational responsibility.

Parameters

group_namestringrequired
before_post_idinteger
beforestring<date-time>
category_idinteger

List Group Members

discourse_list_group_members

List a group's members and owners with filtering, ordering, and pagination. Visibility is enforced by Discourse.

Parameters

namestringrequired
limitinteger[1, 1000]
offsetinteger>= 0
filterstring
orderstringusernamelast_posted_atlast_seen_atadded_at
ascboolean

List Group Membership Requests

discourse_list_group_membership_requests

List pending membership requests and reasons for a group the caller can manage, with filtering and pagination.

Parameters

namestringrequired
limitinteger[1, 1000]
offsetinteger>= 0
filterstring
orderstring
ascboolean

Create Group

discourse_create_group

Create a custom group with complete core settings, initial members and owners, custom fields, associations, and optional plugin fields. Requires staff group-creation permission.

Body

application/json
namestringrequired
mentionable_levelinteger[0, 4]
messageable_levelinteger[0, 4]
visibility_levelinteger[0, 4]
members_visibility_levelinteger[0, 4]
automatic_membership_email_domainsstring
titlestring | null
primary_groupboolean
grant_trust_levelinteger | null
Show child attributes
Any of
integer[0, 4]
null
incoming_emailstring | null
flair_iconstring | null
flair_upload_idinteger | null
Show child attributes
Any of
integer
null
flair_bg_colorstring | null
flair_colorstring | null
bio_rawstring | null
Show child attributes
Any of
string
null
public_admissionboolean
public_exitboolean
allow_membership_requestsboolean
full_namestring | null
default_notification_levelinteger[0, 3]
membership_request_templatestring | null
Show child attributes
Any of
string
null
publish_read_stateboolean
associated_group_idsArray<integer>
custom_fieldsobject
Show child attributes
[key: string]any
owner_usernamesArray<string>
usernamesArray<string>
plugin_fieldsobject
Show child attributes
[key: string]any

Update Group

discourse_update_group

Update all core group profile, visibility, admission, notification-default, association, email, SMTP, custom, and plugin settings supported by the caller and group type.

Body

application/json
idintegerrequired
namestring
mentionable_levelinteger[0, 4]
messageable_levelinteger[0, 4]
visibility_levelinteger[0, 4]
members_visibility_levelinteger[0, 4]
automatic_membership_email_domainsstring
titlestring | null
primary_groupboolean
grant_trust_levelinteger | null
Show child attributes
Any of
integer[0, 4]
null
incoming_emailstring | null
flair_iconstring | null
flair_upload_idinteger | null
Show child attributes
Any of
integer
null
flair_bg_colorstring | null
flair_colorstring | null
bio_rawstring | null
Show child attributes
Any of
string
null
public_admissionboolean
public_exitboolean
allow_membership_requestsboolean
full_namestring | null
default_notification_levelinteger[0, 3]
membership_request_templatestring | null
Show child attributes
Any of
string
null
publish_read_stateboolean
associated_group_idsArray<integer>
custom_fieldsobject
Show child attributes
[key: string]any
muted_category_idsArray<integer>
regular_category_idsArray<integer>
tracking_category_idsArray<integer>
watching_category_idsArray<integer>
watching_first_post_category_idsArray<integer>
muted_tagsArray<string>
regular_tagsArray<string>
tracking_tagsArray<string>
watching_tagsArray<string>
watching_first_post_tagsArray<string>
smtp_serverstring | null
smtp_portinteger | null
Show child attributes
Any of
integer
null
smtp_ssl_modeinteger>= 0
smtp_enabledboolean
email_usernamestring | null
email_passwordstring | null
email_from_aliasstring | null
allow_unknown_sender_topic_repliesboolean
update_existing_usersboolean
plugin_fieldsobject
Show child attributes
[key: string]any

Delete Group

discourse_delete_group

Permanently delete a custom group. Automatic groups cannot be deleted. Requires staff access.

Parameters

idintegerrequired

Add Group Members by Username

discourse_add_group_members_by_username

Add group members using canonical usernames. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
usernamesArray<string>required

Canonical usernames of existing users; do not provide user IDs or email addresses

notify_usersboolean

Notify users added as members or owners

Add Group Members by User ID

discourse_add_group_members_by_user_id

Add group members using numeric user IDs. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_idsArray<integer>required

Numeric IDs of existing users; numbers must not be quoted as strings

notify_usersboolean

Notify users added as members or owners

Add Group Members by Email

discourse_add_group_members_by_email

Add group members using email addresses belonging to existing accounts. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_emailsArray<string>required

Email addresses that already belong to user accounts; use the invitation tool for unknown addresses

notify_usersboolean

Notify users added as members or owners

Invite Group Members by Email

discourse_invite_group_members_by_email

Add existing accounts immediately when an address matches, and invite unknown addresses to the forum with this group preassigned. Use add_group_members_by_email when every address is known to belong to an account.

Parameters

idintegerrequired
emailsArray<string>required

Email addresses to invite to the forum and add to this group after redemption

skip_emailboolean

Create invitations without sending invitation email

Remove Group Members by Username

discourse_remove_group_members_by_username

Remove group members using canonical usernames. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
usernamesArray<string>required

Canonical usernames of existing users; do not provide user IDs or email addresses

Remove Group Members by User ID

discourse_remove_group_members_by_user_id

Remove group members using numeric user IDs. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_idsArray<integer>required

Numeric IDs of existing users; numbers must not be quoted as strings

Remove Group Members by Email

discourse_remove_group_members_by_email

Remove group members using email addresses belonging to existing accounts. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_emailsArray<string>required

Email addresses that already belong to user accounts; use the invitation tool for unknown addresses

Add Group Owners by Username

discourse_add_group_owners_by_username

Add group owners using canonical usernames. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
usernamesArray<string>required

Canonical usernames of existing users; do not provide user IDs or email addresses

notify_usersboolean

Notify users added as members or owners

Add Group Owners by User ID

discourse_add_group_owners_by_user_id

Add group owners using numeric user IDs. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_idsArray<integer>required

Numeric IDs of existing users; numbers must not be quoted as strings

notify_usersboolean

Notify users added as members or owners

Add Group Owners by Email

discourse_add_group_owners_by_email

Add group owners using email addresses belonging to existing accounts. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_emailsArray<string>required

Email addresses that already belong to user accounts; use the invitation tool for unknown addresses

notify_usersboolean

Notify users added as members or owners

Remove Group Owners by Username

discourse_remove_group_owners_by_username

Remove group owners using canonical usernames. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
usernamesArray<string>required

Canonical usernames of existing users; do not provide user IDs or email addresses

Remove Group Owners by User ID

discourse_remove_group_owners_by_user_id

Remove group owners using numeric user IDs. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_idsArray<integer>required

Numeric IDs of existing users; numbers must not be quoted as strings

Remove Group Owners by Email

discourse_remove_group_owners_by_email

Remove group owners using email addresses belonging to existing accounts. This tool accepts only this identifier type, avoiding ambiguous selector precedence.

Parameters

idintegerrequired
user_emailsArray<string>required

Email addresses that already belong to user accounts; use the invitation tool for unknown addresses

Handle Group Membership Request

discourse_handle_group_membership_request

Approve or deny one pending group membership request. Approval adds the requester to the group; denial only removes the request.

Parameters

idintegerrequired
user_idintegerrequired
actionstringapprovedenyrequired

Request Group Membership

discourse_request_group_membership

Request membership in a visible group that allows requests, sending the reason to its owners.

Parameters

namestringrequired
reasonstringrequired

Join Group

discourse_join_group

Join a visible group that allows public admission as the authenticated user.

Parameters

idintegerrequired

Leave Group

discourse_leave_group

Leave a group that allows public exit as the authenticated user.

Parameters

idintegerrequired