Sets or replaces the organization's MB Suite subdomain for team access: subdomain is only the label (youragency for youragency.mb-suite.com), 3 to 63 lowercase letters, digits or hyphens, not a reserved one (api, mcp, app, www, admin, portal…: 400 subdomain_reserved) and not used by another organization nor by this organization's client portal (409 domain_unavailable). It is registered with the hosting provider and enabled right away; no DNS to configure. Replacing an existing subdomain registers the new one before releasing the old one (fires branding.domain.removed for it). The same label again changes nothing, except turning it on if it was off. Fires branding.domain.added. Owners and admins with edit access to Branding.
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
branding:write
Permission
Edit in the module · Only owner, admin
MCP tool
branding_subdomain_setOn the full surface; on the compact one, mb_execute_operation with id: "branding.subdomain.set".
Declared cost: up to 31 reads and 1 writes per call (they count against the daily quota). Touches an external platform (vercel): it counts against the external operations quota.
Parameters
subdomainstringbodyrequired
Only the label: youragency for youragency.mb-suite.com (3 to 63 letters, digits or hyphens).
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.
POST/v1/branding/subdomain/toggle
Turn the team's subdomain on or off
branding.subdomain.toggle
WriteIdempotentSince 2026-11-01
Turns the team's MB Suite subdomain on (enabled true) or off without removing it: off, the address stops opening the white-label app but stays reserved for the organization. Already in that state, nothing changes (changed false). Not found without a subdomain. Owners and admins with edit access to Branding.
Scope
branding:write
Permission
Edit in the module · Only owner, admin
MCP tool
branding_subdomain_toggleOn the full surface; on the compact one, mb_execute_operation with id: "branding.subdomain.toggle".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Parameters
enabledbooleanbodyrequired
true turns the address on, false turns it off without removing it.
Removes the team's MB Suite subdomain: it stops opening MB Suite, it is released from the hosting provider (released_from_hosting false if the provider failed: the organization is cleaned anyway) and the label becomes available to other organizations. There is no trash: to undo, set it again with branding.subdomain.set (if nobody took it in between). Not found without a subdomain. Outside the app it needs a dry run and its confirm_token. Fires branding.domain.removed. Owners and admins with edit access to Branding.
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
branding:writeand “Allow deletions” (branding:delete in OAuth)
Permission
Edit in the module · Only owner, admin
MCP tool
branding_subdomain_removeOn the full surface; on the compact one, mb_execute_operation with id: "branding.subdomain.remove".
Declared cost: up to 16 reads and 1 writes per call (they count against the daily quota). Touches an external platform (vercel): it counts against the external operations quota.
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.