You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: remove single-option hedging from creative pricing
Creative vendors offer multiple pricing options per creative: volume tiers,
context-specific rates (premium vs standard), different models per product
line (CPM for rich media, per-unit for social variants). Updated all docs,
schemas, and training to reflect this rather than hedging with "typically
a single option."
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/creative/specification.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -192,7 +192,7 @@ Creative agents that charge for their services expose pricing through the same d
192
192
### Pricing flow
193
193
194
194
1.**Account setup** — rate card agreed. Determines pricing for all subsequent operations.
195
-
2.**Discovery** — `list_creatives` with `account` and `include_pricing: true` returns `pricing_options[]` on each creative. For creative agents with predetermined rate cards, this typically contains a single option. The pattern is the same as signals (`get_signals` returns `pricing_options[]`) and content standards.
195
+
2.**Discovery** — `list_creatives` with `account` and `include_pricing: true` returns `pricing_options[]` on each creative. Vendors may offer multiple options (volume tiers, context-specific rates, different models per product line). Same pattern as signals and content standards.
196
196
3.**Build** — `build_creative` with `account`. The agent computes the cost and returns `pricing_option_id`, `vendor_cost`, `currency`, and `consumption` in the response.
197
197
4.**Report** — `report_usage` with `creative_id` and `pricing_option_id` for reconciliation.
198
198
@@ -294,7 +294,7 @@ Browse and filter creative assets in a creative library. Implemented by any agen
294
294
- Agents SHOULD support filtering by `concept_ids` and `format_ids` when the platform organizes creatives into concepts
295
295
- Agents MAY include dynamic content variable definitions when `include_variables=true`
296
296
- Agents MAY include a lightweight delivery snapshot when `include_snapshot=true`. The snapshot provides lifetime impressions and last-served date for operational use — detailed analytics belong in `get_creative_delivery`.
297
-
- When `account` and `include_pricing=true` are provided, agents that charge MUST include `pricing_options` on each creative — an array of [`vendor-pricing-option`](https://adcontextprotocol.org/schemas/latest/core/vendor-pricing-option.json) objects. For agents with predetermined rate cards, this typically contains a single option.
297
+
- When `account` and `include_pricing=true` are provided, agents that charge MUST include `pricing_options` on each creative — an array of [`vendor-pricing-option`](https://adcontextprotocol.org/schemas/latest/core/vendor-pricing-option.json) objects. Vendors may offer multiple options per creative (volume tiers, context-specific rates, different pricing models).
298
298
299
299
**Account requirements:**
300
300
- Creative agents that charge for their services MUST implement the [Accounts Protocol](/docs/accounts/overview). This applies to any creative agent with pricing — ad servers, generation platforms, and transformation agents that bill for usage.
|`snapshot_unavailable_reason`| string | Why snapshot is missing — `SNAPSHOT_UNSUPPORTED`, `SNAPSHOT_TEMPORARILY_UNAVAILABLE`, or `SNAPSHOT_PERMISSION_DENIED`|
185
185
|`items`| array | Items for multi-asset formats (when `include_items=true`) |
186
-
|`pricing_options`|[VendorPricingOption](/docs/creative/specification#pricing)[]| Pricing options for this creative (when `include_pricing=true` and `account` provided). Same pattern as `get_signals` and `list_content_standards`. For agents with predetermined rate cards, this typically contains a single option. |
186
+
|`pricing_options`|[VendorPricingOption](/docs/creative/specification#pricing)[]| Pricing options for this creative (when `include_pricing=true` and `account` provided). Vendors may offer multiple options (volume tiers, context-specific rates, different models per product line). Same pattern as `get_signals` and `list_content_standards`. |
187
187
188
188
### Pricing
189
189
@@ -202,7 +202,7 @@ When `include_pricing=true` and `account` is provided, each creative includes `p
202
202
}
203
203
```
204
204
205
-
The buyer passes the selected `pricing_option_id` in `report_usage` for billing verification. This is the same pattern used by [signals](/docs/signals/tasks/get_signals) and [content standards](/docs/governance/content-standards/index). For creative agents with predetermined rate cards, the array typically contains a single option.
205
+
The buyer passes the selected `pricing_option_id` in `report_usage` for billing verification. Vendors may offer multiple options — volume/commitment tiers, context-specific rates (premium vs. standard placements), or entirely different pricing models for different product lines. This is the same pattern used by [signals](/docs/signals/tasks/get_signals) and [content standards](/docs/governance/content-standards/index).
All vendor services use the same pattern: `pricing_options[]` on discovery responses, `pricing_option_id` in `report_usage`. Signals, content standards, creative agents, and property list agents all follow this.
123
123
124
-
In practice, signal providers typically offer multiple options (CPM vs. percent-of-media) for the buyer to choose from. Creative agents with predetermined rate cards typically return a single-element array. The protocol surface is the same — the difference is how many options are in the array.
125
-
126
-
For signals, the buyer selects a pricing option at activation time (`activate_signal`). For creative agents, the account's rate card has already resolved the option — there is nothing to select.
124
+
Vendors often offer multiple pricing options per creative — volume/commitment tiers (lower CPM at higher spend), context-specific rates (premium vs. standard placements), or different pricing models for different product lines (CPM for rich media, per-unit for social variants). The buyer selects the appropriate `pricing_option_id` and passes it in `report_usage`.
Copy file name to clipboardExpand all lines: docs/learning/specialist/signals.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ If your company works in the "not yet" areas, you can still publish the **audien
37
37
- Reason about the signals ecosystem — who provides data, who consumes it, and how authorization works
38
38
39
39
<Note>
40
-
**Vendor pricing is consistent across protocols** — All vendor services use `pricing_options[]` on discovery responses and `pricing_option_id` in `report_usage`. Signals agents typically offer multiple options (CPM vs. percent-of-media). Creative agents with predetermined rate cards typically return a single option. The pattern is the same. See [S2: Creative mastery](/docs/learning/specialist/creative) for the creative pricing model.
40
+
**Vendor pricing is consistent across protocols** — All vendor services use `pricing_options[]` on discovery responses and `pricing_option_id` in `report_usage`. Vendors may offer multiple options — volume tiers, context-specific rates, or different models per product line. Signals, creative, content standards, and property list agents all follow the same pattern. See [S2: Creative mastery](/docs/learning/specialist/creative) for the creative pricing model.
"description": "A pricing option offered by a vendor agent (signals, creative, governance). Combines pricing_option_id with the pricing model fields. Pass pricing_option_id in report_usage for billing verification. For signals agents, get_signals returns an array of options and the buyer selects one at activation. For creative agents, list_creatives returns the single option determined by the account's rate card.",
5
+
"description": "A pricing option offered by a vendor agent (signals, creative, governance). Combines pricing_option_id with the pricing model fields. Pass pricing_option_id in report_usage for billing verification. All vendor discovery responses return pricing_options as an array — vendors may offer multiple options (volume tiers, context-specific rates, different models per product line).",
Copy file name to clipboardExpand all lines: static/schemas/source/creative/list-creatives-response.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -216,7 +216,7 @@
216
216
},
217
217
"pricing_options": {
218
218
"type": "array",
219
-
"description": "Pricing options for this creative. Present when the request included include_pricing=true and account. For creative agents with predetermined rate cards, this typically contains a single option. The buyer passes the selected pricing_option_id in report_usage.",
219
+
"description": "Pricing options for this creative. Present when the request included include_pricing=true and account. Vendors may offer multiple options (volume tiers, context-specific rates, different models per product line). The buyer passes the selected pricing_option_id in report_usage.",
0 commit comments