Bid Schema
Overview
A Bid is the payload a Brand Agent returns for a ContextRequest. It declares:- bid identity and versioning
- where the bid applies (
targeting) - how the agent wants to be paid (
pricing) - how much it is willing to spend (
budget) - what the platform may render (
recommendation) - how relevant it believes the bid is (
declared_relevance) - whether it can handle delegated execution (
delegation)
Top-Level Fields
| Field | Type | Required | Description |
|---|---|---|---|
spec_version | string | Yes | Spec version. MUST be "1.0" |
bid_id | string | Yes | Unique identifier for this bid |
brand_agent_id | string | Yes | Identifier of the Brand Agent placing the bid |
context_id | string | Yes | ID of the ContextRequest being bid on |
wallet_id | string | Yes | Wallet to debit if the bid wins |
targeting | object | Yes | Brand-declared applicability constraints |
pricing | object | Yes | Billing model and per-event prices in micros |
budget | object | Yes | Spend caps and pacing controls |
recommendation | object | Yes | Creative input to render if the bid wins |
declared_relevance | number | Yes | Brand-declared relevance score (0.0-1.0) |
supported_opportunities | array | Yes | Opportunity types this bid supports |
preferred_format | string | Yes | Preferred creative format |
valid_until | string | Yes | RFC 3339 expiry timestamp for the bid |
timestamp | string | Yes | RFC 3339 creation timestamp for the bid |
delegation | object | No | Delegation capability declaration |
processing_latency_ms | integer | No | End-to-end bid response latency in milliseconds |
metadata | object | No | Optional vendor-namespaced metadata |
targeting
Defines when the bid should be considered applicable.
| Field | Type | Required | Description |
|---|---|---|---|
intent_types | array | Yes | Supported intent types such as commercial or transactional |
decision_phases | array | Yes | Supported phases from the canonical taxonomy such as awareness, consideration, decision, or action |
verticals | array | No | Normalized topical verticals such as crm |
countries | array | No | ISO 3166-1 alpha-2 country codes |
locales | array | No | BCP 47 locales such as en-US |
intent_types:
commercial, transactional, informational, navigational, support, unsafe, unknown
Valid decision_phases:
awareness, research, consideration, decision, action, post_purchase, support
pricing
All pricing values use micros of the declared currency.
1 USD = 1,000,000 micros
| Field | Type | Required | Description |
|---|---|---|---|
currency | string | Yes | ISO 4217 currency code |
cpx_micros | integer | No | Price per exposure in micros |
cpc_micros | integer | No | Price per click in micros |
cpe_micros | integer | No | Price per delegated-session engagement in micros |
cpa_micros | integer | No | Price per acquisition / verified outcome in micros |
preferred_pricing_model | string | No | Preferred billing model: CPX, CPC, CPE, or CPA |
cpx_micros, cpc_micros, cpe_micros, or cpa_micros MUST be present.
budget
Budget controls declared by the Brand Agent.
| Field | Type | Required | Description |
|---|---|---|---|
max_bid_per_event_micros | integer | Yes | Maximum spend allowed for a single billable event |
daily_cap_micros | integer | Yes | Maximum spend allowed for the current day |
remaining_budget_micros | integer | Yes | Remaining available budget when the bid is created |
pacing_mode | string | Yes | Budget pacing strategy: even, accelerated, or manual |
recommendation
Platform render instructions for the winning recommendation.
| Field | Type | Required | Description |
|---|---|---|---|
format | string | Yes | Creative format: weave, tail, product_card, or bridge |
disclosure | string | Yes | Disclosure label such as [Ad] or Sponsored |
creative | object | Yes | Structured creative payload |
offerId | string | No | Unique identifier for the offer being presented |
recommendation.creative
Combined creative object containing brand information, ad assets, and destination.
| Field | Type | Required | Description |
|---|---|---|---|
brand_name | string | Yes | Advertiser or brand name |
domain | string | No | Optional advertiser domain |
headline | string | Yes | Primary ad headline |
description | string | Yes | Ad description text |
cta_text | string | Yes | Call-to-action text |
follow_up_suggestion | string | No | Optional follow-up suggestion the platform can surface after the initial recommendation |
logo_url | string | No | Optional logo asset |
image_urls | array | No | Optional creative image assets for creative |
landing_page_url | string | Yes | Advertiser-controlled destination URL |
supported_opportunities
Array of opportunity types this bid is intended to serve.
Allowed values:
soft_recommendationcomparison_slotdecision_momenttransaction_trigger
delegation
Optional block for Brand Agents that can take over task execution after explicit user consent.
| Field | Type | Required | Description |
|---|---|---|---|
supported | boolean | Yes | Whether delegation is supported |
consent_required | boolean | Yes, when supported | Whether explicit user consent is required |
supported_for_intents | object | Yes, when supported | Intent types and decision phases where delegation is allowed |
required_scopes | array | Yes, when supported | Context scopes required for the operator-mediated session-init payload before session start |
protocol | object | Yes, when supported | Delegation protocol descriptor |
mcp | object | Yes, when supported | MCP session bootstrap details |
session_constraints | object | Yes, when supported | Session timeout and turn limits |
delegation.required_scopes
These scopes apply to the operator-mediated handoff payload used to start the delegated session. They do not grant unlimited access to upstream conversation history or automatically extend to new information the user provides later during the delegated session.
Allowed values:
intentconstraintsselection_contextconversation_summary
delegation.protocol
In v1.0, the standardized protocol type is mcp.
delegation.mcp
| Field | Type | Required | Description |
|---|---|---|---|
server_url | string | Yes | MCP server URL |
tool_name | string | Yes | MCP tool used to start the delegated session |
session_init_schema_ref | string | Yes | URI of the session initialization schema |
delegation.session_constraints
| Field | Type | Required | Description |
|---|---|---|---|
multi_turn | boolean | Yes | Whether the session supports multiple turns |
session_timeout_seconds | integer | Yes | Inactivity timeout in seconds after delegation_started; the Operator expires the delegated session if no verified session activity arrives before this window elapses |
max_turns | integer | Yes | Maximum turn count allowed |
delegation_activity events sent by the Platform or Brand Agent. Each verified activity event resets the inactivity timer. If the timer elapses with no activity, the Operator marks the delegated session expired and records delegation_expired.
Example
Validation Rules
spec_versionMUST equal"1.0"- At least one of
cpx_micros,cpc_micros, orcpa_microsMUST be present declared_relevanceMUST be between0.0and1.0currencyMUST be a valid ISO 4217 codecountriesMUST use ISO 3166-1 alpha-2 codesvalid_untilandtimestampMUST be RFC 3339 timestamps- If
delegation.supportedistrue, the rest of the delegation fields become required