Overview
AdCP servers support time simulation and dry run capabilities to enable comprehensive testing of advertising workflows without waiting for real-time events or spending actual budgets.Test Agent for Development
AdCP provides a public test agent with free credentials for development and testing: Agent URL:https://test-agent.adcontextprotocol.org
Free Test Credentials:
For MCP Protocol:
- Test authenticated operations
- Practice integration patterns
- Validate request/response structures
- Develop and debug client implementations
Protocol Compliance Testing
Testing via Addie
The easiest way to test your AdCP agent is to ask Addie in Slack:“Hey Addie, test my sales agent at https://sales.example.com”Addie can run comprehensive E2E tests including: Standard Scenarios:
- health_check - Verify agent responds
- discovery - Test
get_products,list_creative_formats,list_authorized_properties - create_media_buy - Discovery + create a test campaign
- full_sales_flow - Complete lifecycle: create → update → delivery
- creative_sync - Test
sync_creativesflow - creative_inline - Test inline creatives in
create_media_buy - pricing_models - Analyze pricing options across channels
- error_handling - Verify proper discriminated union error responses
- validation - Test rejection of invalid inputs (negative budgets, invalid enums)
- pricing_edge_cases - Test auction vs fixed pricing, min_spend requirements, bid_price handling
- temporal_validation - Test date/time ordering, ISO 8601 format validation
- behavior_analysis - Analyze agent characteristics: authentication requirements, brand_manifest requirements, brief relevance filtering, channel filtering behavior
Sales Agent Compliance Checklist
Use this checklist to verify your sales agent implementation covers all required features: Core Discovery (Required)-
get_products- Returns products with pricing_options, format_ids, delivery_type -
list_creative_formats- Returns supported formats and creative agents -
list_authorized_properties- Returns publisher domains (if applicable)
-
create_media_buy- Accepts packages with product_id, pricing_option_id, budget -
update_media_buy- Supports PATCH semantics for budget, pacing, targeting -
get_media_buy_delivery- Returns impressions, spend, status
-
sync_creatives- Upsert creatives with per-item action tracking -
list_creatives- Query creative library with filtering - Support inline creatives in
create_media_buy - Support creative references (
creative_ids)
- CPM - Cost per thousand impressions
- vCPM - Viewable CPM (MRC standard)
- CPCV - Cost per completed view
- CPC - Cost per click
- CPP - Cost per rating point (TV/radio)
- Flat rate - Fixed cost sponsorships
- Auction pricing - Support bid_price when is_fixed=false
- Static creatives (image, video assets)
- Reference creatives (creative_ids to existing library)
- Generative creatives (manifest-based)
- Parameterized creatives (with substitution)
- Discriminated union responses (success XOR errors)
- Schema-compliant responses (validate against JSON schemas)
- Async operations return status: submitted/working/completed
- Per-item errors in batch operations (e.g., sync_creatives)
-
X-Dry-Runheader support -
X-Test-Session-IDfor parallel test isolation -
X-Mock-Timefor time simulation
- Reject negative budget values
- Reject invalid pacing enum values
- Reject end_time before start_time
- Reject invalid ISO 8601 date formats
- Return proper error for non-existent product_id
- Require bid_price for auction pricing options
- Reject budget below min_spend_per_package
- Reject creative weight > 100
- Return discriminated union error responses (success XOR errors, never both)
Testing Modes
Dry Run Mode
Execute all operations without affecting real platforms or spending money:- No real platform API calls are made
- No actual money is spent
- Responses indicate test mode is active
- All operations return simulated but realistic results
Time Simulation Mode
Control simulated time to instantly progress through campaign events:X-Mock-Time: Set current simulated timeX-Auto-Advance: Auto-advance to next eventX-Jump-To-Event: Jump to specific campaign event
Request Headers
Testing Control Headers
Response Headers
Servers include these headers in test mode responses:Event Progression
Jumpable Events
UseX-Jump-To-Event to jump to specific campaign lifecycle events:
Lifecycle Events:
campaign_created- Initial setup completecampaign_approved- Ready for creative submissioncreative_approved- Ready for launchcampaign_launched- Live delivery beginscampaign_50_percent- Halfway through schedulecampaign_completed- Natural end reached
creative_policy_violation- Force creative rejectionbudget_exceeded- Simulate overspendinventory_unavailable- Simulate inventory shortagemanual_approval_delay- Add HITL approval delay
Time Advancement
Jump forward by duration:Testing Examples
Example: Testing Creative Rejection
Example: Testing Time Progression
Testing Patterns
Pattern 1: Happy Path Testing
Test successful campaign flows without forcing errors:Pattern 2: Error Recovery Testing
Test error handling by jumping to error events:Pattern 3: Time-Based Testing
Test long-running campaigns quickly:Pattern 4: Parallel Testing
Test multiple campaigns in isolated sessions:Implementation Requirements
Core Requirements
All AdCP implementations MUST support:-
Dry Run Mode
X-Dry-Runheader recognition- No side effects on production systems
- Clear indication of test mode in responses
-
Test Session Isolation
X-Test-Session-IDfor parallel test isolation- Independent state per session
- No cross-session interference
-
Basic Time Control
X-Mock-Timefor setting simulated timeX-Jump-To-Eventfor event progression- Consistent state across time jumps
Recommended Features
Implementations SHOULD support:-
Auto-Advancement
X-Auto-Advancefor automatic progressionX-Advance-Timefor duration-based jumps
-
Error Events
- Jump to error states via
X-Jump-To-Event - Common error events (policy violations, budget issues)
- Recovery testing
- Jump to error states via
Optional Features
Implementations MAY support:-
Advanced Testing
- Custom event definitions
- Complex error injection
- Performance simulation
-
Detailed Metrics
- Realistic performance curves
- Industry benchmark simulation
- Cost modeling
Security Considerations
- Test modes MUST be completely isolated from production
- Test mode operations should be logged separately
- Authentication is still required in test mode
- Rate limits apply (potentially with different thresholds)
Summary
AdCP testing features enable:- Rapid Development - Test full lifecycles in seconds
- Comprehensive Testing - Cover all scenarios deterministically
- Zero Cost - No real money spent on testing
- Isolation - Complete separation from production