Menu

API reference · Brand Voice

Profile

social_brand_voice · profile · 3 operations

GET/v1/social-brand-voice/profile

Get the brand voice profile

social_brand_voice.profile.get

ReadIdempotentSince 2026-11-01

Returns the organization's Brand Voice, the guide MB Suite's AI follows when it writes captions, video scripts, post ideas and inbox replies: personality (tones, custom_tone_note, communication_style), vocabulary (preferred_words, avoided_words, jargon_level), format (emoji_usage, hashtag_usage, post_structure), audience (audience_persona, tone_adaptation_note), per-network adjustments (platform_adjustments for instagram, facebook, linkedin and tiktok: tone_note, max_caption_length, include_hashtags) and ai_summary, the short description shown on the Brand Voice screen. configured=false and profile=null when it was never set or was reset. Values: tones formal, casual, friendly, authoritative, inspirational, humorous or educational; communication_style descriptive, narrative, direct or conversational; jargon_level avoid, moderate or technical; emoji_usage none, minimal, moderate or free; hashtag_usage none, moderate or per_platform. Requires view access to Brand Voice.

Scope
social_brand_voice:read
Permission
View the module
MCP tool
social_brand_voice_profile_getOn the full surface; on the compact one, mb_execute_operation with id: "social_brand_voice.profile.get".

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

Parameters

No parameters.

Response

configuredboolean
profileobject | null

Errors

Example

curl "https://api.mb-suite.com/v1/social-brand-voice/profile" \
  -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/social-brand-voice/profile" \
  -H "Authorization: Bearer $MB_TEST_KEY"
PATCH/v1/social-brand-voice/profile

Update the brand voice profile

social_brand_voice.profile.update

WriteIdempotentSince 2026-11-01

Changes one or more fields of the Brand Voice (updates object) and creates the profile if there was none. Only what is sent changes: tones, preferred_words and avoided_words replace the whole list ([] empties it); null clears a text or option field; platform_adjustments replaces all the per-network adjustments (keys instagram, facebook, linkedin, tiktok; null removes them). Values: tones formal, casual, friendly, authoritative, inspirational, humorous or educational; communication_style descriptive, narrative, direct or conversational; jargon_level avoid, moderate or technical; emoji_usage none, minimal, moderate or free; hashtag_usage none, moderate or per_platform. Through the API and the MCP it never spends AI: when a field that ai_summary describes changes (tones, communication style, tone note, emojis, hashtags, preferred or avoided words, audience) the summary is cleared, and the screen writes it again the next time someone saves there, unless updates.ai_summary brings one written by hand (up to 1,000 characters): then it is saved as sent even if those fields change in the same request (null clears it), and it stays until someone changes a field it describes without sending a new one, or saves on the screen after changing one. On the screen the summary is rewritten with AI and uses the AI credits of the person who saves; with no credits left the profile is still saved, without a new summary. ai_summary_status says what happened (provided, regenerated, kept, cleared, failed, or no_credits when the screen could not rewrite it for lack of AI credits); a hand-written summary that changed also comes in changed_fields as ai_summary. Sending the same values changes nothing (changed_fields comes back empty). Every change fires social_brand_voice.profile.updated. If someone else saved at the same instant it fails with brand_voice_profile_changed (409): read the profile again and retry. Returns the profile as it was saved. Requires edit access to Brand Voice.

Instructions for agents

If ai_summary_status is cleared, tell the person that the summary on the Brand Voice screen is rewritten the next time someone saves there (or offer to write it with updates.ai_summary); the AI already uses the new values.

Scope
social_brand_voice:write
Permission
Edit in the module
MCP tool
social_brand_voice_profile_updateOn the full surface; on the compact one, mb_execute_operation with id: "social_brand_voice.profile.update".

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

Parameters

updatesobjectbodyrequired

What changes (only what comes is touched; lists replace the whole list, null clears a text or an option). Creates the profile if there is none.

Response

profileobject
changed_fieldsarray<string>
ai_summary_statusenum

Values: regenerated, kept, cleared, failed, provided, no_credits

ai_summary_credits_codeenum

Only with ai_summary_status no_credits (a save from the app): why the summary was not rewritten.

Values: ai_credits_exhausted, ai_personal_limit, payment_required

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/social-brand-voice/profile" \
  -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/social-brand-voice/profile" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'
DELETE/v1/social-brand-voice/profile

Reset the brand voice profile

social_brand_voice.profile.reset

IrreversibleIdempotentSince 2026-11-01

Resets the Brand Voice: deletes the whole profile (tones, vocabulary, format, audience and per-network adjustments) and MB Suite's AI stops applying it. The documents uploaded to Brand Voice stay (delete them with social_brand_voice.documents.delete). The profile goes to the 30-day trash and owners and admins can restore it; if a new profile was saved in between, reset that one first and then restore the old one. With no profile configured it does nothing (reset=false). Fires social_brand_voice.profile.updated with profile=null. Outside the screen it needs confirmation: a dry run and its confirm_token, or the simple DELETE of the REST API. Requires edit access to Brand Voice.

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
social_brand_voice:write and “Allow deletions” (social_brand_voice:delete in OAuth)
Permission
Edit in the module
MCP tool
social_brand_voice_profile_resetOn the full surface; on the compact one, mb_execute_operation with id: "social_brand_voice.profile.reset".

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

Parameters

No parameters.

Response

resetboolean
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/social-brand-voice/profile" \
  -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/social-brand-voice/profile" \
  -H "Authorization: Bearer $MB_TEST_KEY"