From adcp-client
Executes AdCP Creative Protocol operations: builds creatives from briefs or existing assets, previews renderings, and discovers format specifications.
How this skill is triggered — by the user, by Claude, or both
Slash command
/adcp-client:adcp-creativeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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.
Buyer-side basics — idempotency replay,
oneOfvariants, asyncstatus:'submitted'polling, error recovery fromadcp_error.issues[]— live inskills/call-adcp-agent/SKILL.md. This skill covers per-task semantics only.
The Creative Protocol provides 4 standardized tasks for building and previewing advertising creatives:
| Task | Purpose | Response Time |
|---|---|---|
list_creative_formats | View format specifications | ~1s |
build_creative | Generate or transform creatives | ~30s-5m |
preview_creative | Get visual previews | ~5s |
get_creative_delivery | Variant-level delivery data | ~5-30s |
list_creative_formats to see available format specsbuild_creative to generate or transform a manifestpreview_creative to see how it renderssync_creatives (media-buy task) to traffic the creativeProducts and manifests use the canonical-formats vocabulary — 11 canonical format_kind values that name the underlying creative shape (image / html5 / display_tag / video_hosted / video_vast / audio_hosted / audio_daast / image_carousel / responsive_creative / sponsored_placement / agent_placement / custom).
A ProductFormatDeclaration carries:
format_kind: the canonical (discriminator)params: per-canonical parameters narrowing the format (dimensions, durations, codecs, char limits, CTA enums, sizes[], etc.)capability_id: stable identifier for routing when a product carries multiple declarations of the same kindv1_format_ref: [{agent_url, id}]: always an array — links this v2 declaration to one or more v1 named formats. Multi-size declarations should carry one ref per size in sizes[].seller_preference: "preferred" | "accepted" | "discouraged": soft routing hint when a product carries multiple format_optionsWhere to declare a format:
| Where | When to use |
|---|---|
adagents.json top-level formats[] (publisher catalog) | Format shared across many sellers of the same publisher inventory; declares the publisher-authoritative shape once |
Product.format_options[] (inline on a product) | Seller-specific narrowing, custom format, or one-off pricing variant. Reference a publisher catalog entry by capability_id when applicable |
Placement.format_options[] (capability_id reference OR inline) | Tying a publisher placement to one or more accepted formats |
Size flexibility (image / html5 / display_tag): exactly one of three modes — width+height (fixed), sizes: [{w,h}] (multi-size, mirrors OpenRTB banner.format[]), or min_width/max_width/min_height/max_height (responsive).
Community mirror for unadopted platforms: the AAO publishes adagents.json files for unadopted platforms (Meta, TikTok, etc.) at https://creative.adcontextprotocol.org/translated/<platform>/adagents.json. When the request asks "what formats does meta.com support?" the SDK fetches the platform's hosted file first, falls back to the AAO mirror, and surfaces which tier produced the result via the response's source field.
Conversion tracking is NOT a creative-format concern. Pixel-firing, conversion events, and attribution belong on sync_event_sources / event_log (campaign-scoped). Don't stuff pixel_id into platform_extensions on a format declaration.
See docs/creative/canonical-formats.mdx for the full vocabulary, narrowing rules, error-code surface, and worked examples (Meta Reels, IAB display, host-read podcast, generative DSP).
Discover creative formats and their specifications.
Request:
{
"type": "video",
"asset_types": ["image", "text"]
}
Key fields:
format_ids (array, optional): Request specific format IDstype (string, optional): Filter by type: video, display, audio, doohasset_types (array, optional): Filter by accepted asset typesmax_width, max_height (integer, optional): Dimension constraintsis_responsive (boolean, optional): Filter for responsive formatsname_search (string, optional): Search formats by nameResponse contains:
formats: Array of format definitions with format_id, name, type, assets_required, renderscreative_agents: Optional array of other creative agents providing additional formatsGenerate 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"
},
"brand": {
"domain": "mybrand.com"
}
}
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:
message (string, optional): Natural language instructions for generation/transformationcreative_manifest (object, optional): Source manifest - minimal for generation, complete for transformationtarget_format_id (object, required): Format to generate - { agent_url, id }Response contains:
creative_manifest: Complete manifest ready for preview_creative or sync_creativesGenerate 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:
request_type (string, required): "single" or "batch"format_id (object, optional): Format identifier. Defaults to creative_manifest.format_id if omitted.creative_manifest (object, required): Complete creative manifestinputs (array, optional): Generate variants with different macros/contextsoutput_format (string, optional): "url" (default) or "html"Response contains:
previews: Array of preview objects with preview_url or preview_htmlexpires_at: When preview URLs expireRetrieve variant-level creative delivery data from a creative agent. Returns what was generated, served, and how each variant performed.
Request:
{
"media_buy_ids": ["mb_abc123"],
"start_date": "2025-01-01",
"end_date": "2025-01-31",
"max_variants": 10
}
Key fields:
media_buy_ids (array, optional): Filter to specific media buyscreative_ids (array, optional): Filter to specific creativesstart_date, end_date (string, optional): Delivery period (YYYY-MM-DD)max_variants (integer, optional): Max variants per creative (useful for generative creatives)account (object, optional): Account for routing and scopingAt least one scoping filter (media_buy_ids or creative_ids) is required.
Response contains:
creatives: Array with variant-level delivery data
variant_id: Unique variant identifier (use in preview_creative with request_type: "variant")generation_context: What triggered this variant (page topic, device, etc.)delivery_metrics: Impressions, clicks, completionsext: Platform engagement metrics (likes, shares, comments)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.
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"
}
}
}
Common asset types:
image: Static images (JPEG, PNG, WebP)video: Video files (MP4, WebM) or VAST tagsaudio: Audio files (MP3, M4A) or DAAST tagstext: Headlines, descriptions, CTAshtml: HTML5 creatives or third-party tagsjavascript: JavaScript tagsurl: Tracking pixels, clickthrough URLsFor 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.
target_format_id, brand, and a natural language message. Creative agent generates all output assets from scratch.message guidance.Common error patterns:
Error responses include:
{
"error": {
"code": "INVALID_FORMAT_ID",
"message": "format_id must be a structured object with 'agent_url' and 'id' fields"
}
}
npx claudepluginhub adcontextprotocol/adcp-client --plugin adcp-clientExecutes AdCP Media Buy Protocol operations: discover ad products, create/manage campaigns, sync creatives, and track delivery. Use when buying advertising or testing ad APIs.
Audits cross-platform ad creatives for copy, video, images, format diversity, fatigue, platform compliance, brand consistency, and production priorities. Collects brand context from websites if missing.
Generates ad creatives including display images, video ads, copy variations for Google Ads, Meta, LinkedIn, Reddit. Supports A/B testing, bulk creation, platform resizing, and formatting.