Skip to main content
デジタル広告の根本課題の一つは 無断再販 であり、セールスエージェントが実際に販売できるプロパティを正当に代表しているかを保証する必要があります。AdCP はプログラマティック広告の ads.txt から得た教訓を活かし、包括的な認可システムでこれを解決します。
AdCP の認可が初めてですか? エージェント主導広告での認可の仕組みは AdCP Basics: Authorized Properties を参照してください。

課題: 無断再販

歴史的背景

プログラマティック広告では ads.txt が無断再販という重大問題を解決するために作られました。以前は不正事業者が人気サイトを名乗り、無許可で在庫を販売していました。結果として:
  • 収益の搾取: パブリッシャーが無断セラーに収益を奪われる
  • ブランドセーフティの問題: バイヤーが正規在庫元を確認できない
  • 市場の分断: 正規・非正規セラーの区別がつかない

AI 主導広告でも同じ課題

AdCP も、AI エージェントが広告を売買する際に同様の課題に直面します:
  • AI セールスエージェント が実際に管理していないプロパティを名乗る可能性
  • バイヤーエージェント は購入前に認可を検証する必要
  • パブリッシャー は特定のセールスエージェントを明示的に認可する手段が必要
  • スケールの課題: 数千のプロパティを手作業で検証するのは非現実的

解決策: AdCP 認可システム

AdCP は 2 つの仕組みで無断再販を防ぎます:
  1. Publisher Authorization: パブリッシャーが adagents.json でセールスエージェントを明示的に認可
  2. Agent Discovery: セールスエージェントが get_adcp_capabilitiesmedia_buy.portfolio でポートフォリオを公開
これによりバイヤーエージェントが検証可能な認可チェーンが形成されます。

パブリッシャーによるセールスエージェントの認可

パブリッシャーは自ドメインの /.well-known/adagents.jsonadagents.json をホストし、認可済みエージェントと権限を列挙します。

adagents.json の例

{
  "$schema": "https://adcontextprotocol.org/schemas/v2/adagents.json",
  "contact": {
    "name": "Sports Network Media",
    "email": "[email protected]",
    "domain": "sportsnetwork.com"
  },
  "properties": [
    {
      "property_id": "sports_network_main",
      "property_type": "website",
      "name": "Sports Network",
      "identifiers": [
        {"type": "domain", "value": "sportsnetwork.com"}
      ],
      "tags": ["premium", "sports"]
    }
  ],
  "authorized_agents": [
    {
      "url": "https://sports-media-sales.com",
      "authorized_for": "All Sports Network properties",
      "authorization_type": "property_tags",
      "property_tags": ["sports"]
    },
    {
      "url": "https://premium-ad-network.com",
      "authorized_for": "Premium inventory only",
      "authorization_type": "property_tags",
      "property_tags": ["premium"]
    }
  ],
  "last_updated": "2025-01-10T12:00:00Z"
}

Key Fields

  • contact: このファイルを管理するパブリッシャー/主体
  • properties: 認可ファイルが対象とするプロパティ定義
  • authorized_agents: プロパティを代表する認可済みセールスエージェント一覧
    • url: エージェントの API エンドポイント
    • authorized_for: 認可範囲の説明
    • authorization_type: プロパティの選択方法(property_ids, property_tags, inline_properties, publisher_properties
  • last_updated: 最終更新日時(ISO 8601)

セールスエージェントが認可プロパティを共有する方法

Sales agents は get_adcp_capabilities タスクで media_buy.portfolio にポートフォリオ情報を公開します。これには複数の目的があります:
  1. 透明性: エージェントが代表するパブリッシャーをバイヤーが確認できる
  2. 検証の容易さ: バイヤーが adagents.json で認可確認するためのドメインを提供
  3. ポートフォリオ概要: 主要チャネル・国・説明を含む

Property Declaration Example

{
  "properties": [
    {
      "property_type": "website",
      "name": "Sports Network",
      "identifiers": [
        {"type": "domain", "value": "sportsnetwork.com"}
      ],
      "tags": ["sports_network", "premium"],
      "publisher_domain": "sportsnetwork.com"
    },
    {
      "property_type": "radio",
      "name": "WXYZ-FM Chicago",
      "identifiers": [
        {"type": "call_sign", "value": "WXYZ-FM"},
        {"type": "market", "value": "chicago"}
      ],
      "tags": ["local_radio", "midwest"],
      "publisher_domain": "radionetwork.com"
    }
  ],
  "tags": {
    "sports_network": {
      "name": "Sports Network Properties",
      "description": "145 sports properties and networks"
    },
    "local_radio": {
      "name": "Local Radio Stations",
      "description": "1847 local radio stations across US markets"
    }
  },
  "advertising_policies": "We maintain strict brand safety standards. Prohibited categories include: tobacco and vaping products, online gambling and sports betting, cannabis and CBD products, political advertising, and speculative financial products (crypto, NFTs, penny stocks).\n\nWe also prohibit misleading tactics such as clickbait headlines, false scarcity claims, hidden pricing, and ads targeting vulnerable populations.\n\nCompetitor brands in the streaming media space are blocked by policy.\n\nFull advertising guidelines: https://publisher.com/advertising-policies"
}

規模対応のプロパティタグ

数千のプロパティを持つ大規模ネットワークでは property tags で管理を容易にします:
  • Products は多数のステーションを列挙する代わりに ["local_radio", "midwest"] を参照可能
  • Buyersget_adcp_capabilities でポートフォリオを発見し認可を検証
  • 認可検証 は adagents.json を通じて解決済みプロパティに対して行う

認可検証のワークフロー

バイヤーエージェントが、セールスエージェントが主張するプロパティを正当に代表しているか検証する手順:

1. 初期セットアップ

// Get portfolio information from capabilities
const capabilities = await salesAgent.call('get_adcp_capabilities');
const portfolio = capabilities.media_buy?.portfolio;
const publisherDomains = portfolio?.publisher_domains || [];

// For each publisher domain, fetch and cache adagents.json
const authorizationCache = {};

for (const domain of publisherDomains) {
  try {
    const adagents = await fetch(`https://${domain}/.well-known/adagents.json`);
    authorizationCache[domain] = await adagents.json();
  } catch (error) {
    console.warn(`Could not verify authorization for ${domain}`);
    authorizationCache[domain] = null;
  }
}

2. プロダクト検証

// When evaluating a product
const result = await salesAgent.call('get_products', {brief: "Chicago radio ads"});
const product = result.products[0];

// Validate authorization for each publisher in publisher_properties
const authorized = product.publisher_properties.every(pubProp => {
  const domain = pubProp.publisher_domain;
  const adagents = authorizationCache[domain];

  if (!adagents) return false; // No adagents.json found

  // Verify the sales agent is in publisher's authorized_agents
  return adagents.authorized_agents.some(agent =>
    agent.url === salesAgent.url &&
    isAuthorizedForProperties(agent, pubProp)
  );
});

if (!authorized) {
  throw new Error("Sales agent not authorized for claimed properties");
}

3. 継続的な検証

  • adagents.json をキャッシュ(例: 24 時間)
  • 長期キャンペーンでは定期的に再検証
  • 認可変更 は適切に処理(停止か拒否)

このアプローチの利点

パブリッシャーにとって

  • 明示的な制御: 誰が在庫を販売できるかを管理
  • きめ細かな権限: プロパティ・期間・商品種別ごとに設定
  • 標準的なホスティング: 特別なインフラ不要
  • 監査証跡: 認可エージェントの履歴を保持

セールスエージェントにとって

  • 明確な認可証跡: バイヤーが検証可能
  • 効率的なタグ分け: 大規模ポートフォリオをタグで管理
  • 標準化された宣言: AdCP の全インタラクションで統一

バイヤーエージェントにとって

  • 認可の自動検証: セラーの正当性を自動確認
  • 不正防止: 暗号的な検証で詐欺を抑止
  • 安心して購入: 検証済み在庫ソースからの購入に自信
  • スケーラブルな検証: 大規模な自動化バイイングにも対応

Security Considerations

Domain Verification

  • HTTPS required: adagents.json must be served over HTTPS
  • Domain ownership: Only domain owners can authorize agents for their properties
  • Regular validation: Buyers should re-check authorization periodically

Authorization Scope

  • Least privilege: Grant minimal necessary permissions
  • Time bounds: Use start/end dates for temporary authorizations
  • Property restrictions: Limit to specific paths or property types when appropriate

Error Handling

  • Missing adagents.json: Treat as unauthorized (fail closed)
  • Invalid JSON: Reject malformed authorization files
  • Network errors: Implement retry logic with fallback policies
  • Expired authorization: Handle gracefully in active campaigns

Integration with Product Discovery

Authorization validation integrates seamlessly with Product Discovery:
  1. Discover products using get_products
  2. Validate authorization for properties referenced in products
  3. Proceed confidently with authorized inventory
  4. Flag unauthorized products for manual review
This creates a trustworthy foundation for AI-powered advertising that prevents unauthorized resale while enabling efficient, automated transactions.

Technical Implementation

For complete technical details on implementing the adagents.json file format, including:
  • File location and format requirements (/.well-known/adagents.json)
  • JSON schema definitions and validation rules
  • Mobile application and CTV implementation patterns
  • Detailed property type specifications (website, mobile app, CTV, DOOH, podcast)
  • Domain matching rules and wildcard patterns
  • Validation code examples and error handling
  • Security considerations and best practices
See the adagents.json Tech Spec for complete implementation guidance.