ZuckerBot › Tool reference › Strategy & campaign build
zuckerbot_duplicate_ad
| Name | Type | Description | |
|---|---|---|---|
business_id | string | optional | Optional business ID override for the authenticated API key |
source_ad_id | string | required | Numeric Meta ad id to duplicate (must be in the connected ad account) |
target_adset_id | string | required | Numeric Meta ad set id to create the duplicate in (must be an EXISTING ad set in the same ad account) |
name | string | optional | Override: name for the new ad (default: '<source name> (copy)') |
primary_text | string | optional | Override: primary text / body copy |
headline | string | optional | Override: headline |
description | string | optional | Override: description |
cta | string | optional | Override: uppercase Meta CTA type, e.g. LEARN_MORE or SIGN_UP |
final_url | string | optional | Override: destination URL (http/https) |
execute | boolean | optional | Default false (dry-run). Set true to actually create the PAUSED duplicate — requires idempotency_key |
idempotency_key | string | optional | Required when execute is true. Generate once per logical operation (UUIDv4 recommended); reuse the identical value only when retrying the identical request |
{
"tool": "zuckerbot_duplicate_ad",
"arguments": {
"source_ad_id": "<source_ad_id>",
"target_adset_id": "<target_adset_id>"
}
}
You never invoke this directly — describe what you want in plain English inside Claude, Cursor, ChatGPT or any MCP client with ZuckerBot connected, and the agent selects zuckerbot_duplicate_ad and fills the arguments for you.