> ## Documentation Index
> Fetch the complete documentation index at: https://agenticadvertisingorg-snap-format-preview-links.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# S2: Creative mastery

> AdCP specialist module S2: Creative mastery. Format taxonomy across 20 channels, creative manifest spec, AI generation, compliance checks, and asset sync workflows.

# S2: Creative mastery

<Info>
  **Members only** — Requires Practitioner credential. \~45 minutes with Addie. Combines hands-on lab and adaptive exam.
</Info>

This specialist module tests your mastery of the creative protocol. You'll work with sandbox agents to discover format requirements across channels, produce and adapt creative assets, sync them to publishers, and verify compliance. Addie evaluates both your hands-on work and your conceptual understanding.

Passing earns the **AdCP specialist — Creative** credential.

## Specialisms this track prepares you to validate

The following `specialisms` fall under the `creative` domain. Each has its own compliance storyboard — see the [Compliance Catalog](/docs/building/compliance-catalog) for the full taxonomy.

| Specialism            | Status | What it covers                                       |
| --------------------- | ------ | ---------------------------------------------------- |
| `creative-ad-server`  | stable | Creative ad server with tag-based delivery           |
| `creative-generative` | stable | Generative creative agent producing assets on demand |
| `creative-template`   | stable | Creative template and transformation agent           |

## What you'll demonstrate

* Identify the three creative agent interaction models and explain when each applies
* Work with stateless agents (template/transformers): discover formats, preview with inline assets, build serving tags
* Work with stateful ad servers: browse a creative library, generate tags per media buy, track delivery
* Work with stateful sales agents: push creatives, preview in the publisher's environment
* Adapt a single creative concept across multiple channels and formats
* Author against AdCP canonical formats: read `format_options[]`, choose the right `format_kind`, map `asset_source`, and explain how a product narrows the canonical contract
* Use `preview_creative` in all three request modes — single, batch (5–10× faster for many creatives), and variant (retrieve historical renders from `get_creative_delivery`) — and choose `output_format: "html"` when bypassing the iframe speeds rendering
* Understand creative agent pricing: the `pricing_options[]` array on discovery responses, how `pricing_option_id` flows through `build_creative` and `report_usage`, and why CPM ad servers show zero `vendor_cost` at build time while transformation agents do not
* Reason about tracker-slot presence — a format supports third-party measurement only if its `assets` array declares a tracker slot (e.g., `impression_tracker`). Broadcast formats intentionally omit tracker slots; measurement comes from panel and STB data via `billing_measurement`
* Attach `industry_identifiers[]` to broadcast manifests with the correct `creative-identifier-type` (`ad_id`, `isci`, `clearcast_clock`, or `idcrea`), and give each cut (`:15` vs `:30`) its own traffic identifier
* Reason about format edge cases, accessibility, and provenance

## Prerequisite reading

### Core creative tasks

<CardGroup cols={2}>
  <Card title="list_creative_formats" icon="list" href="/docs/creative/task-reference/list_creative_formats">
    Format discovery: what specs does each publisher require?
  </Card>

  <Card title="build_creative" icon="hammer" href="/docs/creative/task-reference/build_creative">
    Creative generation and transformation from brand assets.
  </Card>

  <Card title="preview_creative" icon="eye" href="/docs/creative/task-reference/preview_creative">
    Preview creatives before deployment.
  </Card>

  <Card title="sync_creatives" icon="rotate" href="/docs/creative/task-reference/sync_creatives">
    Synchronize creative assets with publisher platforms.
  </Card>
</CardGroup>

### Supporting concepts

<CardGroup cols={2}>
  <Card title="Creative protocol overview" icon="palette" href="/docs/creative/index">
    The creative protocol: assets, formats, manifests, and creative agents.
  </Card>

  <Card title="Creative specification" icon="scroll" href="/docs/creative/specification">
    Formal specification for the creative protocol.
  </Card>

  <Card title="Formats reference" icon="image" href="/docs/creative/formats">
    Format definitions, technical specs, and the renders structure.
  </Card>

  <Card title="Canonical formats" icon="shapes" href="/docs/creative/canonical-formats">
    AdCP-defined format archetypes, product-level `format_options[]`, and asset-source taxonomy.
  </Card>

  <Card title="Asset types" icon="photo-film" href="/docs/creative/asset-types">
    Images, video, audio, HTML5, and native asset specifications.
  </Card>

  <Card title="Creative manifests" icon="file-lines" href="/docs/creative/creative-manifests">
    Manifest structure: how creative packages describe their contents.
  </Card>

  <Card title="Channel guides" icon="tv" href="/docs/creative/channels/video">
    Channel-specific specs for video, display, audio, DOOH, and carousels.
  </Card>

  <Card title="Broadcast TV" icon="clapperboard" href="/docs/creative/channels/broadcast">
    Broadcast formats, `industry_identifiers[]` (`ad_id`, `isci`, `clearcast_clock`, `idcrea`), creative identifier integration, and why broadcast formats omit tracker slots.
  </Card>

  <Card title="Generative creative" icon="wand-magic-sparkles" href="/docs/creative/generative-creative">
    AI-generated creative workflows and best practices.
  </Card>

  <Card title="Accessibility" icon="universal-access" href="/docs/creative/accessibility">
    Accessibility standards for advertising creatives.
  </Card>

  <Card title="Provenance" icon="certificate" href="/docs/creative/provenance">
    AI creative provenance and disclosure requirements.
  </Card>

  <Card title="Implementing creative agents" icon="robot" href="/docs/creative/implementing-creative-agents">
    Architecture guide for building creative agents.
  </Card>
</CardGroup>

### Creative governance

<CardGroup cols={2}>
  <Card title="Creative governance" icon="shield-check" href="/docs/governance/creative/index">
    Feature-based creative evaluation: security scanning, regulatory compliance, and content categorization.
  </Card>

  <Card title="get_creative_features" icon="list-check" href="/docs/governance/creative/get_creative_features">
    The evaluation task that scores creatives against governance features.
  </Card>

  <Card title="Content standards" icon="scale-balanced" href="/docs/governance/content-standards/index">
    Buyer-defined content rules that constrain what creatives can contain.
  </Card>

  <Card title="Provenance verification" icon="fingerprint" href="/docs/governance/creative/provenance-verification">
    How governance agents verify AI creative provenance metadata.
  </Card>
</CardGroup>

## Connecting to the test agent

Lab exercises run against the public test agent. Use the shared token — no signup required. The creative module spans three agent surfaces; start with the ad server (the most common path) and switch URLs when an exercise calls for a different agent type.

```bash theme={null}
export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ"
export AGENT_URL="https://test-agent.adcontextprotocol.org/creative/mcp"
```

| Agent surface                             | URL                                                             | Used in        |
| ----------------------------------------- | --------------------------------------------------------------- | -------------- |
| Creative ad server                        | `https://test-agent.adcontextprotocol.org/creative/mcp`         | Exercises 2, 4 |
| Stateless transformation / template agent | `https://test-agent.adcontextprotocol.org/creative-builder/mcp` | Exercises 1, 5 |
| Sales agent (push-and-preview)            | `https://test-agent.adcontextprotocol.org/sales/mcp`            | Exercises 3, 6 |

See the [Quickstart](/docs/quickstart) for a walkthrough of your first call.

## Canonical-format glossary

| Term                   | Definition                                                                                                                                                                                                            |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Canonical format**   | An AdCP-defined creative archetype such as `image`, `video_hosted`, or `native_in_feed`. Buyers validate the creative manifest against the canonical first.                                                           |
| **`format_kind`**      | The discriminator that names which canonical applies to a product format option. It controls creative shape, not delivery channel or targeting.                                                                       |
| **`format_options[]`** | Product-level declarations that narrow canonicals with sizes, slots, production source, and platform constraints. A product can offer one option or several alternatives.                                             |
| **`format_option_id`** | Stable identifier for a product or publisher-catalog option. Select it when the product publishes one; do not substitute creative-agent capability IDs in media-buy products or creative manifests.                   |
| **`v1_format_ref[]`**  | Legacy creative-format references attached to a canonical option. One option can point to one existing format or fan out to several size-specific formats.                                                            |
| **`capability_id`**    | Creative-agent build capability selector on `creative.supported_formats`. It chooses a `build_creative` path and is separate from product-level `format_option_id`.                                                   |
| **`asset_source`**     | Declares who renders the asset bytes for `image`, `video_hosted`, and `audio_hosted`: `buyer_uploaded`, `publisher_host_recorded`, `seller_pre_rendered_from_brief`, `seller_human_designed`, or `agent_synthesized`. |
| **Manifest asset map** | The slot-by-slot mapping from the selected format option's requirements to the creative manifest assets, including which inputs the buyer provides and which assets are seller-, publisher-, or agent-produced.       |

## Lab exercises

### Interaction models

1. **Stateless transformation** — Connect to a template agent, discover its formats, preview a template with sample brand assets (inline), and build a serving tag. No `sync_creatives` — everything is passed in the call.
2. **Ad server workflow** — Connect to a pre-loaded ad server, browse the creative library with `list_creatives`, generate tags for multiple media buys using `build_creative`, and check delivery metrics.
3. **Push-and-preview** — Connect to a sales agent, discover its accepted formats, push catalog assets with `sync_creatives`, and preview how they render in the publisher's environment.

### Creative pricing

4. **Pricing lifecycle** — Using the same sandbox ad server from exercise 2:
   * Establish an account with the ad server
   * `list_creatives` with `account` and `include_pricing: true` — observe `pricing_options` on each creative reflecting your rate card
   * Switch to a second sandbox account, `list_creatives` again — observe that `pricing_options` reflects a different rate (different CPM, model, or currency)
   * `build_creative` with `account` — examine `pricing_option_id`, `vendor_cost`, and `consumption` in the response
   * `build_creative` without `account` — observe the rejection error
   * Call `report_usage` with `creative_id` + `pricing_option_id`, verify the values match what `build_creative` returned
   * Explain: why is `vendor_cost` zero on a CPM-priced creative at build time?

5. **Transformation agent pricing** — Using the sandbox transformation agent from exercise 1, with pricing enabled:
   * Establish an account with the transformation agent
   * `list_creative_formats` with `account` and `include_pricing: true` — observe `pricing_options` on each format (per-unit pricing)
   * `build_creative` with `account` — examine `pricing_option_id`, `vendor_cost`, and `consumption` (expect non-zero `vendor_cost` at build time, unlike the CPM ad server)
   * Compare: ad server discovers pricing on `list_creatives`, transformation agent discovers pricing on `list_creative_formats`. Ad server has zero build cost (CPM accrues at serve time), transformation agent has non-zero build cost (per-unit pricing)

<Note>
  **Vendor pricing is consistent across protocols**

  All vendor services use the same pattern: `pricing_options[]` on discovery responses, `pricing_option_id` in `report_usage`. Signals, content standards, creative agents, and property list agents all follow this.

  Vendors often offer multiple pricing options per creative — volume/commitment tiers (lower CPM at higher spend), context-specific rates (premium vs. standard placements), or different pricing models for different product lines (CPM for rich media, per-unit for social variants). The buyer selects the appropriate `pricing_option_id` and passes it in `report_usage`.
</Note>

### Canonical formats

6. **Canonical-formats authoring** — Using the validated reference fixtures in `static/examples/products/canonical/`: the multi-format display fixture (`nytimes_homepage_mrec.json`) and the generative video fixture (`veo_generative_video_15s.json`):
   * Read each product's `format_options[]` and identify every available `format_kind`
   * Select `format_option_id` when the product publishes one, and explain why a single-option product may not expose a separate selector
   * Explain why a creative-agent `capability_id` is not a substitute for a media-buy product's `format_option_id`
   * Write the manifest asset map implied by the selected option's slots, including when the buyer ships rendered assets and when the buyer ships a brief, video brief, or structured object
   * Explain single-option vs multi-option products: when one product accepts several canonical alternatives, and when one option fans out to several sizes through `v1_format_ref[]`
   * Explain why the seller validates against the canonical shape first and the product's narrowing second, while the creative agent's own capability can only narrow what it promises to produce

### Cross-platform skills

7. **Format discovery** — Query sandbox agents for supported formats, compare requirements across publishers
8. **Cross-platform adaptation** — Adapt one concept across display, video, and native formats using `build_creative` with `target_format_ids`
9. **Compliance** — Configure provenance metadata and disclosure requirements for AI-generated creatives
10. **Preview modes** — Run `preview_creative` as `request_type: "single"`, then `"batch"` (submit 5 creatives in one call and measure the speedup), then `"variant"` against a prior `get_creative_delivery` result. Compare `output_format: "url"` vs `"html"` for rendering latency.
11. **Tracker-slot audit** — For each sandbox format, inspect the `assets` array and determine whether it supports third-party measurement. Explain why assigning a DoubleVerify pixel to a broadcast spot won't work, and which `billing_measurement` vendor would instead.
12. **Broadcast identifiers** — Build a broadcast manifest with distinct `industry_identifiers[]` for `:15` and `:30` cuts of the same spot. Verify the `creative-identifier-type` values and explain why each cut needs its own traffic identifier.

## Assessment

| Dimension                 | Weight | What Addie evaluates                                                                                                                                                                                                                                                                                                                                     |
| ------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Interaction models        | 20%    | Correctly identifies and works with all three creative agent types                                                                                                                                                                                                                                                                                       |
| Cross-platform adaptation | 15%    | Adapts creatives across display, video, native, preview, measurement, and broadcast workflows                                                                                                                                                                                                                                                            |
| Canonical formats         | 10%    | Reads `format_options[]`, selects `format_kind` and `format_option_id`, explains single-option, multi-option, and `v1_format_ref[]` fan-out cardinality, maps `asset_source` values to buyer-provided, agent-synthesized, seller-rendered, seller-designed, and publisher-hosted workflows, and explains canonical-first/product-second validation order |
| Compliance                | 25%    | Configures disclosures, provenance, and regulatory requirements                                                                                                                                                                                                                                                                                          |
| Pricing and accounts      | 15%    | Understands rate cards, reads pricing from `list_creatives` and `list_creative_formats`, interprets build costs, closes the `report_usage` loop                                                                                                                                                                                                          |
| Analytical skill          | 15%    | Interprets creative feature evaluation and delivery results                                                                                                                                                                                                                                                                                              |

Passing threshold: 70%.

## Start this module

<Card title="Start S2 with Addie" icon="play" href="https://agenticadvertising.org/chat">
  "I'd like to start the creative specialist module."
</Card>
