From fa77a3c7414d14d52d3518b78f926c9c8b1e9917 Mon Sep 17 00:00:00 2001 From: Brian O'Kelley Date: Thu, 31 Jul 2025 22:53:13 +0200 Subject: [PATCH] feat: rename Audience Activation Protocol to Signals Activation Protocol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change broadens the protocol scope to encompass diverse data signals beyond traditional audiences: - Audiences (demographic/behavioral) - Contextual (content classification) - Geographical (location-based) - Temporal (time-based) - Environmental (weather, events) - Multi-dimensional combinations Key changes: - Renamed /docs/audience/ to /docs/signals/ - Updated all protocol references from "Audience" to "Signals" - Changed tool names: get_audiences → get_signals, etc. - Updated terminology throughout documentation - Enhanced examples to show signal diversity This better reflects the protocol's capability to handle any type of data signal that can be activated on advertising platforms. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 24 +-- docs/intro.md | 40 ++-- docs/reference/error-codes.md | 40 ++-- docs/reference/glossary.md | 62 +++--- docs/reference/security.md | 20 +- docs/{audience => signals}/overview.md | 52 ++--- docs/{audience => signals}/specification.md | 179 +++++++++--------- github-readme.md | 21 +- ...e-protocol-v1.md => signals-protocol-v1.md | 28 +-- src/pages/showcase.js | 16 +- 10 files changed, 246 insertions(+), 236 deletions(-) rename docs/{audience => signals}/overview.md (69%) rename docs/{audience => signals}/specification.md (64%) rename audience-protocol-v1.md => signals-protocol-v1.md (82%) diff --git a/README.md b/README.md index 62d098e152..02b379158c 100644 --- a/README.md +++ b/README.md @@ -8,25 +8,27 @@ Visit [adcontextprotocol.github.io](https://adcontextprotocol.github.io) for ful ## What is Ad Context Protocol? -Ad Context Protocol (AdCP) is an open standard that enables AI assistants to interact with advertising platforms through natural language. Built on the Model Context Protocol (MCP), AdCP allows marketers to discover audiences, curate inventory, and execute campaigns using conversational AI. +Ad Context Protocol (AdCP) is an open standard that enables AI assistants to interact with advertising platforms through natural language. Built on the Model Context Protocol (MCP), AdCP allows marketers to discover signals (audiences, contextual, geographical, temporal data), curate inventory, and execute campaigns using conversational AI. ### Quick Example Instead of navigating complex interfaces: -> "Find audiences of premium sports enthusiasts who would be interested in high-end running shoes, and activate them on Scope3." +> "Find audience signals of premium sports enthusiasts who would be interested in high-end running shoes, and activate them on Scope3." The AI assistant handles: -- Audience discovery across platforms +- Signal discovery across platforms - Transparent pricing comparison - Direct activation on decisioning platforms ## Available Protocols -### 🎯 Audience Activation Protocol - RFC/v0.1 -Discover and activate marketing audiences using natural language. +### 🎯 Signals Activation Protocol - RFC/v0.1 +Discover and activate data signals using natural language. -- **Natural Language Discovery**: "High-income millennials interested in sustainable fashion" +- **Natural Language Discovery**: "High-income millennials interested in sustainable fashion" (audience signal) +- **Contextual Signals**: "Premium automotive content with high viewability" +- **Multi-Dimensional**: Combine geographical, temporal, and behavioral signals - **Multi-Platform Activation**: Deploy across DSPs and data platforms - **Transparent Pricing**: CPM and revenue share models - **Real-time Status**: Track activation and deployment progress @@ -43,7 +45,7 @@ Execute and optimize media buys programmatically across platforms. Implement AdCP to enable AI-powered workflows for your customers: -1. **Review the Specification**: [Audience Protocol](https://adcontextprotocol.github.io/docs/audience/specification) +1. **Review the Specification**: [Signals Protocol](https://adcontextprotocol.github.io/docs/signals/specification) 2. **Implement MCP Server**: Check out the [reference implementations](#reference-implementations) 3. **Test Your Implementation**: Use the validation test suite @@ -60,7 +62,7 @@ Use AdCP-enabled platforms with your AI assistant: ``` adcontextprotocol/ ├── docs/ # Documentation source files -│ ├── audience/ # Audience protocol docs +│ ├── signals/ # Signals protocol docs │ ├── curation/ # Curation protocol (coming soon) │ ├── media-buy/ # Media Buy protocol docs │ └── reference/ # API reference @@ -91,7 +93,7 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines. ## Reference Implementations -- [Audience Agent](https://github.com/adcontextprotocol/audience-agent) +- [Signals Agent](https://github.com/adcontextprotocol/signals-agent) - [Sales Agent](https://github.com/adcontextprotocol/salesagent) ## Platform Implementations @@ -99,7 +101,7 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines. ### Current Support - **Reference Implementation**: Complete MCP server example -- **Scope3**: Full Audience Activation Protocol support +- **Scope3**: Full Signals Activation Protocol support - **More Coming**: Additional platforms implementing Q1 2025 @@ -138,7 +140,7 @@ The Ad Context Protocol specifications are licensed under [Apache 2.0](./LICENSE ## Links - **Website**: [adcontextprotocol.github.io](https://adcontextprotocol.github.io) -- **Specifications**: [Audience Protocol RFC](./audience-protocol-v1.md) +- **Specifications**: [Signals Protocol RFC](./signals-protocol-v1.md) - **Discussions**: [GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions) - **Issues**: [Report Issues](https://github.com/adcontextprotocol/adcp/issues) diff --git a/docs/intro.md b/docs/intro.md index 83c6062145..c9d9e01fc1 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -50,11 +50,11 @@ Platforms that evaluate sellers and audiences, and execute buying strategies: - **Function**: Strategy execution, seller evaluation, optimization - **Integration**: Uses MCP to communicate with both Audience and Sales Agents -#### Audience Agent (Right, Top) +#### Signal Agent (Right, Top) MCP servers that provide: -- **Audience Discovery**: Finding relevant audiences using natural language -- **Audience Activation**: Pushing audiences to decisioning platforms -- **Integration**: Connects audience platforms to orchestration via MCP +- **Signal Discovery**: Finding relevant signals (audiences, contextual, geographical, temporal) using natural language +- **Signal Activation**: Pushing signals to decisioning platforms +- **Integration**: Connects signal platforms to orchestration via MCP #### Sales Agent (Right, Bottom) MCP servers that provide: @@ -81,38 +81,38 @@ The technical infrastructure that: Each AdCP protocol operates within this ecosystem: -### 🎯 Audience Activation Protocol -- **Scope**: Works with **audience platforms** to discover and activate audiences directly on **decisioning platforms** -- **Integration**: Direct integration between audience agents and decisioning platforms (DSPs, injective platforms) -- **Workflow**: Find audiences → Direct activation on target platform → Ready for campaign use +### 🎯 Signals Activation Protocol +- **Scope**: Works with **signal platforms** to discover and activate signals directly on **decisioning platforms** +- **Integration**: Direct integration between signal agents and decisioning platforms (DSPs, injective platforms) +- **Workflow**: Find signals → Direct activation on target platform → Ready for campaign use ### 📍 Curation Protocol (Coming Q2 2025) - **Scope**: Works with **decisioning platforms** and **supply-side platforms** -- **Integration**: Curates inventory that will be targeted with activated audiences -- **Workflow**: Define requirements → Find inventory → Package with audiences +- **Integration**: Curates inventory that will be targeted with activated signals +- **Workflow**: Define requirements → Find inventory → Package with signals ### 💰 Media Buy Protocol - **Scope**: Works primarily with **decisioning platforms** (DSPs, injective platforms) -- **Integration**: Executes campaigns using curated inventory and activated audiences +- **Integration**: Executes campaigns using curated inventory and activated signals - **Workflow**: Set objectives → Execute buys → Optimize performance ## Quick Example Instead of navigating multiple platforms, you can now say: -> "Find audiences of premium sports enthusiasts who would be interested in high-end running shoes, and activate them on Scope3." +> "Find audience signals of premium sports enthusiasts who would be interested in high-end running shoes, and activate them on Scope3." The AI assistant will: -1. Search for relevant audiences across connected platforms +1. Search for relevant signals across connected platforms 2. Show you options with transparent pricing -3. Activate your chosen audiences for use on decisioning platforms +3. Activate your chosen signals for use on decisioning platforms ## Available Protocols -### 🎯 [Audience Activation Protocol](./audience/overview) +### 🎯 [Signals Activation Protocol](./signals/overview) **Status**: RFC/v0.1 -Discover and activate marketing audiences using natural language. +Discover and activate data signals (audiences, contextual, geographical, temporal) using natural language. ### 📍 Curation Protocol **Status**: Coming Q2 2025 @@ -126,14 +126,14 @@ Execute and optimize media buys programmatically. ## Reference Implementations -- [Audience Agent](https://github.com/adcontextprotocol/audience-agent) +- [Signals Agent](https://github.com/adcontextprotocol/signals-agent) - [Sales Agent](https://github.com/adcontextprotocol/salesagent) ## For Platform Providers -If you operate an audience platform, DSP, or ad tech solution: +If you operate a signal platform, DSP, or ad tech solution: -1. [Review the Protocol Specifications](./audience/specification) +1. [Review the Protocol Specifications](./signals/specification) ## For Advertisers & Agencies @@ -145,7 +145,7 @@ If you want to use AdCP with your AI assistant: ## Next Steps -- **Platform Providers**: Start with the [Audience Protocol Specification](./audience/specification) +- **Platform Providers**: Start with the [Signals Protocol Specification](./signals/specification) - **Everyone**: Join the [community discussion](https://github.com/adcontextprotocol/adcp/discussions) ## Need Help? diff --git a/docs/reference/error-codes.md b/docs/reference/error-codes.md index 0b9b4d1cab..143f4bd933 100644 --- a/docs/reference/error-codes.md +++ b/docs/reference/error-codes.md @@ -76,8 +76,8 @@ Account lacks required permissions for the operation. "code": "INSUFFICIENT_PERMISSIONS", "message": "Account does not have activation permissions", "details": { - "required_permission": "activate_audience", - "account_permissions": ["get_audiences", "check_audience_status"] + "required_permission": "activate_signal", + "account_permissions": ["get_signals", "check_signal_status"] } } } @@ -96,7 +96,7 @@ Required request parameter is missing. "success": false, "error": { "code": "MISSING_REQUIRED_FIELD", - "message": "prompt is required for audience discovery", + "message": "prompt is required for signal discovery", "details": { "field": "prompt", "provided_fields": ["platform", "max_results"] @@ -163,24 +163,24 @@ Specified segment ID doesn't exist or is no longer available. "message": "Segment ID not found or has expired", "details": { "segment_id": "seg_invalid_123", - "suggestion": "Use get_audiences to find current segment IDs" + "suggestion": "Use get_signals to find current segment IDs" } } } ``` -**Resolution**: Use current segment ID from recent `get_audiences` response. +**Resolution**: Use current segment ID from recent `get_signals` response. -### AUDIENCE_UNAVAILABLE -Audience exists but is not available for the requested platform/seat. +### SIGNAL_UNAVAILABLE +Signal exists but is not available for the requested platform/seat. **Example**: ```json { "success": false, "error": { - "code": "AUDIENCE_UNAVAILABLE", - "message": "Audience not available for the specified platform", + "code": "SIGNAL_UNAVAILABLE", + "message": "Signal not available for the specified platform", "details": { "segment_id": "seg_12345", "requested_platform": "unavailable_platform", @@ -237,7 +237,7 @@ Account cannot access specified seat. ## Operation Errors ### ALREADY_ACTIVATED -Audience is already active for the specified platform/seat. +Signal is already active for the specified platform/seat. **Example**: ```json @@ -245,7 +245,7 @@ Audience is already active for the specified platform/seat. "success": false, "error": { "code": "ALREADY_ACTIVATED", - "message": "Audience already activated for this platform and seat", + "message": "Signal already activated for this platform and seat", "details": { "segment_id": "seg_12345", "platform": "scope3", @@ -257,10 +257,10 @@ Audience is already active for the specified platform/seat. } ``` -**Resolution**: Use existing activation or check status with `check_audience_status`. +**Resolution**: Use existing activation or check status with `check_signal_status`. ### ACTIVATION_FAILED -Audience activation process failed. +Signal activation process failed. **Example**: ```json @@ -268,7 +268,7 @@ Audience activation process failed. "success": false, "error": { "code": "ACTIVATION_FAILED", - "message": "Failed to activate audience due to provider error", + "message": "Failed to activate signal due to provider error", "details": { "segment_id": "seg_12345", "provider_error": "Segment temporarily unavailable", @@ -282,7 +282,7 @@ Audience activation process failed. **Resolution**: Wait and retry, or contact support if persistent. ### INVALID_PRICING_MODEL -Requested pricing model is not available for this audience. +Requested pricing model is not available for this signal. **Example**: ```json @@ -290,7 +290,7 @@ Requested pricing model is not available for this audience. "success": false, "error": { "code": "INVALID_PRICING_MODEL", - "message": "CPM pricing not available for this audience", + "message": "CPM pricing not available for this signal", "details": { "segment_id": "seg_12345", "requested_model": "cpm", @@ -300,7 +300,7 @@ Requested pricing model is not available for this audience. } ``` -**Resolution**: Use available pricing model or choose different audience. +**Resolution**: Use available pricing model or choose different signal. ## Rate Limiting Errors @@ -400,7 +400,7 @@ Data quality problem detected. "success": false, "error": { "code": "DATA_QUALITY_ISSUE", - "message": "Audience size data is stale", + "message": "Signal size data is stale", "details": { "segment_id": "seg_12345", "last_updated": "2024-12-01T00:00:00Z", @@ -410,7 +410,7 @@ Data quality problem detected. } ``` -**Resolution**: Contact provider for updated audience data. +**Resolution**: Contact provider for updated signal data. ### USAGE_REPORT_REJECTED Usage report failed validation. @@ -487,7 +487,7 @@ Convert technical errors to user-friendly messages: ```typescript const USER_MESSAGES = { - 'SEGMENT_NOT_FOUND': 'This audience is no longer available. Please search for audiences again.', + 'SEGMENT_NOT_FOUND': 'This signal is no longer available. Please search for signals again.', 'RATE_LIMIT_EXCEEDED': 'Too many requests. Please wait a moment and try again.', 'INSUFFICIENT_PERMISSIONS': 'Your account does not have permission for this action. Contact your administrator.', // ... more mappings diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md index 486847bd07..d4d4a32216 100644 --- a/docs/reference/glossary.md +++ b/docs/reference/glossary.md @@ -11,19 +11,19 @@ title: Glossary Classification of MCP session credentials as either "platform" (aggregator) or "customer" (direct advertiser/agency). **Activation** -The process of making an audience available for targeting on a specific platform and seat. +The process of making a signal available for targeting on a specific platform and seat. **Ad Context Protocol (AdCP)** An open standard based on Model Context Protocol (MCP) that enables AI-powered advertising workflows through natural language interfaces. -**Audience Discovery** -The process of finding relevant marketing audiences using natural language descriptions. +**Signal Discovery** +The process of finding relevant data signals (audiences, contextual, geographical, temporal) using natural language descriptions. -**Audience ID** -A unique identifier for an audience within a provider's catalog. +**Signal ID** +A unique identifier for a signal within a provider's catalog. -**Audience Type** -Classification of audiences as "marketplace" (third-party), "owned" (first-party), or "destination" (bundled with media). +**Signal Type** +Classification of signals as "marketplace" (third-party), "owned" (first-party), "destination" (bundled with media), "contextual", "geographical", or "temporal". ## C @@ -35,10 +35,10 @@ Direct advertiser or agency account with specific seat access and negotiated rat ## D -**Deployment** (Audience Protocol) -The availability status of an audience on specific platforms, including activation state and timing. +**Deployment** (Signals Protocol) +The availability status of a signal on specific platforms, including activation state and timing. -**Devices** (Audience Protocol) +**Devices** (Signals Protocol) Size unit representing unique device identifiers (cookies, mobile IDs) - typically the largest reach metric. **Device Type** (Media Buy Protocol) @@ -50,7 +50,7 @@ Technology platform that allows advertisers to buy advertising inventory program ## E **Estimated Activation Time** -Predicted timeframe for audience deployment, typically 24-48 hours for new activations. +Predicted timeframe for signal deployment, typically 24-48 hours for new activations. ## H @@ -62,7 +62,7 @@ Size unit representing unique household addresses, useful for geographic and fam **Impressions** (Media Buy Protocol) The number of times an ad is displayed, used for pricing and delivery tracking. -**Individuals** (Audience Protocol) +**Individuals** (Signals Protocol) Size unit representing unique people, best for frequency capping and demographic targeting. **Inventory** @@ -73,8 +73,8 @@ Available advertising space on websites, apps, or other media properties. **MCP (Model Context Protocol)** The underlying protocol framework that enables AI assistants to interact with external systems. -**Marketplace Audience** -Third-party audience available for licensing from data providers. +**Marketplace Signal** +Third-party signal available for licensing from data providers. ## N @@ -83,24 +83,24 @@ The AI capability that allows audience discovery through conversational descript ## O -**Owned Audience** -First-party audience data belonging to the advertiser or platform. +**Owned Signal** +First-party signal data belonging to the advertiser or platform. ## P **Platform Account** -Master account representing an advertising platform that can syndicate audiences to multiple customers. +Master account representing an advertising platform that can syndicate signals to multiple customers. **Prompt** -Natural language description used to discover relevant audiences (e.g., "high-income sports enthusiasts"). +Natural language description used to discover relevant signals (e.g., "high-income sports enthusiasts", "premium automotive content", "users in urban areas during evening hours"). **Provider** -The company or platform that supplies audience data (e.g., LiveRamp, Experian). +The company or platform that supplies signal data (e.g., LiveRamp, Experian, Peer39, weather services). ## R **Relevance Score** -Numerical rating (0-1) indicating how well an audience matches the discovery prompt. +Numerical rating (0-1) indicating how well a signal matches the discovery prompt. **Relevance Rationale** Human-readable explanation of why an audience received its relevance score. @@ -114,20 +114,20 @@ Pricing model based on a percentage of media spend rather than fixed CPM. A specific advertising account within a platform, typically representing a brand or campaign. **Segment ID** -The specific identifier used for audience activation, may differ from audience_id. +The specific identifier used for signal activation, may differ from signal_id. -**Size Unit** (Audience Protocol) -The measurement type for audience size: individuals, devices, or households. +**Size Unit** (Signals Protocol) +The measurement type for signal size: individuals, devices, or households. ## T -**Third-Party Audience** -Audience data licensed from external providers, also known as marketplace audiences. +**Third-Party Signal** +Signal data licensed from external providers, also known as marketplace signals. ## U **Usage Reporting** -Daily reporting of audience utilization for billing and optimization purposes. +Daily reporting of signal utilization for billing and optimization purposes. ## B @@ -141,7 +141,7 @@ A time-bounded advertising campaign segment, mapped to line items in ad servers. ## H -**Households** (Audience Protocol) +**Households** (Signals Protocol) Size unit representing unique household addresses, useful for geographic and family-based targeting. **Human-in-the-Loop (HITL)** (Media Buy Protocol) @@ -157,8 +157,8 @@ The basic unit of inventory in ad servers like Google Ad Manager, represented as **MCP (Model Context Protocol)** The underlying protocol framework that enables AI assistants to interact with external systems. -**Marketplace Audience** -Third-party audience available for licensing from data providers. +**Marketplace Signal** +Third-party signal available for licensing from data providers. **Media Buy** A complete advertising campaign containing packages, budget, targeting, and creative assets. @@ -200,7 +200,7 @@ Advertising inventory available for purchase, discovered through natural languag - CPM expressed as cost per 1,000 impressions - Revenue share expressed as decimal (0.15 = 15%) -**Size Reporting** (Audience Protocol) +**Size Reporting** (Signals Protocol) - Counts expressed as integers - Units clearly specified (individuals/devices/households) - Dated with "as_of" timestamp for freshness @@ -216,7 +216,7 @@ Common error codes across all AdCP implementations: - `SEGMENT_NOT_FOUND`: Invalid or expired segment ID - `ACTIVATION_FAILED`: Unable to complete activation process -- `ALREADY_ACTIVATED`: Audience already active for platform/seat +- `ALREADY_ACTIVATED`: Signal already active for platform/seat - `DEPLOYMENT_UNAUTHORIZED`: Insufficient permissions for platform/seat - `BUDGET_EXCEEDED`: Operation would exceed allocated budget - `CREATIVE_REJECTED`: Creative asset failed platform review diff --git a/docs/reference/security.md b/docs/reference/security.md index a6fa91717d..c2936330a9 100644 --- a/docs/reference/security.md +++ b/docs/reference/security.md @@ -33,16 +33,16 @@ Security best practices for implementing and using the Ad Context Protocol. ## Data Protection -### Audience Data +### Signal Data **Data Minimization**: -- Only request audience data necessary for the specific use case -- Avoid storing audience metadata longer than required +- Only request signal data necessary for the specific use case +- Avoid storing signal metadata longer than required - Implement data retention policies aligned with business needs **PII Protection**: - ACP protocols do not expose personally identifiable information -- Audience descriptions should use aggregate, non-identifying language +- Signal descriptions should use aggregate, non-identifying language - Platform providers must ensure underlying data complies with privacy regulations ### Usage Reporting @@ -75,8 +75,8 @@ Security best practices for implementing and using the Ad Context Protocol. **Parameter Sanitization**: ```typescript -// Example: Sanitize audience_spec input -function sanitizeAudienceSpec(spec: string): string { +// Example: Sanitize signal_spec input +function sanitizeSignalSpec(spec: string): string { return spec .replace(/[<>]/g, '') // Remove potential HTML .replace(/['"]/g, '') // Remove quotes @@ -114,9 +114,9 @@ function validateDeliverTo(deliverTo: any): boolean { **Rate Limit Guidelines**: ```typescript const rateLimits = { - get_audiences: 100, // requests per minute - activate_audience: 10, // requests per minute - check_audience_status: 200, // requests per minute + get_signals: 100, // requests per minute + activate_signal: 10, // requests per minute + check_signal_status: 200, // requests per minute report_usage: 50 // requests per minute }; ``` @@ -128,7 +128,7 @@ const rateLimits = { **Required Log Events**: - All authentication attempts (success and failure) - Authorization decisions and permission changes -- Audience activation and deactivation events +- Signal activation and deactivation events - Usage reporting submissions - Error conditions and exceptions diff --git a/docs/audience/overview.md b/docs/signals/overview.md similarity index 69% rename from docs/audience/overview.md rename to docs/signals/overview.md index ad7565efc1..8636322be9 100644 --- a/docs/audience/overview.md +++ b/docs/signals/overview.md @@ -3,28 +3,30 @@ sidebar_position: 1 title: Overview --- -# Audience Activation Protocol Overview +# Signals Activation Protocol Overview -The Audience Activation Protocol enables AI assistants to discover, activate, and manage marketing audiences through natural language interactions. +The Signals Activation Protocol enables AI assistants to discover, activate, and manage data signals through natural language interactions. ## Key Concepts ### Natural Language Discovery -Instead of complex filtering interfaces, describe your audience naturally: -- "High-income sports enthusiasts in major US cities" -- "People interested in sustainable fashion who shop online" -- "Small business owners looking for financial services" -- "Premium automotive content with high viewability" +Instead of complex filtering interfaces, describe your signals naturally: +- "High-income sports enthusiasts in major US cities" (audience signal) +- "People interested in sustainable fashion who shop online" (behavioral signal) +- "Small business owners looking for financial services" (B2B signal) +- "Premium automotive content with high viewability" (contextual signal) +- "Users in urban areas during evening hours" (geographical + temporal signal) +- "Weather-triggered demand patterns" (environmental signal) ### Multi-Platform Discovery -Discover audiences across multiple platforms in a single request: +Discover signals across multiple platforms in a single request: - See where segments are already deployed (SSPs, DSPs, DMPs) - Compare segment IDs across platforms - Identify which platforms require activation - Perfect for data providers like Peer39 with wide distribution ### Transparent Activation -- See which audiences are immediately available (`is_live: true`) +- See which signals are immediately available (`is_live: true`) - Know activation timeframes before committing (typically 24-48 hours) - Clear segment IDs for each platform - Account-specific vs platform-wide deployments @@ -32,7 +34,7 @@ Discover audiences across multiple platforms in a single request: ### Flexible Pricing Models - **CPM**: Traditional cost per thousand impressions - **Revenue Share**: Percentage of media spend -- **Choice**: Some audiences offer both options +- **Choice**: Some signals offer both options ### Standardized Size Reporting - **Individuals**: Unique people (best for frequency capping) @@ -41,13 +43,13 @@ Discover audiences across multiple platforms in a single request: ## The Four Essential Tools -### 1. get_audiences -Discover audiences based on your campaign needs across one or many platforms. +### 1. get_signals +Discover signals based on your campaign needs across one or many platforms. -### 2. activate_audience -Turn on audiences for specific platforms and accounts. +### 2. activate_signal +Turn on signals for specific platforms and accounts. -### 3. check_audience_status +### 3. check_signal_status Monitor activation progress and deployment status. @@ -83,9 +85,9 @@ Would you like to activate on PubMatic? Agencies often have accounts with multiple data providers, each offering both public and custom segments: ``` -Human: Find audiences for our Nike running campaign +Human: Find signals for our Nike running campaign -AI: I found relevant audiences from your data providers: +AI: I found relevant signals from your data providers: **LiveRamp (Your Omnicom catalog):** 1. Marathon Enthusiasts - Custom @@ -103,11 +105,11 @@ AI: I found relevant audiences from your data providers: ```mermaid flowchart LR - A[Describe Audience] --> B[Get Results Across Platforms] + A[Describe Signal] --> B[Get Results Across Platforms] B --> C[Review Deployments] C --> D{Already Live?} D -->|Yes| E[Launch Campaign] - D -->|No| F[Activate Audience] + D -->|No| F[Activate Signal] F --> G[Monitor Activation] G --> E E --> H[Report Usage Per Platform] @@ -115,11 +117,11 @@ flowchart LR ## Integration Flow -The Audience Activation Protocol works within the broader [AdCP Ecosystem Layers](../intro#the-adcp-ecosystem-layers): +The Signals Activation Protocol works within the broader [AdCP Ecosystem Layers](../intro#the-adcp-ecosystem-layers): -1. **Discover** audiences on audience platforms (LiveRamp, Experian, Peer39) +1. **Discover** signals on data platforms (LiveRamp, Experian, Peer39, weather APIs, location providers) 2. **Identify** where they're deployed (multiple SSPs, DSPs, DMPs) -3. **Activate** audiences for platforms where they're not yet live +3. **Activate** signals for platforms where they're not yet live 4. **Execute** campaigns on decisioning platforms using platform-specific IDs ## Example Interactions @@ -127,9 +129,9 @@ The Audience Activation Protocol works within the broader [AdCP Ecosystem Layers ### Single Platform Discovery (Traditional) ``` -Human: Find me audiences interested in premium running gear for The Trade Desk +Human: Find me audience signals interested in premium running gear for The Trade Desk -AI: I found 3 relevant audiences for The Trade Desk: +AI: I found 3 relevant signals for The Trade Desk: 1. **Endurance Athletes** - 2.5M individuals - Status: ✅ Ready to use @@ -180,4 +182,4 @@ All deployments are $2.00 CPM. Which platforms do you need? ## Next Steps - Read the full [Protocol Specification](./specification) -- See the [Audience Agent reference implementation](https://github.com/adcontextprotocol/audience-agent) \ No newline at end of file +- See the [Signals Agent reference implementation](https://github.com/adcontextprotocol/signals-agent) \ No newline at end of file diff --git a/docs/audience/specification.md b/docs/signals/specification.md similarity index 64% rename from docs/audience/specification.md rename to docs/signals/specification.md index d25aeaf78e..804afe262d 100644 --- a/docs/audience/specification.md +++ b/docs/signals/specification.md @@ -3,36 +3,37 @@ sidebar_position: 2 title: Protocol Specification --- -# Audience Activation Protocol RFC +# Signals Activation Protocol RFC **Status**: Request for Comments **Last Updated**: July 25, 2025 ## Abstract -The Audience Activation Protocol defines a standard Model Context Protocol (MCP) interface for AI-powered audience activation and management systems. This protocol enables AI assistants to help marketers discover, activate, and manage audiences through natural language interactions. +The Signals Activation Protocol defines a standard Model Context Protocol (MCP) interface for AI-powered signal discovery, activation, and management systems. This protocol enables AI assistants to help marketers discover, activate, and manage data signals (audiences, contextual, geographical, temporal, and multi-dimensional data) through natural language interactions. ## Overview -The Audience Activation Protocol provides: +The Signals Activation Protocol provides: -- Natural language audience discovery based on marketing objectives -- Multi-platform audience discovery in a single request -- Audience activation for specific platforms and accounts +- Natural language signal discovery based on marketing objectives +- Multi-platform signal discovery in a single request +- Signal activation for specific platforms and accounts - Transparent pricing with CPM and revenue share models -- Audience size reporting with unit types (individuals, devices, households) +- Signal size reporting with unit types (individuals, devices, households) +- Support for diverse signal types beyond traditional audiences ## Core Concepts ### Agent Integration -The Audience Activation Protocol operates within the broader [AdCP Ecosystem Layers](../intro#the-adcp-ecosystem-layers), enabling audience agents to directly integrate with and activate audiences on decisioning platforms (DSPs, orchestration platforms). +The Signals Activation Protocol operates within the broader [AdCP Ecosystem Layers](../intro#the-adcp-ecosystem-layers), enabling signal agents to directly integrate with and activate signals on decisioning platforms (DSPs, orchestration platforms). -**Direct Integration Model**: Audience agents contract directly with decisioning platforms, eliminating intermediary reporting and usage tracking. Once audiences are activated on a decisioning platform, all usage reporting, billing, and campaign metrics are handled directly by that platform. +**Direct Integration Model**: Signal agents contract directly with decisioning platforms, eliminating intermediary reporting and usage tracking. Once signals are activated on a decisioning platform, all usage reporting, billing, and campaign metrics are handled directly by that platform. ### Request Roles and Relationships -Every audience discovery request involves two key roles: +Every signal discovery request involves two key roles: #### Orchestrator The platform or system making the API request to the audience platform: @@ -50,8 +51,8 @@ The entity on whose behalf the request is being made: 1. **Request Flow**: Orchestrator → Audience Platform (on behalf of Principal) → Decisioning Platform 2. **Authentication**: Orchestrator authenticates with technical credentials -3. **Authorization**: Principal's identity determines available audiences and pricing -4. **Activation**: Audiences are activated for Principal's account on the decisioning platform +3. **Authorization**: Principal's identity determines available signals and pricing +4. **Activation**: Signals are activated for Principal's account on the decisioning platform 5. **Billing**: Principal is responsible for usage costs and campaign spend #### Example Scenarios @@ -59,52 +60,52 @@ The entity on whose behalf the request is being made: **Scenario 1: Marketplace Agent with Personalized Catalog (Agency)** - **Orchestrator**: Claude AI assistant (making API calls) - **Principal**: Omnicom (agency running campaign for Nike) -- **Audience Agent**: LiveRamp (marketplace agent, Omnicom has account for personalized catalog) -- **Decisioning Platform**: The Trade Desk (where audiences will be used) +- **Signal Agent**: LiveRamp (marketplace agent, Omnicom has account for personalized catalog) +- **Decisioning Platform**: The Trade Desk (where signals will be used) - **Flow**: Claude (on behalf of Omnicom) → LiveRamp (Omnicom's personalized catalog with negotiated rates and private data) → delivers to Omnicom's account on The Trade Desk **Scenario 2: Marketplace Agent with Personalized Catalog** - **Orchestrator**: Scope3 platform (connecting audiences to agents) - **Principal**: Nike (advertiser setting up their agent) -- **Audience Agent**: Experian (marketplace agent, Nike has account for personalized catalog) +- **Signal Agent**: Experian (marketplace agent, Nike has account for personalized catalog) - **Decisioning Platform**: Nike Advertising Agent (running on Scope3 platform) - **Flow**: Scope3 (on behalf of Nike) → Experian (Nike's personalized catalog with owned data and custom rates) → delivers to Nike's advertising agent (hosted by Scope3) **Scenario 3: Private Audience Agent** - **Orchestrator**: Scope3 platform (connecting audiences to agents) - **Principal**: Walmart (retailer setting up their agent) -- **Audience Agent**: Walmart (private agent, only visible to Walmart) +- **Signal Agent**: Walmart (private agent, only visible to Walmart) - **Decisioning Platform**: Walmart Advertising Agent (running on Scope3 platform) -- **Flow**: Scope3 (on behalf of Walmart) → Walmart audience agent (private, owned, no cost) → delivers to Walmart's advertising agent for workflow orchestration +- **Flow**: Scope3 (on behalf of Walmart) → Walmart signal agent (private, owned, no cost) → delivers to Walmart's advertising agent for workflow orchestration **Scenario 4: Marketplace Agent with Public Catalog** - **Orchestrator**: Claude AI assistant (making API calls) - **Principal**: Startup Brand (new advertiser with no existing accounts) -- **Audience Agent**: LiveRamp (marketplace agent, public catalog access) -- **Decisioning Platform**: The Trade Desk (where audiences will be used) +- **Signal Agent**: LiveRamp (marketplace agent, public catalog access) +- **Decisioning Platform**: The Trade Desk (where signals will be used) - **Flow**: Claude (on behalf of Startup Brand) → LiveRamp (public catalog, standard pricing) → delivers to Startup Brand's account on The Trade Desk **Scenario 5: Data Provider with Multi-Platform Deployment** - **Orchestrator**: Agency trading desk platform - **Principal**: Media Agency (looking for contextual segments) -- **Audience Agent**: Peer39 (contextual data provider) +- **Signal Agent**: Peer39 (contextual data provider) - **Decisioning Platforms**: Multiple SSPs (Index Exchange, OpenX, PubMatic) - **Flow**: Trading desk (on behalf of Agency) → Peer39 (returns same segments deployed across multiple SSPs) → Agency can activate on any/all SSPs -### Audience Agent Types +### Signal Agent Types -#### Private Audience Agents +#### Private Signal Agents Agents owned by the principal with exclusive access: -- **Examples**: Walmart's internal audience platform, retailer first-party data -- **Business Model**: No audience costs (workflow orchestration only) +- **Examples**: Walmart's internal signal platform, retailer first-party data, weather APIs, location providers +- **Business Model**: No signal costs (workflow orchestration only) - **Access**: Only visible and accessible to the owning principal - **Discovery**: Not discoverable by other principals - **Authentication**: Owner-only access, no external visibility - **Usage Reporting**: Optional (no billing, just workflow tracking) -#### Marketplace Audience Agents -External agents that license audience data with catalog-based access: -- **Examples**: LiveRamp, Experian, data providers +#### Marketplace Signal Agents +External agents that license signal data with catalog-based access: +- **Examples**: LiveRamp, Experian, Peer39, weather data providers, location intelligence providers - **Business Model**: CPM, revenue share, or licensing fees - **Usage Reporting**: Required for billing reconciliation @@ -117,7 +118,7 @@ External agents that license audience data with catalog-based access: - **Personalized Catalog**: Requires principal account with the audience agent - All platform-wide segments (same as public catalog) - - PLUS account-specific segments (custom audiences, private data) + - PLUS account-specific segments (custom signals, private data) - Mixed pricing: negotiated rates for some, standard rates for others - Account field required in requests for account-specific deployments @@ -132,55 +133,55 @@ External agents that license audience data with catalog-based access: Audience discovery involves multiple segment identifiers at different stages: -#### Audience Agent Segment ID -The identifier used by the audience agent for their internal segment tracking: +#### Signal Agent Segment ID +The identifier used by the signal agent for their internal segment tracking: - **Example**: `"polk_001382"` (Polk's segment as known to LiveRamp) -- **Usage**: Used in `get_audiences` responses and `activate_audience` requests -- **Scope**: Internal to the audience agent platform +- **Usage**: Used in `get_signals` responses and `activate_signal` requests +- **Scope**: Internal to the signal agent platform #### Decisioning Platform Segment ID The identifier assigned by the decisioning platform after activation: - **Example**: `"liveramp_polk_dallas_lexus"` (TTD's ID for the activated segment) -- **Usage**: Returned in `activate_audience` responses and used for campaign targeting +- **Usage**: Returned in `activate_signal` responses and used for campaign targeting - **Scope**: Internal to the decisioning platform - **Timing**: Only available after successful activation -- **Variability**: May differ by platform and account for the same audience +- **Variability**: May differ by platform and account for the same signal ### Agent vs Data Provider -- **Agent**: The audience platform facilitating access (e.g., LiveRamp, Experian) -- **Data Provider**: The original source of the audience data (e.g., Polk, Acxiom, Peer39) +- **Agent**: The signal platform facilitating access (e.g., LiveRamp, Experian) +- **Data Provider**: The original source of the signal data (e.g., Polk, Acxiom, Peer39, weather services, location providers) -An audience agent may host segments from multiple data providers in their marketplace. +A signal agent may host segments from multiple data providers in their marketplace. ### Coverage Percentage -Coverage percentage indicates what portion of the agent's total addressable audience this segment covers: -- **99%**: Matches nearly all identifiers the agent has (very broad audience) -- **50%**: Matches about half the agent's identifiers (medium audience) -- **1%**: Matches very few identifiers the agent has (very niche audience) +Coverage percentage indicates what portion of the agent's total addressable population this segment covers: +- **99%**: Matches nearly all identifiers the agent has (very broad signal) +- **50%**: Matches about half the agent's identifiers (medium signal) +- **1%**: Matches very few identifiers the agent has (very niche signal) -This is relative to each audience agent's capabilities - a 50% coverage audience from LiveRamp may be larger than a 99% coverage audience from a niche data provider. +This is relative to each signal agent's capabilities - a 50% coverage signal from LiveRamp may be larger than a 99% coverage signal from a niche data provider. ### Pricing Models - **CPM**: Cost per thousand impressions - **Revenue Share**: Percentage of media spend -- **Both**: Some audiences offer choice between models +- **Both**: Some signals offer choice between models - **Included**: No additional cost (e.g., with media buys) ## Protocol Specification -### get_audiences +### get_signals -Discovers relevant audiences based on a marketing specification across multiple platforms. +Discovers relevant signals based on a marketing specification across multiple platforms. #### Request **Request Example**: ```json { - "audience_spec": "Premium automotive intenders in major urban markets", + "signal_spec": "Premium automotive intenders in major urban markets", "deliver_to": { "platforms": [ { @@ -209,7 +210,7 @@ Discovers relevant audiences based on a marketing specification across multiple **All Platforms Example** (discover all available deployments): ```json { - "audience_spec": "Contextual segments for luxury automotive content", + "signal_spec": "Contextual segments for luxury automotive content", "deliver_to": { "platforms": "all", // Returns all platforms where segments are deployed "countries": ["US"] @@ -224,11 +225,11 @@ Discovers relevant audiences based on a marketing specification across multiple #### Response ```json { - "audiences": [{ - "audience_agent_segment_id": "peer39_luxury_auto", + "signals": [{ + "signal_agent_segment_id": "peer39_luxury_auto", "name": "Luxury Automotive Context", "description": "Pages with luxury automotive content and high viewability", - "audience_type": "marketplace", + "signal_type": "marketplace", "data_provider": "Peer39", "coverage_percentage": 15, "deployments": [ // Array of deployments across platforms @@ -269,15 +270,15 @@ Discovers relevant audiences based on a marketing specification across multiple } ``` -### activate_audience +### activate_signal -Activates an audience for use on a specific platform/account. +Activates a signal for use on a specific platform/account. #### Request ```json { - "audience_agent_segment_id": "peer39_luxury_auto", + "signal_agent_segment_id": "peer39_luxury_auto", "platform": "pubmatic", "account": "brand-456-pm" // Required for account-specific activation } @@ -292,15 +293,15 @@ Activates an audience for use on a specific platform/account. } ``` -### check_audience_status +### check_signal_status -Checks the deployment status of an audience on a decisioning platform. +Checks the deployment status of a signal on a decisioning platform. #### Request ```json { - "audience_agent_segment_id": "peer39_luxury_auto", + "signal_agent_segment_id": "peer39_luxury_auto", "decisioning_platform": "index-exchange", "account": "agency-123-ix" // Optional - only for account-specific segments } @@ -322,57 +323,57 @@ Checks the deployment status of an audience on a decisioning platform. 1. **Discovery**: Call `get_audiences` with multiple platforms to see all deployments at once -2. **Review**: See which platforms have segments live vs. requiring activation, compare segment IDs across platforms +2. **Review**: See which platforms have signals live vs. requiring activation, compare segment IDs across platforms 3. **Select**: Choose which platforms to use based on campaign needs and existing deployments -4. **Activate**: For any platforms where segments aren't live, call `activate_audience` +4. **Activate**: For any platforms where signals aren't live, call `activate_signal` -5. **Monitor**: Use `check_audience_status` to track activation progress +5. **Monitor**: Use `check_signal_status` to track activation progress 6. **Launch**: Run campaigns across multiple SSPs using the platform-specific segment IDs -7. **Report**: Report usage separately for each platform where the audience was used +7. **Report**: Report usage separately for each platform where the signal was used -### Marketplace Audience Agent Flow +### Marketplace Signal Agent Flow -1. **Discovery**: Call `get_audiences` multiple times to explore different audience options - response varies by authentication (public vs personalized catalog) +1. **Discovery**: Call `get_signals` multiple times to explore different signal options - response varies by authentication (public vs personalized catalog) -2. **Review**: Evaluate audience options, pricing, and `deployment.is_live` status for the specific decisioning platform +2. **Review**: Evaluate signal options, pricing, and `deployment.is_live` status for the specific decisioning platform -3. **Commit**: Principal decides to proceed with specific audiences for their media execution +3. **Commit**: Principal decides to proceed with specific signals for their media execution 4. **Activate**: For account-specific segments that aren't live, call `activate_audience` to deploy from audience agent to decisioning platform -5. **Monitor**: Use `check_audience_status` to track activation progress between agents +5. **Monitor**: Use `check_signal_status` to track activation progress between agents -6. **Launch**: Once deployed, launch the media execution (campaigns, PMPs, direct buys, etc.) on the decisioning platform +6. **Launch**: Once deployed, launch the media execution (campaigns, PMPs, direct buys, etc.) on the decisioning platform using the activated signals -### Private Audience Agent Flow +### Private Signal Agent Flow -1. **Discovery**: Call `get_audiences` on owned audience agent (Walmart), with no licensing costs +1. **Discovery**: Call `get_signals` on owned signal agent (Walmart), with no licensing costs 2. **Review**: Check `deployment.is_live` status for workflow orchestration (no pricing review needed) -3. **Commit**: Principal decides to proceed with owned audiences for their media execution +3. **Commit**: Principal decides to proceed with owned signals for their media execution 4. **Activate**: If not live, call `activate_audience` for workflow orchestration from owned agent to decisioning platform -5. **Monitor**: Use `check_audience_status` to track activation progress +5. **Monitor**: Use `check_signal_status` to track activation progress -6. **Launch**: Once deployed, launch the media execution using owned audiences +6. **Launch**: Once deployed, launch the media execution using owned signals ## Error Codes -- `AUDIENCE_AGENT_SEGMENT_NOT_FOUND`: Audience agent segment ID doesn't exist -- `ACTIVATION_FAILED`: Could not activate audience -- `ALREADY_ACTIVATED`: Audience already active +- `SIGNAL_AGENT_SEGMENT_NOT_FOUND`: Signal agent segment ID doesn't exist +- `ACTIVATION_FAILED`: Could not activate signal +- `ALREADY_ACTIVATED`: Signal already active - `DEPLOYMENT_UNAUTHORIZED`: Can't deploy to platform/account - `INVALID_PRICING_MODEL`: Pricing model not available -- `AGENT_NOT_FOUND`: Private audience agent not visible to this principal -- `AGENT_ACCESS_DENIED`: Principal not authorized for this audience agent +- `AGENT_NOT_FOUND`: Private signal agent not visible to this principal +- `AGENT_ACCESS_DENIED`: Principal not authorized for this signal agent ## Implementation Notes @@ -381,21 +382,21 @@ Checks the deployment status of an audience on a decisioning platform. Each MCP session involves two levels of identification: #### Orchestrator Authentication -The technical credentials used by the orchestrator to authenticate with the audience platform: +The technical credentials used by the orchestrator to authenticate with the signal platform: - **API Keys**: Technical access credentials for the orchestrator platform - **Session Scope**: Determines what operations the orchestrator can perform -- **Platform Permissions**: What audience platforms the orchestrator can access +- **Platform Permissions**: What signal platforms the orchestrator can access #### Principal Authorization The principal's identity determines business-level access and pricing: -- **Account Relationship**: Whether the principal has a direct relationship with the audience platform +- **Account Relationship**: Whether the principal has a direct relationship with the signal platform - **Pricing Tier**: Negotiated rates, marketplace rates, or enterprise discounts -- **Audience Access**: Private audiences, premium segments, or marketplace-only access +- **Signal Access**: Private signals, premium segments, or marketplace-only access - **Billing Account**: Where usage charges are applied #### Authentication Flow -1. **Caller** authenticates with audience agent using their credentials -2. **Audience agent** determines catalog access level based on authentication +1. **Caller** authenticates with signal agent using their credentials +2. **Signal agent** determines catalog access level based on authentication 3. **Responses** reflect the authenticated party's available options and rates ### Orchestrator Implementation Guidelines @@ -411,18 +412,18 @@ The principal's identity determines business-level access and pricing: - Personalized catalog: Principal's custom data, negotiated rates, and owned segments #### User Experience Considerations -- **Setup Flow**: Marketplace agents with public catalogs enable immediate audience discovery +- **Setup Flow**: Marketplace agents with public catalogs enable immediate signal discovery - **Account Benefits**: Principals with marketplace agent accounts get their own data plus negotiated rates -- **Privacy**: Private agents ensure data sovereignty for owned audiences +- **Privacy**: Private agents ensure data sovereignty for owned signals ### Multi-Platform Considerations #### Response Format -- All responses contain `deployments` array showing audience availability across platforms +- All responses contain `deployments` array showing signal availability across platforms - Enables efficient multi-platform discovery and activation planning #### Platform-Specific Segment IDs -- Same audience may have different segment IDs on different platforms +- Same signal may have different segment IDs on different platforms - Account-specific deployments may have different IDs than platform-wide deployments - Always use the correct `decisioning_platform_segment_id` for each platform/account combination @@ -434,12 +435,12 @@ The principal's identity determines business-level access and pricing: ### Best Practices 1. Check `is_live` status before attempting activation -2. Allow 24-48 hours for audience activation +2. Allow 24-48 hours for signal activation 3. Understand the difference between size units 4. Consider both pricing options when available -5. Use multi-platform queries when discovering audiences across SSPs +5. Use multi-platform queries when discovering signals across SSPs 6. Store platform-specific segment IDs for campaign execution ## Next Steps -- See the [Audience Agent reference implementation](https://github.com/adcontextprotocol/audience-agent) \ No newline at end of file +- See the [Signals Agent reference implementation](https://github.com/adcontextprotocol/signals-agent) \ No newline at end of file diff --git a/github-readme.md b/github-readme.md index f19588637b..009bbe2d60 100644 --- a/github-readme.md +++ b/github-readme.md @@ -9,7 +9,7 @@ Open standards enabling AI assistants to interact with advertising platforms thr ## 🚀 Overview Ad Context Protocol (AdCP) provides standardized interfaces that allow AI assistants to: -- **Discover audiences** using natural language descriptions +- **Discover signals** (audiences, contextual, geographical, temporal) using natural language descriptions - **Curate media inventory** based on campaign objectives - **Execute media buys** with full transparency and control @@ -21,17 +21,18 @@ Full documentation is available at [adcontextprotocol.org](https://adcontextprot ### Quick Links - [Getting Started](https://adcontextprotocol.org/docs/intro) -- [Audience Activation Protocol](https://adcontextprotocol.org/docs/audience) +- [Signals Activation Protocol](https://adcontextprotocol.org/docs/signals) - [Implementation Guide](https://adcontextprotocol.org/docs/implementation) - [API Reference](https://adcontextprotocol.org/docs/reference) ## 🎯 Current Protocols -### Audience Activation Protocol (RFC/v0.1) -Enable AI assistants to discover and activate audiences across any compatible platform. +### Signals Activation Protocol (RFC/v0.1) +Enable AI assistants to discover and activate data signals across any compatible platform. **Features:** -- Natural language audience search +- Natural language signal discovery (audiences, contextual, geographical, temporal) +- Multi-dimensional signal combinations - Multi-unit size reporting (individuals, devices, households) - Flexible pricing models (CPM, revenue share) - Automated activation and usage reporting @@ -55,11 +56,11 @@ Enable AI assistants to discover and activate audiences across any compatible pl 4. Get listed in our directory ```typescript -// Example: Handling audience discovery -async function getAudiences(prompt: string, platform: string) { +// Example: Handling signal discovery +async function getSignals(prompt: string, platform: string) { // Your implementation here return { - audiences: [...], + signals: [...], totalMatching: 47 }; } @@ -85,7 +86,7 @@ We welcome contributions! See our [Contributing Guide](CONTRIBUTING.md) for deta ## 🗺 Roadmap -- 🚧 **Now**: Audience Activation Protocol RFC/v0.1 +- 🚧 **Now**: Signals Activation Protocol RFC/v0.1 - 🚧 **Now**: Media Buy Protocol RFC/v0.1 - 📅 **Q2 2025**: Curation Protocol RFC - 🔮 **Q4 2025**: Advanced AI integrations @@ -124,5 +125,5 @@ Ad Context Protocol is an industry initiative supported by: Ready to make advertising AI-native?
Get StartedJoin Discussion • - Read Spec + Read Spec

\ No newline at end of file diff --git a/audience-protocol-v1.md b/signals-protocol-v1.md similarity index 82% rename from audience-protocol-v1.md rename to signals-protocol-v1.md index 74745129bd..8925ae0afc 100644 --- a/audience-protocol-v1.md +++ b/signals-protocol-v1.md @@ -1,4 +1,4 @@ -# Audience Discovery Protocol +# Signals Discovery Protocol **Version**: 1.0 **Status**: Draft @@ -6,16 +6,17 @@ ## Abstract -The Audience Discovery Protocol defines a standard Model Context Protocol (MCP) interface for AI-powered audience discovery and management systems. This protocol enables AI assistants to help marketers discover, activate, and manage audiences through natural language interactions. +The Signals Discovery Protocol defines a standard Model Context Protocol (MCP) interface for AI-powered signal discovery and management systems. This protocol enables AI assistants to help marketers discover, activate, and manage data signals (audiences, contextual, geographical, temporal, and multi-dimensional data) through natural language interactions. ## Overview -The Audience Discovery Protocol provides: +The Signals Discovery Protocol provides: -- Natural language audience discovery based on marketing objectives -- Audience activation for specific platforms and seats +- Natural language signal discovery based on marketing objectives +- Signal activation for specific platforms and seats +- Support for diverse signal types (audiences, contextual, geographical, temporal) - Transparent pricing with CPM and revenue share models -- Audience size reporting with unit types (individuals, devices, households) +- Signal size reporting with unit types (individuals, devices, households) - Usage reporting for billing reconciliation ## Core Concepts @@ -25,27 +26,30 @@ The Audience Discovery Protocol provides: The Ad Context Protocol works across two fundamental types of platforms: #### Decisioning Platforms -Platforms where audiences, targeting, and optimization happen, generating decisions such as bids, PMP creation, or buy execution: +Platforms where signals, targeting, and optimization happen, generating decisions such as bids, PMP creation, or buy execution: - **DSPs (Demand-Side Platforms)**: Where advertisers bid on inventory - **SSPs (Supply-Side Platforms)**: Where publishers offer inventory - **Ad Servers**: Where creative decisioning and serving occurs - **Injective Platforms**: Like Scope3, where campaigns are planned and executed -#### Audience Platforms -Platforms that have information about audiences (people, households, devices) and can deliver those audiences to decisioning platforms where they become transacted upon: +#### Signal Platforms +Platforms that have information about signals (audiences, contexts, locations, behaviors) and can deliver those signals to decisioning platforms where they become transacted upon: -- **Data Management Platforms (DMPs)**: Aggregate and organize audience data +- **Data Management Platforms (DMPs)**: Aggregate and organize signal data - **Customer Data Platforms (CDPs)**: Unify customer data across touchpoints -- **Data Providers**: Like LiveRamp, Experian, who license audience segments +- **Data Providers**: Like LiveRamp, Experian, Peer39, who license data signals - **Identity Resolution Services**: Link devices and identities across platforms +- **Contextual Providers**: Classify content and contexts +- **Location Intelligence**: Provide geographical and movement signals +- **Environmental Data**: Weather, events, and temporal signals ### Account Types Each MCP session is authenticated as one of: 1. **Platform Account**: A platform's master account (e.g., "Scope3's LiveRamp account") - - Can activate audiences for platform syndication + - Can activate signals for platform syndication - Sees platform-negotiated rates - Usage aggregated across platform customers diff --git a/src/pages/showcase.js b/src/pages/showcase.js index 10b870dc1b..c4e20bc082 100644 --- a/src/pages/showcase.js +++ b/src/pages/showcase.js @@ -6,10 +6,10 @@ import styles from './index.module.css'; const platforms = [ { name: 'Scope3', - description: 'Complete Audience Discovery Protocol implementation with real-time activation and reporting.', + description: 'Complete Signals Discovery Protocol implementation with real-time activation and reporting.', status: 'Live', website: 'https://scope3.com', - protocols: ['Audience Discovery v1.1'], + protocols: ['Signals Discovery v1.1'], features: ['Natural Language Search', 'Multi-Platform Activation', 'Usage Reporting'], }, { @@ -17,7 +17,7 @@ const platforms = [ description: 'Open source reference implementation for platform providers and developers.', status: 'Available', website: 'https://github.com/adcontextprotocol/reference-implementation', - protocols: ['Audience Discovery v1.1'], + protocols: ['Signals Discovery v1.1'], features: ['Complete Protocol Support', 'Test Suite Included', 'Documentation'], }, ]; @@ -25,16 +25,16 @@ const platforms = [ const comingSoon = [ { name: 'The Trade Desk', - description: 'B2B-focused audience discovery with enhanced business targeting capabilities.', + description: 'B2B-focused signal discovery with enhanced business targeting capabilities.', status: 'Coming Q1 2025', - protocols: ['Audience Discovery v1.1'], - features: ['B2B Audiences', 'Account-Based Targeting', 'Professional Demographics'], + protocols: ['Signals Discovery v1.1'], + features: ['B2B Signals', 'Account-Based Targeting', 'Professional Demographics'], }, { name: 'LiveRamp', - description: 'Identity-resolved audience activation with household and individual targeting.', + description: 'Identity-resolved signal activation with household and individual targeting.', status: 'Coming Q1 2025', - protocols: ['Audience Discovery v1.1'], + protocols: ['Signals Discovery v1.1'], features: ['Identity Resolution', 'Cross-Device Linking', 'Privacy-Safe Targeting'], }, ];