Skip to main content
Glama

Replace Ad Creative (edit ad content)

adsap_replace_ad_creative

DESTRUCTIVE. Edit the CONTENT of an existing Meta ad: primary text, headline, description, CTA, destination link, display link, UTM url_tags, and the image/video itself. Meta creatives are immutable, so this builds a NEW creative and repoints the ad: the ad keeps its id but gets a new creative_id and the old creative is orphaned. Editing a live/spending ad can reset its social proof (likes/comments/shares) and restart the learning phase. Text fields are ARRAYS — send the COMPLETE set with your edits applied; entries you don't change are preserved verbatim. Media swaps use creative-library assets only and are like-for-like (image->image, video->video); for multi-image ads (square + vertical) use the media array, one entry per slot. ALWAYS call with dry_run: true first — the dry-run returns the before/after diff AND the current media slots (use those to build a media swap) — then dry_run: false to apply.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ad_idYesThe Meta AD id to edit (the ad, not the creative). The ad keeps this id; only its creative is replaced.
dry_runNotrue = preview the before->after diff without writing anything. ALWAYS run dry_run: true first.
ad_account_idYesact_<digits>.
creative_specYesThe content fields to change. Text fields are ARRAYS — send the complete set with edits applied; unchanged entries are kept. Media swaps use creative-library assets only (image->image, video->video). At least one field is required.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral disclosure burden. It explicitly warns the tool is DESTRUCTIVE, explains the immutable-creative mechanism (new creative_id, orphaned old creative), discloses side effects on live ads (reset social proof, restart learning phase), and details array/media handling semantics. This is exceptionally transparent and goes beyond what annotations would typically provide.

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?

The description is dense but every sentence earns its place: it front-loads the destructive warning, explains the immutable mechanism, lists side effects, covers text-array and media-swap rules, and gives the mandatory dry-run workflow. No fluff or repetition; the structure is logical and efficient for a tool with this complexity.

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?

The description covers the tricky behavioral aspects thoroughly and provides step-by-step usage for dry_run, which is critical for correct invocation. However, there is no output schema and the description does not explicitly state what the tool returns when dry_run: false (e.g., success indication, new creative_id). Given the complexity and lack of output schema, this is a minor but notable gap.

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?

The input schema already has 100% parameter description coverage, and the description reinforces key semantics (arrays must be complete sets, media slots like-for-like, dry_run importance). It adds value beyond the schema by explaining the dry-run process for retrieving media slots and the ordering requirement for the media array. This is above the baseline for high schema coverage.

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 states a specific action ('Edit the CONTENT of an existing Meta ad') and enumerates exactly which fields are affected (primary text, headline, description, CTA, links, media). It also distinguishes itself from sibling create tools by explaining the immutable-creative mechanism and that the ad id is preserved. This clearly differentiates it from adsap_create_ad and similar tools.

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?

The description gives clear procedural guidance ('ALWAYS call with dry_run: true first') and explains when the tool is appropriate (editing existing ad content). However, it does not explicitly name alternatives for other ad modifications (e.g., budget changes via update_entity) or state when not to use this tool. The context is present but exclusions are implicit rather than stated.

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