Skip to main content
Glama

set_brand_profile

Write or update one client's brand profile. Every field is optional and only what you pass is changed, so this is safe to call repeatedly to correct a website draft. Pass confirm: true when the answers are right, which is what run_may needs. Confirming needs company_name, domain, flagship_product, offer_landing_page, target_customers and both colors. Needs the May plan and an X-Mako-Key header.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNo
offerNoThe standing offer, for example 20% off the variety pack.
voiceNoHow the brand sounds, in a sentence or two.
domainNoBare domain, for example acme.com.
confirmNoSet true to mark the profile ready for runs.
categoryNo
color_skyNoAccent color as hex.
known_forNoThe problem they solve.
objectiveNoThe default campaign goal for this client.
color_navyNoPrimary brand color as hex, for example #1E3A8A.
objectionsNoWhat stops people buying.
competitorsNoUp to three competitor brands May studies before writing concepts.
image_notesNoArt direction for the generated images.
price_rangeNo
website_urlNo
avoid_claimsNoClaims the creative must never make.
company_nameNo
daily_budgetNoDefault daily budget in whole dollars.
phone_numberNoOnly used by a calls campaign.
proof_pointsNoFacts the copy is allowed to claim. Nothing outside this list is used.
support_emailNo
signature_claimNoThe one thing this brand is known for.
flagship_productNoThe main thing to advertise.
popular_productsNo
target_customersNoWho buys it. One per entry.
client_account_idYesFrom list_clients.
offer_landing_pageNoWhere the ads should send people.
competitor_websitesNoOptional website per competitor, keyed by the name in competitors. Give it for a local business or a common name, so May reads the right one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / competitor_websites
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "Optional website per competitor, keyed by the name in competitors. Give it for a local business or a common name, so May reads the right one.",
      +  "type": "object"
      +}
    • addedInput schema / properties / competitors / description
      Added value: +"Up to three competitor brands May studies before writing concepts."
  2. Added

TDQS

A4.3/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: merge/patch semantics ('only what you pass is changed'), idempotent-safe framing, the confirm gate and exactly which fields confirming requires, plus auth requirements (May plan, X-Mako-Key header). Annotations only cover the safety profile, so this carries real extra weight.

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

Conciseness5/5

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

Front-loads the core action and merge semantics, then the confirm gate and prerequisites. Five dense sentences with no filler; every clause carries information an agent needs before calling.

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?

For a 28-parameter mutation tool with no output schema, the description covers the gating logic and prerequisites well. It leaves the response behavior and the semantics of less obvious fields (notes, price_range, competitor_websites interplay) unaddressed, but nothing critical to a correct call is missing.

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

Parameters4/5

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

Schema coverage is already 75%, and the description supplements it by explaining confirm's gating behavior and the six-plus fields required for confirmation, which the schema only marks as optional. The remaining undocumented params (notes, category, price_range, website_url, support_email) get no help, so it stops short of full compensation.

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

Purpose4/5

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

States a specific verb+resource ('Write or update one client's brand profile') and scopes it to a single client. It implicitly separates itself from the read sibling get_brand_profile and the generator draft_brand_from_website by framing itself as the corrector of a website draft, but it never names those siblings explicitly.

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

Usage Guidelines4/5

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

Gives clear operational context: safe to call repeatedly for corrections, and pass confirm:true when answers are final because run_may depends on it. It also lists the prerequisites (May plan, X-Mako-Key header). It stops short of explicitly routing the agent to get_brand_profile for reads or draft_brand_from_website for initial drafts.

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.