Lists the organization's permission presets by name: named configurations of per-module permissions (module_permissions for the organization and, in a workspace, child_module_permissions for the member's assigned Accounts; module id → hidden, view_only or full_access) that an owner or admin applies to members and viewers with members.presets.apply. Requires view access to Members.
Scope
members:read
Permission
View the module
MCP tool
members_presets_listOn the full surface; on the compact one, mb_execute_operation with id: "members.presets.list".
Declared cost: up to 501 reads and 0 writes per call (they count against the daily quota).
Returns one permission preset with its name, color, description and the two permission maps (organization and assigned Accounts). 404 permission_preset_not_found if it is not in this organization. Requires view access to Members.
Scope
members:read
Permission
View the module
MCP tool
members_presets_getOn the full surface; on the compact one, mb_execute_operation with id: "members.presets.get".
Declared cost: up to 1 reads and 0 writes per call (they count against the daily quota).
Creates a permission preset: a name (up to 80 characters), an optional color and description, module_permissions (module id → hidden, view_only or full_access for this organization) and, for workspaces, child_module_permissions (the same kind of map applied in every Account assigned to the member). Modules the organization does not have are kept in the preset and skipped when it is applied. Returns the preset. Owner or admin only.
Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_presets_createOn the full surface; on the compact one, mb_execute_operation with id: "members.presets.create".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Parameters
namestringbodyrequired
The preset's name (up to 80 characters).
colorstringbodyoptional
Its color in the app (#rrggbb).
descriptionstringbodyoptional
What the preset is for (up to 300 characters).
module_permissionsobjectbodyoptional
Module id → hidden, view_only or full_access, for the organization itself.
child_module_permissionsobjectbodyoptional
Workspaces only: the overrides for the member's assigned Accounts.
Updates a permission preset: name, color, description (null or empty removes it), module_permissions (replaces the map) and child_module_permissions (replaces the map; null or {} removes it). Unknown fields are rejected. Changing a preset does not change the members it was already applied to: apply it again with members.presets.apply. 404 permission_preset_not_found. Returns the preset. Owner or admin only.
Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_presets_updateOn the full surface; on the compact one, mb_execute_operation with id: "members.presets.update".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Deletes a permission preset. The permissions of the members it was applied to do not change (they keep the preset id as their origin until edited). It stays 30 days in the trash, where an owner or admin can restore it with its id (platform.trash.restore). Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. 404 permission_preset_not_found. Owner or admin only.
With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.
Scope
members:writeand “Allow deletions” (members:delete in OAuth)
Permission
Edit in the module · Only owner, admin
MCP tool
members_presets_deleteOn the full surface; on the compact one, mb_execute_operation with id: "members.presets.delete".
Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).
Parameters
preset_idstringpathrequired
A permission preset id (members.presets.list).
Response
oktrue
trash_item_idstring
The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.
trash_item_idsarray<string>
Only when the deletion left more than one copy: all of them, the first being trash_item_id.
trash_expires_atnumber
When the copy leaves the trash for good (epoch ms): 30 days after the deletion.
Applies a permission preset to up to 500 members in one write: each member's per-module permissions are replaced by the preset's (only the modules the organization has active; the rest are counted in dropped_module_count) and the preset is recorded as their origin (applied_preset_id). Owners and admins are skipped (skipped_roles): they always have full access. In a workspace of an agency the preset's child_module_permissions apply to the member's assigned Accounts too. Members not found are returned in not_found. Fires members.member.permissions_changed once per member changed. Outside the app it requires a dry run (which lists who changes) and a confirm_token. Owner or admin only.
Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.
Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_presets_applyOn the full surface; on the compact one, mb_execute_operation with id: "members.presets.apply".