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 つのトランスポートをサポートしなければなりません。
TransportProtocolDescription
MCPModel Context ProtocolJSON-RPC によるツールベースのやり取り
A2AAgent-to-Agentメッセージベースのやり取り
推奨トランスポートとして MCP をサポートすることが望まれます。

トランスポートの宣言

ブランドエージェントは get_adcp_capabilities でサポートするトランスポートを宣言します。
{
  "adcp": { "major_versions": [2] },
  "supported_protocols": ["sponsored_intelligence"],
  "sponsored_intelligence": {
    "endpoint": {
      "transports": [
        { "type": "mcp", "url": "https://brand.example/mcp" }
      ],
      "preferred": "mcp"
    },
    "capabilities": { ... },
    "brand_manifest_url": "https://brand.example/.well-known/brand-manifest.json"
  }
}
複数のトランスポートを宣言する場合、レスポンスには 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. ホストはトークンを不透明な値として扱わなければなりません
{
  "offering_token": "offering_abc123xyz"
}

Matching Products

include_products が true で context が与えられている場合、レスポンスに一致する商品を含めてもかまいません。
{
  "available": true,
  "offering_token": "offering_abc123xyz",
  "offering": {
    "title": "Nike Summer Sale",
    "summary": "Up to 50% off summer collection",
    "price_hint": "from $89"
  },
  "matching_products": [
    {
      "product_id": "nike-air-max-90",
      "name": "Nike Air Max 90",
      "price": "$129",
      "availability_summary": "Size 14 in stock"
    }
  ],
  "total_matching": 12
}
これにより、セッション開始前にリッチなプレビューを提示できます。

Session Lifecycle

Session States

SI セッションには次の状態があります。
StateDescription
activeセッションが進行中
pending_handoffブランドがコマースフローへのハンドオフを要求
completeセッションが正常終了

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

ReasonDescription
handoff_transactionユーザーが購入に進む
handoff_complete会話が正常に完了した
user_exitユーザーがセッションを終了した
session_timeout非アクティブによるタイムアウト
host_terminatedホストがポリシー/エラーで終了した

Capability Negotiation

Negotiation Process

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

Capability Categories

Modalities

モダリティはインタラクションのモードを定義します。
ModalityDescriptionRequired Support
conversationalテキストでのやり取りすべての実装で必須
voice音声によるインタラクション任意
video動画コンテンツの再生任意
avatarアバターによる動画プレゼンス任意
すべての SI 実装は conversational モダリティをサポートしなければなりません。

Standard Components

準拠するすべてのホストは次のコンポーネントを描画できなければなりません。
ComponentPurpose
text会話メッセージ
linkラベル付き URL
image単一画像
product_cardCTA を含む商品表示
carouselカード/画像の配列
action_buttonコールバックをトリガーする CTA

Extension Components

ホストは追加コンポーネントをサポートしてもかまいません。
ComponentPurpose
app_handoffプラットフォーム固有アプリへのハンドオフ
integration_actionsMCP/A2A 追加のプロンプト
ブランドエージェントはコア機能を拡張コンポーネントに依存してはいけません。

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 コンポーネントは、ブランドエージェントが恒久的な接続を提案するためのものです。
{
  "type": "integration_actions",
  "data": {
    "actions": [
      { "type": "mcp", "label": "Add as MCP Tool", "highlighted": true },
      { "type": "a2a", "label": "Connect via A2A" }
    ]
  }
}
ホストは、その統合タイプをサポートしている場合に限り 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 コンポーネントにはコマースアクションを含めてもかまいません。
ActionDescription
acp_checkoutACP チェックアウトを開始
add_to_cart永続カートに追加

Error Handling

Error Response

ブランドエージェントは標準のエラースキーマを使い、errors 配列でエラーを返さなければなりません。
{
  "errors": [
    {
      "code": "session_not_found",
      "message": "セッションが期限切れ、または存在しません"
    }
  ]
}

Error Codes

CodeDescription
session_not_foundセッション ID が無効または期限切れ
offer_unavailable参照されたオファーが利用不可
capability_unsupported必要な機能が利用不可
rate_limitedリクエストが多すぎる

Security Considerations

Transport Security

すべての SI 通信は TLS 1.2 以上の HTTPS を使用しなければなりません。

Token Security

  • Availability トークンは不透明かつ予測不能でなければなりません
  • セッション ID は一意で予測不能でなければなりません
  • トークンは妥当な期間内に期限切れにすることが望まれます

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

VersionDateChanges
1.0.02025-01初版