Ad Context Protocol (AdCP)
The Ad Context Protocol (AdCP) is an open standard that enables AI agents to automate advertising workflows — discovering inventory, activating audiences, managing campaigns, and more — using a shared protocol that works across platforms.
AdCP defines structured tasks across eight domains: Accounts, Media Buy, Creative, Signals, Governance, Sponsored Intelligence, Brand Protocol, and Registry.
Classify implements the Signals domain, accessible via MCP (Model Context Protocol) transport — meaning any MCP-compatible AI assistant can connect to Classify's Signals Agent directly.
Classify as a Signals Agent
Classify operates as a Marketplace Signal Agent within the AdCP ecosystem. When an AI agent — whether it's embedded in a DSP, an agency planning tool, or a standalone assistant — needs contextual targeting segments, it can query Classify's Signals Agent to discover and activate them.
Classify offers two catalog types:
| Catalog | Description |
|---|---|
| Public | Pre-built IAB and seasonal segments available across open marketplaces |
| Personalized | Custom segments built for specific clients using Classify's segment creation capabilities |
Supported tasks
| Task | Status | Description |
|---|---|---|
get_signals | Available | Discover segments matching a natural language campaign brief |
activate_signal | Available | Activate a discovered segment for use in a campaign |
How it works
- An AI agent describes what it needs — using natural language (e.g., "contextual segments for electric vehicle enthusiasts")
- Classify searches its catalog — matching against public and personalized segments using the description and any filters provided
- Classify returns matching signals — each with a name, description, deployment status across DSP platforms, and pricing
- The agent activates a signal — Classify pushes a Deal ID to the target platform so the buyer can use it in their campaign
get_signals
Discover signals matching campaign criteria. The agent sends a natural language description of the targeting it needs, along with where the signals should be deployable.
Request
{
"signal_spec": "Contextual segments for electric vehicle enthusiasts, including EV reviews, charging infrastructure, and battery technology",
"deliver_to": {
"deployments": [
{
"platform": "the-trade-desk",
"account": "buyer-seat-abc123"
}
]
},
"max_results": 5
}
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
signal_spec | string | Required | Natural language description of the desired targeting signals |
deliver_to | object | Required | Where the signals need to be activated |
deliver_to.deployments | array[object] | Required | List of DSP platforms and accounts to check availability against |
deliver_to.deployments[].platform | string | Required | Platform identifier (e.g. "the-trade-desk", "amazon-dsp", "google-dv360") |
deliver_to.deployments[].account | string | Required | Buyer seat or account ID on the platform |
deliver_to.countries | array[string] | Optional | ISO 3166-1 alpha-2 country codes for geo targeting |
max_results | number | Optional | Maximum number of signals to return |
filters | object | Optional | Additional filters to refine results |
filters.max_cpm | number | Optional | Maximum CPM price filter |
filters.catalog_types | array[string] | Optional | Filter by catalog type: "marketplace", "custom", "owned" |
Response
{
"message": "Found 3 contextual segments matching your electric vehicle criteria, available on The Trade Desk.",
"context_id": "ctx-a1b2c3d4",
"adcp_version": "1.0.0",
"signals": [
{
"signal_agent_segment_id": "clsfy-seg-1042",
"name": "Electric Vehicles & EV Technology",
"description": "Pages covering electric vehicle reviews, EV market trends, battery technology, charging infrastructure, and the transition from internal combustion engines. Includes automotive publications, technology outlets, and energy industry content.",
"signal_type": "marketplace",
"data_provider": "Classify",
"coverage_percentage": 2.4,
"deployments": [
{
"platform": "the-trade-desk",
"account": "buyer-seat-abc123",
"is_live": true,
"scope": "platform",
"decisioning_platform_segment_id": "ttd-ctx-1042",
"estimated_activation_duration_minutes": 0
}
],
"pricing": {
"cpm": 1.50,
"currency": "USD"
}
},
{
"signal_agent_segment_id": "clsfy-seg-2187",
"name": "Sustainable Transportation",
"description": "Broader sustainability-focused content including electric vehicles, public transit innovation, cycling infrastructure, and urban mobility. Reaches readers interested in reducing transportation emissions.",
"signal_type": "marketplace",
"data_provider": "Classify",
"coverage_percentage": 3.1,
"deployments": [
{
"platform": "the-trade-desk",
"account": "buyer-seat-abc123",
"is_live": true,
"scope": "platform",
"decisioning_platform_segment_id": "ttd-ctx-2187",
"estimated_activation_duration_minutes": 0
}
],
"pricing": {
"cpm": 1.50,
"currency": "USD"
}
},
{
"signal_agent_segment_id": "clsfy-seg-3305",
"name": "EV Charging & Infrastructure",
"description": "Focused on EV charging networks, home charging solutions, fast charging technology, and government incentives for charging infrastructure buildout.",
"signal_type": "custom",
"data_provider": "Classify",
"coverage_percentage": 0.8,
"deployments": [
{
"platform": "the-trade-desk",
"account": "buyer-seat-abc123",
"is_live": false,
"scope": "account",
"decisioning_platform_segment_id": null,
"estimated_activation_duration_minutes": 120
}
],
"pricing": {
"cpm": 2.00,
"currency": "USD"
}
}
]
}
Response fields
| Field | Type | Description |
|---|---|---|
message | string | Human-readable summary of the results |
context_id | string | Session identifier for follow-up requests |
adcp_version | string | AdCP specification version |
signals | array[object] | Matching signals (see below) |
Signal object
| Field | Type | Description |
|---|---|---|
signal_agent_segment_id | string | Classify's unique identifier for this signal |
name | string | Human-readable segment name |
description | string | Detailed description of what the segment targets |
signal_type | string | "marketplace" (public IAB/seasonal), "custom" (Classify-built), or "owned" (client-specific) |
data_provider | string | Always "Classify" |
coverage_percentage | number | Estimated audience coverage as a percentage |
deployments | array[object] | Deployment status per requested platform |
pricing | object | cpm (number) and currency (string, e.g. "USD") |
Deployment object
| Field | Type | Description |
|---|---|---|
platform | string | DSP platform identifier |
account | string | Buyer account on that platform |
is_live | boolean | Whether the signal is currently active and targetable |
scope | string | "platform" (available platform-wide) or "account" (specific to this buyer) |
decisioning_platform_segment_id | string | null | The platform's segment ID for targeting. null if not yet activated. |
estimated_activation_duration_minutes | number | Minutes until the signal is live. 0 if already active. |
activate_signal
Once you've discovered a signal via get_signals, use activate_signal to make it targetable on a specific platform. Activation creates a Deal ID that the buyer can target in their DSP.
Request
{
"signal_agent_segment_id": "clsfy-seg-3305",
"deliver_to": {
"deployments": [
{
"platform": "the-trade-desk",
"account": "buyer-seat-abc123"
}
]
}
}
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
signal_agent_segment_id | string | Required | The signal ID returned by get_signals |
deliver_to | object | Required | Deployment target (same structure as get_signals) |
deliver_to.deployments | array[object] | Required | Platform and account to activate on |
Response
{
"message": "Signal 'EV Charging & Infrastructure' is being activated on The Trade Desk for account buyer-seat-abc123.",
"context_id": "ctx-a1b2c3d4",
"adcp_version": "1.0.0",
"activation": {
"signal_agent_segment_id": "clsfy-seg-3305",
"deal_id": "classify-ttd-3305-x7k9m",
"platform": "the-trade-desk",
"account": "buyer-seat-abc123",
"status": "activating",
"estimated_activation_duration_minutes": 120
}
}
Once active, the deal_id can be used directly in the buyer's DSP campaign setup as a targeting parameter.
If you prefer to activate segments via a traditional API rather than through AdCP, see the Segment Activation API for the REST endpoint.
Signal types
| Type | Description |
|---|---|
marketplace | Pre-built segments available in open marketplaces — IAB content categories, seasonal segments, and other broadly applicable targeting |
custom | Custom segments built by Classify based on specific targeting criteria — prompts, seed URLs, or topic descriptions |
owned | Segments the client created directly via the Segment Creation API — they own these segments, as opposed to pre-built marketplace or custom-built segments |
Connecting to Classify's Signals Agent
Classify's AdCP endpoint is accessible to any AI agent or platform that supports the Ad Context Protocol. To connect:
- Obtain an API key — contact Classify or sign up at clsfy.me
- Configure your AdCP client to point at Classify's Signals Agent endpoint
- Send
get_signalsrequests using your API key for authentication
For details on the full Ad Context Protocol specification, see the official AdCP documentation.