Signals Activation Protocol RFC
Status: Request for CommentsLast Updated: July 25, 2025
Abstract
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 Signals Activation Protocol provides:- 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
- Signal size reporting with unit types (individuals, devices, households)
- Support for diverse signal types beyond traditional audiences
Core Concepts
Agent Integration
The Signals Activation Protocol operates within the broader AdCP Ecosystem Layers, enabling signal agents to directly integrate with and activate signals on decisioning platforms (DSPs, orchestration platforms). 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 signal discovery request involves two key roles:Orchestrator
The platform or system making the API request to the signal platform:- Examples: Scope3, Claude AI assistant, trading desk platform, campaign management tool
- Responsibilities: Makes API calls, handles authentication, manages the technical interaction
- Account: Has technical credentials and API access to the signal platform
Principal
The entity on whose behalf the request is being made:- Examples: Advertiser (Nike), agency (Omnicom), brand team, media buyer
- Responsibilities: Owns the campaign objectives, budget, and business relationship
- Pricing: May have negotiated rates, contract terms, or access to private audiences
How This Works in Practice
- Request Flow: Orchestrator → Signal Platform (on behalf of Principal) → Decisioning Platform
- Authentication: Orchestrator authenticates with technical credentials
- Authorization: Principal’s identity determines available signals and pricing
- Activation: Signals are activated for Principal’s account on the decisioning platform
- Billing: Principal is responsible for usage costs and campaign spend
Example Scenarios
Scenario 1: Marketplace Agent with Personalized Catalog (Agency)- Orchestrator: Claude AI assistant (making API calls)
- Principal: Omnicom (agency running campaign for Nike)
- 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
- Orchestrator: Scope3 platform (connecting signals to agents)
- Principal: Nike (advertiser setting up their agent)
- 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)
- Orchestrator: Scope3 platform (connecting signals to agents)
- Principal: Walmart (retailer setting up their agent)
- 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 signal agent (private, owned, no cost) → delivers to Walmart’s advertising agent for workflow orchestration
- Orchestrator: Claude AI assistant (making API calls)
- Principal: Startup Brand (new advertiser with no existing accounts)
- 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
- Orchestrator: Agency trading desk platform
- Principal: Media Agency (looking for contextual segments)
- 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
Signal Agent Types
Private Signal Agents
Agents owned by the principal with exclusive access:- 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 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
- Public Catalog: Available to any orchestrator without principal registration
- Standard marketplace pricing
- Platform-wide segments only (available to all decisioning platform users)
- No account specification needed in requests
- All segments already live (
scope: "platform-wide")
- Personalized Catalog: Requires principal account with the signal agent
- All platform-wide segments (same as public catalog)
- 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
Authentication Patterns
- Private: Owner-only authentication (e.g., Walmart authenticates to their own agent)
- Marketplace: Orchestrator authentication determines catalog access level
- Public catalog: Orchestrator credentials sufficient
- Personalized catalog: Requires principal account with signal agent
Segment ID Structure
Signal discovery involves multiple segment identifiers at different stages: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_signalsresponses andactivate_signalrequests - 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_signalresponses 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 signal
Agent vs Data Provider
- 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)
Coverage Percentage
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)
Pricing Models
- CPM: Cost per thousand impressions
- Revenue Share: Percentage of media spend
- Both: Some signals offer choice between models
- Included: No additional cost (e.g., with media buys)
Tasks
The Signals Activation Protocol defines the following tasks that agents can perform:get_signals
Discover relevant signals based on a marketing specification across multiple platforms. This task enables natural language search for audiences, contextual signals, and other targeting data.activate_signal
Activate a signal for use on a specific platform/account. This task handles the entire activation lifecycle, including initiating the request, monitoring progress, and returning the final deployment status.Typical Flow
Data Provider Multi-Platform Flow (e.g., Peer39)
-
Discovery: Call
get_signalswith multiple platforms to see all deployments at once - Review: See which platforms have signals live vs. requiring activation, compare segment IDs across platforms
- Select: Choose which platforms to use based on campaign needs and existing deployments
-
Activate: For any platforms where signals aren’t live, call
activate_signal - Launch: Run campaigns across multiple SSPs using the platform-specific segment IDs
- Report: Report usage separately for each platform where the signal was used
Marketplace Signal Agent Flow
-
Discovery: Call
get_signalsmultiple times to explore different signal options - response varies by authentication (public vs personalized catalog) -
Review: Evaluate signal options, pricing, and
deployment.is_livestatus for the specific decisioning platform - Commit: Principal decides to proceed with specific signals for their media execution
-
Activate: For account-specific segments that aren’t live, call
activate_signalto deploy from signal agent to decisioning platform (the task handles monitoring progress automatically) - Launch: Once deployed, launch the media execution (campaigns, PMPs, direct buys, etc.) on the decisioning platform using the activated signals
Private Signal Agent Flow
-
Discovery: Call
get_signalson owned signal agent (Walmart), with no licensing costs -
Review: Check
deployment.is_livestatus for workflow orchestration (no pricing review needed) - Commit: Principal decides to proceed with owned signals for their media execution
-
Activate: If not live, call
activate_signalfor workflow orchestration from owned agent to decisioning platform (the task handles monitoring progress automatically) - Launch: Once deployed, launch the media execution using owned signals
Error Codes
SIGNAL_AGENT_SEGMENT_NOT_FOUND: Signal agent segment ID doesn’t existACTIVATION_FAILED: Could not activate signalALREADY_ACTIVATED: Signal already activeDEPLOYMENT_UNAUTHORIZED: Can’t deploy to platform/accountINVALID_PRICING_MODEL: Pricing model not availableAGENT_NOT_FOUND: Private signal agent not visible to this principalAGENT_ACCESS_DENIED: Principal not authorized for this signal agent
Error Handling
For comprehensive error handling guidance including pending vs error states, response patterns, and recovery strategies, see Protocol Error Handling. Signal-specific error codes are documented in each task specification and the Error Codes Reference.Response Structure
All AdCP Signals responses follow a consistent structure across both MCP and A2A protocols:Core Response Fields
- message: Human-readable summary of the operation result
- context_id: Session continuity identifier for follow-up requests
- data: Task-specific payload (varies by task)
Protocol Transport
- MCP: Returns complete response as flat JSON object
- A2A: Returns as structured artifacts with message in text part, data in data part
- Data Consistency: Both protocols contain identical AdCP data structures and version information
Asynchronous Operations
Some operations (like signal activation) are asynchronous and include:- task_id: Unique identifier for tracking operation progress
- status: Current operation status (pending, processing, deployed, failed)
- estimated_duration: Time estimates for pending operations
Implementation Notes
Authentication
Each MCP session involves two levels of identification:Orchestrator Authentication
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 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 signal platform
- Pricing Tier: Negotiated rates, marketplace rates, or enterprise discounts
- Signal Access: Private signals, premium segments, or marketplace-only access
- Billing Account: Where usage charges are applied
Authentication Flow
- Caller authenticates with signal agent using their credentials
- Signal agent determines catalog access level based on authentication
- Responses reflect the authenticated party’s available options and rates
Orchestrator Implementation Guidelines
Agent Discovery and Access
- Private Agents: Only show to owning principal (e.g., only show Walmart’s agent to Walmart)
- Marketplace Agents: Always discoverable, but catalog access varies by principal account status
Error Handling by Agent Type
- Private: Return
AGENT_NOT_FOUNDfor non-owners - Marketplace: Always allow requests but return appropriate catalog level
- Public catalog: Generic marketplace offerings with standard pricing
- Personalized catalog: Principal’s custom data, negotiated rates, and owned segments
User Experience Considerations
- 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 signals
Multi-Platform Considerations
Response Format
- All responses contain
deploymentsarray showing signal availability across platforms - Enables efficient multi-platform discovery and activation planning
Platform-Specific Segment IDs
- 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_idfor each platform/account combination
Efficient Discovery
- Data providers like Peer39 can return all their deployments in one response
- Reduces API calls from N (one per platform) to 1
- Particularly valuable for contextual data providers with wide SSP distribution
Best Practices
- Status Checking: Always check
is_livestatus before attempting activation - Activation Timing: Allow appropriate time for signal activation (typically 1-2 hours, up to 24-48 hours for complex deployments)
- Size Understanding: Understand the difference between individuals, devices, and households in coverage metrics
- Pricing Flexibility: Consider both CPM and revenue share pricing options when available
- Multi-Platform Efficiency: Use multi-platform queries when discovering signals across data providers to reduce API calls
- Campaign Integration: Store platform-specific segment IDs for use in campaign targeting
- Asynchronous Handling: Implement proper task monitoring for activation operations using task_id tracking
- Context Continuity: Use context_id for session management across related signal operations