Menu

API reference · Members

Positions

members · management_roles · 4 operations

GET/v1/members/management-roles

List management roles (cargos)

members.management_roles.list

ReadIdempotentSince 2026-11-01

Lists the organization's management roles in display order (name, color, order): the «cargos» (Sponsor, Paid Media Manager…) that label agency people on each Account they are assigned to and on the team cards, and that pre-fill when a member is assigned to an Account (members.members.set_management_role). They do not change access. The catalog that labels the agency team on an Account is the workspace's: read it there. Requires view access to Members.

Scope
members:read
Permission
View the module
MCP tool
members_management_roles_listOn the full surface; on the compact one, mb_execute_operation with id: "members.management_roles.list".

Declared cost: up to 501 reads and 0 writes per call (they count against the daily quota).

Parameters

No parameters.

Response

dataarray<object>

Errors

Example

curl "https://api.mb-suite.com/v1/members/management-roles" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/members/management-roles" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/members/management-roles

Create a management role (cargo)

members.management_roles.create

WriteSince 2026-11-01

Creates a management role with a name (up to 80 characters) and an optional hex color (without it, the next color of the app's palette). It goes last in the order. Give it to members as their default with members.members.set_management_role, or per Account in members.members.update_assignments. Returns the role. Owner or admin only.

Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_management_roles_createOn the full surface; on the compact one, mb_execute_operation with id: "members.management_roles.create".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

namestringbodyrequired

Its name.

colorstringbodyoptional

Its color (#rrggbb); without it, the next one of the app's palette.

Response

role_idstring
roleobject

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/members/management-roles" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME"
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/members/management-roles" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME"
}'
PATCH/v1/members/management-roles/{role_id}

Update a management role (cargo)

members.management_roles.update

WriteIdempotentSince 2026-11-01

Updates a management role's name, color or position in the list, all inside updates: order is the position (0 = first; past the end = last) and the other roles shift to make room. Unknown fields are rejected. 404 management_role_not_found if it is not in this organization. Returns the role. Owner or admin only.

Scope
members:write
Permission
Edit in the module · Only owner, admin
MCP tool
members_management_roles_updateOn the full surface; on the compact one, mb_execute_operation with id: "members.management_roles.update".

Declared cost: up to 501 reads and 501 writes per call (they count against the daily quota).

Parameters

role_idstringpathrequired

A management role id (members.management_roles.list).

updatesobjectbodyrequired

What changes (name, color and/or order).

Response

roleobject

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/members/management-roles/{role_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X PATCH "https://api.mb-suite.com/v1/members/management-roles/{role_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'
DELETE/v1/members/management-roles/{role_id}

Delete a management role (cargo)

members.management_roles.delete

IrreversibleSince 2026-11-01

Deletes a management role and clears it from every member that had it, as their default and in their assigned Accounts (the assignments themselves stay), in one write. The role stays 30 days in the trash, where an owner or admin can restore it (platform.trash.restore); restoring puts it back on those members, except where another role was set in the meantime. Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. 404 management_role_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:write and “Allow deletions” (members:delete in OAuth)
Permission
Edit in the module · Only owner, admin
MCP tool
members_management_roles_deleteOn the full surface; on the compact one, mb_execute_operation with id: "members.management_roles.delete".

Declared cost: up to 2 reads and 2 writes per call (they count against the daily quota).

Parameters

role_idstringpathrequired

A management role id (members.management_roles.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.

Errors

Example

curl -X DELETE "https://api.mb-suite.com/v1/members/management-roles/{role_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X DELETE "https://api.mb-suite.com/v1/members/management-roles/{role_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"