.invalid suffix so nothing can accidentally resolve.Download the complete example pack
How to use this pack
Decide where to rehearse
Set up merchandising first
Create one source per durable source boundary
Preview and commit the avails
Check the products, then test the briefs
briefs.json to see how the
agent sells, refuses, and asks for clarification.Stop before turning on transactions
Which files do you need?
Two groups do the core work — inventory and merchandising. The rest are optional. Almost every file belongs to exactly one group.Inventory files
The only production-importable files in this pack. One row is one availability window: an inventory pool, a date range, a capacity, and a price. The examples use CTV and display — setchannel to whatever is relevant for
you (audio, dooh, retail-media, broadcast, …) and declare the matching
formatOptions. Channel is descriptive; the format declaration is what
constrains the product.
avails-ctv.csv — two CTV availability rows
avails-ctv.csv — two CTV availability rows
avails-display.csv — two display availability rows
avails-display.csv — two display availability rows
publisher-avails-completed.csv — the two ways to state capacity
publisher-avails-completed.csv — the two ways to state capacity
impressionsCapacity) and
gross minus already-booked (avails − upstreamBookedImpressions). Also
shows that numeric shorthand like 12m is accepted. Use one model per row,
never both.avails-invalid.csv — three broken rows, on purpose
avails-invalid.csv — three broken rows, on purpose
agent_url), and a missing Property declaration. Preview it; never commit
it.collectionId, collectionName, and collectionDescription are legacy
grouping field names kept for parser compatibility. They do not create an
AdCP Collection. Don’t turn a monthly pool, placement, or channel into one to
satisfy the parser.Merchandising files
None of these are importable. They are evidence you review, then apply as confirmed facts through the surface that owns each one — see Listing, Playbook, and AI Business Rules.Publisher identity — publisher-adagents.json
What the publisher authorizes: the properties and canonical format IDs the
feeds reference. Replace the reserved domain, then publish this file at the
publisher-controlled /.well-known/adagents.json path. The empty
authorized_agents list is intentional: only the publisher may add the sales
agent it authorizes.
View publisher-adagents.json
View publisher-adagents.json
Storefront profile — storefront-profile.json
Who you are as a seller: name, domain, channels, markets, and currency.
Buyers need to know who they are buying from, so this feeds Seller Setup and
your listing.
View storefront-profile.json
View storefront-profile.json
Media kit — media-kit.md
Your sales pitch in prose: what each product is good for and who it reaches.
It’s supporting positioning evidence — it does not create inventory or capacity.
View media-kit.md
View media-kit.md
Rate card — rate-card.csv
What each product costs: a target, floor, and ceiling CPM per product, with
the window it applies to. Structured pricing lives in the Playbook; the agent
never quotes below a floor.
View rate-card.csv
View rate-card.csv
Playbook — playbook.md
How your agent should sell: how many options to offer, when to ask instead
of substituting, and how much reasoning to reveal. This is judgment, not policy.
View playbook.md
View playbook.md
Business rules — business-rules.md
What you refuse and what needs a human: banned categories, review gates, and
the rules the agent must never quote back to a buyer. This is policy, not
judgment.
View business-rules.md
View business-rules.md
Creative specifications — creative-specifications.md
Which ads you accept: formats, sizes, durations, approval rules, and lead
times. These must match the formatOptions in your avails files — this is
the one document that spans inventory and merchandising.
View creative-specifications.md
View creative-specifications.md
Optional CRM context
What it is: a sanitized slice of your CRM — which agency or advertiser an opportunity belongs to, its stage, amount, and outcome. When you need it: only when you want the agent to treat specific buyers differently — for example applying an agreed discount to an agency you already have a relationship with, or prioritizing a renewal. Skip it otherwise. When you don’t: it is never required for inventory, execution, transaction, or reporting readiness. The CRM example is not inventory, availability, booking authority, a canonical buyer account, or a production import schema. Start with a field dictionary and a handful of sanitized rows. Agree the mapping and handling before sending a larger export, and remove contact names, email addresses, and other personal data.View crm-account-context.csv
View crm-account-context.csv
Lifecycle evidence (optional)
Use these to rehearse the joins that connect a booked line back to inventory and forward to delivery. No generalized importer exists for either — they are manual pilot inputs.Booking export — booking-export.csv
What’s already sold upstream. Subtract it from gross capacity so you never
offer inventory twice. Joins on availId.
View booking-export.csv
View booking-export.csv
Reporting export — reporting-export.csv
What actually delivered and what it cost. Joins back to the avail through
reportingJoinKey, and carries finalAsOf so you can tell preliminary numbers
from final ones.
View reporting-export.csv
View reporting-export.csv
Proposal tests (optional)
Lifecycle evidence above checks your plumbing on a sale that already happened. These check your agent’s judgment on a sale that hasn’t — fake buyer requests, run before any real buyer sees your storefront. The vague-brief case accepts either one grounded product or the storefront’s normal silent no-fit. The Simulator’s decision summary is seller-only evidence; the grader does not treat that private rationale as a clarification shown to a buyer.Brief corpus — briefs.json
Thirteen fake buyer requests with the answer we expect. Good fits, a policy
refusal, a below-floor price, an unsupported duration, a vague brief, and an
attempt to trick the agent into leaking private rules. Run them to see whether
your setup sells correctly — no buyer is ever contacted.
View briefs.json
View briefs.json
Evaluation prompt — agent-evaluation-prompt.md
A prompt to hand a fresh agent so it grades your setup from zero, using only
these files and the public docs. Useful as an independent second opinion. It
mentions a manifest.json; that is Scope3’s own test-harness routing file, so
substitute your four expected product IDs for step 5.
View agent-evaluation-prompt.md
View agent-evaluation-prompt.md