Execute AdCP Signals Protocol operations with signal agents - discover audience signals using natural language and activate them on DSPs or sales agents. Use when users want to find targeting data, activate audience segments, or work with signal providers.
Testing
162 Stars
25 Forks
Updated Jan 18, 2026, 10:29 PM
Why Use This
This skill provides specialized capabilities for adcontextprotocol's codebase.
Use Cases
Developing new features in the adcontextprotocol repository
Refactoring existing code to follow adcontextprotocol standards
Understanding and working with adcontextprotocol's codebase structure
---
name: adcp-signals
description: Execute AdCP Signals Protocol operations with signal agents - discover audience signals using natural language and activate them on DSPs or sales agents. Use when users want to find targeting data, activate audience segments, or work with signal providers.
---
# AdCP Signals Protocol
This skill enables you to execute the AdCP Signals Protocol with signal agents. Use the standard MCP tools (`get_signals`, `activate_signal`) exposed by the connected agent.
## Overview
The Signals Protocol provides 2 standardized tasks for discovering and activating targeting data:
| Task | Purpose | Response Time |
|------|---------|---------------|
| `get_signals` | Discover signals using natural language | ~60s |
| `activate_signal` | Activate a signal on a platform/agent | Minutes-Hours |
## Typical Workflow
1. **Discover signals**: `get_signals` with a natural language description of targeting needs
2. **Review options**: Evaluate signals by coverage, pricing, and deployment status
3. **Activate if needed**: `activate_signal` for signals not yet live on your platform
4. **Use in campaigns**: Reference the activation key in your media buy targeting
---
## Task Reference
### get_signals
Discover signals based on natural language description, with deployment status across platforms.
**Request:**
```json
{
"signal_spec": "High-income households interested in luxury goods",
"destinations": [
{
"type": "platform",
"platform": "the-trade-desk",
"account": "agency-123"
}
],
"countries": ["US"],
"filters": {
"max_cpm": 5.0,
"catalog_types": ["marketplace"]
},
"max_results": 5
}
```
**Key fields:**
- `signal_spec` (string, conditional): Natural language description of desired signals. Required unless `signal_ids` is provided.
- `destinations` (array, optional): Filter signals to those activatable on specific agents/platforms. When omitted, returns all signals available on the current agent. Each item: `type`, `platform`/`agent_url`, optional `account`.
- `countries` (array, optional): ISO 3166-1 alpha-2 country codes where signals will be used
- `filters` (object, optional): Filter by `catalog_types`, `data_providers`, `max_cpm`, `min_coverage_percentage`
- `max_results` (number, optional): Limit number of results
**Deployment types:**
```json
// DSP platform
{ "type": "platform", "platform": "the-trade-desk", "account": "agency-123" }
// Sales agent
{ "type": "agent", "agent_url": "https://salesagent.example.com" }
```
**Response contains:**
- `signals`: Array of matching signals with:
- `signal_agent_segment_id`: Use this in `activate_signal`
- `name`, `description`: Human-readable signal info
- `data_provider`: Source of the signal data
- `coverage_percentage`: Reach relative to agent's population
- `deployments`: Status per platform with `is_live`, `activation_key`, `estimated_activation_duration_minutes`
- `pricing`: CPM and currency
---
### activate_signal
Activate a signal for use on a specific platform or agent.
**Request:**
```json
{
"signal_agent_segment_id": "luxury_auto_intenders",
"deployments": [
{
"type": "platform",
"platform": "the-trade-desk",
"account": "agency-123-ttd"
}
]
}
```
**Key fields:**
- `signal_agent_segment_id` (string, required): From `get_signals` response
- `deployments` (array, required): Target deployment(s) with `type`, `platform`/`agent_url`, and optional `account`
**Response contains:**
- `deployments`: Array with activation results per target
- `activation_key`: The key to use for targeting (segment ID or key-value pair)
- `deployed_at`: ISO timestamp when activation completed
- `estimated_activation_duration_minutes`: Time remaining if async
- `errors`: Any warnings or errors encountered
---
## Key Concepts
### Deployment Targets
Signals can be activated on two types of targets:
**DSP Platforms:**
```json
{
"type": "platform",
"platform": "the-trade-desk",
"account": "agency-123"
}
```
**Sales Agents:**
```json
{
"type": "agent",
"agent_url": "https://wonderstruck.salesagents.com"
}
```
### Activation Keys
When signals are live, the response includes an activation key for targeting:
**Segment ID format (typical for DSPs):**
```json
{
"type": "segment_id",
"segment_id": "ttd_segment_12345"
}
```
**Key-Value format (typical for sales agents):**
```json
{
"type": "key_value",
"key": "audience_segment",
"value": "luxury_auto_intenders"
}
```
### Signal Types
- **marketplace**: Licensed from data providers (CPM pricing)
- **custom**: Built for specific principal accounts
- **owned**: Private signals from your own data (no cost)
### Coverage Percentage
Indicates signal reach relative to the agent's population:
- 99%: Very broad signal (matches most identifiers)
- 50%: Medium signal
- 1%: Very niche signal
### Asynchronous Operations
Signal activation may take time. Check the response:
- `is_live: true` + `activation_key`: Ready to use immediately
- `is_live: false` + `estimated_activation_duration_minutes`: Activation in progress
Poll or use webhooks to check completion status.
---
## Error Handling
Common error codes:
- `SIGNAL_AGENT_SEGMENT_NOT_FOUND`: Invalid signal_agent_segment_id
- `ACTIVATION_FAILED`: Could not activate signal
- `ALREADY_ACTIVATED`: Signal already active on target
- `DEPLOYMENT_UNAUTHORIZED`: Not authorized for platform/account
- `AGENT_NOT_FOUND`: Private agent not visible to this principal
- `AGENT_ACCESS_DENIED`: Not authorized for this signal agent
Error responses include:
```json
{
"errors": [
{
"code": "DEPLOYMENT_UNAUTHORIZED",
"message": "Account not authorized for this data provider",
"field": "deployment.account",
"suggestion": "Contact your account manager to enable access"
}
]
}
```