> ## Documentation Index
> Fetch the complete documentation index at: https://agenticadvertisingorg-snap-format-preview-links.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Key concepts

> AdCP signal types (binary, categorical, numeric), signal references, discovery via get_signals, activation via activate_signal, and authorization through adagents.json.

# Key concepts

The Signals Protocol enables AI agents to discover, activate, and manage data signals for advertising campaigns. Signals represent targetable audiences, contextual categories, geographic regions, and other data attributes.

## What are signals?

Signals are data segments used for targeting or measurement in advertising campaigns:

* **Audience signals**: User segments based on demographics, interests, or behaviors
* **Contextual signals**: Content categories or page contexts
* **Geographic signals**: Location-based targeting data
* **Temporal signals**: Time-based targeting patterns
* **Multi-dimensional signals**: Combined or custom signal types

## Signal value types

Every signal has a `value_type` that determines how buyers construct targeting expressions:

### Binary

User either matches or doesn't. The most common type.

```json theme={null}
{
  "id": "likely_ev_buyers",
  "name": "Likely EV Buyers",
  "value_type": "binary",
  "tags": ["automotive", "purchase_intent"]
}
```

**Targeting**: Include or exclude users matching this signal.

### Categorical

User has one of several possible values.

```json theme={null}
{
  "id": "vehicle_ownership",
  "name": "Current Vehicle Ownership",
  "value_type": "categorical",
  "allowed_values": ["luxury_ev", "luxury_non_ev", "mid_range", "economy", "none"]
}
```

**Targeting**: Target users with specific values (e.g., "users who own a luxury EV or luxury non-EV").

### Numeric

User has a score or measurement within a range.

```json theme={null}
{
  "id": "purchase_propensity",
  "name": "Auto Purchase Propensity",
  "value_type": "numeric",
  "range": { "min": 0, "max": 1, "unit": "score" }
}
```

**Targeting**: Target users within a value range (e.g., "propensity score > 0.7").

## Signal references

Signals use `signal_ref.scope` as the identity discriminator:

| Scope           | Fields                               | Verification                                                           |
| --------------- | ------------------------------------ | ---------------------------------------------------------------------- |
| `data_provider` | `data_provider_domain` + `signal_id` | Verifiable via the publisher domain's adagents.json `signals[]`        |
| `signal_source` | `signal_source_url` + `signal_id`    | Trust-based — buyer trusts the issuing signal source                   |
| `product`       | `signal_id`                          | Product-local; meaningful only in the selected product/package context |

**Data-provider signals** come from external data providers who publish their offerings at `/.well-known/adagents.json`. Buyers can independently verify that a seller or signal source is authorized to resell them.

**Signal-source signals** are proprietary to a signal source and use `scope: "signal_source"` with that source's `signal_source_url` when they are not published in adagents.json `signals[]`.

The legacy `signal_id.source` object is deprecated. New `get_signals`, product targeting, and buy-time references use `signal_ref`.

## Task schemas

| Task                                                     | Purpose                                                                                           |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [`get_signals`](/docs/signals/tasks/get_signals)         | Discover signals matching campaign criteria; required for every signals agent                     |
| [`activate_signal`](/docs/signals/tasks/activate_signal) | Activate a marketplace signal for use in campaigns; required for `signal_marketplace` conformance |

Every conformant Signals Protocol agent supports `get_signals`. Activation is a
separate obligation for agents that claim marketplace activation support,
advertise activation/deactivation, or return signals that require buyer-managed
activation. Discovery-only owned-signal agents can conform to the baseline
without exposing `activate_signal`.

### Discovery with get\_signals

Buyers describe what they need in natural language. The signal agent searches across its authorized data-provider signals and its own proprietary signals:

```json theme={null}
{
  "tool": "get_signals",
  "arguments": {
    "signal_spec": "In-market auto buyers with high purchase propensity"
  }
}
```

The response includes matching signals with pricing, size estimates, and value type metadata — everything a buyer agent needs to make a targeting decision.

### Activation with activate\_signal

Once a buyer selects a marketplace signal, they activate it on their DSP or data platform:

```json theme={null}
{
  "tool": "activate_signal",
  "arguments": {
    "signal_agent_segment_id": "trident_likely_ev_buyers",
    "pricing_option_id": "po_trident_ev_cpm",
    "destinations": [
      {
        "type": "platform",
        "platform": "the-trade-desk",
        "account": "agency-seat-123"
      }
    ]
  }
}
```

The signal agent pushes segment membership to the specified platform. The buyer's campaign can then target against it using the platform's standard tools.

## Agent integration

The Signals Protocol operates within the broader [AdCP ecosystem](/docs/intro#the-adcp-ecosystem-layers). Signal agents integrate directly with decisioning platforms (DSPs, orchestration platforms), eliminating intermediary reporting and usage tracking. Signal agents advertise their available data providers via [`get_adcp_capabilities`](/docs/protocol/get_adcp_capabilities).

Once signals are activated on a platform, all usage reporting, billing, and campaign metrics are handled directly by that platform.

## Authorization and trust

Data providers control who can resell their signals via the `authorized_agents` array in their `adagents.json`. Two patterns:

* **Signal IDs**: Authorize specific local `signals[].id` values in the data provider's catalog — fine-grained control
* **Signal tags**: Authorize all signals with certain tags — scales as catalogs grow

Buyers can verify authorization by fetching the data provider's `adagents.json` and checking whether the seller or signal source appears in `authorized_agents`.

## Go deeper

* [Data provider guide](/docs/signals/data-providers) — how to publish signal definitions
* [Signals ecosystem](/docs/signals/ecosystem) — how each type of company participates
* [Protocol specification](/docs/signals/specification) — formal conformance requirements
* [get\_signals task reference](/docs/signals/tasks/get_signals) — discovery API details
* [activate\_signal task reference](/docs/signals/tasks/activate_signal) — activation API details
