update_brand_kit
brand:write
Save changes to the workspace's brand kit: colours, fonts, logo, tagline and website. Only the fields you pass change; pass null to clear one. Confirm the values with the user first, usually after find_brand_kit_on_website, whose suggestion is already in this tool's input shape. logo: {url} imports a public SVG, PNG, JPEG or WebP (up to 5 MB) into the workspace; {assetId} uses an image already there. dryRun: true checks everything and returns the would-be kit and warnings without saving.
Returns the saved kit, what changed and any warnings; a refused call saves nothing and lists every bad field so you can fix them in one retry. Spends no credits.
Input
colorsobjectNamed colour roles. Only the roles you pass change.
Fields
primarystring | nullMain brand colour: CTA pills, highlights. Hex like #5A3FE0 (or #RGB); null clears it.
secondarystring | nullSecond brand colour, paired with primary in gradients. Hex like #5A3FE0 (or #RGB); null clears it.
accentstring | nullAccent for small highlights. Hex like #5A3FE0 (or #RGB); null clears it.
backgroundstring | nullDark-theme background, e.g. #151925. Hex like #5A3FE0 (or #RGB); null clears it.
headingFontstring | nullHeading font family, e.g. "Manrope" (1-80 chars). null clears it.
bodyFontstring | nullBody font family. null clears it.
logoobject | null{url}: a public http(s) link to an SVG, PNG, JPEG or WebP logo (at most 5 MB); the server downloads it and stores a sanitised copy in the workspace. {assetId}: an image already in the workspace, such as a create_branded_image asset. null removes the logo.
taglinestring | nullUp to 200 characters. null clears it.
websitestring | nullhttp(s) URL. null clears it.
ifUpdatedAtstringThe updatedAt you last read. If the kit changed since, nothing is saved and the current kit is returned.
dryRunbooleanValidate and return the would-be kit and warnings without saving.
Permission
Needs the brand:write scope: update your brand kit. It changes your workspace, so clients may ask you to confirm each call.
Example call
Your assistant sends this for you. It is shown so you can see the shape of a call, with placeholder values for the required fields.
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "update_brand_kit", "arguments": {} }}Same action over the REST API
The tool runs PATCH /v1/orgs/{orgId}/brand/kit as the signed-in user, with the same validation, approval rules and limits. See it in the Brand API reference.