Protocol Overview
SI プロトコルは、AI アシスタント(ホスト)がブランドエージェントのエンドポイントを呼び出し、会話型のブランド体験を提供する方法を定義します。プロトコルは次で構成されます。- ディスカバリー - ホストがブランドエージェントとその機能を発見する方法
- 提供内容の照会 - セッション引き継ぎ前の匿名チェック
- セッション管理 - 開始、メッセージ交換、終了
- 機能ネゴシエーション - 利用できる機能の決定
- UI コンポーネント - 描画用の標準的なビジュアル要素
Transport Requirements
サポートするトランスポート
ブランドエージェントは、以下のうち少なくとも 1 つのトランスポートをサポートしなければなりません。
推奨トランスポートとして MCP をサポートすることが望まれます。
トランスポートの宣言
ブランドエージェントはget_adcp_capabilities でサポートするトランスポートを宣言します。
preferred フィールドを含めることが望まれます。
Discovery
機能ディスカバリー
ブランドエージェントは SI 対応を宣言するためにget_adcp_capabilities タスクを実装しなければなりません。ホストがこのタスクを呼び出したとき、レスポンスには次を必ず含めます。
supported_protocols配列内のsponsored_intelligence- 次を含む
sponsored_intelligenceオブジェクト:endpoint- トランスポートの設定(必須)capabilities- サポートするモダリティとコンポーネント(必須)
brand_manifest_url- ブランドアイデンティティの参照
Get Offering
Purpose
si_get_offering タスクはセッション引き継ぎ前に提供内容と提供可否を取得します。ホストはブランドとのエンゲージメントに同意を求める前に、価格や在庫などの情報をユーザーへ提示できます。
Requirements
ホストはセッション開始前にsi_get_offering を呼び出してもかまいません。
si_get_offering を呼び出す場合:
- リクエストにユーザーの PII を含めてはいけません
- リクエストには
offering_idを含める必要があります - パーソナライズ結果のために
contextを含めてもかまいません(例: “mens size 14 near Cincinnati”) - 一致する商品を得るために
include_products: trueを設定してもかまいません - ブランドエージェントは可能であれば
offering_tokenを返さなければなりません - ブランドエージェントは有効期限を示す
ttl_secondsを返すことが望まれます
Offering Token Flow
ホストがoffering_token を受け取った場合:
- 後続の
si_initiate_sessionリクエストにこのトークンを含めることが望まれます - ブランドエージェントはトークンを使って照会とセッションを関連付けることができます
- ホストはトークンを不透明な値として扱わなければなりません
Matching Products
include_products が true で context が与えられている場合、レスポンスに一致する商品を含めてもかまいません。
Sponsored Context Accountability
Offering レスポンスとセッションレスポンスは、返された offering、マッチする商品、message、または UI 要素がホスト境界に入るスポンサードコンテキストである場合、sponsored_context を含めてもかまいません(MAY)。宣言は 3 つの事実を分離します。
スポンサードコンテキストの説明責任には 4 つのハンドオフポイントがあります。
このモデルは提示開示を推論影響から分離します。提示開示は、必要なときにホストがレンダリングするユーザーに見えるラベル、カード処理、通知、または同等の開示です。推論影響は、スポンサードコンテキストが比較セット、ランキング、生成された回答、プラン、またはモデル/オーケストレーションコンテキストを形成してよいかどうかです。
context_use は許可される影響境界を宣言し、disclosure_obligation はユーザー向けの開示義務を宣言します。
宣言は、将来の拡張が個々のアイテムに狭めない限り、返された offering と
matching_products パッケージ全体に適用されます。
ホストは、スポンサードコンテキストを受け入れる、または明示的に拒否するとき、paying_principal、宣言された context_use、disclosure_obligation、ホストレシートをリンクする監査記録を保持すべきです(SHOULD)。ホストが後続で si_initiate_session または si_send_message を呼び出すとき、その決定をブランド/セラーに見えるようにするために sponsored_context_receipt を含めてもかまいません(MAY)。レシートは受信サーフェスの説明責任事実を記録します: ホストがコンテキストを受け入れたか、受け入れたレシートについてはどの使用モードと開示コミットメントを行ったか。
受け入れられたレシートについて:
accepted_context_useは宣言のcontext_useに一致しなければなりません(MUST)disclosure_obligation.requiredが true のときdisclosure_commitment.statusはacceptedでなければなりません(MUST)disclosure_obligation.requiredが false のときのみdisclosure_commitment.statusはnot_requiredであってもかまいません(MAY)
accepted_context_use と disclosure_commitment は存在してはなりません(MUST)。拒否されたレシートは、ホストがスポンサードコンテキストを受け入れなかったまたは使わなかったことを、理由を説明する任意の rejection_reason とともに記録します。
これは境界コントラクトです。AdCP は隠されたモデルの推論を検査せず、思考の連鎖を標準化せず、ホストモデルがレシート後に内部でコンテキストをどう使うかを保証しません。宣言された使用モードまたは開示義務を尊重できない準拠ホストは、黙ってダウンスコープしたり開示なしに使ったりするのではなく、スポンサードコンテキストを拒否しなければなりません(MUST)。
Session Lifecycle
Session States
SI セッションには次の状態があります。Session State Transitions
- ブランドエージェントは、成功時に
si_initiate_sessionからsession_status: "active"を返さなければなりません(MUST) - ブランドエージェントは、すべての
si_send_messageレスポンスでsession_statusを返さなければなりません(MUST) session_statusがpending_handoffのとき、レスポンスはhandoffオブジェクトを含まなければなりません(MUST)- ブランドエージェントは、会話がコマースまたはチェックアウトの意図に達したとき、任意の
si_send_messageレスポンスでactiveからpending_handoffに遷移してもかまいません(MAY) - ブランドエージェントは、会話が結論に達したとき(例: 質問に回答済み、追加のアクション不要)、
si_send_messageレスポンスでactiveから直接completeに遷移してもかまいません(MAY) - ホストは、セッションを終了するために
si_terminate_sessionを呼び出さなければなりません(MUST)。ブランドエージェントは、任意の非終端状態からの終了を受け入れなければなりません(MUST)。 - ブランドエージェントは、未知または期限切れのセッションに送られたメッセージについて
SESSION_NOT_FOUNDを返さなければなりません(MUST) - ブランドエージェントは、
completeまたはterminated状態のセッションに送られたメッセージについてSESSION_TERMINATEDを返さなければなりません(MUST)。情報開示の最小化を優先するブランドエージェントは、終了したセッションについてもSESSION_NOT_FOUNDを返してもかまいません(MAY)— 回復パスは両方のケースで同一です。 - 終端状態は不可逆です — セッションが
completeまたはterminatedになると、新しいセッションを開始しなければなりません
Session Timeout
セッションは最大非アクティブタイムアウトを持つべきです(SHOULD)。ブランドエージェントは、アイドルセッションをterminated に遷移させることでタイムアウトを強制してもかまいません(MAY)。
- ブランドエージェントは、一定期間の非アクティブ後にセッションを期限切れとして扱うべきです(SHOULD。推奨: 会話セッションで 5 分)
- ブランドエージェントは、期限切れセッションに送られたメッセージについて、黙って新しいセッションを作成するのではなく
SESSION_NOT_FOUNDを返すべきです(SHOULD) - ホストは
last_active_atを追跡し、可能な場合はセッションタイムアウト前にユーザーに警告すべきです(SHOULD) - ブランドエージェントは、タイムアウト期間をホストに伝えるために
si_initiate_sessionレスポンスにsession_ttl_secondsを含めてもかまいません(MAY)
Initiate Session
si_initiate_session タスクは新しい SI セッションを確立します。
Request Requirements
ホストは次を必ず含めなければなりません。context- ユーザー意図の自然言語説明identity- 同意状態を含むユーザーのアイデンティティ
supported_capabilities- ネゴシエーション用のホスト側機能セットoffering_token-si_get_offeringを実行した場合のトークン
media_buy_id- 広告起点の場合の AdCP メディアバイ IDoffering_id- 適用するブランド固有のオファーplacement- セッションがトリガーされた場所
Response Requirements
ブランドエージェントは次を必ず返さなければなりません。session_id- セッションの一意識別子
response.message- 最初の会話メッセージnegotiated_capabilities- ブランドとホストの機能の交差集合
Send Message
si_send_message タスクはアクティブなセッション内でメッセージをやり取りします。
Request Requirements
ホストは次を必ず含めなければなりません。session_id- アクティブなセッション ID
message- ユーザーのテキストメッセージaction_response- UI アクションへの応答
Response Requirements
ブランドエージェントは次を必ず返さなければなりません。session_id- セッション IDsession_status- 現在のセッション状態(active、pending_handoff、complete)
response.message- 会話の応答
session_status が pending_handoff の場合、レスポンスには必ず次を含めます。
handoff- コマースフローへのハンドオフ設定
Terminate Session
si_terminate_session タスクは SI セッションを終了します。
Request Requirements
ホストは次を必ず含めなければなりません。session_id- 終了するセッション IDreason- 終了理由
Termination Reasons
Handoff Data
reason が handoff_transaction のとき、ブランドエージェントは終了レスポンスで acp_handoff オブジェクトを返すべきです(SHOULD)。
ブランドエージェントは、ホストがセッションコンテキストをチェックアウトエンドポイントに渡せるよう、
checkout_token または payload(または両方)を含めるべきです(SHOULD)。
ブランドエージェントは、セッション後のコンテキスト(例: 議論した内容のサマリー、次のステップ)を持つ follow_up オブジェクトを返してもかまいません(MAY)。
Capability Negotiation
Negotiation Process
- ブランドが SI マニフェストで機能を宣言します
- ホストがセッション開始時にサポート機能を送る
- ブランドがレスポンスでネゴシエート済み(交差)の機能を返す
- セッションは交差した機能のみを使用します
Capability Categories
Modalities
モダリティはインタラクションのモードを定義します。
すべての SI 実装は
conversational モダリティをサポートしなければなりません。
Standard Components
準拠するすべてのホストは次のコンポーネントを描画できなければなりません。Extension Components
ホストは追加コンポーネントをサポートしてもかまいません。
ブランドエージェントはコア機能を拡張コンポーネントに依存してはいけません。
UI Element Requirements
Standard Component Data
各スタンダードコンポーネントはsi-ui-element.json で定義された必須フィールドを含めなければなりません。
text: message(必須)
link: url, label(必須); preview(任意)
image: url, alt(必須); caption(任意)
product_card: title, price(必須); subtitle, image_url, description, badge, cta(任意)
carousel: items(必須); title(任意)
action_button: label, action(必須); payload(任意)
Action Handling
ユーザーがaction_button を操作した場合:
- ホストは
si_send_messageを介してaction_responseを送信しなければなりません action_responseにはaction識別子を含めなければなりませんpayloadが提供されている場合、action_responseに含めることが望まれます
Integration Actions
integration_actions コンポーネントは、ブランドエージェントが恒久的な接続を提案するためのものです。
Identity and Privacy
Consent Requirements
ホストはブランドエージェントとアイデンティティを共有する前に、ユーザーの明示的な同意を得なければなりません。 同意フローでは次を必ず行います。- 共有するデータを明示します
- ブランドのプライバシーポリシーを参照させる
- ユーザーに拒否する選択肢を提供します
Identity Object
同意が得られた場合、identity オブジェクトには次を必ず含めます。
consent_granted: trueconsent_timestamp- 同意を取得した時刻consent_scope- 同意したデータ種別の配列privacy_policy_acknowledged.brand_policy_url
user オブジェクトには次を含めてもかまいません。
emailnamelocaleshipping_address
Anonymous Sessions
同意が得られない場合:identity.consent_grantedは必ずfalseidentity.anonymous_session_idを提供することが望まれます- PII を送信してはなりません
Commerce Integration
ACP Handoff
session_status が pending_handoff で handoff.type: "transaction" の場合:
- ホストは ACP のチェックアウトフローを開始することが望まれます
handoff.intentには購入意図を記述しなければなりませんhandoff.context_for_checkoutには会話コンテキストを含めてもかまいません
Commerce Actions
action_button コンポーネントにはコマースアクションを含めてもかまいません。
Error Handling
Error Response
ブランドエージェントは標準のエラースキーマを使い、errors 配列でエラーを返さなければなりません。
Error Codes
Security Considerations
Transport Security
すべての SI 通信は TLS 1.2 以上の HTTPS を使用しなければなりません。Token Security
- Availability トークンは不透明かつ予測不能でなければなりません
- セッション ID は一意で予測不能でなければなりません
- トークンは妥当な期間内に期限切れにすることが望まれます
Handoff URL Validation
ホストは、ユーザーに提示する前にacp_handoff データの checkout_url を検証しなければなりません(MUST)。ホストは https スキームに制限すべきで(SHOULD)、ドメインがブランドエージェントの登録ドメインに一致することを検証してもかまいません(MAY)。ホストは、ハンドオフデータから javascript:、data:、その他の非 HTTPS URI を開いてはなりません(MUST NOT)。
Data Minimization
- 同意なしにホストは PII を送信してはなりません
- ブランドエージェントはデータ収集を最小限にすることが望まれます
- セッション終了後はセッションデータを削除することが望まれます
Conformance
Host Conformance
準拠する SI ホストは次を満たさなければなりません。- MCP トランスポートをサポートします
- すべてのスタンダードコンポーネントを描画します
- セッションライフサイクル(開始、送信、終了)を実装します
- アイデンティティ共有前に同意を取得します
- 機能ネゴシエーションをサポートします
Brand Agent Conformance
準拠する SI ブランドエージェントは次を満たさなければなりません。- SI マニフェストを公開します
- 指定されたトランスポートの少なくとも 1 つをサポートします
- 会話モダリティをサポートします
- 有効なセッション ID を返す
- すべての終了理由を処理します