Skip to main content
Glama

Update ad

update_ad

Partial update of an ad. Returns the full updated/created object. Scoped to the active Space — see set_active_space to switch, or pass space_id to override for this one call.

Input Schema

NameRequiredDescriptionDefault
bodyYesRequest body matching the AdUpdate schema. Fields below; see the OpenAPI spec for nested object shapes.
ad_idYes
space_idNoOverride the active Space for this one call. Defaults to the active Space set via set_active_space (or GROWOMAT_SPACE_ID on the server). Pass to read/write a different Space without changing the session binding.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / body / properties / _native
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Platform-only settings, keyed by platform id (for example {\"openai-ads\": {\"budgetKind\": \"LIFETIME\"}}). Each value is stored and returned as sent. The NativeExtensions schema in the OpenAPI spec lists every key each platform reads and where (campaign, ad group or ad) — a lifetime budget, a bidding type, delivery surfaces, the words and image on a card. On update, send the whole object for a platform: it replaces that platform's settings.",
      +  "type": "object"
      +}
    • addedInput schema / properties / body / properties / angleId
      Added value: +{
      +  "description": "The angle (claim) this ad argues. Results are reported per angle.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / angleProvenance
      Added value: +{
      +  "description": "Where the angle stamp came from: written by Growomat, set by you, or inferred from the copy. Defaults to `user` when you set `angleId` yourself.",
      +  "enum": [
      +    "generated",
      +    "user",
      +    "inferred"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / competitorSimilarityAck
      Added value: +{
      +  "description": "Save manual copy that the competitor similarity check flagged. Only honoured when the refusal said `overridable: true`; the decision is recorded on the ad.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / body / properties / conceptId
      Added value: +{
      +  "description": "The concept (way of making the claim) this ad is a rendition of.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / creative
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Format-specific creative. For a single-image card, creative.imageUrl is the card's own image (it wins over an image attached with attach_asset_to_ad).",
      +  "type": "object"
      +}
    • addedInput schema / properties / body / properties / type
      Added value: +{
      +  "description": "Ad format. Defaults from the campaign type per platform; ads imported from a platform record the format that actually serves.",
      +  "enum": [
      +    "RESPONSIVE_SEARCH_AD",
      +    "RESPONSIVE_DISPLAY_AD",
      +    "PERFORMANCE_MAX_ASSET_GROUP",
      +    "VIDEO_AD",
      +    "REDDIT_TEXT_POST",
      +    "REDDIT_IMAGE_POST",
      +    "REDDIT_VIDEO_POST",
      +    "REDDIT_CAROUSEL_POST",
      +    "META_LINK_AD",
      +    "META_IMAGE_AD",
      +    "META_VIDEO_AD",
      +    "META_CAROUSEL_AD",
      +    "OPENAI_CHAT_CARD",
      +    "OPENAI_PRODUCT_AD_TEMPLATE",
      +    "LINKEDIN_SINGLE_IMAGE",
      +    "LINKEDIN_TEXT_AD",
      +    "LINKEDIN_VIDEO",
      +    "LINKEDIN_CAROUSEL",
      +    "LINKEDIN_DOCUMENT"
      +  ],
      +  "type": "string"
      +}
  2. First observed

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare non-read-only and non-destructive. The description adds that the return value is the full updated object, but leaves out whether omitted body fields are preserved or cleared, and the phrase "updated/created" implies a possible upsert without confirming it. The schema's important note that _native replaces a platform's settings wholesale is not surfaced in the description.

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?

Three short sentences, front-loaded with the operation and return value before the scoping caveat. No filler; the only slight waste is the ambiguous "updated/created" pairing.

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

Completeness3/5

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

For a mutation tool with a large nested body and no output schema, the description covers the return shape and Space scoping, which is useful. It omits merge-versus-replace semantics for the body and for _native, and gives no hint about permission or validation behavior, leaving meaningful gaps for an agent composing an update.

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

Parameters3/5

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

Schema description coverage is 67%, so the schema carries most of the burden and the baseline is 3. The description's "partial update" is the one semantic addition: it signals that only supplied fields change, which the schema does not state outright, but it adds no detail on ad_id, body contents, or the _native replacement behavior.

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 and resource ("Partial update of an ad") and the qualifier "partial" meaningfully separates it from create_ad and update_ad_group. It does not explicitly name those siblings, so a 4 rather than 5.

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 description gives real routing guidance for the Space dimension — switch with set_active_space or pass space_id for a one-off override — which is genuinely actionable. It says nothing about when to update versus create/replace an ad, or which fields are appropriate to change, so usage guidance is only partially covered.

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