Skip to main content
AdCP 3.0 提案 - この仕様は AdCP 3.0 向けに開発中です。フィードバックは GitHub Discussions から歓迎します。
3.1 の正準フォーマット: このページは v1 の仕様モデルを説明します。正準フォーマットのモデル(プロダクト上のインライン format_optionsvalidate_input プリミティブ)については、canonical-formatsマイグレーションガイドを参照してください。
ステータス: コメント募集中 最終更新: 2026年3月 このドキュメントの “MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”、“OPTIONAL” というキーワードは RFC 2119 に記載の通りに解釈します。

概要

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

プロトコル概要

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

トランスポート要件

クリエイティブエージェントは以下のトランスポートのうち少なくとも1つをサポートしなければなりません (MUST): クリエイティブエージェントは優先トランスポートとして MCP をサポートすべきだ (SHOULD)。 クリエイティブエージェントは get_adcp_capabilities を通じてクリエイティブプロトコルのサポートを宣言しなければなりません (MUST):
creative ケイパビリティはバイヤーに対してこのエージェントがサポートするインタラクションモデルを伝える。以下のインタラクションモデルを参照。

コアコンセプト

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

クリエイティブエージェントはクリエイティブプロトコルを実装するすべてのエージェントです。スタンドアロンサービス(広告サーバー、クリエイティブ管理プラットフォーム、ジェネレーティブツール)と、supported_protocols"creative" を宣言するセールスエージェントを含みます。クリエイティブエージェントは:
  • 自身が所有するフォーマットを定義・文書化します
  • フォーマット要件に対してマニフェストを検証します
  • クリエイティブがどのようにレンダリングされるかを示すプレビューを生成します
  • オプションで自然言語ブリーフからクリエイティブを生成または変換します
メディアバイプロトコルとクリエイティブプロトコルの両方を実装するセールスエージェントは、単一のエンドポイントから両方の役割を担う。セールスエージェントのクリエイティブ機能を参照。

インタラクションモデル

クリエイティブエージェントはケイパビリティに応じてさまざまな役割を担う。バイヤーは get_adcp_capabilities を使用してどのインタラクションモデルが適用されるかを判断する: これらのモデルは組み合わせ可能だ — エージェントは複数をサポートできます。supports_generation: truehas_creative_library: true を持つクリエイティブ広告サーバーは、ブリーフからクリエイティブを生成することも、ライブラリから既存のものを取得することもできます。supports_compliance フラグは直交している — どのインタラクションモデルもブリーフのコンプライアンス要件をサポートできます。 モデル別バイヤーワークフロー:
  • 変換: list_creative_formatsbuild_creativecreative_manifest + target_format_id を使用)
  • 生成: list_creative_formatsbuild_creativemessage + target_format_id を使用)
  • ライブラリ取得: list_creativesbuild_creativecreative_id + target_format_id を使用)
クリエイティブライブラリをホストするエージェントは、バイヤーがクエリ前にアクセスを確立できるよう accounts プロトコルを実装すべきだ(SHOULD)。メディアバイのために accounts を既に実装しているセールスエージェントは追加対応不要です。 サービスに課金する変換または生成エージェントは、Accounts プロトコルを実装し、list_creative_formatspricing_options を公開し、build_creative のレスポンスで価格を返します。ビルド出力に creative_id を永続化するエージェントは、list_creatives でも価格を公開できます。無料の変換エージェントはステートレスのまま、変更されません。

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

各フォーマットはフォーマット ID の agent_url で識別される唯一の権威あるクリエイティブエージェントを持ちます:
クリエイティブエージェントは自身が所有するフォーマットの権威あるフォーマット定義のみを返さなければなりません (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 ライブラリ内のクリエイティブは、定義された状態の集合を進みます。ほとんどの遷移はセラー起点です(processing、review、approval/rejection)。suspended は、依存関係が利用不能になった承認済みクリエイティブ(例: 期限切れの公開済み投稿の認可)のための回復可能なオフライン状態です。archived は、バイヤーのクリーンアップによって、またはアクティブな割り当てのないクリエイティブに対するセラー側のライフサイクルポリシーによって到達します——下記のルールを参照。
ルール:
  • processingpending_review: 取り込みとトランスコードが成功したときに自動
  • processingrejected: 処理が失敗したときに自動(破損ファイル、サポートされないコーデック、制約違反)
  • pending_reviewapproved: セラーがコンテンツポリシーのレビュー後に承認
  • pending_reviewrejected: セラーが rejection_reason とともに拒否
  • approvedsuspended: セラーが回復可能な依存関係/認可の喪失を検出(例: published_post 参照の identity_authorization_revokedidentity_authorization_expiredsource_private)。セラーは影響を受けるアクティブなバイに対応する impairment を表面化しなければなりません(MUST)。
  • suspendedapproved: セラーが依存関係が回復されたことを観測し、必要な再レビューが通る。
  • suspendedrejected: セラーが、以前は回復可能だった依存関係/認可の喪失をこのクリエイティブについて回復できない、または置換/再提出が必要と判断。例: published_post 参照の失効したアイデンティティ/投稿の認可を再認可できない。セラーは、クリエイティブが置換・再割り当てされるか、パッケージ/バイがそれ以外の方法で是正されるまで、影響を受けるアクティブなバイを impaired に保たなければなりません(MUST)。
  • approvedarchived(バイヤー起点): バイヤーが sync_creatives を通じてアーカイブを発行
  • approvedarchived(セラー起点): セラーが、非アクティブ、フライト後の期限切れ、またはストレージポリシーのために未割り当てのクリエイティブをアーカイブ。セラーは、アクティブなパッケージ割り当てを持つクリエイティブをセラーアーカイブしてはなりません(MUST NOT)——アクティブな配信が関与する場合、影響を受けるバイに impairment を伴う approvedrejected(失効)のパスが唯一の準拠ルートです。セラー起点のアーカイブの状態変更の可観測性はクリエイティブ保持の契約に従います——最小限、新しい status が次の list_creatives の読み取りで可視でなければなりません(MUST)。
  • archivedapproved: sync_creatives を通じたバイヤー起点(アーカイブ解除)。セラーは再レビューを要求し、代わりに pending_review へ遷移してもよい(MAY)。
  • rejectedprocessing: バイヤーがクリエイティブを修正し sync_creatives を通じて再提出。クリエイティブは完全な処理とレビューのパイプラインに再入します。
  • approvedpending_review: セラー起点の再レビュー(例: ポリシー変更)。以前承認されたクリエイティブが再レビューのために引き戻されたとき、セラーは creative.status_changed を通じてサブスクライバーに通知しなければなりません(MUST)(event_types[] にこの値を含む各 notification_configs[] サブスクライバーに発火——下記を参照)。
クリエイティブエージェントは、配信のために rejected クリエイティブを参照する操作(例: パッケージへの割り当て)をエラーコード CREATIVE_REJECTED で拒否しなければなりません(MUST)。クリエイティブエージェントはまた、依存関係が回復されるまで suspended クリエイティブの配信を防がなければなりません(MUST)。 クリエイティブエージェントは、list_creatives レスポンスに status と(拒否時は)rejection_reason を含めなければなりません(MUST)。

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

セラー起点およびシステム起点の遷移は、アカウントの notification_configs[] サブスクライバーに対してプッシュ通知を発火します——event_types[] に発火されたタイプを含む各エントリが独立した発火を受け取ります。二つのイベントタイプがこの面をカバーします:
  • creative.status_changed — すべてのセラー起点またはシステム起点の遷移で発火: pending_review → approved/rejectedapproved → pending_review(再レビュー)、approved → suspended(回復可能な依存関係/認可の喪失)、suspended → approved(回復)、suspended → rejected(終端の依存関係/認可の喪失)、approved → rejected(承認後の失効)、approved → archived(セラー起点)。ペイロード: creative-status-changed-webhook.json
  • creative.purged — クリエイティブが破棄されたときに発火(保持のスイープ、テイクダウン、法的消去)。soft パージは list_creativesinclude_purged: true)上に 30 日間トゥームストーンを保持します。hard パージはレコードを保持しません——ウェブフックがバイヤーの唯一のシグナルです。ペイロード: creative-purged-webhook.json
バイヤー起点の遷移(アーカイブ、アーカイブ解除、再提出)は発火しません——それらは sync_creatives のレスポンスパスで確認応答されます。プッシュチャネルは、バイヤーが起こさなかった遷移のためだけに存在します。 両イベントは、creative-event-reason-code.json から引かれるカテゴリカルな reason_code を運びます。理由コードごとのバイヤー側の是正は、列挙の enumDescriptions にインラインで文書化されています。 クリエイティブがアクティブな配信を壊す状態(approved → suspendedapproved → rejectedsuspended → rejected、または割り当てが存在する間のセラー起点の approved → archived——これは非準拠。上記の遷移ルールを参照)へ遷移するとき、セラーはそのクリエイティブを参照するすべてのメディアバイに対応する impairment も表面化しなければなりません(MUST)(メディアバイの健全性を参照)。クリエイティブ側の creative.status_changed とバイ側の impairment はペアだが別個のシグナルです。バイヤーは creative_id で相関させます。二つの面は異なるアンカーを持ちます: クリエイティブイベントはアカウントレベルで発火し(サブスクリプションは任意の一つのバイより長生き)、impairment はバイごとに発火します。ペアの発火の間に順序の保証はありません——バイヤーは一方が他方より前に届くと仮定してはなりません(MUST NOT)。スナップショット(list_creativesget_media_buys)を介して突き合わせてください。 セラーは、サポートするイベントタイプとタイプごとの合体ウィンドウを get_adcp_capabilities を通じて宣言します。デフォルトの合体は creative.status_changed で 5 分です。セラーは creative.purged を合体してはなりません(MUST NOT)。遡及的な契約: セラーがこれらのイベントタイプのサポートを宣言すると、その義務はライブラリ内のすべてのクリエイティブをカバーします——既存のクリエイティブに猶予期間はありません。 バイヤーは、include_webhook_activity: true を伴う list_creatives を通じて、クリエイティブごとの最近のウェブフック発火をプルしてもよい(MAY)。読み取り面は webhook_activity[] の採用チェックリストに従います——30 日保持、三状態の存在セマンティクス、バイヤー側のエンドポイントログへの idempotency_key 相関。

価格

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

価格発見の面

価格は、エージェントのインタラクションモデルに応じて二つの面を通じて発見されます:
  • list_creatives — アドサーバーとライブラリベースのエージェントは、各クリエイティブに pricing_options[] を公開します。バイヤーは使いたい特定のクリエイティブの価格を発見します。
  • list_creative_formats — 変換および生成エージェントは、各フォーマットに pricing_options[] を公開します。バイヤーは、クリエイティブが存在する前に、エージェントが生成できるフォーマットの価格を発見します。
両方の面は、vendor-pricing-option オブジェクトの同じ pricing_options[] 配列を使います。両方ともリクエストに accountinclude_pricing: true を必要とします。 エージェントは両方の面で価格を公開してもよい(MAY)(例: ライブラリと変換機能の両方を持つクリエイティブ管理プラットフォーム)。

価格のフロー

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

価格モデル

クリエイティブエージェントは、vendor-pricing-option.json で定義されたベンダー価格モデルを再利用します:

消費の詳細

スキーマ: core/creative-consumption.json build_creative のレスポンスには、何が消費されたかについての構造化された詳細を持つ consumption オブジェクトが含まれます。既知のフィールド: tokens(消費された LLM トークン)、images_generatedrenders(レンダーパス)、duration_seconds(処理時間)。エージェントは追加のフィールドを含めてもよい(MAY)。 consumption オブジェクトは情報提供です——バイヤーが vendor_cost がレートカードと整合していることを検証できるようにします。vendor_cost が請求の信頼できる情報源です。

アカウントの要件

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

バンドルモード

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

タスク

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

list_creative_formats

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

list_transformers

リファレンス: list_transformers タスク クリエイティブエージェントが提供する、アカウントスコープのトランスフォーマーを発見します——メディアバイのプロダクトのクリエイティブ版: エージェントが提供する選択可能なビルド能力の単位(声、モデル、スタイル)で、build_creativetransformer_id で選択します。get_adcp_capabilitiescreative.supports_transformers: true を宣言するエージェントのみが提供します。 要件:
  • creative.supports_transformers: true を設定するクリエイティブエージェントは list_transformers を実装しなければなりません(MUST)
  • クリエイティブエージェントは、呼び出し元のアカウント向けにトランスフォーマー、その列挙可能なオプション値、価格を解決しなければなりません(MUST)——そのアカウント向けに設定されたカスタム値(例: クローンされた声)を含む
  • クリエイティブエージェントは、expand_params で名指しされた各 field について、アカウントスコープのオプション値を params[].options[] にインラインで返さなければならず(MUST)、それ以外では省略すべきです(SHOULD)
  • include_pricing が true の場合、課金するクリエイティブエージェントは各トランスフォーマーに pricing_optionsper_unit モデル)を含めなければなりません(MUST)

build_creative

リファレンス: 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_idbuild_creative リクエストで曖昧さを解消するために REQUIRED だ
  • build_creative は重大な時間がかかる生成および変換タスクに対して非同期レスポンス(context_id ポーリングを持つ status: "working")をサポートします。ライブラリ取得は通常同期的です
  • account が提供されエージェントが課金する場合、レスポンスは pricing_option_idvendor_costcurrency を含めなければなりません(MUST)。consumption オブジェクトは関連する場合に含めるべきです(SHOULD)
  • 非同期ビルドでは、価格フィールドは中間のステータスレスポンスではなく、最終的な完了レスポンスにのみ現れます
  • 課金するクリエイティブエージェントが account なしで build_creative リクエストを受け取り、そのエージェントがアカウントを必要とする場合、エージェントはエラーを返さなければなりません(MUST)

preview_creative

リファレンス: 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 / creative/list-creatives-response.json リファレンス: list_creatives タスク クリエイティブライブラリ内のクリエイティブアセットを閲覧・フィルタリングします。クリエイティブライブラリをホストするすべてのエージェント — 広告サーバー、クリエイティブ管理プラットフォーム、クリエイティブを管理するセールスエージェント — が実装します。 要件:
  • エージェントは認証済みアカウントからアクセス可能なクリエイティブを返さなければなりません (MUST)
  • エージェントは各クリエイティブの承認ステータスを含めなければなりません (MUST)
  • エージェントはフォーマット、ステータス、タグ、日付範囲によるフィルタリングをサポートすべきだ (SHOULD)
  • プラットフォームがクリエイティブをコンセプトに整理する場合、エージェントは concept_idsformat_ids によるフィルタリングをサポートすべきだ (SHOULD)
  • エージェントは include_variables=true の場合にダイナミックコンテンツ変数定義を含めてもよい (MAY)
  • エージェントは include_snapshot=true の場合に軽量な配信スナップショットを含めてもよい (MAY)。スナップショットは「このクリエイティブはアクティブか?」「最後にいつ配信されたか?」などの運用上の質問のためにライフタイムインプレッションと最終配信日時を提供する — 詳細分析は get_creative_delivery が担う
  • accountinclude_pricing=true が提供された場合、課金するエージェントは各クリエイティブに pricing_options——vendor-pricing-option オブジェクトの配列——を含めなければなりません(MUST)。ベンダーはクリエイティブごとに複数のオプションを提供できます(ボリュームティア、コンテキスト固有のレート、異なる価格モデル)。
アカウント要件:
  • サービスに課金するクリエイティブエージェントは、Accounts プロトコルを実装しなければなりません(MUST)。これは価格を持つ任意のクリエイティブエージェントに適用されます——アドサーバー、生成プラットフォーム、使用に課金する変換エージェント。
  • ライブラリをホストするが課金しないクリエイティブエージェントは、バイヤーがクエリ前にアクセスを確立できるよう Accounts プロトコルを実装すべきだ(SHOULD)。
  • これはセールスエージェントが使用するのと同じ accounts プロトコルだ — 別バージョンはない。
  • メディアバイのために accounts を既に実装しているセールスエージェントは追加対応不要です。

sync_creatives

スキーマ: creative/sync-creatives-request.json / creative/sync-creatives-response.json リファレンス: sync_creatives タスク ライブラリにクリエイティブアセットをアップロードして同期します。クリエイティブライブラリをホストするすべてのエージェント — 広告サーバー、クリエイティブ管理プラットフォーム、クリエイティブを管理するセールスエージェント — が実装します。 要件:
  • エージェントはフォーマット仕様に対してクリエイティブを検証しなければなりません (MUST)
  • エージェントは非準拠クリエイティブの検証エラーを返さなければなりません (MUST)
  • エージェントはクリエイティブが使用可能になる前に承認を要求してもよい (MAY)
  • エージェントは変更を適用せずに検証するための dry_run をサポートすべきだ (SHOULD)
  • エージェントは delete_missing: truecreative_ids を組み合わせるリクエストを拒否しなければなりません (MUST) — delete_missing はライブラリ全体に適用され、フィルタされたサブセットには適用されない
  • メディアバイも管理するエージェントは一括クリエイティブ-パッケージマッピングのための assignments フィールドをサポートすべきだ (SHOULD)
  • メディアバイを管理しないスタンドアロンクリエイティブエージェントは assignments フィールドを無視すべきだ (SHOULD)

get_creative_delivery

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

エラー処理

クリエイティブエージェントは標準 AdCP エラースキーマを使用してエラーを返さなければなりません (MUST)。 一般的なエラーコード:
  • REFERENCE_NOT_FOUND: リクエストされたフォーマットが存在しない、またはアクセスできない(error.fieldformat_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_creativecreative_id をサポートします
  7. クリエイティブライブラリをホストする場合、accounts プロトコル(sync_accounts / list_accounts)を実装します
  8. バイヤーが正しいインタラクションモデルを判断できるよう get_adcp_capabilitiessupports_generationsupports_transformationhas_creative_library を宣言します

コンシューマの適合性

適合するクリエイティブプロトコルコンシューマは以下を満たさなければなりません (MUST):
  1. フォーマット ID の agent_url を使用して権威あるクリエイティブエージェントを識別します
  2. 提出前にフォーマット仕様に対してマニフェストを検証します
  3. 検証エラーを適切に処理します
  4. 無限ループを避けるためにフォーマットを再帰的に発見する際に訪問済み URL を追跡します

実装ノート

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

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

再帰的フォーマット発見

クリエイティブエージェントは list_creative_formats レスポンスで他のクリエイティブエージェントを参照してもよい (MAY):
コンシューマは参照されたエージェントを再帰的にクエリして追加フォーマットを発見してもよい (MAY)。 コンシューマは再帰的発見中の無限ループを防ぐために訪問済み URL を追跡しなければなりません (MUST)。

フォーマット対応検証

マニフェスト検証はフォーマット仕様のコンテキストで実行されなければなりません (MUST):
  1. 権威あるクリエイティブエージェントからフォーマット定義を検索します
  2. マニフェストの各アセットについて、フォーマットの assets 配列内の対応するエントリを見つける
  3. フォーマットで定義されたタイプと制約に対してアセット値を検証します
フォーマット定義が各 asset_id のタイプを決定します。アセットタイプ情報はマニフェスト自体には含まれない。

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

  • 標準フォーマット: IAB 仕様に基づき、リファレンスクリエイティブエージェント(https://creative.adcontextprotocol.org)がホスト
  • カスタムフォーマット: 特殊なインベントリのために個別のパブリッシャーやクリエイティブプラットフォームが定義
両方とも同じように機能する — agent_url フィールドが各フォーマットに対してどのエージェントが権威あるかを識別します。

スキーマリファレンス

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