Learn-skills.dev adcp-signals
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.
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/adcontextprotocol/adcp/adcp-signals" ~/.claude/skills/neversight-learn-skills-dev-adcp-signals && rm -rf "$T"
data/skills-md/adcontextprotocol/adcp/adcp-signals/SKILL.mdAdCP 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 |
|---|---|---|
| Discover signals using natural language | ~60s |
| Activate a signal on a platform/agent | Minutes-Hours |
Typical Workflow
- Discover signals:
with a natural language description of targeting needsget_signals - Review options: Evaluate signals by coverage, pricing, and deployment status
- Activate if needed:
for signals not yet live on your platformactivate_signal - 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:
{ "signal_spec": "High-income households interested in luxury goods", "deliver_to": { "deployments": [ { "type": "platform", "platform": "the-trade-desk", "account": "agency-123" } ], "countries": ["US"] }, "filters": { "max_cpm": 5.0, "catalog_types": ["marketplace"] }, "max_results": 5 }
Key fields:
(string, required): Natural language description of desired signalssignal_spec
(object, required): Where signals will be useddeliver_to
(array): Target platforms/agents withdeployments
,type
/platform
, and optionalagent_urlaccount
(array): ISO country codes where signals will be usedcountries
(object, optional): Filter byfilters
,catalog_types
,data_providers
,max_cpmmin_coverage_percentage
(number, optional): Limit number of resultsmax_results
Deployment types:
// DSP platform { "type": "platform", "platform": "the-trade-desk", "account": "agency-123" } // Sales agent { "type": "agent", "agent_url": "https://salesagent.example.com" }
Response contains:
: Array of matching signals with:signals
: Use this insignal_agent_segment_idactivate_signal
,name
: Human-readable signal infodescription
: Source of the signal datadata_provider
: Reach relative to agent's populationcoverage_percentage
: Status per platform withdeployments
,is_live
,activation_keyestimated_activation_duration_minutes
: CPM and currencypricing
activate_signal
Activate 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:
(string, required): Fromsignal_agent_segment_id
responseget_signals
(array, required): Target deployment(s) withdeployments
,type
/platform
, and optionalagent_urlaccount
Response contains:
: Array with activation results per targetdeployments
: The key to use for targeting (segment ID or key-value pair)activation_key
: ISO timestamp when activation completeddeployed_at
: Time remaining if asyncestimated_activation_duration_minutes
: Any warnings or errors encounterederrors
Key Concepts
Deployment Targets
Signals 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" }
Activation Keys
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" }
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
: Ready to use immediatelyactivation_key
+is_live: false
: Activation in progressestimated_activation_duration_minutes
Poll or use webhooks to check completion status.
Error Handling
Common error codes:
: Invalid signal_agent_segment_idSIGNAL_AGENT_SEGMENT_NOT_FOUND
: Could not activate signalACTIVATION_FAILED
: Signal already active on targetALREADY_ACTIVATED
: Not authorized for platform/accountDEPLOYMENT_UNAUTHORIZED
: Private agent not visible to this principalAGENT_NOT_FOUND
: Not authorized for this signal agentAGENT_ACCESS_DENIED
Error 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" } ] }