Skip to main content
すべての AdCP プロトコルにわたるセラーのプロトコルサポートとケイパビリティを発見します。これは、セラーが何をサポートするかを理解するためにバイヤーが最初に行うべき呼び出しです。
なぜこの形状か。 ケイパビリティは約 14 のトップレベルドメインキー(プロトコルごとに 1 つ、加えてアイデンティティと署名インフラ)に整理され、機能フラグは各ドメインの features/execution/その他のサブ名前空間の下にネストされます。私たちはフラットなケイパビリティリストを拒否しました — それはすべての実装者に無制限のサーフェスをスキャンさせ、関連するフラグが隣り合うことから来る発見性を取り除きます。新しいケイパビリティフラグは、新しいトップレベルキーではなく既存のドメインの下に属します。宣言はアドバタイズメントではなくコミットメントです(コンプライアンスランナーがそれらをプローブします)。→ 提案する前に ケイパビリティエクスプローラー がツリーをたどります。→ 設計原則: ケイパビリティはコミットメント
応答時間: 約 2 秒(設定ルックアップ) 目的:
  • AdCP ディスカバリー - このエージェントは AdCP をサポートするか?どのバージョン?
  • プロトコルサポート - どのプロトコル(media_buy、signals、governance、sponsored_intelligence、creative、brand)?
  • 認証モデル - このセラーはエージェントを直接信頼するか、各オペレーターが独立して認証しなければならないか?
  • 詳細なケイパビリティ - 機能、実行統合、ジオターゲティング、ポートフォリオ
呼び出し元ごとの認可はここでレポートされません。 get_adcp_capabilities はセラーのサーフェス — 任意の認可された呼び出し元に対してそれができることすべて — を返します。特定のアカウントであなたが何を許可されているか(あなたのアイデンティティに対してどのタスクが呼び出し可能か、どのリクエストフィールドが変更可能か、attestation_verifier のような名前付きスコープ)を発見するには、sync_accountslist_accounts レスポンスのアカウントごとのエントリの authorization オブジェクトを読みます。完全な形状とセマンティクスについては Caller authorization を参照。
リクエストスキーマ: /schemas/v3/protocol/get-adcp-capabilities-request.json レスポンススキーマ: /schemas/v3/protocol/get-adcp-capabilities-response.json

Tool-Based Discovery

AdCP はネイティブの MCP/A2A ツールディスカバリーを使います。エージェントのツールリストに get_adcp_capabilities が存在することが AdCP サポートを示します。
このアプローチ:
  • 標準の MCP/A2A メカニズムを使う(カスタム拡張なし)
  • 常に現在のケイパビリティを返す(古いメタデータではない)
  • すべてのケイパビリティ情報の単一の真実の源泉
:::note エージェントカード拡張(adcp-extension.json)は v3 で削除されました。代わりにツールベースのディスカバリーを使ってください。 :::

Version Negotiation

セラーはレスポンスの adcp.major_versions でサポートするメジャーバージョンを宣言します。バイヤーはリクエストの adcp_major_version で使用するバージョンを宣言します。
adcp_major_version はすべての AdCP リクエストスキーマの任意フィールドです。バイヤーは、マルチバージョンセラーと対話するときにすべてのリクエストに含めるべきです(SHOULD)。 セラーの動作:
  • adcp_major_version が提供されサポートされている → そのバージョンのスキーマで応答
  • adcp_major_version が提供されたがサポートされていない → VERSION_UNSUPPORTED を返す(バイヤーは adcp_major_version なしで呼び出してサポートバージョンを発見すべき)
  • adcp_major_version が省略された → 最高のサポートバージョンを想定
なぜマイナーではなくメジャーバージョンか? セムバーポリシーはメジャーバージョン内での後方互換性を保証します。3.1 のセラーはネゴシエーションなしに 3.0 のバイヤーに提供できます。ケイパビリティモデルが機能レベルの差異を扱います — バイヤーは互換性を判断するために、バージョン番号ではなく特定のケイパビリティ(ターゲティングシステム、機能、拡張)を確認します。

Request Parameters

Response Structure

adcp

コア AdCP プロトコル情報:

idempotency

このセラーが idempotency_key リプレイ保護を尊重するかを宣言します。3.1 以降、idempotency_key はすべての AdCP タスクリクエスト(読み取りも変更も同様)で必須です(読み取りの段階的強制: 3.1 では SHOULD-reject、3.2 では MUST-reject。security.mdx § Idempotency を参照)。request_signing.supported パターンを反映 — ウィンドウの詳細から切り離された単一の肯定的宣言。クライアントはデフォルトを想定してはなりません(MUST NOT)。このブロックのないセラーは非準拠で、すべての呼び出しモードにわたってリトライに敏感な操作に対して安全でないものとして扱うべきです。
リプレイ重複排除をサポートしないセラーは明示的に宣言します。
宣言の検証。 idempotency.supported: true は、バイヤーが支出コミット操作を安全にリトライできるようにする信頼を担うクレームです。侵害されたまたはバグのあるセラーは、キーを黙って無視しながら true をアドバタイズし、リトライでバイヤーの二重支出を引き起こす可能性があります。バイヤーと適合性ランナーは、意図的なペイロード変異リプレイで宣言をプローブすべきです(SHOULD): 同じ idempotency_key だが異なる正準ペイロードで 2 つのリクエストを送信する — 準拠セラーは 2 番目で IDEMPOTENCY_CONFLICT を返さなければなりません(MUST)。supported: true を宣言するセラーは、宣言が検証済みと見なされる前にベースラインコンプライアンスストーリーボードの一部としてこのプローブに合格しなければなりません(MUST)。

supported_protocols

このエージェントがサポートする AdCP プロトコル。これは単一のケイパビリティ軸です — 各値は (a) エージェントが実装するツールを宣言し、かつ (b) エージェントを /compliance/{version}/protocols/{protocol}/ のベースラインコンプライアンスストーリーボードの合格にコミットします。ランナーは JSON snake_case → URL kebab-case をマッピングします(media_buy/compliance/.../protocols/media-buy/)。
有効な値: media_buycreativesignalsgovernancebrandsponsored_intelligence 各プロトコルのスコープについては Compliance Catalog を参照。コンプライアンステストコントローラーのサポートは、プロトコル値としてではなく、別個の compliance_testing ケイパビリティブロック(下記)で宣言されます。

specialisms

任意の専門化クレーム。各エントリは /compliance/{version}/specialisms/{id}/ の狭いストーリーボードに対応します。すべての専門分野は supported_protocols の 1 つのプロトコルにロールアップします — sales-guaranteed を主張するには media_buy が必要です。ランナーは親プロトコルが欠けている専門分野を拒否します。
すべての専門分野については完全な Compliance Catalog を、権威あるリストについては enum スキーマ を参照。

Capability slot gaps

definePlatform などの SDK ヘルパーは、プラットフォーム実装をより狭いケイパビリティスロットに投影できます。それらのスロットをコミットメントとして扱ってください: エージェントが対応するタスクパスをエンドツーエンドで実行できるときのみスロットを宣言します。 ストーリーボードやローカルテストベクターがエージェントが宣言しないスロットをターゲットにする場合、期待される適合性結果は失敗ではなく not_applicable です。ランナー側の強制が adcp-client#2244 で到着するまで、カスタムまたはプレリリーススイートを実行する実装者は、宣言されたスロットスコープ外のベクターに明示的なスキップゲートを追加すべきです。欠けているスロットを、それを宣言してプレースホルダーレスポンスを返すことで回避しないでください。それは正直なカバレッジギャップを失敗したケイパビリティクレームに変えます。

account

アカウントと認証のケイパビリティ。すべてのセラーはこのセクションを宣言すべきです — バイヤーは sync_accountslist_accounts、または任意の認証済みタスクを呼び出す前にこれを読みます。シンプルなパブリッシャーでも、課金関係とサンドボックステストを扱うためにアカウント管理が必要です。

Auth models

バイヤー宣言アカウントrequire_operator_auth: false)— セラーはエージェントのアイデンティティクレームを信頼します。エージェントは自身の bearer トークンで一度認証し、次に sync_accounts を呼び出して代表するブランドとオペレーターを宣言します。セラーはエージェントのクレームに基づいてアカウントをプロビジョニングし、任意で brand.json に対してオペレーターを検証します。後続のすべての呼び出しはエージェントの単一の認証情報を使い、自然キー(brand + operator)を渡します。 アカウント ID 名前空間require_operator_auth: true)— 各オペレーターはセラーと直接認証しなければなりません。エージェントはオペレーターごとに認証情報を取得し(authorization_endpoint を使う OAuth 経由、または帯域外)、オペレーターごとのセッションを開き、後続のリクエストでセラー割り当ての account_id 値を渡します。OAuth は認証情報の取得であり、アカウントタクソノミー軸ではありません。2 つの名前空間パターンが同じワイヤー参照を使います: 上流管理のセラーは list_accounts を公開し、アカウントスコープ呼び出しの前に明示的なアカウント解決を必須にします。list_accounts のないセラー定義の名前空間は帯域外でアカウント ID を提供します。 サンドボックスについては、パスはアカウント名前空間に従います: アカウント ID 名前空間は list_accounts または帯域外セットアップで既存のテストアカウントを発見します。バイヤー宣言アカウントは sandbox: truesync_accounts でサンドボックスを宣言します。 完全なワークフローについては アカウントとエージェント を、認証モデルと課金サポートの一般的な組み合わせについては セラーパターン を参照。

media_buy

メディアバイプロトコルのケイパビリティ。media_buysupported_protocols にある場合にのみ存在。media_buy を宣言するセラーは accountsupported_billing 付き)と media_buy.portfolio も含めるべきです — バイヤーは課金の確立とインベントリカバレッジの理解の両方に必要です。コンプライアンステストがそれらの存在を検証します。 :::note 3.0 の破壊的変更 次のフィールドはケイパビリティレスポンスから削除されました:
  • media_buy.reporting — レポートは media_buy によって暗示されます。代わりにプロダクトレベルの reporting_capabilities を使ってください。
  • features.content_standardsmedia_buy.content_standards オブジェクトに置き換え。オブジェクトの存在がサポートを示します。
  • features.audience_targetingmedia_buy.audience_targeting オブジェクトに置き換え。
  • features.conversion_trackingmedia_buy.conversion_tracking オブジェクトに置き換え。
  • execution.targeting.device_platformdevice_typemedia_buy サポートによって暗示。
  • execution.targeting.audience_includeaudience_excludeaudience_targeting オブジェクトの存在によって暗示。
  • execution.trusted_match.supported — オブジェクトの存在がサポートを示します。
  • brand.identitysupported_protocolsbrand によって暗示。get_brand_identity は常に利用可能。 :::

reporting_delivery_methods

セラーのプロダクトポートフォリオ全体でどのプッシュベースの配信方法が利用可能かを宣言します。get_media_buy_delivery によるポーリングは、このフィールドに関係なくすべての media_buy セラーに必須のタスクです。 存在しない場合、ポーリングのみが利用可能です。ケイデンスとメトリクスはプロダクトごとに reporting_capabilities で宣言されます。 offline が宣言される場合、どのクラウドストレージプロトコルがサポートされるか(s3gcsazure_blob)を宣言する offline_delivery_protocols も含めます。詳細は オフラインファイル配信 を参照。

creative_approval_mode

クリエイティブが割り当てられ自動検証が通過した後の、セラーのテナント全体のクリエイティブ承認姿勢を宣言します。これは通知サーフェスや新しい承認ワークフローではありません。人間のレビューが配信適格性をまだブロックできるかをバイヤーとコンプライアンスランナーに伝えます。 混合承認ポリシーを持つセラーは、アドバタイズされたエージェントで到達可能なすべてのプロダクト/アカウントが自動検証後の自動適格性をサポートしない限り、require_human を宣言すべきです(SHOULD)。フィールドが存在しない場合、承認動作はレガシー未指定です。ランナーは省略を肯定的な auto_approve クレームとして扱うべきではありません(SHOULD NOT)。

features

任意のメディアバイ機能。true と宣言された場合、セラーはその機能を使うリクエストを尊重しなければなりません(MUST)。

content_standards

コンテンツ標準の実装詳細。このオブジェクトの存在は、セラーがサンプリングレートとカテゴリフィルタリングを含むコンテンツ標準設定をサポートすることを示します。 Example:
supports_local_evaluationfalse の場合、get_media_buy_artifactsfailures_only フィルターは空の結果セットを返します — すべての判定が unevaluated になります。

execution

技術的な実行ケイパビリティ:
axe_integrations
axe_integrations は、このセラーが実行できる Agentic Ad Exchange(AXE)エンドポイント URL の配列です。AXE は AdCP キャンペーンのリアルタイム実行層です — バイヤーエージェントを標準化されたエクスチェンジ経由でプログラマティックインベントリに接続します。
creative_specs
targeting
デバイスプラットフォームとデバイスタイプのターゲティングは media_buy サポートによって暗示されます。オーディエンスの include/exclude ターゲティングは audience_targeting ケイパビリティオブジェクトの存在によって暗示されます。 地理的ターゲティングレベルをサポートするセラーは、そのレベルで包含と除外の両方をサポートすべきです(SHOULD)。片方向のみをサポートする場合、黙って無視するのではなく、サポートされないフィールドに対して検証エラーを返さなければなりません(MUST)。 geo_proximity はどの近接ターゲティング方法がサポートされるかを指定します: geo_metros はどのメトロ分類システムがサポートされるかを指定します: geo_postal_areas はどの国ローカルの郵便番号システムがサポートされるかを指定します。推奨される形状は ISO 3166-1 alpha-2 国でキー付けされ、各国がサポートするシステムをリストします:
より具体的な登録済みローカルシステムのない国では通常の郵便番号文字列に postal_code を使います。3.x 移行中、セラーはエイリアスが存在する場合、ネイティブの国キーとともに us_zip などの同等の非推奨エイリアスを発するべきです(SHOULD)。

audience_targeting

オーディエンスターゲティングのケイパビリティ。このオブジェクトの存在は、セラーが sync_audiences とターゲティングオーバーレイの audience_include/audience_exclude を含むオーディエンスターゲティングをサポートすることを示します。

conversion_tracking

セラーレベルのコンバージョントラッキングケイパビリティ。kind: "event" 最適化目標についてセラーがサポートするものを宣言します。

portfolio

インベントリポートフォリオ情報:

signals

シグナルプロトコルのケイパビリティ。signalssupported_protocols にある場合にのみ存在。
catalog_signals は非推奨です。既存の 3.x エージェントは互換性のためこれを発し続けてもかまいませんが、新しいエージェントはこれを省略すべきで(SHOULD)、呼び出し元は signal_ref を使う前にこれを必須としてはなりません(MUST NOT)。

creative

クリエイティブプロトコルのケイパビリティ。creativesupported_protocols にある場合にのみ存在。

governance

ガバナンスプロトコルのケイパビリティ。governancesupported_protocols にある場合にのみ存在。ガバナンスエージェントは 4 つのドメインにわたってケイパビリティを宣言します: プロパティ評価、クリエイティブ評価、コンテンツ標準検証、ポリシーレジストリ統合。

property_features

このガバナンスエージェントが評価できるプロパティ機能の配列。プロパティガバナンス を参照。

creative_features

このガバナンスエージェントが評価できるクリエイティブ機能の配列。property_features と同じフィールドスキーマ。クリエイティブガバナンス を参照。

content_standards

コンテンツ標準検証のケイパビリティ。コンテンツ標準 を参照。

policy_registry

ポリシーレジストリ統合のケイパビリティ。Policy Registry を参照。 ガバナンスエージェントレスポンスの例:

measurement

実験的な測定プロトコルのケイパビリティ。measurementsupported_protocols にある場合にのみ存在。それを実装するエージェントは experimental_featuresmeasurement.core もリストしなければなりません。measurement プロトコルは現在、カタログ探索のための get_adcp_capabilities(このブロック)にスコープされています。 スコープ。 measurement を主張するエージェントは、広告配信、エクスポージャー、または効果についての 1 つ以上の定量的メトリクスを計算します(インプレッション検証、ビューアビリティ、IVT、アテンション、ブランドリフト、インクリメンタリティ、成果、排出 — ベンダーが metrics[] でサーフェスを定義)。メトリクス定義(このブロック)を返し、価格やカバレッジ(measurement_terms で購入ごとに交渉)やライブ値(vendor_metric_values で購入ごとに返す)は返しません。

metrics

この測定エージェントが計算するメトリクスの配列。
Response example
これはディスカバリーサーフェスであり、レートカードではありません。 カタログはバイヤーにベンダーが何を測定し、どの標準/認定が裏付けるかを伝えます。インプレッションごとの価格、最小測定可能インベントリ、アトリビューションウィンドウ、地理的カバレッジ、データ鮮度 SLA は、このカタログではなく、create_media_buy のセラーの measurement_terms を通じて購入ごとに交渉されます。

compliance_testing

コンプライアンステストのケイパビリティ。このブロックの存在は、エージェントが comply_test_controller による決定的テストをサポートすることを宣言します。エージェントがコンプライアンステストをサポートしない場合はブロックを省略します。 本番デプロイはこのブロックを含めてはなりません(MUST NOT)。 comply_test_controller はデプロイレベルでサンドボックス専用です。ディスパッチがゲートされていても、本番エンドポイントでケイパビリティをアドバタイズすることは非準拠です。 :::note コンプライアンステストはデプロイレベルでサンドボックス専用です — 本番デプロイはこのブロックをアドバタイズしたり、任意のサーフェスで comply_test_controller を公開したりしてはなりません(MUST NOT)。 :::

webhook_signing

セラーの webhook 署名姿勢を宣言します。変更 webhook の発出をアドバタイズする任意のセラー — media_buy.reporting_delivery_methodswebhook を含む、media_buy.content_standards.supports_webhook_delivery: true、または wholesale_feed_webhooks.supported: true を含むがこれらに限らない — は、このブロックを supported: true で含めなければなりません(MUST)。webhook をまったく発出しないセラーはブロックを完全に省略してもかまいません(MAY)。 Example:
webhook 署名ブロックは request_signing(インバウンド)と並行し、2 つのブロックがバイヤーとセラー間の 2 つの署名方向をカバーします。

extensions_supported

このエージェントがサポートする拡張名前空間の配列。バイヤーはこのエージェントからのレスポンスの ext.{namespace} フィールドに意味のあるデータを期待できます。 拡張スキーマは AdCP 拡張レジストリ に公開されています。 Example:

experimental_features

このエージェントが実装する実験的 AdCP サーフェスの配列。サーフェスは、そのスキーマが x-status: experimental を運ぶとき実験的です — コアプロトコルの一部だがまだ凍結されておらず、6 週間の予告をもって 3.x リリース間で破壊される可能性があります。任意の実験的サーフェスを実装するセラーは、ここにその機能 id をリストしなければなりません(MUST)。 Example:
完全な安定性コントラクト、卒業基準、クライアントガイダンスについては 実験的ステータス を参照。

wholesale_feed_versioning

get_productsget_signals の条件付きフェッチトークンケイパビリティ。ホールセールフィード webhook から独立: エージェントは変更ペイロードをプッシュせずに安価なバージョンプローブをサポートしてもよく(MAY)、修復のための再照合読み取りを依然として要求しながら変更ペイロードをプッシュしてもよい(MAY)。 Example:

wholesale_feed_webhooks

エージェントごとのホールセールプロダクトフィードとホールセールシグナルフィードの webhook ケイパビリティ。セールスエージェント(プロダクト)とシグナルエージェント(シグナル)が宣言します。supportedtrue のとき、コンシューマーは product.*signal.*wholesale_feed.bulk_change イベントの sync_accounts.accounts[].notification_configs[] エントリを登録し、各 webhook で実際の変更ペイロードを受け取れます。 用語。 ここで「ホールセールフィード」は、get_productsget_signals が公開するエージェントの購入可能なホールセールプロダクトフィードとホールセールシグナルフィードを意味します。これは、キャンペーン実行のためにバイヤー提供のキャンペーン入力フィードをセラーアカウントにプッシュする sync_catalogs とは異なります。 Example(セールス + シグナルエージェント):

The Capability Contract

ケイパビリティが宣言された場合、セラーはそれを尊重しなければなりません(MUST)。
  • media_buy.execution.targeting.geo_postal_areas.USzip を含む → バイヤーは { country: "US", system: "zip", values: [...] } を送信でき、セラーはそれを尊重しなければならない
  • media_buy.execution.targeting.geo_metros.nielsen_dma: true → バイヤーは DMA コードを送信でき、セラーはそれを尊重しなければならない
  • media_buy.content_standards オブジェクトが存在 → セラーは提供時にコンテンツ標準を適用しなければならない
  • media_buy.audience_targeting オブジェクトが存在 → セラーは sync_audiences とオーディエンスターゲティングオーバーレイをサポートしなければならない
  • media_buy.conversion_tracking オブジェクトが存在 → セラーは sync_event_sourceslog_event をサポートしなければならない
黙って無視しない。セラーがケイパビリティをサポートできない場合、false を宣言するか省略すべきです。

Common Scenarios

Basic Capability Discovery

Check multi-protocol support

Filter sellers by capability

Use Capabilities to Build Targeting

ケイパビリティは create_media_buy ターゲティングで何を指定できるかを教えます。required_geo_targeting を使って、特定のジオターゲティングレベルとシステムをサポートするセラーにプロダクトをフィルタリングします:
プロダクトの地理の 2 つのモデル:

Local Inventory Example (Radio, DOOH)

ローカルにバインドされたインベントリでは、プロダクトが地理的に固有です。NYC DMA のラジオ局は NYC のみをカバーします。

Response Example

Multi-protocol agent

エージェントは単一のエンドポイントから複数のプロトコルを実装できます。これは、メディア購入とクリエイティブ生成の両方を管理するセラーで一般的です — バイヤーは同じ URL ですべてのタスクを呼び出します。
supported_protocols"creative" が含まれる場合、バイヤーはこのエージェントでクリエイティブプロトコルタスク(list_creative_formatssync_creativesget_creative_delivery など)を呼び出せます。セールスエージェントのクリエイティブケイパビリティ を参照。

Geo Standards Reference

Migration from list_authorized_properties (v2)

list_authorized_properties タスクは v3 で削除されました。v2 から移行する場合: 新しいフィールド:
  • adcp.major_versions - バージョン互換性
  • supported_protocols - どのドメインプロトコルがサポートされるか
  • media_buy.features - 任意の機能サポート
  • media_buy.execution.targeting - ジオターゲティング粒度

Error Handling

Best Practices

1. ケイパビリティをキャッシュする ケイパビリティはめったに変わりません。結果をキャッシュし、古さの検出に last_updated を使います。 2. まずプロトコルサポートを確認する プロトコル固有のフィールドにアクセスする前に、プロトコルが supported_protocols にあることを検証します。 3. リクエスト前に確認する セラーがサポートしないシステムの郵便エリアを送らないでください。セラーがサポートしない機能をリクエストしないでください。 4. 非互換で早期に失敗する セラーが必要なケイパビリティをサポートしない場合、後で失敗を発見するのではなく早期にスキップします。 5. 続行前に認証モデルを読む ディスカバリー直後に account.require_operator_auth を確認します。エージェント信頼とオペレータースコープのフローは大きく異なります。 6. ルーティングにプロトコルバージョンを使う adcp.major_versions に基づいて適切な API バージョンにリクエストをルーティングします。

Next Steps

ケイパビリティを発見した後:
  1. アカウントをセットアップ: account.require_operator_auth の認証モデルに従う — アカウントとエージェント を参照
  2. プロダクトをフィルタリング: ケイパビリティ認識フィルターで get_products を使う
  3. プロパティを検証: プロパティ定義のためにパブリッシャーの adagents.json ファイルを取得
  4. バイを作成: サポートされる機能で create_media_buy を使う

Learn More