> ## 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.

# Publisher / seller track

> AdCP publisher track (B1-B4): build and operate a sales agent. Product catalog design, creative specs, delivery reporting, and a sales agent build project.

# Publisher / seller track (B1–B4)

<Info>
  **Members only** — Requires Basics credential (A1–A3). Four modules, \~105 minutes total.
</Info>

This track teaches you to build and operate the supply side of AdCP. You'll learn how sales agents represent publisher inventory, how buyer agents discover and evaluate your products, and how to expose delivery data and signals for measurement. The track culminates in a build project where you create a working sales agent.

Completing this track (plus A1–A3) earns the **AdCP practitioner** credential.

## Is this track for you?

AdCP gives publishers a single endpoint that AI buyer agents can use to discover your inventory, negotiate and create media buys, and pull delivery data — without a sales call, a custom API integration, or giving up your direct deal terms. One implementation; always-on access for buyers that operate autonomously.

| Your role                     | Where to start | Modules that matter most                                                      |
| ----------------------------- | -------------- | ----------------------------------------------------------------------------- |
| Ad operations / yield manager | B1, then B3    | B1 (catalog design), B3 (delivery reporting, signals)                         |
| Sales / revenue               | B1, then B2    | B1 (what buyers see), B2 (creative specs)                                     |
| Engineer / developer          | B1 through B4  | Full track — ends with building and validating a real sales agent             |
| Executive / strategist        | A1–A3 only     | Track A covers protocol and ecosystem context; skip B unless you'll implement |

Engineers and ad tech builders should do B1–B4. Anyone else can pick the modules above and skip the rest.

### What you'll build toward

* B4 is a build project: you create a working sales agent that handles real buyer queries — product discovery, media buy creation, creative specs, and delivery reporting
* The agent is validated against AdCP storyboards, not just reviewed manually
* Completing B1–B4 (plus A1–A3) earns the **AdCP practitioner** credential

***

## B1: Designing your product catalog

**\~20 min** | Prerequisite: A3

How a hosted sales agent works: product discovery, catalog integration, capability advertising. Walkthrough of designing your product catalog — including collections and installments for content-centric inventory like podcasts, CTV series, and live events — and configuring what buyers can discover about you.

### Reading list

<CardGroup cols={2}>
  <Card title="Product discovery" icon="magnifying-glass" href="/docs/media-buy/product-discovery/index">
    How buyer agents discover publisher inventory through `get_products`.
  </Card>

  <Card title="get_products task" icon="code" href="/docs/media-buy/task-reference/get_products">
    Task reference: request schema, response schema, and examples.
  </Card>

  <Card title="Media products" icon="cube" href="/docs/media-buy/product-discovery/media-products">
    How to structure products: formats, pricing, targeting, and availability.
  </Card>

  <Card title="Collections and installments" icon="tv" href="/docs/media-buy/product-discovery/collections-and-installments">
    Model content-centric inventory: podcasts, CTV series, live events, and episodic content.
  </Card>

  <Card title="sync_catalogs task" icon="rotate" href="/docs/media-buy/task-reference/sync_catalogs">
    Catalog synchronization: 13 catalog types, feed field mappings.
  </Card>

  <Card title="Capability discovery" icon="magnifying-glass" href="/docs/protocol/get_adcp_capabilities">
    How agents advertise their capabilities so other agents can discover what they offer.
  </Card>

  <Card title="Seller setup" icon="store" href="/docs/brand-protocol/seller-setup">
    How to publish seller identity, property relationships, signing keys, and publisher authorization files.
  </Card>

  <Card title="Version negotiation" icon="code-branch" href="/docs/reference/versioning#version-negotiation">
    Advertise your supported `adcp.major_versions`; reject mismatched requests with `VERSION_UNSUPPORTED`.
  </Card>

  <Card title="Authorized properties" icon="shield-check" href="/docs/governance/property/authorized-properties">
    How publishers declare and authorize their properties for agentic transactions.
  </Card>

  <Card title="Media buy lifecycle" icon="timeline" href="/docs/media-buy/specification#media-buy-state-transitions">
    The state machine sellers must honor: `pending_creatives` → `pending_start` → `active` → `paused`/`completed`.
  </Card>
</CardGroup>

### Key concepts

* **Sales agent role** — your always-on, AI-powered sales team that responds to buyer queries
* **Product catalog design** — products, formats, pricing models, targeting options, availability, and shows/episodes for content-centric inventory
* **Catalog integration** — `sync_catalogs` for product data, 13 catalog types, feed field mappings
* **Capability advertising** — `get_adcp_capabilities` so buyers know what you support
* **Seller identity setup** — publish `brand.json` for the organization operating the sales agent and `adagents.json` for publisher authorization; buyers use both to verify who operates the sales path and whether the publisher authorizes it
* **Object-presence capability principle** — capabilities are declared by the presence of an object, not by booleans. If you support a feature, include the object; if you don't, omit it. Buyers check for the object, not for `"feature": true`.
* **Version advertising** — declare `adcp.major_versions` so multi-version buyers can migrate on their own schedule; validate incoming `adcp_major_version` and return `VERSION_UNSUPPORTED` when out of range
* **Lifecycle commitments** — `create_media_buy` MAY return `pending_creatives` or `pending_start`; MUST transition `pending_start` → `active` when the flight date arrives, and notify orchestrators via webhook. Rejection is only valid from the pending states
* **Reporting declaration** — every product MUST include `reporting_capabilities` (metrics, dimensions, cadence, measurement windows). Presence of this object declares `get_media_buy_delivery` support

<Card title="Start B1 with Addie" icon="play" href="https://agenticadvertising.org/chat">
  "I'd like to start certification module B1."
</Card>

***

## B2: Creative specifications and format support

**\~20 min** | Prerequisite: B1

Deep dive on `list_creative_formats` and how buyer agents discover what your inventory accepts. Guide to structuring creative specs, handling incoming creatives, and brand compliance.

### Reading list

<CardGroup cols={2}>
  <Card title="Brief expectations" icon="file-lines" href="/docs/media-buy/product-discovery/brief-expectations">
    What buyer briefs look like and how to structure products so agents can match them.
  </Card>

  <Card title="Example briefs" icon="clipboard-list" href="/docs/media-buy/product-discovery/example-briefs">
    Real examples of product discovery queries from buyer agents.
  </Card>

  <Card title="list_creative_formats task" icon="palette" href="/docs/creative/task-reference/list_creative_formats">
    How creative format specifications work — dimensions, file types, render requirements.
  </Card>

  <Card title="Creative formats" icon="image" href="/docs/creative/formats">
    Format definitions, technical specs, and the renders structure.
  </Card>

  <Card title="Implementing standard formats" icon="ruler-combined" href="/docs/media-buy/capability-discovery/implementing-standard-formats">
    Standard format IDs and how to implement them consistently.
  </Card>

  <Card title="Product refinement" icon="filter" href="/docs/media-buy/product-discovery/refinement">
    How buyer agents refine searches and negotiate product parameters.
  </Card>
</CardGroup>

### Key concepts

* **Format declarations** — `list_creative_formats` tells buyers what you accept
* **Format vs manifest** — the format is what you accept, the manifest is what gets delivered
* **Handling incoming creatives** — `sync_creatives` and `build_creative` validation and approval
* **Brand compliance** — understanding incoming brand.json, disclosure positions

<Card title="Start B2 with Addie" icon="play" href="https://agenticadvertising.org/chat">
  "I'd like to start certification module B2."
</Card>

***

## B3: Measurement, signals, and optimization

**\~20 min** | Prerequisite: B2

How to expose delivery data, measurement signals, and optimization levers through your sales agent. Integration with measurement platforms, audience handling, and account management.

### Reading list

<CardGroup cols={2}>
  <Card title="get_media_buy_delivery task" icon="chart-line" href="/docs/media-buy/task-reference/get_media_buy_delivery">
    Delivery metrics: impressions, spend, completion rates, and performance data.
  </Card>

  <Card title="Optimization and reporting" icon="chart-mixed" href="/docs/media-buy/media-buys/optimization-reporting">
    How buyer agents use delivery data for campaign optimization.
  </Card>

  <Card title="Signals overview" icon="signal" href="/docs/signals/overview">
    The signals protocol: audience segments, contextual signals, measurement data.
  </Card>

  <Card title="Trusted Match Protocol" icon="microchip" href="/docs/trusted-match">
    How publishers support impression-time execution for buyer use cases like cross-publisher frequency capping.
  </Card>

  <Card title="TMP Router architecture" icon="diagram-project" href="/docs/trusted-match/router-architecture">
    Deployment, fan-out, and provider configuration for publishers.
  </Card>

  <Card title="get_signals task" icon="code" href="/docs/signals/tasks/get_signals">
    Signal discovery: what measurement data is available and how to expose it.
  </Card>

  <Card title="activate_signal task" icon="toggle-on" href="/docs/signals/tasks/activate_signal">
    Enabling specific measurement on a campaign.
  </Card>

  <Card title="Accounts overview" icon="building" href="/docs/accounts/overview">
    The commercial layer: advertisers, operators, authentication, and billing.
  </Card>

  <Card title="Campaign governance" icon="shield-check" href="/docs/governance/campaign">
    Seller-side governance checks: validate buyer purchases before executing them.
  </Card>

  <Card title="check_governance task" icon="clipboard-check" href="/docs/governance/campaign/tasks/check_governance">
    The governance validation task: intent checks, execution checks, statuses, and planned delivery.
  </Card>
</CardGroup>

### Key concepts

* **Delivery reporting** — accurate, timely delivery data via `get_media_buy_delivery`
* **Signals framework** — `get_signals` and `activate_signal` replace fragmented measurement vendor integrations
* **Audience handling** — `sync_audiences` for accepting buyer audience data
* **Execution integration** — publishers participate in TMP by sending Context Match requests (page content + available packages) and Identity Match requests (user token + package IDs) to the TMP Router, then joining the results locally. This enables cross-publisher frequency capping and impression-time activation without exposing user identity and page context to the buyer simultaneously. TMP is an [experimental surface](/docs/reference/experimental-status) in AdCP 3.0 (feature id `trusted_match.core`); execution and privacy details may change between 3.x releases with at least 6 weeks' notice.
* **Account management** — `sync_accounts`, `list_accounts` for managing buyer relationships
* **Seller-side governance** — when a buyer account has `governance_agents` (synced via [`sync_governance`](/docs/accounts/tasks/sync_governance)), call `check_governance` with `governance_context` + `purchase_type` + `planned_delivery` before confirming media buys
* **Planned delivery** — describe what you will actually deliver; the governance agent validates it against the buyer's plan

### Exercises

Given sample Context Match and Identity Match responses, determine which packages the publisher activates and what targeting key-values to set.

**Broadcast delivery reporting:** Given a broadcast product with `measurement_windows: [{window_id: "c3"}, {window_id: "c7"}]`, a buyer calls `get_media_buy_delivery` two days after the flight date. Describe what data is available in each window, why the `c7` window is still incomplete, and how the seller should represent delivery to avoid the buyer misreading partial data as underdelivery.

<Card title="Start B3 with Addie" icon="play" href="https://agenticadvertising.org/chat">
  "I'd like to start certification module B3."
</Card>

***

## B4: Build project — your first sales agent

**\~45 min** | Prerequisite: B3

Create a working sales agent that responds to real buyer queries. Point your AI coding assistant (Claude Code, Cursor, Copilot) at the [`build-seller-agent`](/docs/building/build-an-agent) skill file — it generates an agent validated against AdCP storyboards, with optional [`comply_test_controller`](/docs/building/implementation/comply-test-controller) scaffolding for deterministic lifecycle testing in sandbox mode. The skill tested is specifying correct AdCP behavior.

### What you'll build

* Product catalog with at least 3 products and `sync_catalogs` support, each product declaring `reporting_capabilities`
* `get_adcp_capabilities` that declares `adcp.major_versions` and validates `adcp_major_version` on incoming requests — including a truthful `capabilities.idempotency.replay_ttl_seconds` declaration
* Creative format support for at least 2 formats
* Handles `get_products`, `create_media_buy`, `list_creative_formats`, `get_media_buy_delivery`
* Account setup via `sync_accounts`
* Well-known discovery files: `brand.json` for the sales-agent operator's identity, endpoint declarations, and signing-key discovery; `adagents.json` for publisher properties and agent authorization
* Proper error responses for invalid requests — including `VERSION_UNSUPPORTED`, `GOVERNANCE_DENIED`, `TERMS_REJECTED`, `IDEMPOTENCY_CONFLICT`, and `IDEMPOTENCY_EXPIRED` where applicable
* Idempotency enforcement on every mutating request: reject missing or malformed `idempotency_key` with `INVALID_REQUEST` before touching business logic; cache only on success; scope per authenticated agent
* Lifecycle transitions: seller moves media buys through `pending_creatives` → `pending_start` → `active` and notifies via webhook on each transition

### How you'll validate

Run the `media_buy_seller` storyboard against your running agent:

```bash theme={null}
npx @adcp/sdk@latest storyboard run my-agent media_buy_seller
```

The storyboard exercises the complete buyer workflow — discovery, account sync, media buy, creatives, delivery — and validates every response. See [Validate Your Agent](/docs/building/validate-your-agent) for setup and debugging.

### Specialisms you can claim

Declare `media_buy` in `supported_protocols` and choose the specialism that matches your inventory model. Each specialism has a compliance storyboard at `/compliance/{version}/specialisms/{id}/` that verifies your claim:

* `sales-guaranteed` — guaranteed with human IO approval
* `sales-non-guaranteed` — auction-based
* `sales-proposal-mode` — **deprecated in 3.1**; use `sales-guaranteed` + `media_buy.supports_proposals: true` instead
* `sales-catalog-driven` — catalog-driven commerce with conversion tracking
* `sales-broadcast-tv` — broadcast linear TV
* `sales-social` — social platform with self-service flows

See the [Compliance Catalog](/docs/building/compliance-catalog) for the full list.

### Assessment rubric

| Dimension             | Weight | What Addie evaluates                               |
| --------------------- | ------ | -------------------------------------------------- |
| Specification quality | 20%    | Can you specify an agent in AdCP terms?            |
| Schema compliance     | 25%    | Agent responses validate against AdCP schemas      |
| Error handling        | 15%    | Handles invalid requests with proper AdCP errors   |
| Design rationale      | 20%    | Can you explain and reason about design decisions? |
| Extension ability     | 20%    | Can you extend the agent with new capabilities?    |

Passing threshold: 70%.

Any AI coding assistant is welcome (Claude, Cursor, Copilot, etc.). The skill tested is: "Can you specify correct AdCP behavior?"

<Card title="Start B4 with Addie" icon="play" href="https://agenticadvertising.org/chat">
  "I'd like to start certification module B4."
</Card>

***

## What's next

After completing B1–B4, you've earned the **AdCP practitioner** credential. From here you can pursue specialist modules:

* [S1: Media buy](/docs/learning/specialist/media-buy) — transaction flows, pricing, orchestration
* [S2: Creative](/docs/learning/specialist/creative) — asset workflows, format compliance
* [S3: Signals](/docs/learning/specialist/signals) — measurement, attribution, optimization
* [S4: Governance](/docs/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry
* [S5: Sponsored Intelligence](/docs/learning/specialist/sponsored-intelligence) — conversational brand experiences
