What belongs here
Use operating instructions for product packaging, naming, selection, and explanation. Each related fact has one writable home:
New versions that repeat facts owned by another field are rejected. Older immutable versions remain readable and return
ownershipIssues when a conflict is detected. A flagged older version cannot be reactivated; create a cleaned-up version instead. If a flagged version is already active, the conflicting lines are omitted from the Merchandising Agent’s runtime copy while the immutable saved version remains visible for cleanup. Structured Playbook pricing, Buyer Discounts, Buyer Instructions, Media Kit, and Business Rules remain authoritative.
Versions are numbered per storefront. The first version is 1, and numbers are monotone and never reused. Activating a version does not delete older ones — they stay in history so you can re-read or re-activate a prior version.
All examples use the storefront base URL:
Authorization: Bearer $SCOPE3_API_KEY.
Buyers do not see your rules
Your operating instructions are confidential to you. They steer how the Merchandising Agent composes, but they are never sent to a buyer or a buyer’s agent, and everything the agent does send a buyer is written in market terms rather than by quoting your rulebook. That splits the explanation of why a proposal looks the way it does into two audiences:
So a rule that keeps video out of a proposal reaches the buyer as “video is not part of this proposal”, never as your rule text. The same separation covers component and product ids, signal-vendor names, and setup vocabulary: they are yours, and they stay on your side of the conversation.
Telling buyers why a brief was declined
When a brief matches none of your inventory, whether the buyer hears why is your call — it is a negotiation decision, not a platform default. “Your budget is below what we can sell this inventory for” invites a better bid; sometimes you want that, sometimes you would rather say nothing. By default your storefront says nothing: the buyer is told that no products matched and how to broaden the brief. Authorize a fuller answer by writing the rule here, in your own terms — for example:Task reference
List versions
GET /operating-instructions — every version, newest firstCreate version
POST /operating-instructions — author a new versionGet active version
GET /operating-instructions/active — the version in force nowGet a version
GET /operating-instructions/{version} — one version by numberActivate version
POST /operating-instructions/{version}/activate — swap the active pointer