Skip to main content
セラーがサポートする AdCP プロトコルと機能を確認します。バイヤーが最初に行い、セラーの対応状況を把握するための呼び出しです。 Response Time: ~2 seconds (configuration lookup) Purpose:
  • AdCP discovery - このエージェントは AdCP をサポートしているか? どのバージョンか?
  • Protocol support - どのドメインプロトコル(media_buy, signals, governance, sponsored_intelligence, creative)を扱うか?
  • Auth model - セラーはエージェントを直接信頼するか、それとも各オペレーターが個別に認証しなければなりませんか?
  • Detailed capabilities - 機能、AXE 連携、ジオターゲティング、ポートフォリオ
Request Schema: /schemas/v3/protocol/get-adcp-capabilities-request.json Response Schema: /schemas/v3/protocol/get-adcp-capabilities-response.json

Tool-Based Discovery

AdCP はネイティブの MCP/A2A ツールディスカバリーを使用します。ツール一覧に get_adcp_capabilities が存在することが、AdCP をサポートしている証拠です。
Discovery Flow:
1. エージェントのツール一覧(MCP)またはスキル一覧(A2A)を確認
2. 'get_adcp_capabilities' ツールがあれば AdCP をサポート
3. get_adcp_capabilities を呼び出し、バージョン・プロトコル・機能を取得
4. 返却された機能に基づいて処理を進める
この方法の利点:
  • 標準の MCP/A2A メカニズムを使用(カスタム拡張なし)
  • 常に最新の機能を返却(古いメタデータではない)
  • 機能情報の単一の信頼できる情報源となります
:::note エージェントカード拡張(adcp-extension.json)は v3 で廃止されました。ツールベースのディスカバリーを使用してください。 :::

Request Parameters

FieldTypeDescription
protocolsstring[]任意。特定のプロトコル(media_buy, signals, governance, sponsored_intelligence, creative)に絞り込む。省略した場合はサポートされるすべてのプロトコルを返します。

Response Structure

adcp

AdCP プロトコルの基本情報:
FieldTypeDescription
major_versionsinteger[]必須。 サポートする AdCP のメジャーバージョン(例: [1]

supported_protocols

このセラーがサポートするドメインプロトコルの配列:
{
  "supported_protocols": ["media_buy"]
}

account

アカウントおよび認証に関する機能。すべてのセラーはこのセクションを宣言すべきです。バイヤーは sync_accountslist_accounts、その他の認証済みタスクを呼び出す前にこの情報を読み取る。シンプルなパブリッシャーであっても、請求関係とサンドボックステストを処理するためにアカウント管理が必要です。
FieldTypeDescription
supported_billingstring[]必須。 セラーがサポートする課金モデル: operator, agent。バイヤーは sync_accounts の各エントリにおいて、これらの値のいずれかを billing として渡さなければなりません。
require_operator_authbooleanデフォルト: false。アカウントモデルを決定します。true(明示的なアカウント)の場合、各オペレーターはセラーと個別に認証し、バイヤーは list_accounts でアカウントを検出して account_id を渡します。false(暗黙のアカウント)の場合、エージェントは信頼され、バイヤーは sync_accounts でアカウントを宣言し、自然キー(brand + operator)を渡します。サンドボックスでは、パスはアカウントモデルに従う。明示的なアカウントは list_accounts で既存のテストアカウントを検出し、暗黙のアカウントは sync_accountssandbox: true を指定してサンドボックスを宣言します。
authorization_endpointstringオペレーター認証用の OAuth URL。セラーがオペレーター認証に OAuth をサポートする場合に存在します。require_operator_auth: true の場合に関連し、省略時はオペレーターがアウトオブバンド(セラーポータル、API キー)で認証情報を取得します。
required_for_productsbooleanデフォルト: falsetrue の場合、バイヤーは get_products を呼び出す前にアカウントを確立しなければなりません。false の場合、バイヤーはアカウントなしでプロダクトを閲覧できます。セラーを確定する前の価格比較やディスカバリーに役立つ。
account_financialsbooleanデフォルト: falsetrue の場合、セラーは支出・クレジット・請求状況を照会するための get_account_financials をサポートします。オペレーター課金アカウントにのみ適用されます。
sandboxbooleanデフォルト: false。本番セールスエージェントには強く推奨されます。true の場合、セラーはテスト用のサンドボックスアカウントをサポートします。サンドボックスでは、パスはアカウントモデルに従う。明示的なアカウントは list_accounts で既存のテストアカウントを検出し、暗黙のアカウントは sync_accountssandbox: true を指定してサンドボックスを宣言する(実際のプラットフォーム呼び出しや支出は発生しない)。サンドボックスモードを参照。

認証モデル

暗黙のアカウントrequire_operator_auth: false)— セラーはエージェントのアイデンティティクレームを信頼します。エージェントは自身のベアラートークンで一度認証し、sync_accounts を呼び出して代理するブランドとオペレーターを宣言します。セラーはエージェントのクレームに基づいてアカウントをプロビジョニングし、オプションで brand.json に照らしてオペレーターを検証します。以降のすべての呼び出しにはエージェントの単一の認証情報を使用し、自然キー(brand + operator)を渡します。 明示的なアカウントrequire_operator_auth: true)— 各オペレーターはセラーと直接認証しなければなりません。エージェントはオペレーターごとに認証情報を取得し(authorization_endpoint を使った OAuth、またはアウトオブバンドで)、オペレーターごとのセッションを開き、list_accounts でアカウントを検出します。バイヤーは以降のすべてのリクエストにセラーが割り当てた account_id 値を渡します。 サンドボックスでは、パスはアカウントモデルに従う。明示的なアカウント(require_operator_auth: true)は list_accounts で既存のテストアカウントを検出し、暗黙のアカウントは sync_accountssandbox: true を指定してサンドボックスを宣言します。 完全なワークフローについては Accounts and Agents、一般的な認証モデルと課金サポートの組み合わせについてはセラーパターンを参照。

media_buy

Media-buy プロトコルの機能。supported_protocolsmedia_buy が含まれる場合のみ存在します。

features

Media-buy の任意機能。true と宣言した場合、セラーはその機能を利用したリクエストに必ず応じなければなりません。
FeatureDescription
inline_creative_managementcreate_media_buy リクエストでクリエイティブのインライン指定を受け付ける
property_list_filteringget_productsproperty_list パラメーターを尊重する
content_standardsコンテンツ基準の設定を完全にサポートする
audience_targetingオーディエンスターゲティングと取り込みをサポートする(sync_audiences を含む)

execution

技術的な実行能力:
FieldTypeDescription
axe_integrationsstring[]セラーが実行可能な Agentic ad exchange (AXE) の URL
creative_specsobjectクリエイティブ仕様のサポート(VAST のバージョン、MRAID など)
targetingobjectターゲティング機能(ジオの粒度)
creative_specs
FieldTypeDescription
vast_versionsstring[]サポートする VAST バージョン(例: ["4.0", "4.1", "4.2"]
mraid_versionsstring[]サポートする MRAID バージョン
vpaidbooleanVPAID サポートの有無
simidbooleanSIMID サポートの有無
targeting
FieldTypeDescription
geo_countriesbooleanISO 3166-1 alpha-2 コードを用いた国レベルのターゲティング
geo_regionsbooleanISO 3166-2 コード(例: US-NY, GB-SCT)を用いた地域/州レベルのターゲティング
geo_metrosobjectシステムごとに規定された都市圏ターゲティング
geo_postal_areasobject国と精度に対応する郵便エリアターゲティング
age_restrictionobjectsupported フラグと verification_methods を含む年齢制限機能
device_platformbooleanデバイスプラットフォームターゲティング(Sec-CH-UA-Platform の値)
device_typebooleanデバイス種別ターゲティング(desktop, mobile, tablet, ctv, dooh)
languageboolean言語ターゲティング(ISO 639-1 コード)
audience_includebooleanオーディエンスインクルージョンターゲティング(features.audience_targeting が必要)
audience_excludebooleanオーディエンスエクスクルージョンターゲティング(features.audience_targeting が必要)
keyword_targetsobjectsupported_match_types 配列(broad, phrase, exact)を持つキーワードターゲティング。存在すればサポートを意味します。
negative_keywordsobjectsupported_match_types 配列を持つネガティブキーワードターゲティング。存在すればサポートを意味します。
geo_proximityobject任意の座標からの近接ターゲティング(後述)
ジオグラフィックターゲティングのレベルをサポートするセラーは、そのレベルでインクルージョンとエクスクルージョンの両方をサポートすべきです。たとえば geo_metros.nielsen_dma: true は、セラーが Nielsen DMA コードを使った geo_metrosgeo_metros_exclude の両方をサポートすることを意味すべきです。一方向(例: インクルージョンのみ)しかサポートしない場合、セラーはサポートしていないフィールドを暗黙に無視するのではなく、バリデーションエラーを返さなければなりません。エクスクルージョンのセマンティクスについては Targeting Overlays を参照。 geo_proximity はサポートする近接ターゲティング方法を指定します。
FieldTypeDescription
radiusbooleanシンプルな半径ターゲティング(ある地点からの距離の円)
travel_timeboolean移動時間のアイソクロンターゲティング(ルーティングエンジンが必要)
geometryboolean事前計算済みの GeoJSON ジオメトリ(バイヤーがポリゴンを提供します)
transport_modesstring[]アイソクロンでサポートする交通手段: driving, walking, cycling, public_transport
geo_metros ではサポートする都市圏分類システムを指定します。
SystemDescription
nielsen_dmaNielsen DMA コード(米国市場、例: NYC は 501
uk_itl1UK ITL レベル 1 地域
uk_itl2UK ITL レベル 2 地域
eurostat_nuts2Eurostat NUTS レベル 2 地域(EU)
geo_postal_areas ではサポートする郵便コード体系を指定します。
SystemDescription
us_zip米国 5 桁の ZIP コード(例: 10001
us_zip_plus_four米国 9 桁の ZIP+4 コード(例: 10001-1234
gb_outward英国のアウトワードコード(例: SW1, EC1
gb_full英国の完全な郵便番号(例: SW1A 1AA
ca_fsaカナダの Forward Sortation Area(例: K1A
ca_fullカナダの完全な郵便番号(例: K1A 0B1
de_plzドイツの Postleitzahl(例: 10115
fr_code_postalフランスの code postal(例: 75001
au_postcodeオーストラリアの postcode(例: 2000
ch_plzスイスの Postleitzahl(例: 8000
at_plzオーストリアの Postleitzahl(例: 1010

audience_targeting

オーディエンスターゲティング機能。features.audience_targetingtrue の場合のみ存在します。セラーがオーディエンスマッチングのために受け付ける識別子の種類、サイズの制約、予想されるマッチングのレイテンシを表します。
FieldTypeRequiredDescription
supported_identifier_typesstring[]必須オーディエンスマッチングのために受け付ける PII 由来の識別子の種類。バイヤーはセラーがサポートする識別子のみ送信すべきです。値: hashed_email, hashed_phone
minimum_audience_sizeinteger必須ターゲティングに必要な最小マッチ済みオーディエンスサイズ。このしきい値を下回るオーディエンスは status: too_small になります。プラットフォームによって異なる(100〜1000 が一般的)。
supports_platform_customer_idbooleantrue の場合、セラーはバイヤーの CRM/ロイヤルティ ID をマッチング可能な識別子として受け付けます。セラーが共有 ID 名前空間を持つクローズドエコシステムを運営している場合にのみ適用されます(例: ロイヤルティプログラムに照合するリテーラー)。バイヤーは AudienceMember.identifiersplatform_customer_id 値を含めることができます。マッチした ID のレポーティングには通常、クリーンルームまたはセラー自身のレポーティングサーフェスが必要です。
supported_uid_typesstring[]オーディエンスマッチングのために受け付けるユニバーサル ID の種類(MAID、RampID、UID2 など)。MAID のサポートはプラットフォームによって大きく異なります。uidstype: maid を指定して送信する前にこのフィールドを確認すること。
matching_latency_hoursobjectアップロード後の予想マッチングレイテンシの範囲(時間単位)。ポーリングのタイミング調整と、push_notification_config を設定する前の適切な期待値設定に活用します。形式: { min: integer, max: integer }

conversion_tracking

セラーレベルのコンバージョントラッキング機能。kind: "event" の最適化目標に対してセラーがサポートする内容を宣言します。
FieldTypeDescription
multi_source_event_dedupbooleanセラーが単一のゴール内で複数のイベントソース間のイベント重複排除を行えるかどうか。true の場合、複数のソースから同一の event_id は 1 回としてカウントされます。false または省略の場合、バイヤーはゴールごとに単一のイベントソースを使用すべきです。
supported_event_typesstring[]セラーがトラッキングできるイベントタイプ。省略した場合、すべての標準イベントタイプがサポートされます。
supported_uid_typesstring[]ユーザーマッチングのために受け付けるユニバーサル ID の種類。
supported_hashed_identifiersstring[]受け付けるハッシュ化された PII の種類(hashed_email, hashed_phone)。バイヤーは送信前にハッシュ化しなければなりません(SHA-256、正規化)。
supported_action_sourcesstring[]セラーがイベントを受け付けるアクションソース。
attribution_windowsobject[]利用可能なアトリビューションウィンドウ。単一要素の配列は固定ウィンドウを示し、複数要素の配列はバイヤーが最適化ゴールの attribution_window で選択できる設定オプションを示します。

portfolio

インベントリポートフォリオの情報:
FieldTypeDescription
publisher_domainsstring[]必須。 セラーが扱うパブリッシャードメイン
primary_channelsstring[]主な広告チャネル
primary_countriesstring[]主な国(ISO コード)
descriptionstringポートフォリオの Markdown 説明
advertising_policiesstringコンテンツポリシーと制限

signals

Signals プロトコルの機能。supported_protocolssignals が含まれる場合のみ存在し、将来利用向けです。

creative

Creative プロトコルの機能。supported_protocolscreative が含まれる場合のみ存在します。
FieldTypeDescription
supports_compliancebooleantrue の場合、このクリエイティブエージェントはコンプライアンス要件(required_disclosures, prohibited_claims)を持つブリーフを処理でき、対象フォーマットでディスクロージャーが満たされるか検証します。互換性のあるフォーマットを見つけるには list_creative_formatsdisclosure_positions フィルタを使用します。

governance

Governance プロトコルの機能。supported_protocolsgovernance が含まれる場合のみ存在します。Governance エージェントはコンプライアンススコア、ブランドセーフティ評価、品質指標、サステナビリティ指標などのプロパティデータを提供します。

property_features

Governance エージェントが評価できるプロパティ機能の配列:
FieldTypeDescription
feature_idstring必須。 一意の ID(例: mfa_score, coppa_certified
typestring必須。 データ型: binary, quantitative, categorical のいずれか
rangeobjectquantitative の場合: { min, max }
categoriesstring[]categorical の場合: 有効な値の一覧
descriptionstring人が読める説明
methodology_urlstring手法を示すドキュメントへの URL
Example governance agent response:
{
  "$schema": "/schemas/protocol/get-adcp-capabilities-response.json",
  "adcp": { "major_versions": [1] },
  "supported_protocols": ["governance"],
  "governance": {
    "property_features": [
      { "feature_id": "mfa_score", "type": "quantitative", "range": { "min": 0, "max": 100 }, "description": "Made For Advertising detection (0=quality content, 100=likely MFA)", "methodology_url": "https://vendor.example.com/methodology/mfa" },
      { "feature_id": "coppa_certified", "type": "binary", "description": "COPPA compliance certification" },
      { "feature_id": "carbon_score", "type": "quantitative", "range": { "min": 0, "max": 100 }, "description": "Carbon footprint sustainability score", "methodology_url": "https://scope3.com/methodology/carbon-score" },
      { "feature_id": "content_category", "type": "categorical", "categories": ["news", "entertainment", "sports", "finance"], "description": "Primary content category" }
    ]
  }
}

extensions_supported

エージェントがサポートする拡張ネームスペースの配列。バイヤーは、このエージェントからのレスポンスに含まれる ext.{namespace} フィールドに有用なデータが入っていると期待できます。
FieldTypeDescription
extensions_supportedstring[]拡張ネームスペース(例: ["scope3", "garm"]
拡張スキーマは AdCP extension registry に掲載されています。エージェントが拡張をサポートすると宣言した場合、バイヤーはレスポンス内の ext.{namespace} データを確認・処理できます。 Example:
{
  "extensions_supported": ["scope3", "garm", "iab_tcf"]
}
これによりバイヤーは次のことを把握できます。
  • プロダクトレスポンスに Scope3 のサステナビリティデータを含む ext.scope3 が入る可能性
  • クリエイティブポリシーに GARM のブランドセーフティ分類を含む ext.garm が入る可能性
  • レスポンスに IAB TCF の同意データを含む ext.iab_tcf が入る可能性

The Capability Contract

機能を宣言した場合、セラーはそれに必ず対応しなければなりません。
  • media_buy.execution.targeting.geo_postal_areas.us_zip: true → バイヤーは US ZIP コードを送信でき、セラーはそれをターゲティングしなければなりません
  • media_buy.execution.targeting.geo_metros.nielsen_dma: true → バイヤーは DMA コードを送信でき、セラーはそれをターゲティングしなければなりません
  • media_buy.features.content_standards: true → 提供された場合、セラーはコンテンツ基準を適用しなければなりません
  • media_buy.execution.axe_integrations に AXE の URL がある → セラーはそのエクスチェンジ経由で実行できます
黙って無視することはありません。対応できない機能は false を宣言するか、省略してください。

Common Scenarios

Basic Capability Discovery

import { AdcpClient } from '@adcp/client';

const client = new AdcpClient({ baseUrl: 'https://seller.example.com/mcp' });

// セラーの機能を取得
const result = await client.getAdcpCapabilities({});

if (result.errors) {
  throw new Error(`Request failed: ${result.errors[0].message}`);
}

// プロトコル対応を確認
console.log(`AdCP versions: ${result.adcp.major_versions.join(', ')}`);
console.log(`Supported protocols: ${result.supported_protocols.join(', ')}`);

// media-buy の機能を確認
if (result.supported_protocols.includes('media_buy')) {
  const mediaBuy = result.media_buy;

  // 機能サポートを確認
  if (mediaBuy.features?.content_standards) {
    console.log('Content standards supported');
  }

  // AXE 連携を確認
  if (mediaBuy.execution?.axe_integrations?.includes('https://agentic.scope3.com')) {
    console.log('Scope3 AXE integration available');
  }

  // ジオターゲティングを確認
  if (mediaBuy.execution?.targeting?.geo_postal_areas?.us_zip) {
    console.log('US ZIP code targeting supported');
  }

  // ポートフォリオの概要
  console.log(`Publishers: ${mediaBuy.portfolio.publisher_domains.length}`);
  console.log(`Channels: ${mediaBuy.portfolio.primary_channels?.join(', ')}`);
}

Check multi-protocol support

const caps = await client.getAdcpCapabilities({});

const sellsMedia = caps.supported_protocols.includes('media_buy');
const managesCreatives = caps.supported_protocols.includes('creative');

if (sellsMedia && managesCreatives) {
  // 単一エージェントが両プロトコルを処理する。別サービスのディスカバリーは不要
  const formats = await client.listCreativeFormats({});
  const delivery = await client.getCreativeDelivery({
    media_buy_ids: ['mb_12345']
  });
}

Filter sellers by capability

// 特定の要件に対応するセラーを探す
async function findCompatibleSellers(sellers, requirements) {
  const compatible = [];

  for (const sellerUrl of sellers) {
    const client = new AdcpClient({ baseUrl: sellerUrl });
    const caps = await client.getAdcpCapabilities({});

    if (caps.errors) continue;

    // media_buy プロトコルをサポートしていること
    if (!caps.supported_protocols.includes('media_buy')) continue;

    const mediaBuy = caps.media_buy;

    // AXE 連携の要件を確認
    if (requirements.axeIntegration) {
      if (!mediaBuy.execution?.axe_integrations?.includes(requirements.axeIntegration)) {
        continue;
      }
    }

    // ジオターゲティングの要件を確認
    if (requirements.postalCodeTargeting) {
      if (!mediaBuy.execution?.targeting?.geo_postal_areas?.us_zip) {
        continue;
      }
    }

    // 機能要件を確認
    if (requirements.contentStandards) {
      if (!mediaBuy.features?.content_standards) {
        continue;
      }
    }

    compatible.push({ url: sellerUrl, capabilities: caps });
  }

  return compatible;
}

// Usage
const sellers = await findCompatibleSellers(
  ['https://seller1.com/mcp', 'https://seller2.com/mcp'],
  {
    axeIntegration: 'https://agentic.scope3.com',
    postalCodeTargeting: true,
    contentStandards: true
  }
);

Use Capabilities to Build Targeting

機能情報は、create_media_buy のターゲティングで指定できる内容を示します。required_geo_targeting を使うと、特定のジオターゲティングの粒度や体系をサポートするセラーに絞り込めます。
// まず機能を確認
const caps = await client.getAdcpCapabilities({});

if (!caps.supported_protocols.includes('media_buy')) {
  throw new Error('Seller does not support media_buy protocol');
}

const mediaBuy = caps.media_buy;

// 特定のジオターゲティング機能を持つセラーのプロダクトに絞り込む
const products = await client.getProducts({
  brief: "Premium video inventory in US for ZIP-targeted campaign",
  filters: {
    channels: ['olv', 'ctv'],
    countries: ['US'],
    // ZIP ターゲティングをサポートするセラーに限定(機能フィルタ。実際の ZIP は不要)
    // level は粒度、system は分類体系
    required_geo_targeting: [
      { level: 'postal_area', system: 'us_zip' }
    ],
    // この AXE をサポートしているセラーのみに限定
    required_axe_integrations: ['https://agentic.scope3.com']
  }
});

// 次に、細かいターゲティングを指定して media buy を作成
// (セラーが郵便エリアをサポートする場合、特定の ZIP を指定可能)
const buy = await client.createMediaBuy({
  brand: { domain: 'mybrand.com' },
  packages: [{
    product_id: products.products[0].product_id,
    pricing_option_id: products.products[0].pricing_options[0].id,
    budget: 10000,
    // targeting_overlay でプロダクトカバレッジ内の配信を絞り込む
    targeting_overlay: {
      geo_countries: ['US'],
      // セラーが対応している場合のみ ZIP ターゲティングを指定
      ...(mediaBuy.execution?.targeting?.geo_postal_areas?.us_zip && {
        geo_postal_areas: [{
          system: 'us_zip',
          values: ['10001', '10002', '10003', '10004', '10005']
        }]
      })
    }
  }],
  start_time: { type: 'asap' },
  end_time: '2025-03-01T00:00:00Z'
});
プロダクトの地理情報には 2 つのモデルがあります。
Inventory TypeFilter ByExample
デジタル(display, OLV, CTV)Capability: required_geo_targetingプロダクトは広いカバレッジを持ち、購入時にターゲティングを指定
ローカル(radio, DOOH, local TV)Coverage: metros, regionsプロダクト自体が特定地域に紐づく
  • デジタル在庫: countries + required_geo_targeting(機能)を使い、create_media_buy で細かなターゲティングを適用
  • ローカル在庫: metros / regions(カバレッジ)を使い、ターゲット市場をカバーするプロダクトを探す

Local Inventory Example (Radio, DOOH)

地域に紐づく在庫では、プロダクト自体が地理的に限定されています。たとえば NYC DMA のラジオ局は NYC のみをカバーします。
// 特定の DMA にあるラジオのプロダクトを検索
const radioProducts = await client.getProducts({
  brief: "Radio inventory in NYC and LA markets",
  filters: {
    channels: ['radio'],
    // カバレッジフィルタ: これらの都市圏をカバーしていること
    metros: [
      { system: 'nielsen_dma', code: '501' },  // NYC
      { system: 'nielsen_dma', code: '803' }   // LA
    ]
  }
});

// ローカル在庫では targeting_overlay は任意。
// プロダクトのカバレッジ自体がジオを表す。
const buy = await client.createMediaBuy({
  brand: { domain: 'mybrand.com' },
  packages: [{
    product_id: radioProducts.products[0].product_id,
    pricing_option_id: radioProducts.products[0].pricing_options[0].id,
    budget: 5000
    // targeting_overlay は不要。プロダクトが NYC DMA をカバーしている
  }],
  start_time: { type: 'asap' },
  end_time: '2025-03-01T00:00:00Z'
});

Response Example

{
  "$schema": "/schemas/protocol/get-adcp-capabilities-response.json",
  "adcp": {
    "major_versions": [1]
  },
  "supported_protocols": ["media_buy"],
  "account": {
    "require_operator_auth": false,
    "supported_billing": ["operator", "agent"]
  },
  "media_buy": {
    "features": {
      "inline_creative_management": true,
      "property_list_filtering": true,
      "content_standards": false,
      "audience_targeting": true
    },
    "execution": {
      "axe_integrations": ["https://agentic.scope3.com"],
      "creative_specs": {
        "vast_versions": ["4.0", "4.1", "4.2"],
        "mraid_versions": ["3.0"],
        "vpaid": false,
        "simid": true
      },
      "targeting": {
        "geo_countries": true,
        "geo_regions": true,
        "geo_metros": {
          "nielsen_dma": true,
          "uk_itl2": false,
          "eurostat_nuts2": false
        },
        "geo_postal_areas": {
          "us_zip": true,
          "us_zip_plus_four": false,
          "gb_outward": true,
          "gb_full": false,
          "ca_fsa": true
        },
        "device_platform": true,
        "device_type": true,
        "language": true,
        "audience_include": true,
        "audience_exclude": true,
        "keyword_targets": {
          "supported_match_types": ["broad", "phrase", "exact"]
        },
        "negative_keywords": {
          "supported_match_types": ["broad", "exact"]
        }
      }
    },
    "audience_targeting": {
      "supported_identifier_types": ["hashed_email", "hashed_phone"],
      "supports_platform_customer_id": false,
      "supported_uid_types": ["uid2", "rampid"],
      "minimum_audience_size": 500,
      "matching_latency_hours": { "min": 1, "max": 24 }
    },
    "conversion_tracking": {
      "multi_source_event_dedup": false,
      "supported_event_types": ["purchase", "lead", "add_to_cart", "view_content"],
      "supported_action_sources": ["website", "app"],
      "attribution_windows": [
        { "post_click": [{ "interval": 7, "unit": "days" }, { "interval": 28, "unit": "days" }], "post_view": [{ "interval": 1, "unit": "days" }, { "interval": 7, "unit": "days" }] }
      ]
    },
    "portfolio": {
      "publisher_domains": ["example.com", "news.example.com"],
      "primary_channels": ["display", "olv"],
      "primary_countries": ["US", "CA"]
    }
  },
  "extensions_supported": ["scope3"],
  "last_updated": "2025-01-23T10:00:00Z"
}
これによりバイヤーは次を読み取れます。
  • AdCP バージョン: バージョン 1
  • サポートプロトコル: Media-buy のみ
  • 認証モデル: エージェント信頼(require_operator_auth: false)— 一度認証し、sync_accounts でブランドを宣言します
  • 課金: オペレーターまたはエージェント課金。デフォルトはオペレーター
  • 国レベルのターゲティング: 利用可(ISO 3166-1 alpha-2: US, GB など)
  • 地域ターゲティング: 利用可(ISO 3166-2: US-NY, GB-SCT など)
  • 都市圏ターゲティング: Nielsen DMA のみ(米国市場)
  • 郵便エリアターゲティング: US ZIP、英国アウトワードコード、カナダ FSA
  • オーディエンスターゲティング: ハッシュ化メール、ハッシュ化電話番号、UID2、RampID を受け付け。最小マッチ済みオーディエンスサイズは 500。マッチングレイテンシは 1〜24 時間
  • コンバージョントラッキング: ウェブサイト/アプリからの purchase, lead, add_to_cart, view_content イベントを受け付け。マルチソースの重複排除なし
  • 拡張: ext.scope3 に Scope3 のサステナビリティデータ

Multi-protocol agent

単一エンドポイントで複数のプロトコルを実装するエージェントもあります。これはメディア購入とクリエイティブ生成の両方を管理するセラーに多く見られる形で、バイヤーはすべてのタスクを同じ URL に対して呼び出す。
{
  "$schema": "/schemas/protocol/get-adcp-capabilities-response.json",
  "adcp": {
    "major_versions": [3]
  },
  "supported_protocols": ["media_buy", "creative"],
  "account": {
    "require_operator_auth": false,
    "supported_billing": ["operator"]
  },
  "media_buy": {
    "features": {
      "inline_creative_management": true
    },
    "portfolio": {
      "publisher_domains": ["news.example.com"],
      "primary_channels": ["display", "olv"]
    }
  },
  "creative": {
    "has_creative_library": true,
    "supports_generation": true,
    "supports_transformation": false,
    "supports_compliance": false
  }
}
このエージェントがサポートするもの:
  • Media Buy プロトコル: プロダクトディスカバリー、メディア購入、デリバリーレポーティング
  • Creative プロトコル: クリエイティブライブラリ管理、AI によるクリエイティブ生成、get_creative_delivery を通じたバリアントレベルのデリバリー分析
  • 共有アカウント: sync_accounts で確立した単一アカウントが両プロトコルに適用されます
supported_protocols"creative" が含まれる場合、バイヤーはこのエージェントに対してクリエイティブプロトコルのタスク(list_creative_formats, sync_creatives, get_creative_delivery など)を呼び出せる。セールスエージェントのクリエイティブ機能を参照。

地理標準のリファレンス

LevelSystemExamples
CountryISO 3166-1 alpha-2US, GB, DE, CA
RegionISO 3166-2US-NY, GB-SCT, DE-BY, CA-ON
Metro (US)nielsen_dma501 (NYC), 803 (LA), 602 (Chicago)
Metro (UK)uk_itl2UKI (London), UKD (North West)
Metro (EU)eurostat_nuts2DE30 (Berlin), FR10 (Île-de-France)
Postal (US)us_zip10001, 90210
Postal (US)us_zip_plus_four10001-1234
Postal (UK)gb_outwardSW1, EC1, M1
Postal (UK)gb_fullSW1A 1AA
Postal (CA)ca_fsaK1A, M5V

list_authorized_properties(v2)からの移行

list_authorized_properties タスクは v3 で削除されました。v2 から移行する場合:
Old FieldNew Location
publisher_domainsmedia_buy.portfolio.publisher_domains
primary_channelsmedia_buy.portfolio.primary_channels
primary_countriesmedia_buy.portfolio.primary_countries
portfolio_descriptionmedia_buy.portfolio.description
advertising_policiesmedia_buy.portfolio.advertising_policies
last_updatedlast_updated (top level)
新規フィールド:
  • adcp.major_versions - バージョン互換性
  • supported_protocols - サポートするドメインプロトコル
  • media_buy.features - 任意機能のサポート
  • media_buy.execution.axe_integrations - 広告エクスチェンジの対応
  • media_buy.execution.creative_specs - VAST/MRAID のバージョン
  • media_buy.execution.targeting - ジオターゲティングの粒度

エラーハンドリング

Error CodeDescriptionResolution
AUTH_REQUIRED認証が必要認証情報を提供する
INTERNAL_ERRORサーバーエラーリトライ(バックオフ付き)

ベストプラクティス

1. 機能情報をキャッシュする 機能は滅多に変わりません。結果をキャッシュし、鮮度判定には last_updated を利用します。 2. まずプロトコル対応を確認する プロトコル固有のフィールドにアクセスする前に、supported_protocols に含まれているか確認してください。 3. 送る前に対応可否を確認する セラーが未対応の郵便エリア体系を送らないこと。セラーがサポートしない機能を要求しないこと。 4. 非互換なら早期に除外する 必要な機能をサポートしていないセラーは、後から失敗を知るよりも早い段階でスキップしましょう。 5. 処理前に認証モデルを確認する ディスカバリーの直後に account.require_operator_auth を確認してください。エージェント信頼とオペレータースコープのフローは大きく異なります。前者はすべてのブランドとオペレーターに単一の認証情報を使用し、後者はオペレーターごとの認証情報とセッションが必要です。 6. プロトコルバージョンでルーティングする adcp.major_versions に基づき適切な API バージョンへルーティングしてください。

次のステップ

機能を取得した後は次を実施してください。
  1. アカウントを設定する: account.require_operator_auth の認証モデルに従う。Accounts and Agents を参照
  2. プロダクトを絞り込む: 機能に応じたフィルタを使って get_products を実行
  3. プロパティを検証する: パブリッシャーの adagents.json を取得しプロパティ定義を確認
  4. バイを作成する: サポートされる機能を用いて create_media_buy を実行

関連情報