Overview
The Library is everything your storefront agent sells with and learns from, including the proposals you sent. It gives your storefront one place for media kits, decks, one-sheets, case studies, audience cards, spec sheets, seasonal calendars, and responses. Product marketing becomes the Library: the Material and selling points you already keep there remain available here. This seller Library is not the advertiser creative library that buyers use for campaign creatives. Your Library contains seller Material, responses, and Library requests; it does not contain an advertiser’s campaign creative. Before a proposal can use Library material, the selected wholesale product must also be complete: it needs a channel, a canonical URL-free format, and a priced option with currency and delivery type. Product pricing belongs in the product or rate-card flow, never in reusable Library material. If a proposal ends inneeds_clarification, read the product’s
request-independent composerCompleteness.missing facts and repair them before
retrying. The selected pricing option must also match the RFP currency.
The Library is not where every seller record belongs. An RFP is a record of
demand and stays in the demand inbox. Your
rate card is a typed Library document. Policy lives in AI Business
Rules.
For eligible staging pilots, you can also bring selected content from Google
Drive, Microsoft 365, or Confluence Cloud into the Library with a read-only,
one-way source connection. The source remains at its provider; the Library
keeps workspace-managed copies with visible provenance. See Connect a
source for provider roots, permissions,
supported destinations, limits, and availability.
After a provider sign-in, the Library asks you to choose a root, shows a
bounded preview of supported and excluded content, then asks you to confirm
before it starts indexing. The page shows these steps only when the server has
made each one available for your approved pilot.
Minimum requirements
get_status lists these Library requirements for a seller storefront. They are
advisory: a missing document never stops the storefront agent from answering a
brief.
- To run the storefront agent, add rate-card facts and a Ready, unarchived sales deck or media kit.
- For every modular source that sells guaranteed inventory, add an avails sheet with a committed feed revision for that source.
- To promote items, add an AdCP catalogue.
get_status identifies the document to add.
Manage a connected source
Each connected-source card reports its lifecycle and worker health, the latest successful and attempted sync, the next retry when one is scheduled, the number of available Materials, and any item-level issue from the latest sync. A card can offer Pause sync, Resume sync, Sync now, Reconnect, or Disconnect. The server advertises the actions that are safe in the card’s current state; clients must not infer an action from its status. For MCP App integrations,library_list_external_sources returns the card
data in sources[]. Each source has a revision, health, sync, counts,
notices, retainedMaterial, and the server-advertised actions. Follow its
continuation when present to load another page of sources.
Invoke an advertised action with library_invoke_external_source_action, using
the source ID, its current revision, the action ID, and a unique
clientRequestId. Treat a revision conflict as a reason to reload the card;
do not retry it against an older revision. Sync now requests reconciliation
from the worker and does not promise that indexing has completed when the tool
returns. A file that failed to import is retried a few times automatically and
then waits until it changes at the provider; Sync now also retries those
files, so use it after fixing the cause (for example, restoring access). Reconnect starts a new provider consent handoff for the existing
source; after the host returns, pass the returned handoff ID and opaque
credential reference back to the action tool to finish it.
Disconnect stops future retrieval. It never deletes provider files or
Materials already imported into the workspace: those copies remain readable
with their source provenance, subject to the applicable retention policy.
Disconnecting removes a provider account only after no other source or picker
still uses it.
Since 2026-09-07, the Library is available to every seller.
Add a rate card
Add a Rate card document to the Library to set the prices your storefront agent may quote. Download the rate-card template, fill in one row per price rule, and upload it as CSV or XLSX. API senders can also push the same CSV or JSON rows throughsave_material with
metadata.documentType: "rate_card".
If you already maintained a rate card in storefront settings, it is copied to
a Rate card document in your Library. The Playbook now shows a read-only
summary of the current document and links here to edit it. When save_playbook
or a settings API write changes a price, the Library saves a new version of
this document.
The Library parses the document before it changes anything. Its preview shows
accepted rows, rejected rows with the field to correct, and the rate-card facts
that would be added, changed, or removed. After a CSV or XLSX upload finishes
processing and its scan is complete, the document is ready to preview. Confirm
the signed preview with save_material action commit_rate_card; an API sender
can set commit: true
on a valid typed-document push. A malformed document never changes live facts.
Use | to separate multiple hint values in a cell (for example
ctv|olv), and use WIDTHxHEIGHT for each format dimension (for example
300x250|728x90). target_price or floor_price is required. A source floor
still wins when it is higher than a rate-card price, so the agent never quotes
below the source’s minimum. Each committed fact records its Library row and
revision, which lets a quoted price cite the exact rate-card row.
Set buyer-specific rates
You can add a buyer scope to a rate-card document when a buyer has agreed different rates. Scope the document to an operator domain, a brand domain, or both. A rate card without a scope remains your general rate card. A scoped rate card is available only when the buyer on the request matches its scope. Other buyers, and requests without a buyer identity, use the general rate card and cannot see or cite the scoped document. When more than one scoped rate card matches, the most specific card wins. A rate card scoped to both an operator and a brand takes precedence over a card scoped to one domain. Operator-only and brand-only cards are equally specific; when both match, the most recently committed card wins. For inventory covered by a scoped rate card, its rows replace the general rates. A buyer’s flat discount applies only to inventory the scoped card does not cover. Prices always respect the higher of the source cost and any floor set on the applicable rate-card row, so a buyer-specific rate or discount never takes the quote below that minimum. Ahard_floor also needs structured scope in at least one of channels,
creative_terms, publisher_domains, countries, advertiser_verticals,
seasonality, signal_tags, placement_tags, or format_dimensions.
label and applies_when explain the row but do not scope a hard floor. The
preview rejects an unscoped hard floor, warns when a scoped row currently
matches no product, and warns when a matching product’s current price is below
the floor. Once a hard floor matches, it applies to fixed and auction prices;
the agent never quotes that product below the floor.
Add an avails sheet
Add an Avails sheet document when you need to update the capacity for one of your modular inventory sources. Choose the source the sheet belongs to, then upload its CSV or XLSX file. The source must already have an active Inventory Feed. The Library checks each row against that source’s Inventory Feed before it changes availability. Its preview shows the accepted rows, rejected rows with the reason to correct them, and the feed facts that will be updated. After an upload has finished processing and its scan is complete, confirm the signed preview withsave_material action commit_avails_sheet. A sheet with rejected
rows may still commit its accepted rows; rejected rows never change the
source’s availability. Rows omitted from a later sheet stay live. Include a
row in a new sheet when you need to change its availability.
Use preview_avails_sheet with the document’s materialId and
sourceRevision. Its accepted rows, rejected rows, and changes are limited to
100 entries each; use the totals and truncated flag when a list is longer.
Use commit_avails_sheet with the same IDs and the returned previewToken.
The token is bound to that document revision, its uploaded content, and the
feed state that was previewed. If the document or feed changes, preview again
before committing.
Drafts and Save
The Library supports Draft, Live, and Archived documents. Completed uploads continue to become Live in this release. A later Library update will create a Draft for each upload, suggest a name, category, and description, and ask you to review those details before saving. Drafts stay visible in the Draft filter and Library Gaps as waiting for you. The storefront agent can see that a Draft exists, including its suggestions and gaps, but never uses or cites its content. The later Library update provides the widget controls to Save a Draft as Live or Discard its file. Saving from chat arrives with that update behind a server-enforced web approval: the agent proposes the save and you approve it on our site. A rate-card Draft still uses its normal preview and commit flow before it can change prices.Archive and restore a document
Archive a document when it should stay in your Library history but should not be available to composition. Archived documents are excluded from the default Documents list and from new proposal composition immediately. They keep their source, revisions, and history. You can restore an archived document at any time. Restoring returns it to the default Documents list and makes it available to composition again. The Library interface will add Archive, Undo, and an Archived filter in a follow-up release; until then, integrations can usesave_material with action: "archive" or
action: "restore", and search(kind: "material", filter: { materialState: "archived" }) lists archived documents.
Controlled synthetic evaluation
An active Demo Storefront can rehearse the teaching workflow from the Library. The controls are available only while that Demo is active. They create no buyer demand and do not send anything to a buyer.- Select Prepare synthetic teaching materials. The Library adds the fixed six-source sample set. Its planning rates are not live or buyer-quotable.
- Review every proposed selling point in the Library. The held-out brief stays unavailable until each one has a decision.
- Select Open held-out synthetic buyer brief. The Library opens the exact, immutable evaluation turn in Proposal Pass. The server chooses the brief; you cannot supply or replace it. Proposal Pass then guides you through inspecting the response and its coaching comparison.
Custom fulfilment still needs a named person or a Connect follow-up before
anything can go live.
Previewing a document
Select a document to open its previewer beside the list on wide layouts and in a sheet on narrow ones. Your search, filters, grouping, and scroll position stay in place, so you can close it with Escape or Back to documents and continue where you left off. The previewer shows the document or selected page, its category, and summary facts. Use the category control there when you need to change how your storefront agent classifies the document. Select Edit for the document’s tags, reuse and inspection facts, linked usage, and other detailed controls.How documents inform responses
Once a document is processed and remains unarchived, the agent can retrieve and cite its relevant passages directly. There is no selling-point or case-study review queue, and no Accept or Reject control for prose. To stop a document informing future responses, archive it; its history remains available. The Library still proposes changes when a document contains structured information that belongs elsewhere, such as a format specification, signal, business rule, or seller identity. Those proposals use the review flow for their destination. Prices come only from a rate card, never from prose.Document categories
Set a document category so your storefront agent can decide when to use it: Sales deck, One-sheet, Case study, Response, or Specification sheet. Topics, audiences, and verticals are set separately; changing a category does not change those tags or the source file. Existing Material and new uploads start as Uncategorized until you choose a category. The Library does not guess a category from the file name, source, or extracted content. Choose Uncategorized again to clear a category. The Library groups documents by the Material-only Category dimension. Documents without a Category label appear last under Uncategorized. You can switch to the grid at any time. The Library’s Category, Topic, Audience, and Vertical chips are storefront dimensions. Category appears first. Choosing one sends a server-side label filter, so every loaded page belongs to the same selection. Values in one facet are alternatives; values from different facets must all match. Category and file-type filters show counts for the currently loaded result rows. They work together with search and grouping, and each filter can return to its own All option without clearing the other one. If more documents are available, the Library keeps Load more documents visible even when the loaded rows have no match. After all rows are loaded, a combination with no matches shows an empty state with a clear-filters action. All Material appears in one Documents list. Opening a document is where you browse its pages or slides, previews, and inspection details. Rate-card and policy documents can remain Material sources for extraction and provenance, but assigning a category does not move their governed facts into the reusable Library. Canonical pricing remains in the Rate card document, and policy remains in AI Business Rules. Existing pricing-safety rules still block reuse of a unit that contains a commercial figure.Responses and pairs
The Responses section lists materials paired to the brief they answered, along with imported historical proposals. Each entry keeps its saved name and version date and names the brief it answered when one is linked. It remains available when other Library documents change. When you open a composed response for seller review, a supported block can show where it came from, for example From Travel + Leisure media kit, slide 6 or From Rate card, row 14. These citations are seller-review information: buyer deliveries never include them. If the cited revision has been removed, the response says Source no longer available rather than guessing a replacement. If a cited document has a newer revision, the Responses list and the composed response show that the document has changed since the response was sent. You can choose Re-run brief to create a new response turn against the saved brief. Archiving a cited document does not make its saved citation unavailable; only a removed cited revision does. A pair holds that brief, the response, your commentary, and the commercial outcome recorded for the exchange. Choose the uploaded Library document that holds what you sent; attaching it saves it as this brief’s response. Briefs that already have a response are unavailable rather than silently replaced. For integrations, Material reads reportmaterialKind as document or
response. Search with filter.materialKind: "response" to return only
Materials paired to a brief or imported as historical proposals; use document
to return Materials that have not been saved as a response.
Material browse also accepts filter.hasUnits: true returns Materials whose
current active rendition has at least one page or slide, false returns those
with neither, and omitting it returns both.
You can also start from an eligible row in the demand
inbox. Choose an uploaded Library document after
you add the file to the Library. To save an uploaded Library document as a
response, open it in the Library and choose Save as a response. Direct file
upload in the Demand Inbox is out of scope. Use Import historical brief
from an uploaded document’s detail view in the Library when the brief is not
recorded yet; imported briefs remain historical reference records. A historical
proposal with no brief stays in Responses as a standalone shape example.
Your grade and feedback are commentary on the pair. When you endorse a
pair, you mark its response as a good answer to that brief. An endorsed pair
is an evaluation case: rerun the brief and compare the result with the
endorsed response. The outcome on the pair remains the record of what happened
commercially.
Reusable slides
Uploaded decks, one-sheets, and spreadsheets yield reusable slides, pages, or sheets. Each starts as not reusable and can stay in the Library as a historical record without being available to add to a response. Only individual slides, pages, or sheets can be made reusable; a whole document or structural container cannot. A clean inspection makes one page, slide, or sheet eligible for reuse. It does not mean that unit is appropriate for every buyer. Review each unit and leave buyer-specific, expired, or otherwise unsuitable content off. The control updates automatically when a pending inspection finishes; you do not need to reload the Library. Every reusable unit is checked for pricing. A unit with pricing is marked and cannot be made reusable until the price is removed. Keep current prices in your Rate card document, then upload the price-free page, slide, or sheet. Figures in reusable units can reserve the layout for a price, but the value that renders comes from Rate Card. This keeps a stale or buyer-specific number out of a response.How a page is inspected
Each slide or page of an uploaded PDF or deck carries the state of its own inspection, and the document carries a summary of all of them. You see these states on the unit and in thedocument_inspection summary of a Material
rendition:
- Preview: whether a faithful picture of the page exists. Library combines
the stored
preview_statewith the source and processing state so that it is explicit when previewing is unsupported or unavailable.readywhen the page was rendered,partialwhen only some of the document could be rendered,failedwhen rendering was attempted and did not complete,unsupportedwhen this source cannot produce a faithful page or slide preview,unavailablewhen a supported file was not inspected, andpendingwhile inspection is queued or running. - Reading (
semantic_state): whether the page’s text and layout were read.ready,partial,failed, orunsupportedfor a file type that cannot be read;not_starteduntil reading begins. - Scan (
scan_status): whether the whole page was scanned for commercial figures, including numbers that appear only inside images.scannedwhen the whole-page scan ran,not_scannedwhen it did not,not_applicablefor a unit that has no page image, such as a spreadsheet sheet. - Pricing safety (
pricing_safety): the outcome of the scan.safemeans the whole page was read and no commercial figure was found;contains_pricingmeans one was found;unknownmeans there is no page-by-page conclusion. Read it with the preview state: on the document summary,unknownwithpreview: unavailablemeans whole-page inspection has not been attempted for this storefront yet, whileunknownwithpreview: failedorpartialmeans it was attempted and did not conclude (the render was cut short, rendering or reading failed, or the whole-page scan did not run). A unit with no value here was never inspected page-by-page and falls back to the text scan of the file itself.
unknown or contains_pricing, or whose preview or
reading is incomplete, cannot be made reusable until the page is inspected
cleanly. Spreadsheet sheets and historical units without page-level inspection
fields can still be eligible when the canonical source text scan is clean.
After a private upload finishes, new PDF and PowerPoint files move from
pending to their final inspection state in the open Library without a manual
reload. If the private upload itself does not finish, the document says
Upload incomplete instead of presenting that state as an inspection. Choose
Retry upload and select the original file again. The retry creates a new
immutable source revision for the same Material; it does not create a duplicate
Library document.
PDFs and PowerPoint files saved before whole-page inspection was introduced
were not changed or backfilled, so they can remain unavailable. Open one of
those files and select Retry inspection to queue its current source
revision. The retry is limited to that Material in your seller account and is
safe to repeat if the first request’s result is unclear. It does not change or
delete the original file.
When a reusable slide appears in a response, it is a Library block with its
source named. You can turn Library blocks on or off and reorder them before
sending.
Add material
Select Add material at the top of the Materials section in the Library to upload a PDF, PowerPoint (.pptx), Excel (.xlsx), CSV, PNG, JPEG, GIF, or
WebP file. The Library checks the file type before it starts the private
upload, then processes the new Material and shows its pages or slides here. A
file type the Library cannot read is refused before it is uploaded.
Uploaded decks and one-sheets show their reusable units after processing. A
unit with pricing is marked and stays unavailable for reuse; clean units can
be toggled reusable from the Library.
Notes
Not everything your storefront agent needs is in a file. Select Add a note, give it a short title, type the text, and save. You can also tell your storefront agent in chat; it saves the same kind of note. A note is a Library document. Your agent can cite it the way it cites a file. Open a note to read its text and see who wrote the current version and when. Notes written from chat identify your storefront agent as the author. Notes keep their earlier versions and can be archived and restored like other Library documents. Prices never come from a note; keep them in your rate card.How your agent uses the Library
When a Material search requestsevidence_matches, it can return up to 24
current readable matches from 48 candidates. Each match names its Material
source revision, rendition, unit, exact source locator, and the result receipt.
The search result does not include source text for model use.
Matching rendered previews
When your agent reads a Material withget and include: ['repeats'],
included.exactRenderedPreviewGroups can identify separate readable units with
the same rendered preview. This helps you review repeated rendered pages or
slides without treating them as the same Material.
The comparison includes only complete previews for whole units. It is
same_rendered_preview only when the stored preview content digest and
rendering configuration digest match in one rendering/configuration domain.
Each occurrence remains separate, with its own Material, source revision,
rendition, unit, and document order.
The read checks your current permission for every occurrence before it groups
or counts anything. Seeing an occurrence does not make it available for model
use or reuse. Results are bounded: use each group’s returned and truncated
values, and the overall truncated value, rather than assuming the response
lists every occurrence you can read.
A matching rendered preview is not a claim that two units have the same
meaning, source, or approved-template status.
Shaped by is seller-facing provenance. On your Proposal Pass and the HTML,
PDF, and PPTX previews you review, it names the endorsed example your agent
followed from your own demand-inbox records, with its brief subject, pair id,
endorsement date, and one sentence on why it fit. It is never included in what
a buyer receives. If no endorsed pair fits, it says so and composes from
Library material instead.
Pairs are evidence from one buyer relationship. For a different buyer, the
agent receives only the structure-only shape projection: its allowlisted block
kinds, roles, and order. It does not receive the other buyer’s name, contacts,
brief, budget, negotiated rates, commentary, or response text.
A pair follows its brief’s retention. If the brief is deleted or a buyer asks
for deletion, the pair and its shape projection stop shaping later responses.
An earlier response keeps only a tombstone with the pair id and date, not its
content.
Library requests
A library request records a gap the storefront agent found while answering a brief, such as a case study for a channel or vertical the Library does not cover. The agent files one request for each gap, and the response states the honest absence instead of inventing a block. Add material is the direct path when you have material to add. You can also close a specific Library request by uploading the missing file from that request or telling your storefront agent what to use. An uploaded file can provide reusable-slide candidates. Material you provide in chat is marked as your word rather than a document and feeds composed blocks; it does not become a slide. The request records which path closed it.The Library Page
Your storefront agent opens the Library Page when you ask to see or manage your Library. The page opens as one Documents list grouped by document category when at least one document has a category, and you can switch to a grid or choose a different grouping. It shows your documents and decks as files. You can search, different grouping. You can search, filter documents by category, file type, or storefront dimensions, group rows by topic, audience, vertical, or source, and load more rows as you go. Opening a document lets you change its category and shows its pages or slides with their preview, reuse, and inspection state, and any repeated previews found elsewhere in your Library. The Usage view lists the sent responses that used a page or slide; from there you can open the Proposal Pass for that response. Responses and open Library requests stay secondary views, and the Upload control on a request adds the missing file directly. Cards and rows now start with a file-type thumbnail. A visual render replaces it when one is available. While a render is processing, the thumbnail has a Preview pending marker. When there is no usable visual render, its thumbnail shows Preview unavailable. If an available image cannot load in your browser, the file-type thumbnail remains and the card says A current preview could not be loaded.Related
Demand inbox
Review demand, attach what you sent, and endorse a pair.
Seller workflows
Add Material and inspect its units.