なぜこの形状か。 ケイパビリティは約 14 のトップレベルドメインキー(プロトコルごとに 1 つ、加えてアイデンティティと署名インフラ)に整理され、機能フラグは各ドメインの
features/execution/その他のサブ名前空間の下にネストされます。私たちはフラットなケイパビリティリストを拒否しました — それはすべての実装者に無制限のサーフェスをスキャンさせ、関連するフラグが隣り合うことから来る発見性を取り除きます。新しいケイパビリティフラグは、新しいトップレベルキーではなく既存のドメインの下に属します。宣言はアドバタイズメントではなくコミットメントです(コンプライアンスランナーがそれらをプローブします)。→ 提案する前に ケイパビリティエクスプローラー がツリーをたどります。→ 設計原則: ケイパビリティはコミットメント。- AdCP ディスカバリー - このエージェントは AdCP をサポートするか?どのバージョン?
- プロトコルサポート - どのプロトコル(media_buy、signals、governance、sponsored_intelligence、creative、brand)?
- 認証モデル - このセラーはエージェントを直接信頼するか、各オペレーターが独立して認証しなければならないか?
- 詳細なケイパビリティ - 機能、実行統合、ジオターゲティング、ポートフォリオ
呼び出し元ごとの認可はここでレポートされません。
get_adcp_capabilities はセラーのサーフェス — 任意の認可された呼び出し元に対してそれができることすべて — を返します。特定のアカウントであなたが何を許可されているか(あなたのアイデンティティに対してどのタスクが呼び出し可能か、どのリクエストフィールドが変更可能か、attestation_verifier のような名前付きスコープ)を発見するには、sync_accounts と list_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 メカニズムを使う(カスタム拡張なし)
- 常に現在のケイパビリティを返す(古いメタデータではない)
- すべてのケイパビリティ情報の単一の真実の源泉
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が省略された → 最高のサポートバージョンを想定
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_buy、creative、signals、governance、brand、sponsored_intelligence。
各プロトコルのスコープについては Compliance Catalog を参照。コンプライアンステストコントローラーのサポートは、プロトコル値としてではなく、別個の compliance_testing ケイパビリティブロック(下記)で宣言されます。
specialisms
任意の専門化クレーム。各エントリは/compliance/{version}/specialisms/{id}/ の狭いストーリーボードに対応します。すべての専門分野は supported_protocols の 1 つのプロトコルにロールアップします — sales-guaranteed を主張するには media_buy が必要です。ランナーは親プロトコルが欠けている専門分野を拒否します。
Capability slot gaps
definePlatform などの SDK ヘルパーは、プラットフォーム実装をより狭いケイパビリティスロットに投影できます。それらのスロットをコミットメントとして扱ってください: エージェントが対応するタスクパスをエンドツーエンドで実行できるときのみスロットを宣言します。
ストーリーボードやローカルテストベクターがエージェントが宣言しないスロットをターゲットにする場合、期待される適合性結果は失敗ではなく not_applicable です。ランナー側の強制が adcp-client#2244 で到着するまで、カスタムまたはプレリリーススイートを実行する実装者は、宣言されたスロットスコープ外のベクターに明示的なスキップゲートを追加すべきです。欠けているスロットを、それを宣言してプレースホルダーレスポンスを返すことで回避しないでください。それは正直なカバレッジギャップを失敗したケイパビリティクレームに変えます。
account
アカウントと認証のケイパビリティ。すべてのセラーはこのセクションを宣言すべきです — バイヤーはsync_accounts、list_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: true の sync_accounts でサンドボックスを宣言します。
完全なワークフローについては アカウントとエージェント を、認証モデルと課金サポートの一般的な組み合わせについては セラーパターン を参照。
media_buy
メディアバイプロトコルのケイパビリティ。media_buy が supported_protocols にある場合にのみ存在。media_buy を宣言するセラーは account(supported_billing 付き)と media_buy.portfolio も含めるべきです — バイヤーは課金の確立とインベントリカバレッジの理解の両方に必要です。コンプライアンステストがそれらの存在を検証します。
:::note 3.0 の破壊的変更
次のフィールドはケイパビリティレスポンスから削除されました:
media_buy.reporting— レポートはmedia_buyによって暗示されます。代わりにプロダクトレベルのreporting_capabilitiesを使ってください。features.content_standards—media_buy.content_standardsオブジェクトに置き換え。オブジェクトの存在がサポートを示します。features.audience_targeting—media_buy.audience_targetingオブジェクトに置き換え。features.conversion_tracking—media_buy.conversion_trackingオブジェクトに置き換え。execution.targeting.device_platform、device_type—media_buyサポートによって暗示。execution.targeting.audience_include、audience_exclude—audience_targetingオブジェクトの存在によって暗示。execution.trusted_match.supported— オブジェクトの存在がサポートを示します。brand.identity—supported_protocolsのbrandによって暗示。get_brand_identityは常に利用可能。 :::
reporting_delivery_methods
セラーのプロダクトポートフォリオ全体でどのプッシュベースの配信方法が利用可能かを宣言します。get_media_buy_delivery によるポーリングは、このフィールドに関係なくすべての media_buy セラーに必須のタスクです。
存在しない場合、ポーリングのみが利用可能です。ケイデンスとメトリクスはプロダクトごとに
reporting_capabilities で宣言されます。
offline が宣言される場合、どのクラウドストレージプロトコルがサポートされるか(s3、gcs、azure_blob)を宣言する offline_delivery_protocols も含めます。詳細は オフラインファイル配信 を参照。
creative_approval_mode
クリエイティブが割り当てられ自動検証が通過した後の、セラーのテナント全体のクリエイティブ承認姿勢を宣言します。これは通知サーフェスや新しい承認ワークフローではありません。人間のレビューが配信適格性をまだブロックできるかをバイヤーとコンプライアンスランナーに伝えます。
混合承認ポリシーを持つセラーは、アドバタイズされたエージェントで到達可能なすべてのプロダクト/アカウントが自動検証後の自動適格性をサポートしない限り、
require_human を宣言すべきです(SHOULD)。フィールドが存在しない場合、承認動作はレガシー未指定です。ランナーは省略を肯定的な auto_approve クレームとして扱うべきではありません(SHOULD NOT)。
features
任意のメディアバイ機能。true と宣言された場合、セラーはその機能を使うリクエストを尊重しなければなりません(MUST)。content_standards
コンテンツ標準の実装詳細。このオブジェクトの存在は、セラーがサンプリングレートとカテゴリフィルタリングを含むコンテンツ標準設定をサポートすることを示します。
Example:
supports_local_evaluation が false の場合、get_media_buy_artifacts の failures_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
シグナルプロトコルのケイパビリティ。signals が supported_protocols にある場合にのみ存在。
catalog_signals は非推奨です。既存の 3.x エージェントは互換性のためこれを発し続けてもかまいませんが、新しいエージェントはこれを省略すべきで(SHOULD)、呼び出し元は signal_ref を使う前にこれを必須としてはなりません(MUST NOT)。creative
クリエイティブプロトコルのケイパビリティ。creative が supported_protocols にある場合にのみ存在。
governance
ガバナンスプロトコルのケイパビリティ。governance が supported_protocols にある場合にのみ存在。ガバナンスエージェントは 4 つのドメインにわたってケイパビリティを宣言します: プロパティ評価、クリエイティブ評価、コンテンツ標準検証、ポリシーレジストリ統合。
property_features
このガバナンスエージェントが評価できるプロパティ機能の配列。プロパティガバナンス を参照。creative_features
このガバナンスエージェントが評価できるクリエイティブ機能の配列。property_features と同じフィールドスキーマ。クリエイティブガバナンス を参照。
content_standards
コンテンツ標準検証のケイパビリティ。コンテンツ標準 を参照。policy_registry
ポリシーレジストリ統合のケイパビリティ。Policy Registry を参照。
ガバナンスエージェントレスポンスの例:
measurement
実験的な測定プロトコルのケイパビリティ。measurement が supported_protocols にある場合にのみ存在。それを実装するエージェントは experimental_features に measurement.core もリストしなければなりません。measurement プロトコルは現在、カタログ探索のための get_adcp_capabilities(このブロック)にスコープされています。
スコープ。 measurement を主張するエージェントは、広告配信、エクスポージャー、または効果についての 1 つ以上の定量的メトリクスを計算します(インプレッション検証、ビューアビリティ、IVT、アテンション、ブランドリフト、インクリメンタリティ、成果、排出 — ベンダーが metrics[] でサーフェスを定義)。メトリクス定義(このブロック)を返し、価格やカバレッジ(measurement_terms で購入ごとに交渉)やライブ値(vendor_metric_values で購入ごとに返す)は返しません。
metrics
この測定エージェントが計算するメトリクスの配列。Response example
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_methods に webhook を含む、media_buy.content_standards.supports_webhook_delivery: true、または wholesale_feed_webhooks.supported: true を含むがこれらに限らない — は、このブロックを supported: true で含めなければなりません(MUST)。webhook をまったく発出しないセラーはブロックを完全に省略してもかまいません(MAY)。
Example:
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_products と get_signals の条件付きフェッチトークンケイパビリティ。ホールセールフィード webhook から独立: エージェントは変更ペイロードをプッシュせずに安価なバージョンプローブをサポートしてもよく(MAY)、修復のための再照合読み取りを依然として要求しながら変更ペイロードをプッシュしてもよい(MAY)。
Example:
wholesale_feed_webhooks
エージェントごとのホールセールプロダクトフィードとホールセールシグナルフィードの webhook ケイパビリティ。セールスエージェント(プロダクト)とシグナルエージェント(シグナル)が宣言します。supported が true のとき、コンシューマーは product.*、signal.*、wholesale_feed.bulk_change イベントの sync_accounts.accounts[].notification_configs[] エントリを登録し、各 webhook で実際の変更ペイロードを受け取れます。
用語。 ここで「ホールセールフィード」は、get_products と get_signals が公開するエージェントの購入可能なホールセールプロダクトフィードとホールセールシグナルフィードを意味します。これは、キャンペーン実行のためにバイヤー提供のキャンペーン入力フィードをセラーアカウントにプッシュする sync_catalogs とは異なります。
Example(セールス + シグナルエージェント):
The Capability Contract
ケイパビリティが宣言された場合、セラーはそれを尊重しなければなりません(MUST)。media_buy.execution.targeting.geo_postal_areas.USがzipを含む → バイヤーは{ 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_sourcesとlog_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 を使って、特定のジオターゲティングレベルとシステムをサポートするセラーにプロダクトをフィルタリングします:
Local Inventory Example (Radio, DOOH)
ローカルにバインドされたインベントリでは、プロダクトが地理的に固有です。NYC DMA のラジオ局は NYC のみをカバーします。Response Example
Multi-protocol agent
エージェントは単一のエンドポイントから複数のプロトコルを実装できます。これは、メディア購入とクリエイティブ生成の両方を管理するセラーで一般的です — バイヤーは同じ URL ですべてのタスクを呼び出します。supported_protocols に "creative" が含まれる場合、バイヤーはこのエージェントでクリエイティブプロトコルタスク(list_creative_formats、sync_creatives、get_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
ケイパビリティを発見した後:- アカウントをセットアップ:
account.require_operator_authの認証モデルに従う — アカウントとエージェント を参照 - プロダクトをフィルタリング: ケイパビリティ認識フィルターで
get_productsを使う - プロパティを検証: プロパティ定義のためにパブリッシャーの
adagents.jsonファイルを取得 - バイを作成: サポートされる機能で
create_media_buyを使う
Learn More
- アカウントとエージェント - 認証モデル、アカウントセットアップ、課金
- adagents.json 仕様 - パブリッシャー認可ファイル
- プロダクトフィルター - ケイパビリティ認識フィルタリング
- コンテンツ標準 - ブランドセーフティ設定