update_brand_kit
Update existing brand kit with brand DNA parameters.
Destructive creative
Deletes, archives, launches or moves budget. Do not give an agent this one without a human gate.
What it does
Update existing brand kit with brand DNA parameters. Only company_url is required; all others are optional.
UPDATABLE FIELDS (grouped by section):
TOP-LEVEL:
- long_description: Company marketing description
- logo_url / logo_urls: Direct URL(s) to logo images (permanent override; super-user only)
- clear_logos: true removes the permanent logo override (super-user only)
- search_keywords: List of SEO/search keywords
- colors: Legacy flat color list [{hex, type, name?}]
- fonts: Legacy flat font list [{name, type}]
- website_background: Hex color of the brand website's background, used by generate_brand_creative as the default ad background
COLOR PALETTES (each entry: {hex, name, usage}):
- primary_colors, secondary_colors, accent_colors, extended_palette, semantic_colors
TYPOGRAPHY (string values):
Layered creatives set the headline in headline_font and the supporting line,
the CTA and any other text in body_font (primary_font only where those are
unset). To put a font in layered creatives, set headline_font and/or
body_font: they do not read secondary_font, eyebrow_font, subtitle_font,
cta_font or the legacy fonts list. They load their hosted fonts and Google
Fonts families only. A headline_font, body_font or primary_font they
cannot load is not saved when it is a near miss of one of their hosted
fonts or a common Google Fonts family, or when its title-cased spelling
is a Google Fonts family (lato for Lato); the result names the family to
use instead. Any other name they cannot load is saved, and the result
says which font they use in its place.
- primary_font, primary_font_usage, secondary_font, secondary_font_usage
- headline_font, headline_weight, headline_size, headline_case, headline_linespace, headline_letterspace
- eyebrow_font, eyebrow_weight, eyebrow_case, eyebrow_linespace, eyebrow_letterspace
- subtitle_font, subtitle_weight, subtitle_linespace, subtitle_letterspace
- body_font, body_weight, body_size, body_linespace, body_letterspace
- cta_font, cta_weight, cta_size, cta_linespace, cta_letterspace
LOGO USAGE:
- logo_on_dark, logo_on_light, logo_clear_space: string rules
- logo_misuse: list of misuse rules
CTA SYSTEM:
- button_shape, button_background, button_text_color, button_text_weight, button_text_case, button_padding
- standard_ctas: list of CTA labels
- cta_placement: placement guidance
SIGNATURE ELEMENTS:
- tagline, tagline_placement: strings
- tagline_variants, visual_motifs, promotional_elements: lists
MESSAGING:
- tone: string
- value_propositions, headline_formulas, proof_points: lists
- product_names: dict (e.g. {platform: "X", vlm: "Y"})
CONTENT HIERARCHY:
- content_hierarchy_order: list, content_hierarchy_spacing: string, content_hierarchy_text_max_width: string
PHOTOGRAPHY:
- photography_style, photography_treatment, photography_avoid: strings
- photography_subjects: list
RULES:
- dos: list of "do" rules
- donts: list of "don't" rules
LAYOUT & CHANNELS:
- primary_layouts: list of layout dicts
- channel_linkedin, channel_facebook, channel_display: channel config dicts
EXAMPLE: {"company_url": "ambient.ai", "tagline": "See what matters.", "headline_font": "Chakra Petch", "primary_colors": [{"hex": "#FFFFFF", "name": "White", "usage": "Primary background"}]}Arguments
| Argument | Type | Notes | |
|---|---|---|---|
company_url |
string | required | Company website URL or domain (e.g. 'ambient.ai'). |
long_description |
string | Company description for marketing use. | |
logo_url |
string | Direct URL to a single company logo image (back-compat; prefer logo_urls). Setting a permanent brand logo requires elevated Metadata permissions. | |
logo_urls |
array | One or more direct URLs to logo images to set as the brand's permanent logo(s). Each uploaded logo is automatically expanded into clean, persisted variants (transparent, high-res, and both a light and dark version when the mark is a single color) so generated creatives have multiple usable options. | |
remove_old_logos |
boolean | When true (default), replace the brand's existing logos with the provided ones; when false, append to them. | |
clear_logos |
boolean | Remove the brand kit's permanent logo override entirely (no logo_url needed), so creatives fall back to the cached Brandfetch logo variants for the domain. Use when a manually set logo turned out wrong or low quality. Same elevated Metadata permissions as setting one. | |
search_keywords |
array | SEO/search keywords for the brand. | |
website_background |
string | 6-digit hex color (e.g. '#FFFFFF') of the brand website's background. generate_brand_creative uses it as the default dominant background for ads (use_website_background). Set it when the user wants ads to match their site's background or the auto-detected value is wrong. | |
colors |
array | Legacy flat color list. Each: {hex (with #), type, name?}. | |
fonts |
array | Legacy flat font list. Each: {name, type}. Layered creatives do not read it: use headline_font and body_font. | |
primary_colors |
array | Primary color palette. | |
secondary_colors |
array | Secondary (supporting) color palette. | |
accent_colors |
array | Accent color palette. | |
extended_palette |
array | Extended grayscale palette. | |
semantic_colors |
array | Semantic/status colors. | |
primary_font |
string | Primary font family name. Layered creatives use it where headline_font or body_font is unset. | |
primary_font_usage |
string | Primary font usage description. | |
secondary_font |
string | Secondary/display font family name. Layered creatives do not read it: use headline_font or body_font. | |
secondary_font_usage |
string | Secondary font usage description. | |
headline_font |
string | Headline font family. Layered creatives set the headline in it. | |
headline_weight |
string | Headline font weight. | |
headline_size |
string | Headline font size range. | |
headline_case |
string | Headline text case rule. | |
headline_linespace |
string | Headline line spacing. | |
headline_letterspace |
string | Headline letter spacing. | |
eyebrow_font |
string | Eyebrow font family. Layered creatives do not read it: use body_font. | |
eyebrow_weight |
string | Eyebrow font weight. | |
eyebrow_case |
string | Eyebrow text case rule. | |
eyebrow_linespace |
string | Eyebrow line spacing. | |
eyebrow_letterspace |
string | Eyebrow letter spacing. | |
subtitle_font |
string | Subtitle font family. Layered creatives do not read it: their supporting line uses body_font. | |
subtitle_weight |
string | Subtitle font weight. | |
subtitle_linespace |
string | Subtitle line spacing. | |
subtitle_letterspace |
string | Subtitle letter spacing. | |
body_font |
string | Body text font family. Layered creatives set the supporting line, the CTA and any other text in it. | |
body_weight |
string | Body text font weight. | |
body_size |
string | Body text font size. | |
body_linespace |
string | Body text line spacing. | |
body_letterspace |
string | Body text letter spacing. | |
cta_font |
string | CTA/button font family. Layered creatives do not read it: their CTA uses body_font. | |
cta_weight |
string | CTA/button font weight. | |
cta_size |
string | CTA/button font size. | |
cta_linespace |
string | CTA/button line spacing. | |
cta_letterspace |
string | CTA/button letter spacing. | |
logo_on_dark |
string | Logo color rule on dark backgrounds. | |
logo_on_light |
string | Logo color rule on light backgrounds. | |
logo_clear_space |
string | Logo clear space rule. | |
logo_misuse |
array | List of logo misuse rules. | |
button_shape |
string | Button shape description. | |
button_background |
string | Button background style. | |
button_text_color |
string | Button text color rule. | |
button_text_weight |
string | Button text weight. | |
button_text_case |
string | Button text case. | |
button_padding |
string | Button padding. | |
standard_ctas |
array | Standard CTA labels. | |
cta_placement |
string | CTA placement guidance. | |
tagline |
string | Primary brand tagline. | |
tagline_variants |
array | Alternative taglines. | |
tagline_placement |
string | Tagline placement guidance. | |
visual_motifs |
array | Brand visual motifs. | |
promotional_elements |
array | Promotional proof points. | |
tone |
string | Brand tone description. | |
value_propositions |
array | Core value propositions. | |
headline_formulas |
array | Headline writing patterns. | |
proof_points |
array | Evidence/social proof items. | |
product_names |
object | Product name mapping (e.g. {platform: 'X', vlm: 'Y'}). | |
content_hierarchy_order |
array | Content element ordering. | |
content_hierarchy_spacing |
string | Section spacing guidance. | |
content_hierarchy_text_max_width |
string | Max text block width. | |
photography_style |
string | Photography style description. | |
photography_subjects |
array | Recommended photo subjects. | |
photography_treatment |
string | Photo treatment rules. | |
photography_avoid |
string | Photography anti-patterns. | |
dos |
array | Brand 'do' rules. | |
donts |
array | Brand 'don't' rules. | |
primary_layouts |
array | Layout system definitions. | |
channel_linkedin |
object | LinkedIn channel config. | |
channel_facebook |
object | Facebook channel config. | |
channel_display |
object | Display ads channel config. |
Request
Request template, not a complete runnable example. Replace placeholders, empty objects, arrays, and zero values with valid account-specific inputs. Read required fields and nested constraints in the full schema. Confirm the account, connected channels, and referenced assets before calling a write tool.
curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
-H "Authorization: $METADATA_PAT" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_brand_kit","arguments":{"company_url":"<company_url>"}}}'
Response
No recorded response. This tool can delete, archive, launch or move budget, so it is never executed to build these docs.
The request is an illustrative template. Fill required fields and check the current schema before calling it. No response is fabricated.
Related
Other creative tools: