> ## Documentation Index
> Fetch the complete documentation index at: https://adcp-docs-ja.pier1.co.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# クリエイティブ仕様

> AdCP クリエイティブプロトコル仕様は、フォーマット発見、マニフェスト検証、AI クリエイティブ生成、プレビューレンダリングを定義します。

<Info>
  **AdCP 3.0 提案** - この仕様は AdCP 3.0 向けに開発中です。フィードバックは [GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions) から歓迎します。
</Info>

> **3.1 の正準フォーマット**: このページは v1 の仕様モデルを説明します。正準フォーマットのモデル（プロダクト上のインライン `format_options`、`validate_input` プリミティブ）については、[canonical-formats](/docs/creative/canonical-formats) と[マイグレーションガイド](/docs/creative/canonical-formats-migration)を参照してください。

**ステータス**: コメント募集中
**最終更新**: 2026年3月

このドキュメントの "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL" というキーワードは [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) に記載の通りに解釈します。

## 概要

クリエイティブプロトコルは、クリエイティブフォーマット発見、マニフェスト検証、クリエイティブ生成、プレビューレンダリングのための標準インターフェースを定義します。このプロトコルにより、AI エージェントが広告プラットフォーム全体でフォーマット仕様を発見し、準拠したクリエイティブアセットをビルドし、プレビューを生成できます。

## プロトコル概要

クリエイティブプロトコルが提供するもの:

* 完全な技術仕様を持つフォーマット発見
* フォーマット要件に対するマニフェスト検証
* AI 搭載のクリエイティブ生成と変換
* クリエイティブ検証のためのプレビューレンダリング
* クロスプラットフォームトラッキング用ユニバーサルマクロ

## トランスポート要件

クリエイティブエージェントは以下のトランスポートのうち少なくとも1つをサポートしなければなりません (MUST):

| トランスポート | プロトコル                  | 説明                          |
| ------- | ---------------------- | --------------------------- |
| MCP     | Model Context Protocol | JSON-RPC によるツールベースのインタラクション |
| A2A     | Agent-to-Agent         | メッセージベースのインタラクション           |

クリエイティブエージェントは優先トランスポートとして MCP をサポートすべきだ (SHOULD)。

クリエイティブエージェントは `get_adcp_capabilities` を通じてクリエイティブプロトコルのサポートを宣言しなければなりません (MUST):

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v3/protocol/get-adcp-capabilities-response.json",
  "status": "completed",
  "adcp": {
    "major_versions": [2],
    "idempotency": { "supported": true, "replay_ttl_seconds": 86400 }
  },
  "supported_protocols": ["creative"],
  "creative": {
    "has_creative_library": true,
    "supports_generation": false,
    "supports_transformation": true,
    "supports_compliance": false
  }
}
```

`creative` ケイパビリティはバイヤーに対してこのエージェントがサポートするインタラクションモデルを伝える。以下の[インタラクションモデル](#インタラクションモデル)を参照。

## コアコンセプト

### クリエイティブエージェント

クリエイティブエージェントはクリエイティブプロトコルを実装するすべてのエージェントです。スタンドアロンサービス（広告サーバー、クリエイティブ管理プラットフォーム、ジェネレーティブツール）と、`supported_protocols` に `"creative"` を宣言するセールスエージェントを含みます。クリエイティブエージェントは:

* 自身が所有するフォーマットを定義・文書化します
* フォーマット要件に対してマニフェストを検証します
* クリエイティブがどのようにレンダリングされるかを示すプレビューを生成します
* オプションで自然言語ブリーフからクリエイティブを生成または変換します

メディアバイプロトコルとクリエイティブプロトコルの両方を実装するセールスエージェントは、単一のエンドポイントから両方の役割を担う。[セールスエージェントのクリエイティブ機能](/docs/creative/sales-agent-creative-capabilities)を参照。

### インタラクションモデル

クリエイティブエージェントはケイパビリティに応じてさまざまな役割を担う。バイヤーは `get_adcp_capabilities` を使用してどのインタラクションモデルが適用されるかを判断する:

| モデル                | 説明                               | ケイパビリティ                         | 例                         |
| ------------------ | -------------------------------- | ------------------------------- | ------------------------- |
| **変換エージェント**       | 既存のマニフェストを新しいフォーマットにリサイズまたは適応させる | `supports_transformation: true` | フォーマット変換サービス              |
| **ジェネレーティブエージェント** | 自然言語ブリーフからマニフェストを作成する            | `supports_generation: true`     | AI クリエイティブプラットフォーム        |
| **クリエイティブ広告サーバー**  | クリエイティブライブラリをホスト、広告配信タグを生成する     | `has_creative_library: true`    | Flashtalking、CM360、Celtra |

これらのモデルは組み合わせ可能だ — エージェントは複数をサポートできます。`supports_generation: true` と `has_creative_library: true` を持つクリエイティブ広告サーバーは、ブリーフからクリエイティブを生成することも、ライブラリから既存のものを取得することもできます。`supports_compliance` フラグは直交している — どのインタラクションモデルもブリーフのコンプライアンス要件をサポートできます。

**モデル別バイヤーワークフロー:**

* **変換**: `list_creative_formats` → `build_creative`（`creative_manifest` + `target_format_id` を使用）
* **生成**: `list_creative_formats` → `build_creative`（`message` + `target_format_id` を使用）
* **ライブラリ取得**: `list_creatives` → `build_creative`（`creative_id` + `target_format_id` を使用）

クリエイティブライブラリをホストするエージェントは、バイヤーがクエリ前にアクセスを確立できるよう [accounts プロトコル](/docs/accounts/overview)を実装すべきだ（SHOULD）。メディアバイのために accounts を既に実装しているセールスエージェントは追加対応不要です。

サービスに課金する変換または生成エージェントは、Accounts プロトコルを実装し、`list_creative_formats` で `pricing_options` を公開し、`build_creative` のレスポンスで価格を返します。ビルド出力に `creative_id` を永続化するエージェントは、`list_creatives` でも価格を公開できます。無料の変換エージェントはステートレスのまま、変更されません。

### フォーマットオーソリティ

各フォーマットはフォーマット ID の `agent_url` で識別される唯一の権威あるクリエイティブエージェントを持ちます:

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250_image"
  }
}
```

クリエイティブエージェントは自身が所有するフォーマットの権威あるフォーマット定義のみを返さなければなりません (MUST)。

クリエイティブエージェントは追加フォーマットを提供する他のクリエイティブエージェントを参照してもよい (MAY)。

### フォーマット

フォーマットはアセットがどのようにアセンブルされてレンダリングされるかを定義します。フォーマットは以下を指定します:

* メディアファミリ（display、video、audio、dooh）
* 必須および任意アセットタイプ
* 技術的制約（ディメンション、デュレーション、ファイルサイズ、コーデック）
* レンダリング動作とインタラクション期待値

### アセット

アセットはクリエイティブの構成要素です。アセットタイプには以下が含まれます:

* **image**: 静止画像（JPEG、PNG、WebP、GIF）
* **video**: ビデオファイル（MP4、WebM、MOV）または VAST タグ
* **audio**: オーディオファイル（MP3、M4A）または DAAST タグ
* **text**: ヘッドライン、説明文、CTA
* **html**: HTML5 クリエイティブまたはサードパーティタグ
* **javascript**: JavaScript タグ
* **url**: トラッキングピクセル、クリックスルー URL

### マニフェスト

マニフェストはフォーマット仕様と実際のアセットコンテンツを組み合わせます。マニフェストは以下を提供します:

* フォーマット参照（agent\_url + id）
* フォーマットの asset\_id をキーとしたアセット値
* トラッキング URL とマクロ

クリエイティブエージェントは受け入れる前にフォーマット要件に対してマニフェストを検証しなければなりません (MUST)。

### ユニバーサルマクロ

AdCP はクロスプラットフォームトラッキング用のユニバーサルマクロを定義します。クリエイティブエージェントはトラッキング URL でこれらのマクロをサポートしなければなりません (MUST):

* `{TIMESTAMP}`: Unix タイムスタンプ
* `{CACHEBUSTER}`: ランダムなキャッシュ無効化値
* `{CLICK_URL}`: クリックトラッキング URL
* `{REDIRECT_URL}`: 最終宛先 URL

セールスエージェントはユニバーサルマクロを自身の広告サーバーのネイティブ構文に変換しなければなりません (MUST)。

## クリエイティブステータスのライフサイクル

**スキーマ**: [`enums/creative-status.json`](https://adcontextprotocol.org/schemas/v3/enums/creative-status.json)

ライブラリ内のクリエイティブは、定義された状態の集合を進みます。ほとんどの遷移はセラー起点です（processing、review、approval/rejection）。`suspended` は、依存関係が利用不能になった承認済みクリエイティブ（例: 期限切れの公開済み投稿の認可）のための回復可能なオフライン状態です。`archived` は、バイヤーのクリーンアップによって、またはアクティブな割り当てのないクリエイティブに対するセラー側のライフサイクルポリシーによって到達します——下記のルールを参照。

```
sync_creatives ──▶ processing ──▶ pending_review ──▶ approved
                       │                 │              │
                       │                 │              ├──▶ suspended ──▶ approved
                       │                 │              │        │
                       │                 │              │        └──▶ rejected
                       │                 │              ├──▶ pending_review
                       │                 │              ├──▶ rejected
                       │                 │              └──▶ archived
                       │                 │
                       └──────▶ rejected ◀──────────────┘
                                  │
                                  └── buyer fixes + resubmits ──▶ processing

archived ── buyer unarchives ──▶ approved (or pending_review when re-review is required)
```

**ルール:**

* `processing` → `pending_review`: 取り込みとトランスコードが成功したときに自動
* `processing` → `rejected`: 処理が失敗したときに自動（破損ファイル、サポートされないコーデック、制約違反）
* `pending_review` → `approved`: セラーがコンテンツポリシーのレビュー後に承認
* `pending_review` → `rejected`: セラーが `rejection_reason` とともに拒否
* `approved` → `suspended`: セラーが回復可能な依存関係/認可の喪失を検出（例: `published_post` 参照の `identity_authorization_revoked`、`identity_authorization_expired`、`source_private`）。セラーは影響を受けるアクティブなバイに対応する `impairment` を表面化しなければなりません（MUST）。
* `suspended` → `approved`: セラーが依存関係が回復されたことを観測し、必要な再レビューが通る。
* `suspended` → `rejected`: セラーが、以前は回復可能だった依存関係/認可の喪失をこのクリエイティブについて回復できない、または置換/再提出が必要と判断。例: `published_post` 参照の失効したアイデンティティ/投稿の認可を再認可できない。セラーは、クリエイティブが置換・再割り当てされるか、パッケージ/バイがそれ以外の方法で是正されるまで、影響を受けるアクティブなバイを impaired に保たなければなりません（MUST）。
* `approved` → `archived`（バイヤー起点）: バイヤーが `sync_creatives` を通じてアーカイブを発行
* `approved` → `archived`（セラー起点）: セラーが、非アクティブ、フライト後の期限切れ、またはストレージポリシーのために未割り当てのクリエイティブをアーカイブ。セラーは、アクティブなパッケージ割り当てを持つクリエイティブをセラーアーカイブしてはなりません（MUST NOT）——アクティブな配信が関与する場合、影響を受けるバイに `impairment` を伴う `approved` → `rejected`（失効）のパスが唯一の準拠ルートです。セラー起点のアーカイブの状態変更の可観測性は[クリエイティブ保持の契約](/docs/creative/creative-libraries#creatives-outlast-campaigns)に従います——最小限、新しい `status` が次の `list_creatives` の読み取りで可視でなければなりません（MUST）。
* `archived` → `approved`: `sync_creatives` を通じたバイヤー起点（アーカイブ解除）。セラーは再レビューを要求し、代わりに `pending_review` へ遷移してもよい（MAY）。
* `rejected` → `processing`: バイヤーがクリエイティブを修正し `sync_creatives` を通じて再提出。クリエイティブは完全な処理とレビューのパイプラインに再入します。
* `approved` → `pending_review`: セラー起点の再レビュー（例: ポリシー変更）。以前承認されたクリエイティブが再レビューのために引き戻されたとき、セラーは `creative.status_changed` を通じてサブスクライバーに通知しなければなりません（MUST）（`event_types[]` にこの値を含む各 `notification_configs[]` サブスクライバーに発火——下記を参照）。

クリエイティブエージェントは、配信のために `rejected` クリエイティブを参照する操作（例: パッケージへの割り当て）をエラーコード `CREATIVE_REJECTED` で拒否しなければなりません（MUST）。クリエイティブエージェントはまた、依存関係が回復されるまで `suspended` クリエイティブの配信を防がなければなりません（MUST）。

クリエイティブエージェントは、`list_creatives` レスポンスに `status` と（拒否時は）`rejection_reason` を含めなければなりません（MUST）。

### ライフサイクルウェブフック

セラー起点およびシステム起点の遷移は、アカウントの [`notification_configs[]`](/docs/accounts/tasks/sync_accounts#account-level-webhook-subscriptions) サブスクライバーに対してプッシュ通知を発火します——`event_types[]` に発火されたタイプを含む各エントリが独立した発火を受け取ります。二つのイベントタイプがこの面をカバーします:

* **`creative.status_changed`** — すべてのセラー起点またはシステム起点の遷移で発火: `pending_review → approved`/`rejected`、`approved → pending_review`（再レビュー）、`approved → suspended`（回復可能な依存関係/認可の喪失）、`suspended → approved`（回復）、`suspended → rejected`（終端の依存関係/認可の喪失）、`approved → rejected`（承認後の失効）、`approved → archived`（セラー起点）。ペイロード: [`creative-status-changed-webhook.json`](https://adcontextprotocol.org/schemas/v3/creative/creative-status-changed-webhook.json)。
* **`creative.purged`** — クリエイティブが破棄されたときに発火（保持のスイープ、テイクダウン、法的消去）。`soft` パージは `list_creatives`（`include_purged: true`）上に 30 日間トゥームストーンを保持します。`hard` パージはレコードを保持しません——ウェブフックがバイヤーの唯一のシグナルです。ペイロード: [`creative-purged-webhook.json`](https://adcontextprotocol.org/schemas/v3/creative/creative-purged-webhook.json)。

バイヤー起点の遷移（アーカイブ、アーカイブ解除、再提出）は発火**しません**——それらは `sync_creatives` のレスポンスパスで確認応答されます。プッシュチャネルは、バイヤーが起こさなかった遷移のためだけに存在します。

両イベントは、[`creative-event-reason-code.json`](https://adcontextprotocol.org/schemas/v3/enums/creative-event-reason-code.json) から引かれるカテゴリカルな `reason_code` を運びます。理由コードごとのバイヤー側の是正は、列挙の `enumDescriptions` にインラインで文書化されています。

クリエイティブがアクティブな配信を壊す状態（`approved → suspended`、`approved → rejected`、`suspended → rejected`、または割り当てが存在する間のセラー起点の `approved → archived`——これは非準拠。上記の遷移ルールを参照）へ遷移するとき、セラーはそのクリエイティブを参照するすべてのメディアバイに対応する `impairment` も表面化しなければなりません（MUST）（[メディアバイの健全性](/docs/media-buy/media-buys/lifecycle#health-and-impairments)を参照）。クリエイティブ側の `creative.status_changed` とバイ側の `impairment` はペアだが別個のシグナルです。バイヤーは `creative_id` で相関させます。二つの面は異なるアンカーを持ちます: クリエイティブイベントはアカウントレベルで発火し（サブスクリプションは任意の一つのバイより長生き）、impairment はバイごとに発火します。ペアの発火の間に**順序の保証はありません**——バイヤーは一方が他方より前に届くと仮定してはなりません（MUST NOT）。スナップショット（`list_creatives` と `get_media_buys`）を介して突き合わせてください。

セラーは、サポートするイベントタイプとタイプごとの合体ウィンドウを `get_adcp_capabilities` を通じて宣言します。デフォルトの合体は `creative.status_changed` で 5 分です。セラーは `creative.purged` を合体してはなりません（MUST NOT）。遡及的な契約: セラーがこれらのイベントタイプのサポートを宣言すると、その義務はライブラリ内のすべてのクリエイティブをカバーします——既存のクリエイティブに猶予期間はありません。

バイヤーは、`include_webhook_activity: true` を伴う `list_creatives` を通じて、クリエイティブごとの最近のウェブフック発火をプルしてもよい（MAY）。読み取り面は [`webhook_activity[]` の採用チェックリスト](/docs/protocol/snapshot-and-log#webhook-activity-log-pattern)に従います——30 日保持、三状態の存在セマンティクス、バイヤー側のエンドポイントログへの `idempotency_key` 相関。

## 価格

サービスに課金するクリエイティブエージェントは、シグナルエージェントやコンテンツ標準エージェントが使うのと同じ 発見 → ビルド → レポート のループを通じて価格を公開します。

### 価格発見の面

価格は、エージェントのインタラクションモデルに応じて二つの面を通じて発見されます:

* **`list_creatives`** — アドサーバーとライブラリベースのエージェントは、各クリエイティブに `pricing_options[]` を公開します。バイヤーは使いたい特定のクリエイティブの価格を発見します。
* **`list_creative_formats`** — 変換および生成エージェントは、各フォーマットに `pricing_options[]` を公開します。バイヤーは、クリエイティブが存在する前に、エージェントが生成できるフォーマットの価格を発見します。

両方の面は、[`vendor-pricing-option`](https://adcontextprotocol.org/schemas/v3/core/vendor-pricing-option.json) オブジェクトの同じ `pricing_options[]` 配列を使います。両方ともリクエストに `account` と `include_pricing: true` を必要とします。

エージェントは両方の面で価格を公開してもよい（MAY）（例: ライブラリと変換機能の両方を持つクリエイティブ管理プラットフォーム）。

### 価格のフロー

1. **アカウントのセットアップ** — レートカードが合意されます。後続のすべての操作の価格を決定します。
2. **発見** — `account` と `include_pricing: true` を伴う `list_creatives` または `list_creative_formats` が `pricing_options[]` を返します。ベンダーは複数のオプションを提供できます（ボリュームティア、コンテキスト固有のレート、プロダクトラインごとの異なるモデル）。
3. **ビルド** — `account` を伴う `build_creative`。エージェントがコストを計算し、レスポンスで `pricing_option_id`、`vendor_cost`、`currency`、`consumption` を返します。
4. **レポート** — 照合のための `creative_id` と `pricing_option_id` を伴う `report_usage`。

### 価格モデル

クリエイティブエージェントは、[`vendor-pricing-option.json`](https://adcontextprotocol.org/schemas/v3/core/vendor-pricing-option.json) で定義されたベンダー価格モデルを再利用します:

| モデル                | クリエイティブのユースケース                                            |
| ------------------ | --------------------------------------------------------- |
| `cpm`              | 配信された 1000 インプレッションあたりのコスト——アドサーバーモデル、DCO プラットフォーム        |
| `percent_of_media` | メディア支出の割合——エージェンシー/プラットフォームモデル                            |
| `flat_fee`         | 期間ごとの固定料金——ライセンス付きクリエイティブスイート、サブスクリプションアクセス               |
| `per_unit`         | 作業単位ごとの固定価格——適応したフォーマットごと、生成した画像ごと、トークンごと、レンダリングしたバリアントごと |

### 消費の詳細

**スキーマ**: [`core/creative-consumption.json`](https://adcontextprotocol.org/schemas/v3/core/creative-consumption.json)

`build_creative` のレスポンスには、何が消費されたかについての構造化された詳細を持つ `consumption` オブジェクトが含まれます。既知のフィールド: `tokens`（消費された LLM トークン）、`images_generated`、`renders`（レンダーパス）、`duration_seconds`（処理時間）。エージェントは追加のフィールドを含めてもよい（MAY）。

`consumption` オブジェクトは情報提供です——バイヤーが `vendor_cost` がレートカードと整合していることを検証できるようにします。`vendor_cost` が請求の信頼できる情報源です。

### アカウントの要件

サービスに課金するクリエイティブエージェントは、[Accounts プロトコル](/docs/accounts/overview)を実装しなければなりません（MUST）。これは価格を持つ任意のクリエイティブエージェントに適用されます——アドサーバー、生成プラットフォーム、使用に課金する変換エージェント。

### バンドルモード

パブリッシャーがクリエイティブエージェントを内部で（バンドルして）使う場合、バイヤーはクリエイティブエージェントの価格を決して見ません。コストはプロダクト価格に吸収されます。セールスエージェントがクリエイティブエージェントとの関係におけるバイヤーです——アカウントを確立し、`build_creative` を呼び、`report_usage` を扱います。プロトコルの面は同じです。

## タスク

クリエイティブプロトコルは以下のタスクを定義します。完全なリクエスト/レスポンスのスキーマと例についてはタスクリファレンスページを参照。

### list\_creative\_formats

**リファレンス**: [`list_creative_formats` タスク](/docs/creative/task-reference/list_creative_formats)

クリエイティブフォーマットとその仕様を発見します。

**要件:**

* クリエイティブエージェントは自身が所有するフォーマットの完全なフォーマット仕様を返さなければなりません (MUST)
* クリエイティブエージェントは各フォーマットの権威あるエージェントを識別する `agent_url` を含めなければなりません (MUST)
* クリエイティブエージェントはフォーマット定義に技術的制約（ディメンション、デュレーション、ファイルタイプ）を含めなければなりません (MUST)
* クリエイティブエージェントは追加フォーマットを提供する他のクリエイティブエージェントへの参照を含めてもよい (MAY)
* `format_ids` でフィルタリングする場合、クリエイティブエージェントはリクエストされたフォーマットのみを返さなければなりません (MUST)

### list\_transformers

**リファレンス**: [`list_transformers` タスク](/docs/creative/task-reference/list_transformers)

クリエイティブエージェントが提供する、アカウントスコープのトランスフォーマーを発見します——メディアバイのプロダクトのクリエイティブ版: エージェントが提供する選択可能なビルド能力の単位（声、モデル、スタイル）で、`build_creative` の `transformer_id` で選択します。`get_adcp_capabilities` で `creative.supports_transformers: true` を宣言するエージェントのみが提供します。

**要件:**

* `creative.supports_transformers: true` を設定するクリエイティブエージェントは `list_transformers` を実装しなければなりません（MUST）
* クリエイティブエージェントは、呼び出し元のアカウント向けにトランスフォーマー、その列挙可能なオプション値、価格を解決しなければなりません（MUST）——そのアカウント向けに設定されたカスタム値（例: クローンされた声）を含む
* クリエイティブエージェントは、`expand_params` で名指しされた各 `field` について、アカウントスコープのオプション値を `params[].options[]` にインラインで返さなければならず（MUST）、それ以外では省略すべきです（SHOULD）
* `include_pricing` が true の場合、課金するクリエイティブエージェントは各トランスフォーマーに `pricing_options`（`per_unit` モデル）を含めなければなりません（MUST）

### build\_creative

**リファレンス**: [`build_creative` タスク](/docs/creative/task-reference/build_creative)

クリエイティブマニフェストを変換、生成、または取得します。3つのモードをサポートする:

1. **生成**: ブリーフまたはシードアセットからマニフェストを作成します
2. **変換**: 既存のマニフェストを別のフォーマットに適応させる
3. **ライブラリ取得**: エージェントのライブラリから `creative_id` を解決し、広告配信アセット（HTML/JavaScript/VAST タグ）を含むマニフェストを返す

**要件:**

* クリエイティブエージェントはフォーマット要件に対して入力マニフェストを検証しなければなりません (MUST)
* クリエイティブエージェントは成功時にターゲットフォーマットの有効なマニフェストを返さなければなりません (MUST)
* クリエイティブエージェントは変換が完了できない場合に検証エラーを返さなければなりません (MUST)
* クリエイティブエージェントは変換中にトラッキング URL とマクロを保持すべきだ (SHOULD)
* クリエイティブエージェントはジェネレーティブタスクの `quality` を尊重すべきだ (SHOULD)（`"draft"` は高速反復、`"production"` は最終配信）。非ジェネレーティブ変換では無視してもよい (MAY)
* クリエイティブエージェントは `item_limit` が存在する場合、`item_limit` とフォーマットの `max_items` の小さい方を使用すべきだ (SHOULD)
* クリエイティブエージェントは生成タスクに AI/LLM 処理を使用してもよい (MAY)
* `creative_id` が提供された場合、クリエイティブエージェントはライブラリからクリエイティブを解決しなければなりません (MUST)
* `macro_values` が提供された場合、クリエイティブエージェントは出力マニフェストのアセット内で指定されたマクロを代入し、未解決のマクロを `{MACRO}` プレースホルダーとして残すべきだ (SHOULD)
* クリエイティブエージェントは `macro_values` の未認識のマクロキーを無視しなければなりません (MUST) — 未知のマクロはエラーではありません
* クリエイティブエージェントはグローバルに一意な `creative_id` 値を割り当てるべきだ (SHOULD)。一意性を保証できない場合、`concept_id` は `build_creative` リクエストで曖昧さを解消するために REQUIRED だ
* `build_creative` は重大な時間がかかる生成および変換タスクに対して非同期レスポンス（`context_id` ポーリングを持つ `status: "working"`）をサポートします。ライブラリ取得は通常同期的です
* `account` が提供されエージェントが課金する場合、レスポンスは `pricing_option_id`、`vendor_cost`、`currency` を含めなければなりません（MUST）。`consumption` オブジェクトは関連する場合に含めるべきです（SHOULD）
* 非同期ビルドでは、価格フィールドは中間のステータスレスポンスではなく、最終的な完了レスポンスにのみ現れます
* 課金するクリエイティブエージェントが `account` なしで `build_creative` リクエストを受け取り、そのエージェントがアカウントを必要とする場合、エージェントはエラーを返さなければなりません（MUST）

### preview\_creative

**リファレンス**: [`preview_creative` タスク](/docs/creative/task-reference/preview_creative)

クリエイティブマニフェストのプレビューレンダリングを生成します。

**要件:**

* クリエイティブエージェントはプレビュー生成前にマニフェストを検証しなければなりません (MUST)
* クリエイティブエージェントは有効なマニフェストのプレビュー URL または HTML を返さなければなりません (MUST)
* クリエイティブエージェントは、プレビュー URL をその `expires_at` タイムスタンプまで参照解決可能に保たなければなりません（MUST）。`expires_at` が省略された場合、プレビュー URL はプロトコル層では期限切れにならず、エージェントが帯域外で明示的に失効させるまで有効なままです。
* クリエイティブエージェントは、時間制限付きのプレビュー URL には `expires_at` を含めるべきだ (SHOULD)
* クリエイティブエージェントは複数のクリエイティブのバッチプレビューをサポートすべきだ (SHOULD)
* クリエイティブエージェントは複数の出力フォーマット（URL、HTML、画像）をサポートしてもよい (MAY)

### list\_creatives

**スキーマ**: [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/v3/creative/list-creatives-request.json) / [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/v3/creative/list-creatives-response.json)

**リファレンス**: [`list_creatives` タスク](/docs/creative/task-reference/list_creatives)

クリエイティブライブラリ内のクリエイティブアセットを閲覧・フィルタリングします。クリエイティブライブラリをホストするすべてのエージェント — 広告サーバー、クリエイティブ管理プラットフォーム、クリエイティブを管理するセールスエージェント — が実装します。

**要件:**

* エージェントは認証済みアカウントからアクセス可能なクリエイティブを返さなければなりません (MUST)
* エージェントは各クリエイティブの承認ステータスを含めなければなりません (MUST)
* エージェントはフォーマット、ステータス、タグ、日付範囲によるフィルタリングをサポートすべきだ (SHOULD)
* プラットフォームがクリエイティブをコンセプトに整理する場合、エージェントは `concept_ids` と `format_ids` によるフィルタリングをサポートすべきだ (SHOULD)
* エージェントは `include_variables=true` の場合にダイナミックコンテンツ変数定義を含めてもよい (MAY)
* エージェントは `include_snapshot=true` の場合に軽量な配信スナップショットを含めてもよい (MAY)。スナップショットは「このクリエイティブはアクティブか?」「最後にいつ配信されたか?」などの運用上の質問のためにライフタイムインプレッションと最終配信日時を提供する — 詳細分析は `get_creative_delivery` が担う
* `account` と `include_pricing=true` が提供された場合、課金するエージェントは各クリエイティブに `pricing_options`——[`vendor-pricing-option`](https://adcontextprotocol.org/schemas/v3/core/vendor-pricing-option.json) オブジェクトの配列——を含めなければなりません（MUST）。ベンダーはクリエイティブごとに複数のオプションを提供できます（ボリュームティア、コンテキスト固有のレート、異なる価格モデル）。

**アカウント要件:**

* サービスに課金するクリエイティブエージェントは、[Accounts プロトコル](/docs/accounts/overview)を実装しなければなりません（MUST）。これは価格を持つ任意のクリエイティブエージェントに適用されます——アドサーバー、生成プラットフォーム、使用に課金する変換エージェント。
* ライブラリをホストするが課金しないクリエイティブエージェントは、バイヤーがクエリ前にアクセスを確立できるよう Accounts プロトコルを実装すべきだ（SHOULD）。
* これはセールスエージェントが使用するのと同じ accounts プロトコルだ — 別バージョンはない。
* メディアバイのために accounts を既に実装しているセールスエージェントは追加対応不要です。

### sync\_creatives

**スキーマ**: [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/v3/creative/sync-creatives-request.json) / [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/v3/creative/sync-creatives-response.json)

**リファレンス**: [`sync_creatives` タスク](/docs/creative/task-reference/sync_creatives)

ライブラリにクリエイティブアセットをアップロードして同期します。クリエイティブライブラリをホストするすべてのエージェント — 広告サーバー、クリエイティブ管理プラットフォーム、クリエイティブを管理するセールスエージェント — が実装します。

**要件:**

* エージェントはフォーマット仕様に対してクリエイティブを検証しなければなりません (MUST)
* エージェントは非準拠クリエイティブの検証エラーを返さなければなりません (MUST)
* エージェントはクリエイティブが使用可能になる前に承認を要求してもよい (MAY)
* エージェントは変更を適用せずに検証するための `dry_run` をサポートすべきだ (SHOULD)
* エージェントは `delete_missing: true` と `creative_ids` を組み合わせるリクエストを拒否しなければなりません (MUST) — `delete_missing` はライブラリ全体に適用され、フィルタされたサブセットには適用されない
* メディアバイも管理するエージェントは一括クリエイティブ-パッケージマッピングのための `assignments` フィールドをサポートすべきだ (SHOULD)
* メディアバイを管理しないスタンドアロンクリエイティブエージェントは `assignments` フィールドを無視すべきだ (SHOULD)

### get\_creative\_delivery

**リファレンス**: [`get_creative_delivery` タスク](/docs/creative/task-reference/get_creative_delivery)

バリアントレベルのメトリクスを含むクリエイティブ配信データを取得します。

**要件:**

* エージェントはリクエストされたクリエイティブの配信データを返さなければなりません (MUST)
* エージェントは利用可能な場合にバリアントレベルの内訳を含めるべきだ (SHOULD)
* クリエイティブプロトコルを実装するセールスエージェントは、自身のプロダクトがクリエイティブバリアントを生成または最適化する場合にこのタスクをサポートすべきだ (SHOULD)

## エラー処理

クリエイティブエージェントは[標準 AdCP エラースキーマ](/docs/building/by-layer/L3/error-handling)を使用してエラーを返さなければなりません (MUST)。

一般的なエラーコード:

* `REFERENCE_NOT_FOUND`: リクエストされたフォーマットが存在しない、またはアクセスできない（`error.field` が `format_id` を特定する）
* `VALIDATION_ERROR`: マニフェストがフォーマット検証に失敗しました
* `ASSET_MISSING`: 必須アセットがマニフェストに提供されていません
* `ASSET_INVALID`: アセットがフォーマット制約を満たさない
* `GENERATION_FAILED`: クリエイティブ生成を完了できなかった

## セキュリティの考慮事項

### トランスポートセキュリティ

すべてのクリエイティブプロトコル通信は TLS 1.2 以上を使用した HTTPS を使用しなければなりません (MUST)。

### アセットセキュリティ

* クリエイティブエージェントはアセット URL がアクセス可能であることを検証すべきだ (SHOULD)
* クリエイティブエージェントはマルウェアと悪意あるコンテンツのためにアセットをスキャンすべきだ (SHOULD)
* クリエイティブエージェントは検証中に信頼されていない JavaScript を実行してはなりません (MUST NOT)

### プレビューセキュリティ

* プレビュー URL は時間制限があるべきだ (SHOULD)（`expires_at` で示されます）
* プレビュー URL は、エージェントが URL の表明されたライフタイムにわたってその状態を保証できない限り、ポッドローカルまたはプロセスローカルの状態に依存してはなりません (MUST NOT)
* クリエイティブエージェントはスクリプト実行を防ぐために HTML プレビューをサンドボックス化すべきだ (SHOULD)
* `output_format: "html"` の消費者は信頼されたクリエイティブエージェントのみを使用しなければなりません (MUST)

## 適合性

### クリエイティブエージェントの適合性

適合するクリエイティブプロトコルエージェントは以下を満たさなければなりません (MUST):

1. 指定されたトランスポート（MCP または A2A）のうち少なくとも1つをサポートします
2. フォーマット発見のための `list_creative_formats` を実装します
3. 自身が所有するフォーマットの権威あるフォーマット定義のみを返す
4. フォーマット仕様に対してマニフェストを検証します
5. 指定されたエラーコードを使用します

適合するクリエイティブプロトコルエージェントは以下を満たすべきだ (SHOULD):

1. クリエイティブ生成のための `build_creative` を実装します
2. プレビューレンダリングのための `preview_creative` を実装します
3. トラッキング URL でユニバーサルマクロをサポートします
4. エージェントがクリエイティブライブラリをホストする場合、`list_creatives` を実装します
5. エージェントがクリエイティブアップロードを受け入れる場合、`sync_creatives` を実装します
6. エージェントがクリエイティブライブラリをホストする場合、`build_creative` で `creative_id` をサポートします
7. クリエイティブライブラリをホストする場合、accounts プロトコル（`sync_accounts` / `list_accounts`）を実装します
8. バイヤーが正しいインタラクションモデルを判断できるよう `get_adcp_capabilities` で `supports_generation`、`supports_transformation`、`has_creative_library` を宣言します

### コンシューマの適合性

適合するクリエイティブプロトコルコンシューマは以下を満たさなければなりません (MUST):

1. フォーマット ID の `agent_url` を使用して権威あるクリエイティブエージェントを識別します
2. 提出前にフォーマット仕様に対してマニフェストを検証します
3. 検証エラーを適切に処理します
4. 無限ループを避けるためにフォーマットを再帰的に発見する際に訪問済み URL を追跡します

## 実装ノート

### レスポンスタイムの期待値

クリエイティブエージェントは以下のレスポンスタイムを目標とすべきだ (SHOULD):

| 操作タイプ                                 | 目標レイテンシ |
| ------------------------------------- | ------- |
| フォーマットリスティング（list\_creative\_formats） | 1秒未満    |
| ライブラリクエリ（list\_creatives）             | 1秒未満    |
| クリエイティブ同期（sync\_creatives）            | 5秒未満    |
| プレビュー生成（preview\_creative）            | 5秒未満    |
| バッチプレビュー（10クリエイティブ）                   | 10秒未満   |
| クリエイティブ生成（build\_creative）            | 60秒未満   |

### 再帰的フォーマット発見

クリエイティブエージェントは `list_creative_formats` レスポンスで他のクリエイティブエージェントを参照してもよい (MAY):

```json theme={null}
{
  "creative_agents": [{
    "agent_url": "https://creative.adcontextprotocol.org",
    "agent_name": "AdCP Reference Creative Agent",
    "capabilities": ["validation", "assembly", "preview"]
  }]
}
```

コンシューマは参照されたエージェントを再帰的にクエリして追加フォーマットを発見してもよい (MAY)。

コンシューマは再帰的発見中の無限ループを防ぐために訪問済み URL を追跡しなければなりません (MUST)。

### フォーマット対応検証

マニフェスト検証はフォーマット仕様のコンテキストで実行されなければなりません (MUST):

1. 権威あるクリエイティブエージェントからフォーマット定義を検索します
2. マニフェストの各アセットについて、フォーマットの `assets` 配列内の対応するエントリを見つける
3. フォーマットで定義されたタイプと制約に対してアセット値を検証します

フォーマット定義が各 asset\_id のタイプを決定します。アセットタイプ情報はマニフェスト自体には含まれない。

### 標準フォーマットとカスタムフォーマット

* **標準フォーマット**: IAB 仕様に基づき、リファレンスクリエイティブエージェント（`https://creative.adcontextprotocol.org`）がホスト
* **カスタムフォーマット**: 特殊なインベントリのために個別のパブリッシャーやクリエイティブプラットフォームが定義

両方とも同じように機能する — `agent_url` フィールドが各フォーマットに対してどのエージェントが権威あるかを識別します。

## スキーマリファレンス

<Note>
  一部のクリエイティブプロトコルスキーマ（`build_creative`、`list_creative_formats`、`preview_creative`）は、もともとメディアバイプロトコルの一部としてリリースされたため、`media-buy/` 以下にパスがあります。スキーマパスは安定した識別子であり、タスクが属するプロトコルには影響しません。
</Note>

| スキーマ                                                                                                                                      | 説明                            |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| [`core/format.json`](https://adcontextprotocol.org/schemas/v3/core/format.json)                                                           | フォーマット定義                      |
| [`core/creative-manifest.json`](https://adcontextprotocol.org/schemas/v3/core/creative-manifest.json)                                     | クリエイティブマニフェスト                 |
| [`core/creative-asset.json`](https://adcontextprotocol.org/schemas/v3/core/creative-asset.json)                                           | アセット定義                        |
| [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/v3/media-buy/list-creative-formats-request.json)   | list\_creative\_formats リクエスト |
| [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/v3/media-buy/list-creative-formats-response.json) | list\_creative\_formats レスポンス |
| [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/v3/creative/list-creatives-request.json)                   | list\_creatives リクエスト         |
| [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/v3/creative/list-creatives-response.json)                 | list\_creatives レスポンス         |
| [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/v3/creative/sync-creatives-request.json)                   | sync\_creatives リクエスト         |
| [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/v3/creative/sync-creatives-response.json)                 | sync\_creatives レスポンス         |
