Skip to main content
ドラフト仕様 — このプロトコルは開発中です。最終リリースまでに API やスキーマが変更される可能性があります。
本ドキュメントでは Sponsored Intelligence (SI) プロトコルの仕様を定義します。本文中の “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL” の語は RFC 2119 に従って解釈します。

Protocol Overview

SI プロトコルは、AI アシスタント(ホスト)がブランドエージェントのエンドポイントを呼び出し、会話型のブランド体験を提供する方法を定義します。プロトコルは次で構成されます。
  1. ディスカバリー - ホストがブランドエージェントとその機能を発見する方法
  2. 提供内容の照会 - セッション引き継ぎ前の匿名チェック
  3. セッション管理 - 開始、メッセージ交換、終了
  4. 機能ネゴシエーション - 利用できる機能の決定
  5. 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 を呼び出す場合:
  1. リクエストにユーザーの PII を含めてはいけません
  2. リクエストには offering_id を含める必要があります
  3. パーソナライズ結果のために context を含めてもかまいません(例: “mens size 14 near Cincinnati”)
  4. 一致する商品を得るために include_products: true を設定してもかまいません
  5. ブランドエージェントは可能であれば offering_token を返さなければなりません
  6. ブランドエージェントは有効期限を示す ttl_seconds を返すことが望まれます

Offering Token Flow

ホストが offering_token を受け取った場合:
  1. 後続の si_initiate_session リクエストにこのトークンを含めることが望まれます
  2. ブランドエージェントはトークンを使って照会とセッションを関連付けることができます
  3. ホストはトークンを不透明な値として扱わなければなりません

Matching Products

include_products が true で context が与えられている場合、レスポンスに一致する商品を含めてもかまいません。
これにより、セッション開始前にリッチなプレビューを提示できます。 Offering レスポンスとセッションレスポンスは、返された offering、マッチする商品、message、または UI 要素がホスト境界に入るスポンサードコンテキストである場合、sponsored_context を含めてもかまいません(MAY)。宣言は 3 つの事実を分離します。 スポンサードコンテキストの説明責任には 4 つのハンドオフポイントがあります。 このモデルは提示開示推論影響から分離します。提示開示は、必要なときにホストがレンダリングするユーザーに見えるラベル、カード処理、通知、または同等の開示です。推論影響は、スポンサードコンテキストが比較セット、ランキング、生成された回答、プラン、またはモデル/オーケストレーションコンテキストを形成してよいかどうかです。context_use は許可される影響境界を宣言し、disclosure_obligation はユーザー向けの開示義務を宣言します。 宣言は、将来の拡張が個々のアイテムに狭めない限り、返された offering と matching_products パッケージ全体に適用されます。 ホストは、スポンサードコンテキストを受け入れる、または明示的に拒否するとき、paying_principal、宣言された context_usedisclosure_obligation、ホストレシートをリンクする監査記録を保持すべきです(SHOULD)。ホストが後続で si_initiate_session または si_send_message を呼び出すとき、その決定をブランド/セラーに見えるようにするために sponsored_context_receipt を含めてもかまいません(MAY)。レシートは受信サーフェスの説明責任事実を記録します: ホストがコンテキストを受け入れたか、受け入れたレシートについてはどの使用モードと開示コミットメントを行ったか。 受け入れられたレシートについて:
  • accepted_context_use は宣言の context_use に一致しなければなりません(MUST)
  • disclosure_obligation.required が true のとき disclosure_commitment.statusaccepted でなければなりません(MUST)
  • disclosure_obligation.required が false のときのみ disclosure_commitment.statusnot_required であってもかまいません(MAY)
宣言された使用モードを尊重できない、または必要な開示義務を満たせないホストは、受け入れられたレシートを送る代わりにスポンサードコンテキストを拒否しなければなりません(MUST)。 拒否されたレシートについては、accepted_context_usedisclosure_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_statuspending_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 メディアバイ ID
  • offering_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 - セッション ID
  • session_status - 現在のセッション状態(activepending_handoffcomplete
ブランドエージェントは次を返すことが望まれます。
  • response.message - 会話の応答
session_statuspending_handoff の場合、レスポンスには必ず次を含めます。
  • handoff - コマースフローへのハンドオフ設定

Terminate Session

si_terminate_session タスクは SI セッションを終了します。

Request Requirements

ホストは次を必ず含めなければなりません。
  • session_id - 終了するセッション ID
  • reason - 終了理由

Termination Reasons

Handoff Data

reasonhandoff_transaction のとき、ブランドエージェントは終了レスポンスで acp_handoff オブジェクトを返すべきです(SHOULD)。 ブランドエージェントは、ホストがセッションコンテキストをチェックアウトエンドポイントに渡せるよう、checkout_token または payload(または両方)を含めるべきです(SHOULD)。 ブランドエージェントは、セッション後のコンテキスト(例: 議論した内容のサマリー、次のステップ)を持つ follow_up オブジェクトを返してもかまいません(MAY)。

Capability Negotiation

Negotiation Process

  1. ブランドが SI マニフェストで機能を宣言します
  2. ホストがセッション開始時にサポート機能を送る
  3. ブランドがレスポンスでネゴシエート済み(交差)の機能を返す
  4. セッションは交差した機能のみを使用します

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 を操作した場合:
  1. ホストは si_send_message を介して action_response を送信しなければなりません
  2. action_response には action 識別子を含めなければなりません
  3. payload が提供されている場合、action_response に含めることが望まれます

Integration Actions

integration_actions コンポーネントは、ブランドエージェントが恒久的な接続を提案するためのものです。
ホストは、その統合タイプをサポートしている場合に限り integration actions を描画してもかまいません。

Identity and Privacy

ホストはブランドエージェントとアイデンティティを共有する前に、ユーザーの明示的な同意を得なければなりません。 同意フローでは次を必ず行います。
  1. 共有するデータを明示します
  2. ブランドのプライバシーポリシーを参照させる
  3. ユーザーに拒否する選択肢を提供します

Identity Object

同意が得られた場合、identity オブジェクトには次を必ず含めます。
  • consent_granted: true
  • consent_timestamp - 同意を取得した時刻
  • consent_scope - 同意したデータ種別の配列
  • privacy_policy_acknowledged.brand_policy_url
user オブジェクトには次を含めてもかまいません。
  • email
  • name
  • locale
  • shipping_address

Anonymous Sessions

同意が得られない場合:
  • identity.consent_granted は必ず false
  • identity.anonymous_session_id を提供することが望まれます
  • PII を送信してはなりません

Commerce Integration

ACP Handoff

session_statuspending_handoffhandoff.type: "transaction" の場合:
  1. ホストは ACP のチェックアウトフローを開始することが望まれます
  2. handoff.intent には購入意図を記述しなければなりません
  3. 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 ホストは次を満たさなければなりません。
  1. MCP トランスポートをサポートします
  2. すべてのスタンダードコンポーネントを描画します
  3. セッションライフサイクル(開始、送信、終了)を実装します
  4. アイデンティティ共有前に同意を取得します
  5. 機能ネゴシエーションをサポートします

Brand Agent Conformance

準拠する SI ブランドエージェントは次を満たさなければなりません。
  1. SI マニフェストを公開します
  2. 指定されたトランスポートの少なくとも 1 つをサポートします
  3. 会話モダリティをサポートします
  4. 有効なセッション ID を返す
  5. すべての終了理由を処理します

Version History