adagents.json は、パブリッシャーがプロパティを宣言し、セールスエージェントを認可するための標準的な手段を提供します。Property Governance の土台であり、何が存在し誰が販売できるかを定義します。
配置場所
パブリッシャーはadagents.json を次の場所に配置する必要があります:
基本構造
ファイルは UTF-8 の有効な JSON で、HTTP 200 を返す必要があります。スキーマフィールド
$schema (任意): 検証用の JSON Schema 参照
contact (任意): ファイル管理主体の連絡先
name(必須): 管理主体名(パブリッシャーまたは第三者)email(任意): 問い合わせ先メールdomain(任意): 管理主体のドメインseller_id(任意): IAB Tech Lab sellers.json の Seller IDtag_id(任意): TAG Certified Against Fraud IDprivacy_policy_url(任意): 消費者同意フロー用のプライバシーポリシー URL
properties (任意): このファイルで扱うプロパティの配列(正規定義)
supported_channels(任意): このプロパティがサポートする広告チャネルの配列(例:["display", "olv", "social"])。Media Channel Taxonomy を参照。
tags (任意): 人が読みやすく、グルーピングに使えるタグメタデータ
authorized_agents (必須): 認可されたセールスエージェントの配列
url(必須): エージェントの API エンドポイントauthorized_for(必須): 認可内容の説明authorization_type(任意):property_ids,property_tags,inline_properties,publisher_propertiesのいずれか- 追加フィールド: authorization_type に依存(後述のパターン参照)
last_updated (任意): 最終更新日時(ISO 8601)
property_features (任意): このファイル内プロパティに関するデータを提供するガバナンスエージェントの配列
url(必須): ガバナンスエージェントの API エンドポイントname(必須): ベンダー/エージェント名(人が読める名前)features(必須): 提供する Feature ID の配列(例:["carbon_score", "mfa_score"])publisher_id(任意): そのエージェント側でのパブリッシャー識別子
URL 参照パターン
複雑なインフラや CDN 配信を行うパブリッシャーは、全文を埋め込む代わりに信頼できる URL への参照を記載できます。URL 参照を使う場合
- CDN 配信: 認可データをグローバル CDN から配信
- 集中管理: 複数ドメインを単一のソースで管理
- 大規模ファイル: インライン埋め込みには大きすぎる場合
- 動的更新: ドメイン上のファイルを触らず頻繁に更新したい場合
URL 参照の構造
要件
- HTTPS 必須:
authoritative_locationは HTTPS を使用 - 入れ子禁止: 参照先がさらに URL 参照であってはなりません(無限ループ防止)
- 同一スキーマ: 参照先は有効なインライン adagents.json 構造であること
- 1 ホップのみ: URL 間接参照は 1 段階まで
ユースケース: 複数ドメインを持つパブリッシャー
複数ドメインを持つパブリッシャーは 1 つの権威ファイルを維持できる: 各ドメイン上 (https://domain1.com/.well-known/adagents.json, https://domain2.com/.well-known/adagents.json など):
https://cdn.publisher.com/adagents/v2/adagents.json):
検証時の挙動
AdCP の検証で URL 参照が見つかった場合:- 参照取得:
/.well-known/adagents.jsonを取得 - 参照検出:
authoritative_locationを確認 - URL 検証:
authoritative_locationが HTTPS かつ有効か確認 - 参照先取得:
authoritative_locationの内容を取得 - ループ防止: 参照先がさらに参照でないことを確認
- 構造検証: 参照先を通常のインライン構造として検証
キャッシュ推奨
- 参照ファイルは最低 24 時間キャッシュ
- 権威ファイルは別途 TTL を設定してキャッシュ
last_updatedでキャッシュ無効化を判断- 取得失敗時は指数バックオフを実装
認可パターン
AdCP は 4 種の認可パターンをサポートし、用途に最適化されています:パターン 1: Property IDs(直接参照)
最適な用途: 具体的で列挙可能なプロパティリスト。明確で曖昧さがない。 構造:property_ids 配列に列挙された特定プロパティのみを認可されます。プロパティはトップレベルの properties 配列で定義されていなければなりません。
パターン 2: Property Tags(効率的なグルーピング)
最適な用途: 1 つのタグで数百〜数千のプロパティを参照できる大規模ネットワーク。全 property_id を列挙せずにグルーピング効率を実現します。 重要な観点: タグは単なる「人が読めるメタデータ」ではなく、パフォーマンス最適化です。500 プロパティを持つパブリッシャーは 1 つのタグで全プロパティを認可でき、500 個の property_id を列挙する必要がない。 構造:tags 配列と照合されます。
パターン 3: Inline Properties
最適な用途: トップレベルのプロパティ宣言なしに小規模・特定のプロパティ集合を扱う場合。 構造:properties 配列ではなく、エージェント認可エントリ内で直接定義されます。各エージェントが固有のプロパティ定義を持つ場合に便利。
パターン 4: Publisher Property References
最適な用途: 複数のパブリッシャーを代表するサードパーティエージェント。プロパティ定義の単一のソース・オブ・トゥルース。 構造:publisher_domain でパブリッシャーを指定し、selection_type でプロパティの解決方法(by_id または by_tag)を決定します。
ドメインマッチングルール
ドメイン識別子を持つウェブサイトプロパティについて、AdCP はウェブの慣例に従います。ベースドメイン(example.com)
ドメイン本体と標準的なウェブサブドメインにマッチします。
- ✅
example.com - ✅
www.example.com(標準ウェブ) - ✅
m.example.com(標準モバイル) - ❌
subdomain.example.com(明示的な認可が必要)
特定サブドメイン(subdomain.example.com)
その特定サブドメインのみにマッチします。
- ✅
subdomain.example.com - ❌ その他のすべてのドメイン/サブドメイン
ワイルドカード(*.example.com)
すべてのサブドメインにマッチしますが、ベースドメインはマッチしません。
- ✅ 任意のサブドメイン
- ❌
example.com(ベースドメインは別途認可が必要)
Real-World Examples
Example 1: Meta Network (Tag-Based)
Large network using tags for grouping efficiency:meta_network) authorizes all properties without listing individual property IDs. As Meta adds properties, they just tag them - no need to update agent authorization.
Example 2: CNN (Channel Segmentation)
Different agents for different channels:Example 3: Publisher with Governance Agent References
Publishers can declare which governance agents have data about their properties usingproperty_features. This enables buyers to discover where to get sustainability, quality, and suitability data.
- Publishers declare relationships with governance agents upfront
- Buyers discover governance agents by reading adagents.json (no need to query every possible agent)
- The
publisher_idfield helps agents look up the publisher’s data efficiently - Feature IDs tell buyers what data types are available without querying
Governance Agent Discovery
Theproperty_features field solves a key discovery problem: how does a buyer know which governance agents have data about a given property?
When to Use property_features
| Scenario | Use property_features? |
|---|---|
| Publisher has carbon scoring from a sustainability vendor | ✅ Yes |
| Publisher has MFA score measured by a quality vendor | ✅ Yes |
| Publisher has content classification from a suitability vendor | ✅ Yes |
| Publisher self-reports brand suitability | ❌ No - use property tags |
| Sales agent provides quality data | ❌ No - that’s agent capability |
Vendor Extensions
Governance agents can include vendor-specific data in feature definitions via anext block. See get_adcp_capabilities for details.
Fetching and Validating
Using the AdAgents.json Builder
The easiest way to validate or create an adagents.json file is using the AdAgents.json Builder web tool. It provides:- Domain validation (fetches and checks
/.well-known/adagents.json) - Structure validation against the JSON schema
- Agent card endpoint verification (checks if agent URLs respond correctly)
- Guided file creation with proper formatting
Programmatic Validation
For programmatic validation, use the validation API:https://{domain}/.well-known/adagents.json, validates its structure, follows URL references if present, and optionally checks agent card endpoints.
Using AdCP Client Libraries
The AdCP client libraries provide built-in validation and authorization checking:AdagentsValidationError.
Best Practices
1. Use Appropriate Authorization Pattern
- Property IDs: Small, enumerable lists (< 20 properties)
- Property Tags: Large networks (100+ properties)
- Inline Properties: Simple cases without top-level properties
- Publisher Properties: Third-party agents representing multiple publishers
2. Cache Files Appropriately
- Cache for 24 hours minimum
- Use
last_updatedtimestamp to detect staleness - Handle 404 as “no file” (not an error - proceed without validation)
- Implement retry logic with exponential backoff for network errors
3. Validate Structure
- Validate against JSON schema before processing
- Check required fields exist (
authorized_agentsarray) - Verify authorization scope matches product claims
- Cross-reference with seller.json if available
4. Handle Missing Files Gracefully
- 404 status = No file present (not an authorization failure)
- Absence of file does not mean agent is unauthorized
- Use adagents.json as verification, not requirement
Next Steps
After implementing adagents.json validation:- Integrate with Product Discovery: Use
get_productsto discover inventory - Validate at Purchase: Check authorization before calling
create_media_buy - Cache Property Mappings: Store resolved properties for efficient validation
- Monitor Authorization: Track validation success rates and unauthorized attempts
Learn More
- AdCP Basics: Authorized Properties - Accessible introduction to AdCP authorization
- get_adcp_capabilities - Discover agent capabilities and portfolio
- Property Schema - Property definition structure
- AdAgents.json Builder - Web-based validator and creator