Skip to main content
Glama

AdsAgent — Meta Ads MCP

templates_update

Destructive

Update an owned saved template immediately using request.template_name and flat update fields. Use new_template_name to rename or creative_distribution to change creative allocation. With no configuration maps, one source_ad_id or source_adset_id imports a fresh snapshot. Read back by exact template_name; this does not update running ads

Input Schema

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescriptionDefault
messageNo
retryableNo
support_refNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / request / properties / configuration_patch
      Added value: +{
      +  "additionalProperties": {
      +    "type": "object"
      +  },
      +  "description": "Apply nested field changes to the saved configuration. Omitted fields stay unchanged, null removes a field, and arrays replace the saved array. Requires expected_snapshot_revision from the current template.",
      +  "maxProperties": 3,
      +  "propertyNames": {
      +    "enum": [
      +      "campaign_params",
      +      "adset_params",
      +      "ad_params"
      +    ]
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / request / properties / expected_snapshot_revision
      Added value: +{
      +  "maxLength": 71,
      +  "minLength": 71,
      +  "pattern": "^sha256:[0-9a-f]{64}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / request / properties / interest_pack_name / anyOf
      Added value: +[
      +  {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / request / properties / interest_pack_name / default
      Added value: +null
    • removedInput schema / properties / request / properties / interest_pack_name / maxLength
      Removed value: -500
    • removedInput schema / properties / request / properties / interest_pack_name / minLength
      Removed value: -1
    • removedInput schema / properties / request / properties / interest_pack_name / type
      Removed value: -"string"
  2. Changed1 schema field changed
    • removedInput schema / properties / connection_context
      Removed value: -{
      -  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • addedInput schema / properties / request / properties / targeting
      Added value: +{
      +  "$ref": "#/$defs/TargetingIntent",
      +  "description": "Use language and country names, for example {\"languages\": [\"英语\"], \"countries\": [\"美国\"]}."
      +}
  4. Changed1 schema field changed
    • addedOutput schema / else / else / properties / content_updated_at
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  5. Changed6 schema fields changed
    • addedOutput schema / else / then / properties / category
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / else / then / properties / expected
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / else / then / properties / failure_kind
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / else / then / properties / responsibility_hint
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / else / then / properties / route
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / else / then / properties / user_visible
      Added value: +{
      +  "type": "boolean"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / connection_context
      Added value: +{
      +  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      +  "type": "string"
      +}
  7. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds meaningful context beyond them: the change is applied immediately (no prepare/confirm step, unlike many siblings), it affects only the saved template and not live ads, and the renamed template must be read back by exact template_name. It does not disclose permission requirements or what happens to objects referencing the old template name, which keeps it at 4.

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?

Purpose is front-loaded in the first clause, followed by three compact sentences covering rename/creative, snapshot import, and read-back scope. Some phrasing is dense and slightly awkward ('With no configuration maps, one source_ad_id or source_adset_id imports a fresh snapshot'), but no sentence is filler.

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 destructive, immediately-applied mutation with an output schema already covering return values, the description supplies the essentials: immediacy, blast radius (template only, not live ads), import semantics, and read-back key. Gaps remain around the optimistic-concurrency requirement and rename side effects, which an agent would need to call this safely.

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 effectively 0% for the ~20 nested request properties, so the description must compensate and it only partially does: it explains template_name, new_template_name, creative_distribution, source_ad_id/source_adset_id and their interaction with configuration maps. It says nothing about template_kind, tags, the naming fields, partnership fields, or the critical expected_snapshot_revision concurrency token, and it does not explain the two creative_distribution enum values.

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 names a specific verb and resource ('Update an owned saved template') and immediately scopes it ('immediately', 'flat update fields'). It also distinguishes itself from ads-mutation siblings with 'this does not update running ads', so an agent can tell what class of object is being modified without opening the schema.

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?

It gives concrete when-to-do-what guidance for the key optional fields ('Use new_template_name to rename', 'creative_distribution to change creative allocation', 'with no configuration maps, one source_ad_id ... imports a fresh snapshot'), plus an explicit exclusion ('does not update running ads'). It stops short of naming sibling tools (e.g., templates_get for read-back, templates_create) as alternatives, so it is a strong 4 rather than a 5.

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