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 (任意): このファイルで扱うプロパティの配列(正規定義)
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(必須): ベンダー/エージェント名(例: “Scope3”, “TAG”, “OneTrust”)features(必須): 提供する Feature ID の配列(例:["carbon_score", "gdpr_compliant"])publisher_id(任意): そのエージェント側でのパブリッシャー識別子
URL 参照パターン
複雑なインフラや CDN 配信を行うパブリッシャーは、全文を埋め込む代わりに信頼できる URL への参照を記載できます。URL 参照を使う場合
- CDN 配信: 認可データをグローバル CDN から配信
- 集中管理: 複数ドメインを単一のソースで管理
- 大規模ファイル: インライン埋め込みには大きすぎる場合
- 動的更新: ドメイン上のファイルを触らず頻繁に更新したい場合
URL 参照の構造
要件
- HTTPS 必須:
authoritative_locationは HTTPS を使用 - 入れ子禁止: 参照先がさらに URL 参照であってはならない(無限ループ防止)
- 同一スキーマ: 参照先は有効なインライン adagents.json 構造であること
- 1 ホップのみ: URL 間接参照は 1 段階まで
ユースケース: 複数ドメインを持つパブリッシャー
A publisher with multiple domains can maintain one authoritative file: On each domain (https://domain1.com/.well-known/adagents.json, https://domain2.com/.well-known/adagents.json, etc.):
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 種の認可パターンをサポートし、用途に最適化されています:Pattern 1: Property IDs (Direct References)
Best for: Specific, enumerable property lists. Direct and unambiguous. Structure:property_ids array. The properties must be defined in the top-level properties array.
Pattern 2: Property Tags (Efficient Grouping)
Best for: Large networks where one tag can reference hundreds/thousands of properties. Provides grouping efficiency without listing every property ID. Key Insight: Tags are not just “human-readable metadata” - they’re a performance optimization. A publisher with 500 properties can use one tag to authorize all of them, rather than listing 500 property IDs. Structure:tags array in each property definition.
Pattern 3: Inline Properties
Best for: Small, specific property sets without top-level property declarations. Structure:properties array. Useful when each agent has unique property definitions.
Pattern 4: Publisher Property References
Best for: Third-party agents representing multiple publishers. Single source of truth for property definitions. Structure:publisher_domain points to the publisher, and selection_type determines how to resolve properties (by_id or by_tag).
Domain Matching Rules
For website properties with domain identifiers, AdCP follows web conventions:Base Domain (example.com)
Matches domain plus standard web subdomains:
- ✅
example.com - ✅
www.example.com(standard web) - ✅
m.example.com(standard mobile) - ❌
subdomain.example.com(requires explicit authorization)
Specific Subdomain (subdomain.example.com)
Matches only that exact subdomain:
- ✅
subdomain.example.com - ❌ All other domains/subdomains
Wildcard (*.example.com)
Matches ALL subdomains but NOT base:
- ✅ Any subdomain
- ❌
example.com(base domain requires separate authorization)
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 compliance, sustainability, and quality 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 Scope3 | ✅ Yes |
| Publisher is TAG certified | ✅ Yes |
| Publisher tracks consent via OneTrust | ✅ Yes |
| Publisher self-reports brand safety | ❌ 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