Create Meta DCO Ad
User wants Meta to automatically TEST MULTIPLE IMAGES and find the best combination.
This is Dynamic Creative Optimization (DCO). Meta tests all combinations of images × headlines × primary texts and optimizes delivery automatically.
USE THIS TOOL when the user says ANY of these:
- “test these images” / “test multiple images”
- “let Meta find the winner” / “let Meta optimize”
- “Dynamic Creative” / “DCO”
- “which image performs best”
- Provides multiple images and wants Meta to choose the best
- “test combinations” / “mix and match”
- “10 images × 5 headlines”
DO NOT USE add_meta_ad multiple times for this — that creates separate ads (A/B test). DCO is ONE ad with multiple assets that Meta mixes and optimizes.
Prerequisites:
- You need an ad_set_id with is_dynamic_creative=true
- If the user doesn’t have one, first call
add_meta_ad_setwithis_dynamic_creative=true - Then call this tool with the image_urls and text variations
Asset limits (from Meta):
- Images: 2-10 (required)
- Headlines: up to 5 (optional)
- Primary texts: up to 5 (optional)
- Descriptions: up to 5 (optional)
- Total assets: max 30
DCO ad sets support only 1 ad — do NOT add more ads to a DCO ad set.
Example: 5 images × 3 headlines × 2 primary texts = 30 combinations, Meta finds the winner.
Authorizations
API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
Headers
Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000
Body
All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.
Input schema for creating a Dynamic Creative Optimization (DCO) ad.
DCO lets Meta test combinations of multiple images, headlines, primary texts, and descriptions to find the best-performing mix automatically.
Response
Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).
Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.

