> ## Documentation Index
> Fetch the complete documentation index at: https://docs.semicola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Signals

> Record the audience, contextual and geographic segments your inventory can deliver against, starting from suggestions drawn from your catalog.

A **signal** is a named targeting segment your inventory can deliver against: an age range, a content
theme, a market. The **Signals** page lists the ones you've registered and suggests more from your
catalog.

Open it in the app, ask Semi "show me my signals", or call `open_page` with `page: "signals"`
(optionally with a `sourceId` to focus one inventory source).

<Note>
  Signals are recorded on your storefront today and count toward storefront readiness. Buyers can't
  discover or target them yet: your storefront doesn't answer AdCP `get_signals`, and signals aren't
  attached to the products buyers see.
</Note>

## The page

The table shows each signal with its **Signal** name, **Type**, **Coverage** and **Actions**, filtered
by inventory source (**All sources** by default).

| Field                    | Notes                                                                |
| ------------------------ | -------------------------------------------------------------------- |
| `name`, `description`    | What people see.                                                     |
| `signalKey`              | A stable key made from the name (or the suggestion's key).           |
| `kind`                   | `audience`, `contextual`, `geographic`, `temporal` or `first_party`. |
| `coverage`               | `available`, `stale` or `unavailable`.                               |
| `sourceId`, `sourceName` | The inventory source it comes from, if any.                          |
| `status`                 | `active` or `archived`.                                              |

### Suggested from your catalog

"Signals your products already support." Suggestions come from your own catalog and listing, each with
the evidence that produced it:

* **Age ranges** declared on a product become audience signals such as "Adults 25–54" (evidence:
  "Age range 25–54 on …").
* **Content themes** in product names and descriptions become contextual signals such as "Food &
  cooking content" or "Travel content".
* **Accepted countries** on your listing become geographic signals such as "Located in US".

## Add, archive and restore

`save_signal` does all three. Semi asks you to confirm first, and only admins can change signals.

<Tabs>
  <Tab title="From a suggestion">
    ```json theme={null}
    { "action": "create", "candidateKey": "adults_25_54" }
    ```
  </Tab>

  <Tab title="Described">
    ```json theme={null}
    {
      "action": "create",
      "name": "Weekend brunch viewers",
      "description": "Viewers of our weekend food programming.",
      "kind": "audience",
      "sourceId": "…"
    }
    ```

    `name` is 2–120 characters; `description` up to 1,000.
  </Tab>

  <Tab title="Archive or restore">
    ```json theme={null}
    { "action": "archive", "signalId": "…" }
    ```

    Use `"action": "restore"` to bring an archived signal back.
  </Tab>
</Tabs>

Each change is recorded in your storefront [Activity](/guides/audit-logs).

From an agent, `search` with `kind: "signal"` finds your signals (`query` matches the name, key,
description and kind, and `filter.status` is `active` or `archived`), and `get` with the `signalId`
reads one.

## Not available yet

* AdCP `get_signals` for buyers, and signal discovery across signals agents.
* REST endpoints for signals (`/signals`); manage them in the app or over MCP.
* Signals backed by ad-server targeting keys, access records per buyer, and signal pricing.

## Related

* [Products](/sell/products)
* [Inventory sources](/sell/inventory-sources)
