Learn-skills.dev adcp-creative
Execute AdCP Creative Protocol operations with creative agents - build creatives from briefs or existing assets, preview renderings, and discover format specifications. Use when users want to generate or transform ad creatives, preview how ads will look, or understand creative format requirements.
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/adcontextprotocol/adcp/adcp-creative" ~/.claude/skills/neversight-learn-skills-dev-adcp-creative && rm -rf "$T"
data/skills-md/adcontextprotocol/adcp/adcp-creative/SKILL.mdAdCP Creative Protocol
This skill enables you to execute the AdCP Creative Protocol with creative agents. Use the standard MCP tools (
list_creative_formats, build_creative, preview_creative) exposed by the connected agent.
Overview
The Creative Protocol provides 3 standardized tasks for building and previewing advertising creatives:
| Task | Purpose | Response Time |
|---|---|---|
| View format specifications | ~1s |
| Generate or transform creatives | ~30s-5m |
| Get visual previews | ~5s |
Typical Workflow
- Discover formats:
to see available format specslist_creative_formats - Build creative:
to generate or transform a manifestbuild_creative - Preview:
to see how it renderspreview_creative - Sync: Use
(media-buy task) to traffic the creativesync_creatives
Task Reference
list_creative_formats
Discover creative formats and their specifications.
Request:
{ "type": "video", "asset_types": ["image", "text"] }
Key fields:
(array, optional): Request specific format IDsformat_ids
(string, optional): Filter by type:type
,video
,display
,audiodooh
(array, optional): Filter by accepted asset typesasset_types
,max_width
(integer, optional): Dimension constraintsmax_height
(boolean, optional): Filter for responsive formatsis_responsive
(string, optional): Search formats by namename_search
Response contains:
: Array of format definitions withformats
,format_id
,name
,type
,assets_requiredrenders
: Optional array of other creative agents providing additional formatscreative_agents
build_creative
Generate a creative from scratch or transform an existing creative to a different format.
Pure Generation (from brief):
{ "message": "Create a banner promoting our winter sale with a warm, inviting feel", "target_format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250_generative" }, "creative_manifest": { "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250_generative" }, "assets": { "promoted_offerings": { "brand": { "domain": "mybrand.com" }, "inline_offerings": [ { "name": "Winter Sale Collection", "description": "50% off all winter items" } ] } } } }
Transformation (resize/reformat):
{ "message": "Adapt this leaderboard to a 300x250 banner", "creative_manifest": { "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90" }, "assets": { "banner_image": { "asset_type": "image", "url": "https://cdn.mybrand.com/leaderboard.png", "width": 728, "height": 90 }, "headline": { "asset_type": "text", "content": "Spring Sale - 30% Off" } } }, "target_format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" } }
Key fields:
(string, optional): Natural language instructions for generation/transformationmessage
(object, optional): Source manifest - minimal for generation, complete for transformationcreative_manifest
(object, required): Format to generate -target_format_id{ agent_url, id }
Response contains:
: Complete manifest ready forcreative_manifest
orpreview_creativesync_creatives
preview_creative
Generate visual previews of creative manifests.
Single preview:
{ "request_type": "single", "creative_manifest": { "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, "assets": { "banner_image": { "asset_type": "image", "url": "https://cdn.example.com/banner.png", "width": 300, "height": 250 } } } }
With device variants:
{ "request_type": "single", "creative_manifest": { /* includes format_id, assets */ }, "inputs": [ { "name": "Desktop", "macros": { "DEVICE_TYPE": "desktop" } }, { "name": "Mobile", "macros": { "DEVICE_TYPE": "mobile" } } ] }
Batch preview (5-10x faster):
{ "request_type": "batch", "requests": [ { "creative_manifest": { /* creative 1 */ } }, { "creative_manifest": { /* creative 2 */ } } ] }
Key fields:
(string, required):request_type
or"single""batch"
(object, optional): Format identifier. Defaults toformat_id
if omitted.creative_manifest.format_id
(object, required): Complete creative manifestcreative_manifest
(array, optional): Generate variants with different macros/contextsinputs
(string, optional):output_format
(default) or"url""html"
Response contains:
: Array of preview objects withpreviews
orpreview_urlpreview_html
: When preview URLs expireexpires_at
Key Concepts
Format IDs
All format references use structured objects:
{ "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" } }
The
agent_url specifies the creative agent authoritative for this format.
Creative Manifests
Manifests pair format specifications with actual assets:
{ "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, "assets": { "banner_image": { "asset_type": "image", "url": "https://cdn.example.com/banner.png", "width": 300, "height": 250 }, "headline": { "asset_type": "text", "content": "Shop Now" }, "clickthrough_url": { "asset_type": "url", "url": "https://brand.com/sale" } } }
Asset Types
Common asset types:
: Static images (JPEG, PNG, WebP)image
: Video files (MP4, WebM) or VAST tagsvideo
: Audio files (MP3, M4A) or DAAST tagsaudio
: Headlines, descriptions, CTAstext
: HTML5 creatives or third-party tagshtml
: JavaScript tagsjavascript
: Tracking pixels, clickthrough URLsurl
Brand identity
For generative creatives, provide brand context by domain:
{ "brand": { "domain": "acmecorp.com" } }
The agent resolves the domain to retrieve the brand's identity (name, colors, guidelines, etc.) from its
brand.json file.
Generative vs Transformation
- Pure Generation: Minimal manifest with
in assets. Creative agent generates all output assets from scratch.promoted_offerings - Transformation: Complete manifest with existing assets. Creative agent adapts to target format, following
guidance.message
Error Handling
Common error patterns:
- 400 Bad Request: Invalid manifest or format_id
- 404 Not Found: Format not supported by this agent
- 422 Validation Error: Manifest doesn't match format requirements
Error responses include:
{ "error": { "code": "INVALID_FORMAT_ID", "message": "format_id must be a structured object with 'agent_url' and 'id' fields" } }