Skip to main content
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.
New to AdCP authorization? Read AdCP Basics: Authorized Properties for an accessible introduction to how authorization works in agentic advertising.

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 two-part system:
  1. Publisher Authorization: Publishers explicitly authorize sales agents via adagents.json
  2. Agent Discovery: Sales agents declare their authorized properties via list_authorized_properties
This creates a verifiable chain of authorization that buyer agents can validate.

How Publishers Authorize Sales Agents

Publishers authorize sales agents by hosting an adagents.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)
  • last_updated: ISO 8601 timestamp of last modification

How Sales Agents Share Authorized Properties

Sales agents use the list_authorized_properties task to declare all properties they are authorized to represent. This serves multiple purposes:
  1. Transparency: Buyers can see what properties an agent represents
  2. Validation enablement: Provides the data buyers need to verify authorization
  3. Tag resolution: Enables efficient grouping of properties by tags

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 list_authorized_properties to resolve tags to actual properties
  • Authorization validation works on the resolved properties

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, date range, and product type
  • 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:
  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.