Skip to main content
Glama

Metadata MCP Connector

Update Brand Kit

update_brand_kit
Destructive

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"}]}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dosNoBrand 'do' rules.
toneNoBrand tone description.
dontsNoBrand 'don't' rules.
fontsNoLegacy flat font list. Each: {name, type}. Layered creatives do not read it: use headline_font and body_font.
colorsNoLegacy flat color list. Each: {hex (with #), type, name?}.
taglineNoPrimary brand tagline.
cta_fontNoCTA/button font family. Layered creatives do not read it: their CTA uses body_font.
cta_sizeNoCTA/button font size.
logo_urlNoDirect URL to a single company logo image (back-compat; prefer logo_urls). Setting a permanent brand logo requires elevated Metadata permissions.
body_fontNoBody text font family. Layered creatives set the supporting line, the CTA and any other text in it.
body_sizeNoBody text font size.
logo_urlsNoOne 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. Setting a permanent brand logo requires elevated Metadata permissions.
cta_weightNoCTA/button font weight.
body_weightNoBody text font weight.
clear_logosNoRemove 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.
company_urlYesCompany website URL or domain (e.g. 'ambient.ai').
logo_misuseNoList of logo misuse rules.
button_shapeNoButton shape description.
eyebrow_caseNoEyebrow text case rule.
eyebrow_fontNoEyebrow font family. Layered creatives do not read it: use body_font.
logo_on_darkNoLogo color rule on dark backgrounds.
primary_fontNoPrimary font family name. Layered creatives use it where headline_font or body_font is unset.
proof_pointsNoEvidence/social proof items.
accent_colorsNoAccent color palette.
cta_linespaceNoCTA/button line spacing.
cta_placementNoCTA placement guidance.
headline_caseNoHeadline text case rule.
headline_fontNoHeadline font family. Layered creatives set the headline in it.
headline_sizeNoHeadline font size range.
logo_on_lightNoLogo color rule on light backgrounds.
product_namesNoProduct name mapping (e.g. {platform: 'X', vlm: 'Y'}).
standard_ctasNoStandard CTA labels.
subtitle_fontNoSubtitle font family. Layered creatives do not read it: their supporting line uses body_font.
visual_motifsNoBrand visual motifs.
body_linespaceNoBody text line spacing.
button_paddingNoButton padding.
eyebrow_weightNoEyebrow font weight.
primary_colorsNoPrimary color palette.
secondary_fontNoSecondary/display font family name. Layered creatives do not read it: use headline_font or body_font.
channel_displayNoDisplay ads channel config.
cta_letterspaceNoCTA/button letter spacing.
headline_weightNoHeadline font weight.
primary_layoutsNoLayout system definitions.
search_keywordsNoSEO/search keywords for the brand.
semantic_colorsNoSemantic/status colors.
subtitle_weightNoSubtitle font weight.
body_letterspaceNoBody text letter spacing.
button_text_caseNoButton text case.
channel_facebookNoFacebook channel config.
channel_linkedinNoLinkedIn channel config.
extended_paletteNoExtended grayscale palette.
logo_clear_spaceNoLogo clear space rule.
long_descriptionNoCompany description for marketing use.
remove_old_logosNoWhen true (default), replace the brand's existing logos with the provided ones; when false, append to them.
secondary_colorsNoSecondary (supporting) color palette.
tagline_variantsNoAlternative taglines.
button_backgroundNoButton background style.
button_text_colorNoButton text color rule.
eyebrow_linespaceNoEyebrow line spacing.
headline_formulasNoHeadline writing patterns.
photography_avoidNoPhotography anti-patterns.
photography_styleNoPhotography style description.
tagline_placementNoTagline placement guidance.
button_text_weightNoButton text weight.
headline_linespaceNoHeadline line spacing.
primary_font_usageNoPrimary font usage description.
subtitle_linespaceNoSubtitle line spacing.
value_propositionsNoCore value propositions.
website_backgroundNo6-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.
eyebrow_letterspaceNoEyebrow letter spacing.
headline_letterspaceNoHeadline letter spacing.
photography_subjectsNoRecommended photo subjects.
promotional_elementsNoPromotional proof points.
secondary_font_usageNoSecondary font usage description.
subtitle_letterspaceNoSubtitle letter spacing.
photography_treatmentNoPhoto treatment rules.
content_hierarchy_orderNoContent element ordering.
content_hierarchy_spacingNoSection spacing guidance.
content_hierarchy_text_max_widthNoMax text block width.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / secondary_colors
      Added value: +{
      +  "description": "Secondary (supporting) color palette.",
      +  "items": {
      +    "properties": {
      +      "hex": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "usage": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "hex",
      +      "name",
      +      "usage"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed8 schema fields changed
    • changedInput schema / properties / body_font / description
      Previous value: -"Body text font family."New value: +"Body text font family. Layered creatives set the supporting line, the CTA and any other text in it."
    • changedInput schema / properties / cta_font / description
      Previous value: -"CTA/button font family."New value: +"CTA/button font family. Layered creatives do not read it: their CTA uses body_font."
    • changedInput schema / properties / eyebrow_font / description
      Previous value: -"Eyebrow font family."New value: +"Eyebrow font family. Layered creatives do not read it: use body_font."
    • changedInput schema / properties / fonts / description
      Previous value: -"Legacy flat font list. Each: {name, type}."New value: +"Legacy flat font list. Each: {name, type}. Layered creatives do not read it: use headline_font and body_font."
    • changedInput schema / properties / headline_font / description
      Previous value: -"Headline font family."New value: +"Headline font family. Layered creatives set the headline in it."
    • changedInput schema / properties / primary_font / description
      Previous value: -"Primary font family name."New value: +"Primary font family name. Layered creatives use it where headline_font or body_font is unset."
    • changedInput schema / properties / secondary_font / description
      Previous value: -"Secondary/display font family name."New value: +"Secondary/display font family name. Layered creatives do not read it: use headline_font or body_font."
    • changedInput schema / properties / subtitle_font / description
      Previous value: -"Subtitle font family."New value: +"Subtitle font family. Layered creatives do not read it: their supporting line uses body_font."
  3. First observed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true, and the description goes well beyond them: it discloses super-user/elevated Metadata permissions for logo overrides, explains clear_logos removes the permanent override, and details font validation/fallback behavior. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but well-structured with section headers and a final example; the first line front-loads purpose and required parameter. Some field descriptions overlap with the schema, but the grouped organization earns the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 79 parameters, one required field, and no output schema, the description covers invocation, field groups, typography behavior, permissions, and an example. It omits explicit sibling routing and a general overwrite warning, but annotations cover the destructive profile and the schema covers parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaningful grouping by section, cross-tool semantics (website_background used by generate_brand_creative), layered-creative font relationships, logo lifecycle behavior, and a concrete JSON example. This materially exceeds the baseline schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Update existing brand kit with brand DNA parameters.' It clearly distinguishes from sibling tools by emphasizing 'existing', and 'Only company_url is required' gives immediate invocation scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'existing' phrasing implies this is not for creating a brand kit, but it never names generate_brand_kit/get_brand_kit or states when not to use this tool. Guidance is implicit rather than explicit, so an agent must infer the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources