.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.Library files
The pack lets you rehearse the existing Library preview workflow before you add your own sales material. It provides fictional source files for visual composition when that feature becomes available. These files are synthetic: any budget, outcome, reach, or price example is training data, never a market claim.Recommended Library starting point
There is no universal list of documents that every Library must contain. Start with the smallest set that supports what you want the agent to explain or answer. The status below describes this fictional pack, not your own Library.Rehearse the Library manually
- Download the pack. Browsing this page, downloading it, or opening the ZIP does not create a Material record or add anything to an account.
- In a test or sandbox storefront you selected, open the Library. Select Add a document when the Library is empty, or Add file when it already contains material. Upload the template deck and one-sheet yourself. This explicit upload is the only step here that starts a private Material upload. It does not create seller facts, products, rates, analytics, reusable units, or a Creative. Do not use fictional files to populate a real seller Library.
- Open the processed Material and inspect each available unit’s preview,
reading, scan, and pricing-safety states. The template deck has six slides:
its
$28 CPMexample must show Contains pricing and remain unavailable for reuse. The one-sheet is a pricing-free, one-page PDF. A clean unit is eligible for reuse only after the Library’s inspection permits it; a file never supplies a price or rate-card value. - Import the historical briefs into the demand inbox with
origin: imported, then attach their matching response decks and usepairs.jsonas the fictional commentary/outcome guide. A Library request records a missing evidence need; it does not create a document, verify a seller fact, or generate a reusable unit.
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 Apostra’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