get_signals
Task: Discover signals based on description, with details about where they are deployed. Response Time: ~60 seconds (inference/RAG with back-end systems) Request Schema:https://adcontextprotocol.org/schemas/v1/signals/get-signals-request.json
Response Schema: https://adcontextprotocol.org/schemas/v1/signals/get-signals-response.json
The get_signals task returns both signal metadata and real-time deployment status across platforms, allowing agents to understand availability and guide the activation process.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
signal_spec | string | Yes | Natural language description of the desired signals |
deliver_to | DeliverTo | Yes | Destination platforms where signals need to be activated (see Deliver To Object below) |
filters | Filters | No | Filters to refine results (see Filters Object below) |
max_results | number | No | Maximum number of results to return |
Deliver To Object
| Parameter | Type | Required | Description |
|---|---|---|---|
destinations | Destination[] | Yes | List of destination platforms (DSPs, sales agents, etc.) - see Destination Object below |
countries | string[] | Yes | Countries where signals will be used (ISO codes) |
Destination Object
Each destination uses atype field to discriminate between platform-based and agent-based destinations:
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Discriminator: “platform” for DSPs, “agent” for sales agents |
platform | string | Conditional* | Platform identifier (e.g., ‘the-trade-desk’, ‘amazon-dsp’). Required when type=“platform” |
agent_url | string (URI) | Conditional* | URL identifying the sales agent. Required when type=“agent” |
account | string | No | Account identifier on the platform or agent |
platform is required when type="platform", agent_url is required when type="agent".
Activation Keys: If the authenticated caller has access to any of the destinations in the request, the signal agent will include activation_key fields in the response for those destinations (when is_live: true).
Permission Model: The signal agent determines key inclusion based on the caller’s authentication and authorization. For example:
- A sales agent receives keys for destinations matching its
agent_url - A buyer with credentials for multiple DSP platforms receives keys for all those platforms
- Access is determined by the signal agent’s permission system, not by flags in the request
Filters Object
| Parameter | Type | Required | Description |
|---|---|---|---|
catalog_types | string[] | No | Filter by catalog type (“marketplace”, “custom”, “owned”) |
data_providers | string[] | No | Filter by specific data providers |
max_cpm | number | No | Maximum CPM price filter |
min_coverage_percentage | number | No | Minimum coverage requirement |
Response Structure
All AdCP responses include:- message: Human-readable summary of the operation result
- context_id: Session continuity identifier for follow-up requests
- data: Task-specific payload (see Response Data below)
- MCP: Returns complete response as flat JSON
- A2A: Returns as artifacts with message in text part, data in data part
Response Data
Field Descriptions
- signals: Array of matching signals
- signal_agent_segment_id: Unique identifier for the signal
- name: Human-readable signal name
- description: Detailed signal description
- signal_type: Type of signal (marketplace, custom, owned)
- data_provider: Name of the data provider
- coverage_percentage: Percentage of audience coverage
- deployments: Array of destination deployments
- agent_url: URL identifying the destination agent
- account: Account identifier if applicable
- is_live: Whether signal is currently active on this destination
- activation_key: The key to use for targeting (see Activation Key below). Only present if
is_live=trueAND this destination hasrequester=truein the request. - estimated_activation_duration_minutes: Time to activate if not live
- pricing: Pricing information
- cpm: Cost per thousand impressions
- currency: Currency code
Activation Key Object
The activation key represents how to use the signal on a destination platform. It can be either a segment ID or a key-value pair: Segment ID format:Protocol-Specific Examples
The AdCP payload is identical across protocols. Only the request/response wrapper differs.MCP Request - Sales Agent Requesting Signals
A sales agent querying for signals. Because the authenticated caller is wonderstruck.salesagents.com, the signal agent will include activation keys in the response:MCP Response - With Activation Key
Because the authenticated caller matches the destination, the response includes the activation key:MCP Request - Buyer Querying Multiple DSP Platforms
A buyer checking availability across multiple DSP platforms:MCP Response - Buyer With Multi-Platform Access
A buyer with credentials for both The Trade Desk and Amazon DSP receives keys for both platforms:A2A Request
Natural Language Invocation
Explicit Skill Invocation
A2A Response
A2A returns results as artifacts with the same data structure:Protocol Transport
- MCP: Direct tool call with arguments, returns complete response as flat JSON
- A2A: Skill invocation with input, returns structured artifacts with message and data separated
- Data Consistency: Both protocols contain identical AdCP data structures and version information
Scenarios
All Platforms Discovery
Discover all available deployments across platforms:Response
Message: “Found luxury automotive contextual segment from Peer39 with 15% coverage. Live on Index Exchange and OpenX, pending activation on Pubmatic.” Payload:Response Fields
- context_id (string): Context identifier for session persistence
- signals (array): Array of matching signals
- signal_agent_segment_id (string): Universal identifier for the signal
- name (string): Human-readable signal name
- description (string): Detailed signal description
- signal_type (string): Type of signal (marketplace, custom, owned)
- data_provider (string): Provider of the signal data
- coverage_percentage (number): Estimated reach percentage
- deployments (array): Platform-specific deployment information
- platform (string): Target platform name
- account (string, nullable): Specific account if account-specific
- is_live (boolean): Whether signal is currently active
- scope (string): “platform-wide” or “account-specific”
- decisioning_platform_segment_id (string): Platform-specific ID to use
- estimated_activation_duration_minutes (number, optional): Time to activate if not live
- pricing (object): Pricing information
- cpm (number): Cost per thousand impressions
- currency (string): Currency code
Error Codes
Discovery Errors
SIGNAL_AGENT_SEGMENT_NOT_FOUND: Signal agent segment ID doesn’t existAGENT_NOT_FOUND: Private signal agent not visible to this principalAGENT_ACCESS_DENIED: Principal not authorized for this signal agent
Discovery Warnings
PRICING_UNAVAILABLE: Pricing data temporarily unavailable for one or more platformsPARTIAL_COVERAGE: Some requested platforms don’t support this signal typeSTALE_DATA: Some signal metadata may be outdated due to provider refresh delays
Usage Notes
- Authentication-Based Keys: Activation keys are only returned when the authenticated caller matches one of the destinations
- Permission Security: The signal agent determines key inclusion based on caller identity, not request flags
- Deployment Status: Check
is_liveto determine if activation is needed - Multiple Destinations: Query multiple destinations to check availability across platforms
- Activation Required: If
is_liveis false, use theactivate_signaltask - The message field provides a quick summary of the most relevant findings
Response - Multiple Signals Found
Response - Partial Success with Warnings
Response - No Signals Found
Implementation Guide
Generating Signal Messages
Themessage field should provide actionable insights: