Menu

API reference · Branding

Domains

branding · domains · 2 operations

GET/v1/branding/domains

Get the organization's addresses

branding.domains.get

ReadIdempotentSince 2026-11-01

Returns the addresses the organization has registered, on two surfaces: team_access (the white-label app the agency's team uses) and client_portal (what its clients open), each with custom_domain (its own hostname, with verified: the hosting provider confirmed the DNS) and subdomain (<label>.mb-suite.com), or null where there is none. Each address has host, kind, enabled (an address can be kept but turned off) and added_at. cname_target is where a custom domain's CNAME must point (cname.vercel-dns.com). It calls no external provider. Requires view access to Branding.

Scope
branding:read
Permission
View the module
MCP tool
branding_domains_getOn the full surface; on the compact one, mb_execute_operation with id: "branding.domains.get".

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

Parameters

No parameters.

Response

team_accessobject
client_portalobject
cname_targetstring

Errors

Example

curl "https://api.mb-suite.com/v1/branding/domains" \
  -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/branding/domains" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/branding/domains/availability

Check whether an address is available

branding.domains.check_availability

ReadIdempotentSince 2026-11-01

Says whether this organization could register an address on a surface (team_access by default, or client_portal) without changing anything or calling the hosting provider. host is a full hostname (app.youragency.com, or youragency.mb-suite.com for an MB Suite subdomain) or just a subdomain label (youragency). Returns host (always the full hostname: youragency.mb-suite.com for a subdomain), label (the subdomain label; null for a custom domain), kind (custom_domain or subdomain), available, current (the organization already has it on that surface) and, when not available, reason and message (in the language of the messages): format, length (a label is 3 to 63 letters, digits or hyphens), reserved (labels MB Suite keeps: api, mcp, app, www…), platform (mb-suite.com itself or a hosting provider's domain cannot be a custom domain), taken_other_organization or taken_other_surface (this organization already uses it on the other surface). Requires view access to Branding.

Scope
branding:read
Permission
View the module
MCP tool
branding_domains_check_availabilityOn the full surface; on the compact one, mb_execute_operation with id: "branding.domains.check_availability".

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

Parameters

hoststringqueryrequired

What to check: a full hostname (app.youragency.com, or youragency.mb-suite.com for an MB Suite subdomain) or just a subdomain label (youragency).

surfaceenumqueryoptional

Where it would be used: team_access (the white-label app, default) or client_portal.

Values: team_access, client_portal · Default: "team_access"

Response

hoststring

The full hostname checked (an MB Suite subdomain always with its domain: youragency.mb-suite.com).

kindenum | null

custom_domain or subdomain (an MB Suite subdomain).

Values: custom_domain, subdomain

surfaceenum

Where it was checked: team_access or client_portal.

Values: team_access, client_portal

availableboolean

True when this organization can take it there.

currentboolean

True when the organization already has it on that surface.

reasonenum | null

Why it is not available (null when it is).

Values: format, length, reserved, platform, taken_other_organization, taken_other_surface

messagestring | null

What to tell the person (in the language of the messages: English through the API and MCP); null when it is available.

labelstring | null

For an MB Suite subdomain, its label (youragency); null for a custom domain.

Errors

Example

curl "https://api.mb-suite.com/v1/branding/domains/availability?host=HOST" \
  -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/branding/domains/availability?host=HOST" \
  -H "Authorization: Bearer $MB_TEST_KEY"