Skip to main content
Glama

Update Brand Profile

update_brand_profile
Idempotent

Edits one section of the Brand page: section=voice (Brand and voice), visual (Visual identity: logo, colors, fonts), overlay (Entities and evidence: primary and secondary entities, experts, evidence, sameAs, Wikidata ids) or offer (Offer: what is sold today, available now, planned and not available yet, pricing, promises, claims to avoid). Pass the section's object with only the fields that change, in the shape get_brand_context returns under profile. Fields you leave out keep their saved values; lists you send replace the saved list; an empty string clears a text field. voice.voice and voice.companyFacts merge key by key, and visual.colors merges by role. Set the logo with visual.logoAssetId, an image id from search_assets or add_asset. Overlay evidence cites a source by sourceId (get_brand_context sources) or a sourceUrl. Confirmed means a person reviewed the section, and Mark's own drafting uses a section only once it is confirmed. Saving clears the section's confirmation unless you pass confirm: true. Only pass confirm: true when the person you act for has reviewed the content and explicitly asked you to confirm it. confirm: true with no fields confirms the section as it is. Otherwise send them the returned appUrl to review and confirm it there. BrandProfile voice (do, dont, principles, doctrine) is prose guidance the model reads. Claims the brand must not make go in offer.claimsToAvoid, not voice.dont. Literal phrases to block or warn on belong in save_content_exclusion. Related: get_brand_context, search_assets, add_asset, save_content_exclusion.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
offerNoOffer fields to change: today (what you sell today, one or two sentences), availableNow (list), planned (list: planned and not available yet), pricing (text), promises (list), claimsToAvoid (list).
voiceNoBrand and voice fields to change: positioning, differentiators, doctrine, voice {tone, principles, do, dont, examplePosts, hashtags, ctaDefaults}, companyFacts {name, site, hq, factoryLocations, productRangeSummary, languages}.
visualNoVisual identity fields to change: logoAssetId (image asset id; empty string removes the logo), faviconUrl, colors [{role: primary|secondary|accent|background|text, value: #RRGGBB}], headingFont, bodyFont.
confirmNoDefault false. true marks the section as reviewed by a person. Only when they explicitly asked you to confirm it.
overlayNoEntities and evidence fields to change: primaryEntity, secondaryEntities (at most 3), experts [{name, title, sourceUrl?}], evidence [{label, sourceId or sourceUrl}], sameAs (profile URLs), wikidataIds (like Q42).
sectionYesWhich Brand section to update.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYes
appUrlYes
valuesYes
sectionYes
confirmedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / offer
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Offer fields to change: today (what you sell today, one or two sentences), availableNow (list), planned (list: planned and not available yet), pricing (text), promises (list), claimsToAvoid (list).",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / section / enum
      Previous value: -[
      -  "voice",
      -  "visual",
      -  "overlay"
      -]New value: +[
      +  "voice",
      +  "visual",
      +  "overlay",
      +  "offer"
      +]
  2. Changed12 schema fields changed
    • addedInput schema / properties / confirm
      Added value: +{
      +  "description": "Default false. true marks the section as reviewed by a person. Only when they explicitly asked you to confirm it.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / overlay
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Entities and evidence fields to change: primaryEntity, secondaryEntities (at most 3), experts [{name, title, sourceUrl?}], evidence [{label, sourceId or sourceUrl}], sameAs (profile URLs), wikidataIds (like Q42).",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / section / description
      Previous value: -"Which half of the brand profile to update."New value: +"Which Brand section to update."
    • changedInput schema / properties / section / enum
      Previous value: -[
      -  "voice",
      -  "visual"
      -]New value: +[
      +  "voice",
      +  "visual",
      +  "overlay"
      +]
    • changedInput schema / properties / visual / description
      Previous value: -"Brand visual fields: colors, headingFont, bodyFont, logoAssetId, faviconUrl."New value: +"Visual identity fields to change: logoAssetId (image asset id; empty string removes the logo), faviconUrl, colors [{role: primary|secondary|accent|background|text, value: #RRGGBB}], headingFont, bodyFont."
    • changedInput schema / properties / voice / description
      Previous value: -"Brand voice fields: positioning, tone, do, dont, principles, examplePosts, hashtags, ctaDefaults, differentiators, doctrine, companyFacts."New value: +"Brand and voice fields to change: positioning, differentiators, doctrine, voice {tone, principles, do, dont, examplePosts, hashtags, ctaDefaults}, companyFacts {name, site, hq, factoryLocations, productRangeSummary, languages}."
    • addedOutput schema / properties / appUrl
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / confirmed
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / title
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / updated
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / values
      Added value: +{}
    • changedOutput schema / required
      Previous value: -[
      -  "section",
      -  "updated"
      -]New value: +[
      +  "appUrl",
      +  "confirmed",
      +  "section",
      +  "title",
      +  "values"
      +]
  3. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only say not-read-only, idempotent, non-destructive; the description adds real behavioral depth the annotations cannot: merge-by-key for voice.voice/companyFacts, list replacement, empty-string clearing, logo removal, and that saving clears a section's confirmation unless confirm: true.

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?

Front-loaded with the section map before the mutation rules, and essentially every sentence carries decision-relevant content. It is a dense, long block however; the confirmation/merge rules could be more scannable, which keeps it from a 5.

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

Completeness5/5

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

For a 6-param tool with nested objects, one enum, and an output schema already covering return values, the description supplies everything an agent needs: section semantics, update/merge rules, and the confirm workflow with its caveat.

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 already 100%, but the description still adds semantics the schema lacks: per-field merge vs replace vs clear behavior, colors merging by role, and where the logoAssetId and sourceId values come from. This is genuinely more than the structured fields provide.

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?

Opens with a specific verb+resource ('Edits one section of the Brand page') and then enumerates all four sections with exactly what each covers, so an agent can route correctly without opening the schema. It also names sibling tools (get_brand_context) that supply the data shapes.

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

Usage Guidelines5/5

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

Explicit 'when' rules: only pass confirm: true when a person has reviewed and asked; otherwise send the returned appUrl. It also gives alternatives ('Literal phrases to block... belong in save_content_exclusion') and source lookups (search_assets/add_asset, get_brand_context).

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