Skip to main content
Glama

Duplicate Ad Set

adsap_duplicate_ad_set

Duplicate an existing Meta ad set into 1-10 copies, keeping ALL its ads (including ads with no delivery yet). Every copy and every recreated ad is PAUSED. Each recreated ad reuses the source ad's creative, so the original post and its likes/comments are preserved. Per copy you can override the name, the geo targeting (geo-split flow: one copy per region/country) and daily spend limits — as absolute amounts or as a % of the campaign daily budget (Advantage campaign budget campaigns only; the % auto-computes the absolute like Ads Manager). ALWAYS call with dry_run: true first: it returns the plan (source ad set, the exact ads that will be recreated, per-copy overrides, warnings) — show it to the user and only execute after they confirm. Partial failures are reported per copy and per ad in data.copies[].errors with Meta's own error text.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
copiesYesOne entry per copy to create (1-10). An empty object {} makes a plain copy.
dry_runNotrue = return the duplication plan without creating anything. ALWAYS run this first.
include_adsNoDefault true: recreate the source ad set's ads (first 50) in each copy. false = copy the ad set shell only.
ad_account_idYesAd account ID (act_xxx) the source ad set belongs to.
source_adset_idYesNumeric ID of the ad set to duplicate (from adsap_list_ad_sets).
target_campaign_idNoOptional: create the copies in ANOTHER campaign (numeric id). Meta requires the same objective as the source campaign and rejects a mismatch.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses critical behaviors: all copies and recreated ads are paused, creatives are reused preserving original post likes/comments, partial failures are reported per copy and per ad with Meta's error text, and the dry-run behavior. It also explains that percentage caps apply only to Advantage campaign budget campaigns and that the source ad set's targeting is kept except for geo overrides. This is comprehensive for a mutation tool.

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?

The description is a single dense paragraph, roughly 150 words, that packs all essential information. It is front-loaded with the core action ('Duplicate an existing Meta ad set into 1-10 copies') and the critical dry-run instruction follows. Every sentence adds value, though the paragraph is lengthy and could benefit from bullets for readability. Still, it's efficient given the tool's complexity.

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?

Given the complexity (6 params, nested copies array, multiple override options, dry-run flow) and the absence of both annotations and an output schema, the description is notably complete. It covers the return plan, partial failure reporting, the source ad set and ad recreation, and the constraints for percentage-based caps. An agent has everything needed to call it correctly, including the mandatory dry-run step.

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 schema has 100% description coverage, so baseline is 3. The description adds value by explaining the geo-split flow (one copy per region/country) and the interplay between absolute and percentage spend caps (e.g., 'same mechanics as min_spend_percentage'). It also clarifies that omitted names default to '<source name> copy' and that geo overrides replace the entire geo_locations. These are meaningful additions beyond the schema's field descriptions.

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 verb ('Duplicate'), a specific resource ('Meta ad set'), and a precise scope: creating 1-10 copies that keep all ads, with each copy and ad paused. It clearly distinguishes from sibling tools like adsap_create_ad_set (which likely creates a new ad set from scratch) by emphasizing duplication of an existing ad set with all its ads. The purpose is unmistakable.

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?

The description explicitly mandates a dry-run first workflow: 'ALWAYS call with dry_run: true first: it returns the plan... show it to the user and only execute after they confirm.' This is a clear when-to-use directive. It also explains when to use the geo-split flow (when overriding geo per copy) and the Advantage campaign budget condition for percentage-based spend caps. It does not name alternative siblings, but the context is sufficient for an agent to know when to invoke this tool.

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