skills/adcp-signals/SKILL.md
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.
npx skillsauth add adcontextprotocol/adcp adcp-signalsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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 |
get_signals with a natural language description of targeting needsactivate_signal for signals not yet live on your platformDiscover signals based on natural language description, with deployment status across platforms.
Request:
{
"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 usedfilters (object, optional): Filter by catalog_types, data_providers, max_cpm, min_coverage_percentagemax_results (number, optional): Limit number of resultsDeployment types:
// 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_signalname, description: Human-readable signal infodata_provider: Source of the signal datacoverage_percentage: Reach relative to agent's populationdeployments: Status per platform with is_live, activation_key, estimated_activation_duration_minutespricing: CPM and currencyActivate a signal for use on a specific platform or agent.
Request:
{
"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 responsedeployments (array, required): Target deployment(s) with type, platform/agent_url, and optional accountResponse 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 completedestimated_activation_duration_minutes: Time remaining if asyncerrors: Any warnings or errors encounteredSignals can be activated on two types of targets:
DSP Platforms:
{
"type": "platform",
"platform": "the-trade-desk",
"account": "agency-123"
}
Sales Agents:
{
"type": "agent",
"agent_url": "https://wonderstruck.salesagents.com"
}
When signals are live, the response includes an activation key for targeting:
Segment ID format (typical for DSPs):
{
"type": "segment_id",
"segment_id": "ttd_segment_12345"
}
Key-Value format (typical for sales agents):
{
"type": "key_value",
"key": "audience_segment",
"value": "luxury_auto_intenders"
}
Indicates signal reach relative to the agent's population:
Signal activation may take time. Check the response:
is_live: true + activation_key: Ready to use immediatelyis_live: false + estimated_activation_duration_minutes: Activation in progressPoll or use webhooks to check completion status.
Common error codes:
SIGNAL_AGENT_SEGMENT_NOT_FOUND: Invalid signal_agent_segment_idACTIVATION_FAILED: Could not activate signalALREADY_ACTIVATED: Signal already active on targetDEPLOYMENT_UNAUTHORIZED: Not authorized for platform/accountAGENT_NOT_FOUND: Private agent not visible to this principalAGENT_ACCESS_DENIED: Not authorized for this signal agentError responses include:
{
"errors": [
{
"code": "DEPLOYMENT_UNAUTHORIZED",
"message": "Account not authorized for this data provider",
"field": "deployment.account",
"suggestion": "Contact your account manager to enable access"
}
]
}
development
Execute AdCP Media Buy Protocol operations with sales agents - discover advertising products, create and manage campaigns, sync creatives, and track delivery. Use when users want to buy advertising, create media buys, interact with ad sales agents, or test advertising APIs.
development
Execute AdCP Creative Protocol operations with creative agents - build creatives from briefs or existing assets, preview renderings, and discover format specifications. Use when users want to generate or transform ad creatives, preview how ads will look, or understand creative format requirements.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.