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. A voice.voice.tone entry can name its limit as ', not ' ('warm, not gushing'). voice.voice.antiExamples holds posts that don't sound like the brand; drafts read them as what to avoid. 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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "section": "<section>"
    },
    "name": "update_brand_profile"
  }
}

Input 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, antiExamples, hashtags, ctaDefaults}, companyFacts {name, site, hq, 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

NameRequiredDescriptionDefault
titleYes
appUrlYes
valuesYes
sectionYes
confirmedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / voice / description
      Previous value: -"Brand and voice fields to change: positioning, differentiators, doctrine, voice {tone, principles, do, dont, examplePosts, antiExamples, hashtags, ctaDefaults}, companyFacts {name, site, hq, factoryLocations, productRangeSummary, languages}."New value: +"Brand and voice fields to change: positioning, differentiators, doctrine, voice {tone, principles, do, dont, examplePosts, antiExamples, hashtags, ctaDefaults}, companyFacts {name, site, hq, productRangeSummary, languages}."
  2. Changed1 schema field changed
    • changedInput schema / properties / voice / description
      Previous 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}."New value: +"Brand and voice fields to change: positioning, differentiators, doctrine, voice {tone, principles, do, dont, examplePosts, antiExamples, hashtags, ctaDefaults}, companyFacts {name, site, hq, factoryLocations, productRangeSummary, languages}."
  3. 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"
      +]
  4. 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"
      +]
  5. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Well beyond the annotations: it discloses merge-vs-replace semantics (lists replace, voice/companyFacts merge key by key, colors merge by role), that an empty string clears a text field, and critically that saving clears a section's confirmation unless confirm: true is passed. That last point is a non-obvious side effect that the idempotentHint/readOnlyHint annotations do not convey. Minor gap: no statement on what happens to a section on failure or any partial-write behavior, so not a full 5.

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 enumeration and organized around edit semantics, confirmation, then content-placement rules, so it reads in a useful order. It is long and the middle paragraph on BrandProfile voice prose, tone limits and antiExamples drifts toward drafting guidance rather than calling this tool, which costs it a point.

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 six-parameter mutation tool with nested free-form objects and a confirmation gate, everything an agent needs to call it safely is present: section enum mapping, merge/replace rules, the confirm protocol, the appUrl follow-up, and id sourcing. An output schema exists and the description still mentions the returned appUrl, so nothing material is missing.

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%, yet the description still adds real meaning the schema does not: which section object maps to which section value, that fields omitted keep saved values, the difference between replacing lists and merging maps, that visual.logoAssetId must come from search_assets or add_asset, and that evidence cites via sourceId (from get_brand_context sources) or sourceUrl.

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 and resource ('Edits one section of the Brand page') and immediately enumerates the four sections with what each covers, so an agent knows exactly what the tool writes to. The closing 'Related:' line plus the inline routing to get_brand_context (read), search_assets/add_asset (logo ids) and save_content_exclusion (literal exclusions) separates it sharply from siblings.

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?

Gives explicit when-to-use and when-not-to rules: only pass confirm: true when a person has reviewed the content and explicitly asked; otherwise send the returned appUrl. It also routes adjacent needs to alternatives ('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').

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