One of the foundational challenges in digital advertising is unauthorized resale - ensuring that sales agents are actually authorized to represent the advertising properties they claim to sell. AdCP solves this problem through a comprehensive authorization system that builds on the lessons learned from ads.txt in programmatic advertising.Documentation Index
Fetch the complete documentation index at: https://agenticadvertisingorg-changeset-release-main.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
The Problem: Unauthorized Resale
Historical Context
In programmatic advertising, the Ads.txt initiative was created to solve a critical problem: unauthorized reselling of advertising inventory. Before ads.txt, bad actors could claim to represent popular websites and sell their inventory without permission, leading to:- Revenue theft: Publishers lost money to unauthorized sellers
- Brand safety issues: Buyers couldnβt verify legitimate inventory sources
- Market fragmentation: No way to distinguish authorized from unauthorized sellers
The Same Problem in AI-Powered Advertising
AdCP faces similar challenges as AI agents begin to buy and sell advertising programmatically:- AI sales agents may claim to represent properties they donβt actually control
- Buyer agents need to verify authorization before making purchases
- Publishers need a way to explicitly authorize specific sales agents
- Scale challenges: Manual verification doesnβt work for networks with thousands of properties
The Solution: AdCP Authorization System
AdCP prevents unauthorized resale through a three-part system:- Publisher Authorization: Publishers explicitly authorize sales agents via
adagents.jsonwithdelegation_type(direct,delegated, orad_network) - Operator Declaration: Operators declare their property portfolio in
brand.jsonwith therelationshipfield, using the same values asdelegation_type - Agent Discovery: Sales agents declare their portfolio via
get_adcp_capabilitiesin themedia_buy.portfoliosection
ads.txt + sellers.json in programmatic. Both sides must agree for the supply path to be trusted. See ad networks for the full pattern.
How Publishers Authorize Sales Agents
Publishers authorize sales agents by hosting anadagents.json file at /.well-known/adagents.json on their domain. This file lists all authorized agents and their permissions.
Example adagents.json
Key Fields
- contact: Identifies the publisher/entity managing this file
- properties: Defines the properties covered by this authorization file
- authorized_agents: List of sales agents authorized to represent properties
- url: Agentβs API endpoint URL
- authorized_for: Human-readable description of authorization scope
- authorization_type: How properties are selected (
property_ids,property_tags,inline_properties,publisher_properties) - delegation_type: Whether this path is
direct,delegated, orad_network - collections: Optional collection selectors that narrow authorization to specific content programs
- placement_ids: Optional placement IDs from the publisherβs placement registry in
adagents.json - countries: Optional ISO 3166-1 alpha-2 country codes
- effective_from / effective_until: Optional authorization window
- exclusive: Whether this is the sole authorized path for the scoped inventory slice
- last_updated: ISO 8601 timestamp of last modification
How Sales Agents Share Authorized Properties
Sales agents use theget_adcp_capabilities task to declare their portfolio information in the media_buy.portfolio section. This serves multiple purposes:
- Transparency: Buyers can see what publishers an agent represents
- Validation enablement: Provides publisher domains for buyers to verify authorization via
adagents.json - Portfolio overview: Includes primary channels, countries, and portfolio description
Property Declaration Example
Property Tags for Scale
For large networks representing thousands of properties, AdCP supports property tags to make the system manageable:- Products can reference
["local_radio", "midwest"]instead of listing hundreds of stations - Buyers use
get_adcp_capabilitiesto discover the agentβs portfolio and validate authorization - Authorization validation works on the resolved properties via
adagents.json
Authorization Validation Workflow
Hereβs how a buyer agent validates that a sales agent is authorized to represent claimed properties:1. One-Time Setup
2. Product Validation
3. Ongoing Validation
- Cache adagents.json responses with reasonable TTL (e.g., 24 hours)
- Re-validate periodically for long-running campaigns
- Handle authorization changes gracefully (pause vs. reject)
Benefits of This Approach
For Publishers
- Explicit control over who can sell their inventory
- Granular permissions by property, collection, country, and date range
- Standard web hosting - no special infrastructure required
- Audit trail of authorized agents
For Sales Agents
- Clear authorization proof that buyers can verify
- Efficient tag-based grouping for large property portfolios
- Standardized declaration across all AdCP interactions
For Buyer Agents
- Automated verification of seller authorization
- Fraud prevention through cryptographic verification
- Confidence in purchases from verified inventory sources
- Scalable validation for large-scale automated buying
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:- Discover products using
get_products - Validate authorization for properties referenced in products
- Proceed confidently with authorized inventory
- Flag unauthorized products for manual review
Technical Implementation
For complete technical details on implementing theadagents.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
Related Documentation
get_adcp_capabilities- Discover agent capabilities and portfolio information- Product Discovery - How authorization integrates with product discovery
- Properties Schema - Technical property data model
- adagents.json Tech Spec - Complete
adagents.jsonimplementation guide