Scope3 Storefront API

Manage storefront and inventory sources

Business capability
Advertising Sales & Operations Management BC-3760

Operations 159

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /account-mappings/summary Summarize seller account mapping coverage · Get seller account mapping summary #
Ask an LLM
“How many buyer relationships do I have mapped across my active inventory sources?”
“What does the summary on the Buyer Account Mapping page count?”
Tell an agent
Show me the coverage counts for my seller account mappings.
Give me a quick summary of how many operator and brand relationships are mapped to active sources.
GET /account-mappings List seller account relationships · List seller account relationships #
Ask an LLM
“Which operator and brand relationships does my storefront own?”
“Can I search my seller account relationships by name and page through them?”
Tell an agent
List my seller account relationships matching {search}.
Show {limit} seller account relationships starting at offset {offset}.
GET /account-mappings/export Export seller account mappings as CSV · Export seller account mappings #
Ask an LLM
“Can I download my current account mappings and the mapping template as CSV?”
“Where do I get the source-mapping template to fill in offline?”
Tell an agent
Export my seller account mappings and the blank mapping template as CSV files.
Download the healthy source-account mappings I currently have.
GET /account-mappings/reviews List pending buyer account requests · List pending buyer account requests #
Ask an LLM
“Which buyer account requests are waiting for me to approve or reject?”
“Do pending buyer account requests include the version I need to make a decision?”
Tell an agent
Show the buyer account requests awaiting my decision.
List {limit} pending buyer account requests from offset {offset}.
POST /account-mappings/reviews/{grantId}/decision Approve or reject a buyer account request · Decide a pending buyer account request #
Ask an LLM
“Can I reject a buyer's account request, and do I have to give a reason?”
“What happens if I approve a buyer account request for Interchange-cleared billing?”
Tell an agent
Approve buyer account request {grantId}.
Reject buyer account request {grantId} with a reason.
POST /account-mappings/sources/{inventorySourceId}/refresh Refresh advertiser choices for an ad-server source · Refresh managed ad-server account choices #
Ask an LLM
“Can I reload the advertiser list from my Google Ad Manager or FreeWheel source for account mapping?”
“Which ad servers support refreshing the source-account roster?”
Tell an agent
Refresh the advertiser account choices for inventory source {inventorySourceId}.
Pull the latest ad-server advertiser roster into account mapping for source {inventorySourceId}.
POST /account-mappings/imports/prepare Prepare an account mapping feed upload · Prepare a private seller account mapping feed upload #
Ask an LLM
“How do I get a signed upload URL for my source_account_bindings.csv file?”
“Can I upload account mappings as a snapshot that covers specific inventory sources?”
Tell an agent
Prepare an account mapping feed upload in {mode} mode for revision {sourceRevision}.
Reserve a mapping feed revision for {file} covering sources {coveredInventorySourceKeys}.
POST /account-mappings/imports/{revisionId}/preview Validate and preview an account mapping feed · Validate and preview a seller account mapping feed #
Ask an LLM
“Can I see which rows of my uploaded account mapping file are invalid before applying it?”
“What impact will my mapping feed revision have before I commit it?”
Tell an agent
Validate and preview uploaded account mapping revision {revisionId}.
Check mapping feed revision {revisionId} for bad rows and get a preview token.
POST /account-mappings/imports/{revisionId}/commit Commit a previewed account mapping feed · Atomically commit a seller account mapping feed #
Ask an LLM
“Will committing a mapping feed overwrite the manual mappings I made?”
“Can I apply only part of a reviewed account mapping feed?”
Tell an agent
Commit account mapping revision {revisionId} using preview token {previewToken}.
Apply mapping feed {revisionId} with idempotency key {idempotencyKey} and preview token {previewToken}.
GET /account-mappings/imports/{revisionId} Check an account mapping feed revision · Get seller account mapping feed revision status #
Ask an LLM
“What state is my account mapping feed upload in right now?”
“Where can I see diagnostics for a mapping feed revision I uploaded?”
Tell an agent
Show the status and diagnostics of mapping feed revision {revisionId}.
Get the lifecycle and impact of account mapping revision {revisionId}.
GET /storefront Get my storefront · Get storefront #
Ask an LLM
“What is my storefront currently configured as?”
“Can I see my storefront's name, publisher domain and plan?”
Tell an agent
Show me my storefront.
Fetch my current storefront configuration.
POST /storefront Create a storefront · Create storefront #
Ask an LLM
“What do I need to set up a new storefront?”
“Is creating a storefront safe to repeat if I already have one?”
Tell an agent
Create a storefront named {name} for publisher domain {publisherDomain}.
Set up my storefront {name} with default currency {defaultCurrency}.
PUT /storefront Update storefront settings · Update storefront #
Ask an LLM
“Can I pause my storefront so it stops transacting?”
“How do I change which countries and currencies my storefront accepts?”
Tell an agent
Pause my storefront by setting paused to {isPaused}.
Change my storefront's default currency to {defaultCurrency}.
PATCH /storefront Patch legacy storefront capabilities · Patch storefront capabilities #
Ask an LLM
“Can I change just the storefront capabilities without resending the whole configuration?”
“Where do I update my storefront's setup intent on its own?”
Tell an agent
Patch only my storefront capabilities to {capabilities}.
Update just the storefront setup intent to {setupIntent}.
GET /demo Get my Demo Storefront · Get Demo Storefront #
Ask an LLM
“Do I have a Demo Storefront, and when does its lease expire?”
“What synthetic profile is my demo storefront running on?”
Tell an agent
Show my Demo Storefront and its lease status.
Check whether a demo storefront exists for my account.
POST /demo Create a seven-day Demo Storefront · Create Demo Storefront #
Ask an LLM
“Can I spin up a demo storefront to try things without real side effects?”
“How long does a new Demo Storefront last?”
Tell an agent
Create a Demo Storefront from profile {profileId}.
Start a demo storefront using profile {profileId} version {profileVersion}.
DELETE /demo Delete my Demo Storefront · Delete Demo Storefront #
Ask an LLM
“Does deleting my demo storefront remove my customer account too?”
“Can I throw away the demo storefront and its synthetic data?”
Tell an agent destructive · confirm first
Delete my Demo Storefront.
Tear down the demo storefront and all its synthetic resources.
POST /demo/reset Reset the Demo Storefront · Reset Demo Storefront #
Ask an LLM
“Can I rebuild my demo storefront back to its starting state?”
“Does resetting the demo storefront extend its lease?”
Tell an agent destructive · confirm first
Reset my Demo Storefront to its pinned profile.
Rebuild the demo storefront from scratch without extending it.
GET /demo/source-recipes List demo source recipes · List Demo source recipes #
Ask an LLM
“Which synthetic inventory sources can I add to a demo storefront?”
“What composition presets are available for demo storefronts?”
Tell an agent
List the demo source recipes I can attach.
Show the synthetic modular-source recipes for demos.
POST /demo/sources Attach synthetic sources to the demo · Attach Demo sources #
Ask an LLM
“Can I add several synthetic inventory sources to my demo storefront at once?”
“How do I give my demo storefront some fake inventory to sell?”
Tell an agent
Attach demo source recipes {recipeIds} to my Demo Storefront.
Add the synthetic sources {recipeIds} to the active demo.
DELETE /demo/sources/{sourceId} Remove a source from the demo · Remove a Demo source #
Ask an LLM
“Can I take one synthetic source back out of my demo storefront?”
“What happens to the generated inventory when I remove a demo source?”
Tell an agent destructive · confirm first
Remove demo source {sourceId} from my Demo Storefront.
Detach synthetic source {sourceId} and its inventory from the demo.
POST /demo/extend Extend the Demo Storefront lease · Extend Demo Storefront #
Ask an LLM
“Can I keep my demo storefront longer than seven days?”
“How many days can I extend a demo storefront by?”
Tell an agent
Extend my Demo Storefront by {days} days.
Push back the demo storefront expiry.
GET /readiness Check if the storefront can go live · Get storefront readiness #
Ask an LLM
“Is my storefront ready to go live?”
“What is blocking my storefront from launching?”
Tell an agent
Check my storefront's go-live readiness.
List the blocking checks for inventory sources and agent auth before launch.
GET /readiness/compliance Get the latest compliance check · Get storefront compliance status #
Ask an LLM
“Did my storefront pass its last compliance check?”
“Has a compliance readiness check ever run on my storefront?”
Tell an agent
Show my storefront's most recent compliance result.
Get the last compliance readiness check.
POST /readiness/compliance/refresh Re-run the storefront compliance check · Re-run the storefront compliance check #
Ask an LLM
“Can I re-run compliance against just one agent?”
“How do I recheck compliance after fixing a source health issue?”
Tell an agent
Re-run the compliance check for agent {agentId}.
Recheck compliance across all my storefront's agents now.
POST /resolve-brand Look up a brand profile by domain · Resolve brand profile #
Ask an LLM
“Is there a brand profile on agenticadvertising.org for this domain?”
“Can I get a brand's name and logo just from its website domain?”
Tell an agent
Resolve the brand profile for {domain}.
Look up the brand name and logo for domain {domain}.
GET /discover-agents Find agents authorized for a domain · Discover agents for a domain #
Ask an LLM
“Which operator and publisher agents are authorized to sell a given domain?”
“Can I bypass the cached agent discovery result for a domain?”
Tell an agent
Discover the authorized agents for {domain}.
Find agents for {domain} and bypass the cache with refresh {refresh}.
GET /inventory-sources List inventory sources · List inventory sources #
Ask an LLM
“Which inventory sources are connected to my storefront?”
“What sources of inventory am I selling from today?”
Tell an agent
List all my storefront's inventory sources.
Show every inventory source on the storefront.
POST /inventory-sources Create an inventory source · Create inventory source #
Ask an LLM
“Can I add a new inventory source and register its sales agent at the same time?”
“What authentication types can a new inventory source use?”
Tell an agent
Create an inventory source named {name} pointing at {endpointUrl}.
Add inventory source {name} using protocol {protocol} and {authenticationType} auth.
GET /inventory-sources/{sourceId} Get an inventory source · Get inventory source #
Ask an LLM
“What are the settings of one specific inventory source?”
“Can I look up an inventory source by its source ID?”
Tell an agent
Show inventory source {sourceId}.
Get the details of source {sourceId}.
PUT /inventory-sources/{sourceId} Update an inventory source · Update inventory source #
Ask an LLM
“Does changing an inventory source's status affect its linked agent?”
“Can I point an existing inventory source at a new endpoint URL?”
Tell an agent
Set the status of inventory source {sourceId} to {status}.
Rename inventory source {sourceId} to {name}.
DELETE /inventory-sources/{sourceId} Delete an inventory source · Delete inventory source #
Ask an LLM
“What happens to the linked agent when I delete an inventory source?”
“Can I permanently remove an inventory source from my storefront?”
Tell an agent destructive · confirm first
Delete inventory source {sourceId}.
Remove source {sourceId} and disable its agent.
GET /inventory-sources/{sourceId}/diagnostics Get call health diagnostics for a source · Get inventory source diagnostics #
Ask an LLM
“Is my inventory source timing out or failing calls lately?”
“How has a source's latency moved compared with the prior window?”
Tell an agent
Show call health diagnostics for source {sourceId}.
Get latency and failure stats for source {sourceId} over the last {windowHours} hours.
GET /inventory-sources/{sourceId}/mapping-workspace View a source's mapping workspace · Get an inventory source mapping workspace #
Ask an LLM
“Can I see how my storefront identities map through one inventory source?”
“Which product paths on a source are ready versus inactive?”
Tell an agent
Open the mapping workspace for source {sourceId}.
Show storefront-built and agent-supplied mapping readiness for source {sourceId}.
POST /inventory-sources/{sourceId}/tests/discovery Run a product discovery test on a source · Run an inventory source discovery test #
Ask an LLM
“Can I test whether a sales agent returns products without creating a media buy?”
“Does a discovery test on a source spend any money?”
Tell an agent
Run a discovery test against source {sourceId}.
Test get_products on source {sourceId} with the brief {brief}.
GET /inventory-sources/{sourceId}/wholesale-pricing/template Download the wholesale pricing CSV template · Download wholesale pricing template #
Ask an LLM
“Where do I get a pre-filled wholesale avails and pricing template for a source?”
“Does the wholesale pricing template list each ad-server selector my products use?”
Tell an agent
Download the wholesale pricing template for source {sourceId}.
Get the pre-filled avails and pricing CSV for source {sourceId}.
GET /inventory-sources/{sourceId}/property-mappings List property and tag mappings for a source · List inventory property mappings #
Ask an LLM
“Which properties and tags have I mapped on a managed sales-agent source?”
“Can I review my seller-authored property mappings?”
Tell an agent
List the property mappings on source {sourceId}.
Show the tag and property mappings I authored for source {sourceId}.
PUT /inventory-sources/{sourceId}/property-mappings Replace all property mappings for a source · Replace inventory property mappings #
Ask an LLM
“Can I dry-run a replacement of my property mappings before applying it?”
“Does replacing property mappings overwrite all of them at once?”
Tell an agent
Dry-run replacing the property mappings on source {sourceId} with dry run {dry_run}.
Replace every property and tag mapping on source {sourceId}.
POST /inventory-sources/ad-servers/citrusad Connect CitrusAd as an ad server · Connect CitrusAd #
Ask an LLM
“Can I connect CitrusAd for sponsored products to my storefront?”
“What CitrusAd details do I need to connect it, like team ID and namespaces?”
Tell an agent
Connect CitrusAd team {teamId} in the {environment} environment with namespaces {namespaces}.
Hook up CitrusAd in {environment} for team {teamId}, namespaces {namespaces}, priced in {defaultCurrency}.
POST /inventory-sources/{sourceId}/ad-servers/citrusad/credentials/{credentialKind} Save a first CitrusAd credential · Save CitrusAd credentials #
Ask an LLM
“Where do I store my CitrusAd credentials after connecting it?”
“Will the CitrusAd credential I save ever be returned by the API?”
Tell an agent
Save a new CitrusAd {credentialKind} credential for source {sourceId}.
Store CitrusAd {credentialKind} auth {auth} on source {sourceId}.
PUT /inventory-sources/{sourceId}/ad-servers/citrusad/credentials/{credentialKind} Rotate a CitrusAd credential · Rotate CitrusAd credentials #
Ask an LLM
“Can I swap in a new CitrusAd credential on an existing source?”
“Is the rotated CitrusAd secret ever stored in the source config?”
Tell an agent
Rotate the CitrusAd {credentialKind} credential on source {sourceId}.
Replace the CitrusAd {credentialKind} credential for source {sourceId} with {auth}.
DELETE /inventory-sources/{sourceId}/ad-servers/citrusad/credentials/{credentialKind} Revoke a CitrusAd credential · Revoke CitrusAd credentials #
Ask an LLM
“Can I revoke a CitrusAd credential and delete its stored secret?”
“What happens when I revoke CitrusAd access on a source?”
Tell an agent destructive · confirm first
Revoke the CitrusAd {credentialKind} credential on source {sourceId}.
Delete the stored CitrusAd {credentialKind} secret for source {sourceId}.
POST /inventory-sources/modular/feed Create a feed-backed modular source · Create a modular source with an avails-feed module #
Ask an LLM
“Can I create an inventory source from an uploaded avails feed?”
“Does a feed-backed modular source include a booking ledger by default?”
Tell an agent
Create a modular avails-feed source named {name}.
Set up feed source {name} with the booking ledger set to {includeBookingLedger}.
POST /inventory-sources/modular/cadent-demo Create or reset a Cadent demo source · Create Cadent demo modular source #
Ask an LLM
“Can I set up a Cadent-backed demo source for a live demo?”
“How do I reset the Cadent demo source with fresh avails?”
Tell an agent
Create a Cadent demo modular source named {name}.
Reset the Cadent demo source with reset {reset} and seed avails {seedAvails}.
POST /inventory-sources/modular/freewheel-sandbox Create a FreeWheel sandbox source · Create FreeWheel sandbox modular source #
Ask an LLM
“Can I create a FreeWheel sandbox source with live taxonomy selectors?”
“Do I need to provide FreeWheel credentials for the sandbox source?”
Tell an agent
Create a FreeWheel sandbox modular source named {name}.
Set up the FreeWheel sandbox source for advertiser {advertiserId}.
GET /inventory-sources/{sourceId}/modular Check a modular source's setup readiness · Get modular inventory source readiness #
Ask an LLM
“What setup fields are still missing on my modular inventory source?”
“Which lifecycle stage is a modular source in, and how much open work does it have?”
Tell an agent
Show the readiness of modular source {sourceId}.
List missing setup fields and issues for modular source {sourceId}.
POST /inventory-sources/{sourceId}/modular/avails-feed Load confirmed avails into a modular source · Ingest modular avails feed #
Ask an LLM
“How do I load avails into a modular source's static feed after reviewing them?”
“Can I send avails as CSV text instead of structured rows?”
Tell an agent
Ingest the reviewed avails into modular source {sourceId} with confirmed {confirmed}.
Upsert avails from this CSV {csvText} into modular source {sourceId}.
POST /inventory-sources/{sourceId}/modular/avails-feed/upload Preview a modular avails file · Preview a modular avails file #
Ask an LLM
“Can I check an XLSX avails file for errors before loading it into a modular source?”
“Which file formats can I preview for modular avails?”
Tell an agent
Parse avails file {file} for modular source {sourceId} without committing.
Preview row diagnostics for the avails spreadsheet {file} on source {sourceId}.
GET /inventory-sources/{sourceId}/modular/products List products on a modular source · List modular inventory products #
Ask an LLM
“What products does my modular source expose from its avails?”
“Can I see the product projections built from normalized avails?”
Tell an agent
List the products on modular source {sourceId}.
Show product projections from avails on source {sourceId}.
GET /inventory-sources/{sourceId}/modular/work-items List work items on a modular source · List modular source work items #
Ask an LLM
“Which source-side work items are open or blocked on my modular source?”
“Can I filter modular work items by media buy or buyer?”
Tell an agent
List open work items for modular source {sourceId}.
Show work items on source {sourceId} with status {status}.
GET /inventory-sources/{sourceId}/modular/work-items/{workItemId} Get a modular source work item · Get modular source work item #
Ask an LLM
“What is the event history of one modular work item?”
“Can I open a single source-side work item to see its details?”
Tell an agent
Show work item {workItemId} on modular source {sourceId}.
Get the history of work item {workItemId} for source {sourceId}.
PATCH /inventory-sources/{sourceId}/modular/work-items/{workItemId} Update a modular source work item · Update modular source work item #
Ask an LLM
“Can I assign a modular work item to someone or mark it blocked?”
“Is it possible to add notes to a source-side work item without finishing it?”
Tell an agent
Assign work item {workItemId} on source {sourceId} to {assignedTo}.
Mark work item {workItemId} on source {sourceId} blocked because {blockedReason}.
POST /inventory-sources/{sourceId}/modular/work-items/{workItemId}/complete Complete a modular source work item · Complete modular source work item #
Ask an LLM
“How do I close out a modular work item once the task is done?”
“Does completing a work item trigger anything else on the source?”
Tell an agent
Complete work item {workItemId} on modular source {sourceId}.
Finish work item {workItemId} on source {sourceId} with notes {notes}.
GET /inventory-sources/{sourceId}/modular/inventory/capabilities Get a modular source's targeting capabilities · Get modular inventory capabilities #
Ask an LLM
“Which selector and targeting capabilities does my modular source support?”
“What taxonomy selectors does the FreeWheel sandbox source expose?”
Tell an agent
Show the targeting capabilities of modular source {sourceId}.
List selector types available on source {sourceId}.
GET /inventory-sources/{sourceId}/modular/inventory/selectors Search taxonomy selectors on a modular source · Search modular inventory selectors #
Ask an LLM
“Can I search the FreeWheel taxonomy for a selector by name?”
“Does selector search return avails or forecasted capacity?”
Tell an agent
Search {selectorType} selectors on source {sourceId} for {q}.
List child {selectorType} selectors under {parentId} on source {sourceId}.
POST /inventory-sources/{sourceId}/modular/reservations Hold capacity on a modular product · Reserve modular inventory product #
Ask an LLM
“Can I hold impressions on a modular product for a media buy without overbooking?”
“How long can a modular inventory hold last?”
Tell an agent
Reserve {requestedImpressions} impressions of product {productId} on source {sourceId} for media buy {mediaBuyId} and buyer {buyerCustomerId}.
Hold avail {availId} on source {sourceId} for {holdMinutes} minutes for buy {mediaBuyId}, buyer {buyerCustomerId}, {requestedImpressions} impressions.
POST /inventory-sources/{sourceId}/modular/bookings/finalize Hand off a held reservation for booking · Prepare modular booking handoff #
Ask an LLM
“How do I turn a held modular reservation into Cadent XML or FreeWheel work items?”
“Does preparing the booking handoff mark the reservation as booked?”
Tell an agent
Prepare the booking handoff on source {sourceId} for media buy {mediaBuyId}, buyer {buyerCustomerId}, avail {availId}.
Finalize the held booking for campaign {campaignName} on source {sourceId}, buy {mediaBuyId}, buyer {buyerCustomerId}, avail {availId}.
POST /inventory-sources/{sourceId}/modular/bookings/release Release a modular inventory hold or booking · Release modular inventory booking #
Ask an LLM
“Can I give back capacity from a held modular reservation?”
“What happens to the avail when I cancel a locally booked reservation?”
Tell an agent destructive · confirm first
Release the hold on avail {availId} at source {sourceId} for media buy {mediaBuyId}, buyer {buyerCustomerId}.
Cancel the modular booking for buy {mediaBuyId} by buyer {buyerCustomerId} on avail {availId}, source {sourceId}.
PATCH /inventory-sources/{sourceId}/modular/modules/{moduleInstanceId}/config Update a module's config on a modular source · Update modular source module config #
Ask an LLM
“Can I change one module's non-secret config on a modular source?”
“Is module config merged or replaced when I update it?”
Tell an agent
Update module {moduleInstanceId} on source {sourceId} with config {config}.
Replace module {moduleInstanceId} config on source {sourceId} with {config} and merge {merge}.
POST /inventory-sources/{sourceId}/modular/modules/{moduleInstanceId}/credentials/{credentialKind} Store a credential for a modular module · Create modular source module credential #
Ask an LLM
“Where do I store a provider credential for a modular source module the first time?”
“Is a module credential returned after I save it?”
Tell an agent
Store a {credentialKind} credential for module {moduleInstanceId} on source {sourceId}.
Add new {credentialKind} auth {auth} to module {moduleInstanceId} of source {sourceId}.
PUT /inventory-sources/{sourceId}/modular/modules/{moduleInstanceId}/credentials/{credentialKind} Rotate a modular module credential · Rotate modular source module credential #
Ask an LLM
“Can I replace a module's credential and revoke the old secret in one step?”
“How do I rotate the provider credential on a private modular module?”
Tell an agent
Rotate the {credentialKind} credential on module {moduleInstanceId} of source {sourceId}.
Swap module {moduleInstanceId} on source {sourceId} to new {credentialKind} auth {auth}.
DELETE /inventory-sources/{sourceId}/modular/modules/{moduleInstanceId}/credentials/{credentialKind} Revoke a modular module credential · Revoke modular source module credential #
Ask an LLM
“Can I revoke a modular module's credential and delete its secret?”
“What does revoking a module credential do to the live connection?”
Tell an agent destructive · confirm first
Revoke the {credentialKind} credential on module {moduleInstanceId} of source {sourceId}.
Delete the stored {credentialKind} secret for module {moduleInstanceId} on source {sourceId}.
POST /inventory-sources/{sourceId}/feed/preview Preview an inventory feed revision · Preview a feed revision (HITL) #
Ask an LLM
“Can I preview a wholesale avails and pricing feed before committing it?”
“Which feed contracts can I preview with JSON rows?”
Tell an agent
Preview a {contractId} feed revision on source {sourceId}.
Build a preview revision on source {sourceId} from this JSON {jsonText} under contract {contractId}.
POST /inventory-sources/{sourceId}/feed/upload Upload a feed file for preview · Upload a feed file (HITL, multipart) #
Ask an LLM
“Can I upload an Excel or CSV file as an inventory feed instead of posting JSON?”
“Does a multipart feed upload commit right away?”
Tell an agent
Upload feed file {file} to source {sourceId} under contract {contractId}.
Send the spreadsheet {file} as a {contractId} feed preview for source {sourceId}.
POST /inventory-sources/{sourceId}/feed/commit Commit a previewed feed revision · Commit a previewed feed revision (HITL) #
Ask an LLM
“What happens if someone else committed a feed after my preview?”
“How do I promote a previewed feed revision to live?”
Tell an agent
Commit revision {revision} of feed {feedId} on source {sourceId} with baseline {previewBaseline}.
Promote the previewed feed {feedId} revision {revision} to committed on source {sourceId} using {previewBaseline}.
POST /inventory-sources/{sourceId}/feed/push Push a feed revision without preview · Push a feed revision (API_PUSH, no preview step) #
Ask an LLM
“Can I ingest an inventory feed in one call without the preview step?”
“Is there a dry-run option when pushing a feed directly?”
Tell an agent
Push a {contractId} feed straight to source {sourceId}.
Dry-run pushing {contractId} feed CSV {csvText} to source {sourceId} with dry run {dryRun}.
GET /inventory-sources/{sourceId}/esa Get the ad-server connection for a source · Get ad-server source connection #
Ask an LLM
“What is the ad-server connection state behind one of my inventory sources?”
“Is the ad server linked to this inventory source connected?”
Tell an agent
Show the ad-server connection for inventory source {sourceId}.
Read the ad-server connection state of source {sourceId}.
GET /inventory-sources/{sourceId}/status Get ad-server health by inventory source · Get ad-server source status #
Ask an LLM
“How healthy is the ad-server adapter behind an inventory source, looked up by source ID?”
“Can I include recent sync runs in an inventory source's operational status?”
Tell an agent
Get the operational status of inventory source {sourceId}.
Show status for inventory source {sourceId} including the last {syncHistoryLimit} syncs.
GET /inventory-sources/{sourceId}/sync-history List sync runs by inventory source · List ad-server source sync history #
Ask an LLM
“Can I drill into past sync runs for an inventory source by its source ID?”
“Which syncs failed on an inventory source recently?”
Tell an agent
List sync history for inventory source {sourceId}.
Show {status} {syncType} sync runs for inventory source {sourceId}.
POST /inventory-sources/{sourceId}/launch Open the ad-server admin UI from a source · Mint a launch URL into the managed source admin UI #
Ask an LLM
“Can I get a one-time link into the managed admin UI for an inventory source?”
“Is it possible to deep-link to a specific admin page from an inventory source?”
Tell an agent
Mint an admin UI launch link for inventory source {sourceId}.
Open the managed admin for inventory source {sourceId} at page {path}.
PUT /inventory-sources/{sourceId}/ad-server Set ad-server config on a source · Replace ad-server source config #
Ask an LLM
“How do I set the ad-server configuration on an inventory source with a full replace?”
“Is the ad-server config update a full replacement or a partial change?”
Tell an agent
Replace the ad-server config on inventory source {sourceId} with PUT.
Set new ad-server settings on source {sourceId}.
PATCH /inventory-sources/{sourceId}/ad-server Replace ad-server config via legacy PATCH · Replace ad-server source config (alias) #
Ask an LLM
“Can my old client keep using PATCH to replace an inventory source's ad-server config?”
“Is there a PATCH alias for migrating from the legacy esa ad-server route?”
Tell an agent
Use the legacy PATCH alias to replace ad-server config on source {sourceId}.
Send the ad-server config for source {sourceId} via PATCH for backwards compatibility.
PUT /inventory-sources/{sourceId}/adapter-config Rotate ad-server adapter credentials · Rotate ad-server source credentials #
Ask an LLM
“Can I rotate FreeWheel or SpringServe credentials without losing products and sync history?”
“Where do I update adapter credentials on an already provisioned ad-server source?”
Tell an agent
Rotate the ad-server adapter credentials on source {sourceId}.
Update the FreeWheel adapter credentials in place for source {sourceId}.
POST /inventory-sources/{sourceId}/test-connection Test ad-server reachability by inventory source · Test the ad-server source connection #
Ask an LLM
“Can the adapter reach my ad server with the credentials on this inventory source?”
“How can I probe an inventory source's ad-server connection by source ID?”
Tell an agent
Test the ad-server connection for inventory source {sourceId}.
Probe ad-server reachability on source {sourceId}.
POST /inventory-sources/{sourceId}/refresh Start ad-server syncs by inventory source · Refresh the ad-server source snapshot #
Ask an LLM
“Can I kick off a fresh ad-server sync for an inventory source by its source ID?”
“What does an inventory source refresh return if a sync is already running?”
Tell an agent
Refresh the ad-server snapshot for inventory source {sourceId}.
Start sync runs for source {sourceId}.
POST /inventory-sources/{sourceId}/deactivate Deactivate an ad-server source by source ID · Deactivate the ad-server source #
Ask an LLM
“Can I switch off an ad-server inventory source but keep it for later?”
“Does deactivating an inventory source's ad server delete the connection?”
Tell an agent destructive · confirm first
Deactivate the ad-server behind inventory source {sourceId}.
Soft-delete ad-server source {sourceId}.
POST /inventory-sources/{sourceId}/reactivate Reactivate an ad-server source by source ID · Reactivate a deactivated ad-server source #
Ask an LLM
“Can I turn a deactivated inventory source's ad server back on?”
“What if the upstream managed source no longer exists when I reactivate by source ID?”
Tell an agent
Reactivate the ad-server behind inventory source {sourceId}.
Re-enable deactivated source {sourceId}.
POST /esa/service-account Ensure the ad-server service account exists · Ensure ad server source service account #
Ask an LLM
“What service account email do I grant access to in my ad server?”
“Is a platform service account provisioned for managing my ad server sources?”
Tell an agent
Make sure my ad-server service account exists and give me its email.
Provision the platform service account for ad server sources.
GET /esa List ad server connections · List ad server sources #
Ask an LLM
“Which ad server connections do I have, and what type is each?”
“Are any of my ad server source connections inactive?”
Tell an agent
List all my ad server connections.
Show my ad server sources with their type and status.
GET /esa/{esaId} Get an ad server connection · Get an ad server source #
Ask an LLM
“Can I look up one ad server source by its connection ID?”
“What are the details of a specific ad server connection?”
Tell an agent
Show ad server connection {esaId}.
Get the ad server source with connection ID {esaId}.
POST /esa/{esaId}/test-connection Test an ad server connection by connection ID · Test an ad server source #
Ask an LLM
“Can the upstream agent reach my ad server using a given connection ID?”
“Are the credentials on an ad server connection working?”
Tell an agent
Test ad server connection {esaId}.
Check credentials for connection {esaId} against the ad server.
POST /esa/{esaId}/refresh Start ad server syncs by connection ID · Refresh an ad server source #
Ask an LLM
“Can I trigger a sync for an ad server connection using its connection ID?”
“Will refreshing an ad server connection tell me if a sync is already running?”
Tell an agent
Refresh ad server connection {esaId}.
Start sync runs on connection {esaId}.
POST /esa/{esaId}/capabilities/{capability}/recheck Re-check an ad server reporting or forecasting capability · Re-check an ad server capability #
Ask an LLM
“My ad server vendor just enabled reporting access — how do I recheck it?”
“Will rechecking a forecasting capability resume a paused sync?”
Tell an agent
Re-check the {capability} capability on connection {esaId}.
Verify {capability} is now live for ad server {esaId}.
POST /esa/{esaId}/deactivate Deactivate an ad server by connection ID · Deactivate an ad server source #
Ask an LLM
“Can I deactivate an ad server connection by its connection ID and re-provision later?”
“Is deactivating an ad server connection reversible?”
Tell an agent destructive · confirm first
Deactivate ad server connection {esaId}.
Soft-delete the ad server with connection ID {esaId}.
POST /esa/{esaId}/reactivate Reactivate an ad server by connection ID · Reactivate an ad server source #
Ask an LLM
“How do I bring back a deactivated ad server connection using its connection ID?”
“What should I do if reactivation reports TENANT_NOT_FOUND?”
Tell an agent
Reactivate ad server connection {esaId}.
Re-enable connection {esaId}.
GET /esa/{esaId}/status Get ad server health by connection ID · Get ad server source status #
Ask an LLM
“What is the operational snapshot for an ad server connection ID?”
“Can I see webhooks, workflows and setup tasks for an ad server connection?”
Tell an agent
Get the status of ad server connection {esaId}.
Show connection {esaId} status with sync history {includeSyncHistory}.
GET /esa/{esaId}/sync-history List sync runs by connection ID · List ad server source sync history #
Ask an LLM
“Can I page through historical syncs for an ad server connection ID?”
“Which sync types have run on an ad server connection?”
Tell an agent
List sync history for ad server connection {esaId}.
Show the last {limit} sync runs on connection {esaId}.
POST /esa/{esaId}/launch Open the admin UI for an ad server connection · Mint an ad server source launch URL #
Ask an LLM
“Can I get a one-time sign-in link to the admin UI for an ad server connection ID?”
“Can the admin launch link for a connection open on a specific page?”
Tell an agent
Mint a launch URL for ad server connection {esaId}.
Give me an admin link for connection {esaId} landing on {path}.
GET /operating-instructions List operating-instructions versions · List operating-instructions versions #
Ask an LLM
“Which versions of my storefront's operating instructions exist?”
“Which operating-instructions version is active right now among all versions?”
Tell an agent
List all my operating-instructions versions.
Show the history of operating instructions, newest first.
POST /operating-instructions Write a new operating-instructions version · Create a new operating-instructions version #
Ask an LLM
“Does a new operating-instructions version go live automatically?”
“Can I create operating instructions and activate them in one call?”
Tell an agent
Create a new operating-instructions version with content {content}.
Write operating instructions {content} and set activate to {activate}.
GET /operating-instructions/active Get the active operating instructions · Get the active operating-instructions version #
Ask an LLM
“What operating instructions is my merchandising agent following right now?”
“Have I activated any operating instructions yet?”
Tell an agent
Show my active operating instructions.
Get the operating-instructions version currently in use.
GET /operating-instructions/{version} Get an operating-instructions version · Get a specific operating-instructions version #
Ask an LLM
“Can I read an older operating-instructions version by number?”
“What did operating instructions say in a past version?”
Tell an agent
Show operating-instructions version {version}.
Fetch operating instructions number {version}.
POST /operating-instructions/{version}/activate Activate an operating-instructions version · Activate an operating-instructions version #
Ask an LLM
“How do I roll back to a previous version of my operating instructions?”
“Which compositions use a newly activated operating-instructions version?”
Tell an agent
Activate operating-instructions version {version}.
Switch my storefront to operating instructions version {version}.
GET /acceptance-policy List acceptance-policy versions · List acceptance-policy versions #
Ask an LLM
“Which acceptance-policy versions have I written?”
“Can I see which acceptance policy version is flagged active in the full list?”
Tell an agent
List all acceptance-policy versions.
Show my acceptance policy history, newest first.
POST /acceptance-policy Write a new acceptance-policy version · Create a new acceptance-policy version #
Ask an LLM
“Can I author a new acceptance policy and make it active at the same time?”
“Are acceptance-policy versions editable after I create them?”
Tell an agent
Create an acceptance policy with content {content}.
Write acceptance policy {content} and activate it {activate}.
GET /acceptance-policy/active Get the active acceptance policy · Get the active acceptance-policy version #
Ask an LLM
“Which acceptance policy do my creative and media-buy approvals use right now?”
“Is any acceptance policy active on my storefront?”
Tell an agent
Show my active acceptance policy.
Get the acceptance policy approvals are using.
GET /acceptance-policy/{version} Get an acceptance-policy version · Get a specific acceptance-policy version #
Ask an LLM
“Can I read a specific acceptance-policy version by number?”
“What did an earlier acceptance policy allow?”
Tell an agent
Show acceptance-policy version {version}.
Fetch acceptance policy number {version}.
POST /acceptance-policy/{version}/activate Activate an acceptance-policy version · Activate an acceptance-policy version #
Ask an LLM
“How do I switch approval workflows to a different acceptance policy version?”
“Can I revert to an older acceptance policy?”
Tell an agent
Activate acceptance-policy version {version}.
Make acceptance policy {version} the one approvals use.
PUT /learned-default-posture Pin or clear the learned negotiation posture · Pin or clear the learned default posture #
Ask an LLM
“Can I pin a default negotiation posture for the merchandising agent?”
“When does the merchandising agent fall back to the learned default posture?”
Tell an agent
Pin {posture} as my storefront's learned default posture.
Set the learned default negotiation posture to {posture}, or null to clear it.
GET /buyer-instructions List buyer-instructions rows · List buyer-instructions rows #
Ask an LLM
“What buyer-specific discounts and instructions have I configured?”
“Which operator and brand pairs have buyer instructions?”
Tell an agent
List all my buyer-instructions rows.
Show every buyer instruction on the storefront.
POST /buyer-instructions Add buyer-specific instructions · Create a buyer-instructions row #
Ask an LLM
“Can I give a specific agency and brand a discount limited to certain countries?”
“What happens if I create buyer instructions for a pair that already exists?”
Tell an agent
Give operator {operatorDomain} buying for {brandDomain} a {discountPercent}% discount in {countries} with notes {notes}.
Create buyer instructions for {brandDomain} via {operatorDomain}: {discountPercent}% off, countries {countries}, note {notes}.
PATCH /buyer-instructions/{id} Update a buyer-instructions row · Update a buyer-instructions row #
Ask an LLM
“Can I change the discount on existing buyer instructions?”
“Which buyer-instruction fields can I edit after creating it?”
Tell an agent
Change the discount on buyer instruction {id} to {discountPercent}%.
Update buyer instruction {id} countries to {countries}.
DELETE /buyer-instructions/{id} Delete a buyer-instructions row · Delete a buyer-instructions row #
Ask an LLM
“Can I remove buyer-specific instructions I no longer want?”
“How do I change the brand on buyer instructions if scope is immutable?”
Tell an agent destructive · confirm first
Delete buyer-instructions row {id}.
Remove buyer instruction {id}.
GET /house-discounts List rate-card discounts · List rate-card discount rows #
Ask an LLM
“Which rate-card discounts have I set for brands and operators?”
“What house discounts are configured on my storefront?”
Tell an agent
List my rate-card discounts.
Show every brand and operator house discount.
POST /house-discounts Create a rate-card discount · Create a rate-card discount row #
Ask an LLM
“Can I set a rate-card discount for a parent company that also covers its sub-brands?”
“Can I key a house discount to an operator instead of a brand?”
Tell an agent
Create a {discountPercent}% {scope} rate-card discount for {houseDomain} with note {notes}.
Add a house discount of {discountPercent}% for {houseDomain} as a {scope}, noting {notes}.
GET /house-discounts/resolve Preview a domain's corporate parent · Resolve a domain up its corporate hierarchy (authoring preview) #
Ask an LLM
“Which parent company would a discount for this brand domain resolve to?”
“Can I check a domain's corporate hierarchy before saving a discount?”
Tell an agent
Resolve {domain} up its corporate hierarchy.
Preview which house a discount for {domain} would key to.
PATCH /house-discounts/{id} Update a rate-card discount · Update a rate-card discount row #
Ask an LLM
“Can I change the percentage on an existing house discount?”
“Which fields on a rate-card discount can I still edit?”
Tell an agent
Set rate-card discount {id} to {discountPercent}%.
Update the notes on house discount {id} to {notes}.
DELETE /house-discounts/{id} Delete a rate-card discount · Delete a rate-card discount row #
Ask an LLM
“Can I remove a rate-card discount I set for a house?”
“Is deleting the only way to change a house discount's scope?”
Tell an agent destructive · confirm first
Delete rate-card discount {id}.
Remove house discount {id}.
GET /buyer-auto-approvals List per-buyer auto-approve overrides · List per-buyer media-buy auto-approve overrides #
Ask an LLM
“Which buyers have media-buy auto-approve turned on?”
“Can I see buyers whose auto-approve override is disabled too?”
Tell an agent
List my per-buyer media-buy auto-approve settings.
Show which trusted buyers skip media-buy review.
PUT /buyer-auto-approvals/{buyerCustomerId} Turn auto-approve on or off for a buyer · Enable or disable per-buyer media-buy auto-approve #
Ask an LLM
“Can I let a trusted buyer's media buys skip human review?”
“Does buyer auto-approve also apply to their creatives?”
Tell an agent
Set auto-approve for buyer {buyerCustomerId} to {enabled}.
Enable media-buy auto-approval for buyer {buyerCustomerId} with enabled {enabled} because {reason}.
GET /simulator/scenarios List merchandising simulator scenarios · List merchandising simulation scenarios #
Ask an LLM
“Which merchandising simulator scenarios have I saved?”
“Are my older simulator scenarios still runnable after 30 days?”
Tell an agent
List my merchandising simulation scenarios.
Show {limit} simulator scenarios from offset {offset}.
POST /simulator/scenarios Create a merchandising simulator scenario · Create a merchandising simulation scenario #
Ask an LLM
“Can I build a simulation scenario from a past decision my storefront made?”
“Can I start a simulator scenario from my own brief?”
Tell an agent
Create a simulator scenario titled {title} from source {source}.
Start a merchandising simulation {title} using {source} on inventory source {sourceId}.
GET /simulator/scenarios/{scenarioId} Get a merchandising simulator scenario · Get a merchandising simulation scenario #
Ask an LLM
“What revisions and variants does a simulator scenario contain?”
“Can I open one simulation scenario to review its history?”
Tell an agent
Show simulator scenario {scenarioId}.
Get every revision and variant of scenario {scenarioId}.
POST /simulator/scenarios/{scenarioId}/revisions Add a revision to a simulator scenario · Append a merchandising simulation revision #
Ask an LLM
“Can I recapture a simulator scenario without overwriting earlier evidence?”
“Does a new scenario revision get its own replay window?”
Tell an agent
Append a revision titled {title} to scenario {scenarioId} from {source}.
Capture a fresh revision {title} of simulation {scenarioId} using source {source}.
POST /simulator/scenarios/{scenarioId}/revisions/{revisionId}/variants Add a what-if variant to a simulation · Append a merchandising simulation variant #
Ask an LLM
“Can I test a different pricing or posture in the simulator without changing my live storefront?”
“How many counterfactual variants can one simulation revision hold?”
Tell an agent
Add variant {label} with overrides {overrides} to revision {revisionId} of scenario {scenarioId}.
Create a what-if {label} on scenario {scenarioId} revision {revisionId} using {overrides}.
POST /simulator/scenarios/{scenarioId}/revisions/{revisionId}/variants/{variantId}/executions Run a merchandising simulation variant · Execute a pinned merchandising simulation variant #
Ask an LLM
“How do I run a simulator variant through the merchandising engine?”
“Does running a simulation variant change my live storefront controls?”
Tell an agent
Execute variant {variantId} of revision {revisionId} in scenario {scenarioId}.
Run simulation variant {variantId} on scenario {scenarioId}, revision {revisionId}.
GET /intelligence-runs List storefront intelligence runs · List storefront intelligence-run records #
Ask an LLM
“What briefs has my merchandising agent processed recently?”
“Can I filter intelligence runs by disposition or commercial result?”
Tell an agent
List my latest intelligence runs.
Show intelligence runs with disposition {disposition}.
GET /intelligence-runs/{id} Get one intelligence run · Get a storefront intelligence-run record #
Ask an LLM
“What prompt and LLM output produced a specific intelligence run?”
“Which products did an intelligence run compose?”
Tell an agent
Show intelligence run {id} with its full prompt and output.
Get the rationale and composed products for run {id}.
GET /intelligence-runs/{id}/decision-record Get the seller decision record for a run · Get the canonical seller decision record for an intelligence run #
Ask an LLM
“Why did my storefront respond to a buyer ask the way it did?”
“Can I see the approval and commercial outcome chronology for one run?”
Tell an agent
Show the seller decision record for run {id}.
Get the decision chronology for intelligence run {id}.
PUT /intelligence-runs/{id}/label Label an intelligence run for evaluation · Attach an evaluator label to an intelligence-run #
Ask an LLM
“Can I grade an intelligence run as good or bad for evals?”
“Does labeling a run replace an existing evaluator label?”
Tell an agent
Label intelligence run {id} with {label}.
Attach evaluator verdict {label} to run {id}.
GET /demand-inbox View the demand inbox ledger · Get the demand-inbox ledger #
Ask an LLM
“What briefs, proposals and results are in my demand inbox?”
“Can I see win metrics computed from my demand inbox rows?”
Tell an agent
Show my demand inbox.
Get {take} demand inbox rows skipping {skip}.
PUT /demand-inbox/{runId}/ledger Grade a demand inbox row · Record demand-inbox ledger annotations #
Ask an LLM
“Can I give a proposal an A to F grade and record buyer feedback?”
“Can I note whether an agent or a human led a deal?”
Tell an agent
Grade demand inbox run {runId} as {grade}.
Record buyer feedback {feedback} on inbox row {runId}, led by {ledBy}.
GET /demand-inbox/{runId}/exchange View a demand exchange's proposal passes · Get a demand exchange (proposal pass) #
Ask an LLM
“What happened across each proposal pass for one buyer brief?”
“Can I inspect the pricing and product allocation of each pass in a deal?”
Tell an agent
Show the full exchange for demand run {runId}.
Get the proposal passes and pricing for exchange {runId}.
POST /demand-inbox/{runId}/exchange/revisions Draft a revised proposal on a live exchange · Compose a demand exchange revision #
Ask an LLM
“Can I re-price a live proposal by drafting a revision with new overrides?”
“Does composing an exchange revision send it to the buyer right away?”
Tell an agent
Compose a draft revision on exchange {runId} with overrides {overrides}.
Draft a new proposal pass for run {runId} using {overrides}.
POST /demand-inbox/{runId}/exchange/revisions/{revisionId}/submit Submit a proposal revision for approval · Submit a demand exchange revision for approval #
Ask an LLM
“How do I send a drafted exchange revision for approval?”
“Will an auto-approve override clear my submitted revision immediately?”
Tell an agent
Submit revision {revisionId} on exchange {runId} at generation {expectedSubmissionGeneration}.
Send draft {revisionId} of run {runId} for approval, expecting generation {expectedSubmissionGeneration}.
PUT /demand-inbox/{runId}/exchange/revisions/{revisionId}/decision Approve or reject a proposal revision · Approve or reject a demand exchange revision #
Ask an LLM
“Can the person who drafted a proposal revision also approve it?”
“Can I withdraw my own submitted exchange revision?”
Tell an agent
Mark revision {revisionId} on exchange {runId} as {decision} at generation {expectedSubmissionGeneration}.
Reject exchange revision {revisionId} for run {runId} with notes {notes}, generation {expectedSubmissionGeneration}, decision {decision}.
POST /demand-inbox/{runId}/exchange/revisions/{revisionId}/amend Amend a draft proposal revision in place · Amend a demand exchange revision #
Ask an LLM
“Can I fix a rejected exchange revision instead of starting a new one?”
“What happens to a pending approval if I amend the draft?”
Tell an agent
Amend revision {revisionId} on exchange {runId} with overrides {overrides}.
Re-run draft {revisionId} of run {runId} in place using {overrides}.
DELETE /demand-inbox/{runId}/exchange/revisions/{revisionId} Discard a draft proposal revision · Discard a demand exchange revision #
Ask an LLM
“Can I throw away a draft exchange revision I don't want?”
“Does a discarded revision still count against the adjustment limit?”
Tell an agent destructive · confirm first
Discard draft revision {revisionId} on exchange {runId}.
Delete the unsubmitted revision {revisionId} for run {runId}.
GET /brief-artifacts List received buyer brief artifacts · List canonical brief artifacts #
Ask an LLM
“Which get_products briefs has my storefront received from buyers?”
“Can I page through the stored brief artifacts?”
Tell an agent
List the brief artifacts my storefront received.
Show {take} brief artifacts skipping {skip}.
GET /brief-artifacts/{id} Get a buyer brief artifact · Get a canonical brief artifact #
Ask an LLM
“What exact request did a buyer send in one brief?”
“Was a brief artifact's payload kept or truncated for size?”
Tell an agent
Show brief artifact {id} with its payload.
Get the redaction manifest for brief {id}.
GET /proposal-artifacts List proposal artifacts sent to buyers · List canonical proposal artifacts #
Ask an LLM
“What proposals has my storefront sent back to buyers?”
“Can I see every proposal version that answered one brief?”
Tell an agent
List my proposal artifacts.
Show every proposal answering brief {briefArtifactId}.
GET /proposal-artifacts/{id} Get a proposal artifact · Get a canonical proposal artifact #
Ask an LLM
“What exactly did my storefront propose in one response?”
“Can I see the product snapshots referenced by a proposal?”
Tell an agent
Show proposal artifact {id}.
Get the response envelope and products for proposal {id}.
GET /seller-analytics See win rate by negotiation posture · Get the seller-analytics posture-conversion rollup #
Ask an LLM
“Which negotiation posture wins the most deals for my storefront?”
“How often does my agent follow the recommended posture?”
Tell an agent
Show seller analytics by negotiation posture.
Roll up posture conversion over the last {limit} runs.
GET /approval-routing Get approval routing settings · Get storefront approval routing #
Ask an LLM
“Who gets notified when a media buy or creative needs approval?”
“What are my approval reminder and escalation SLAs?”
Tell an agent
Show my storefront approval routing.
Get the primary and fallback approvers for media buys and creatives.
PUT /approval-routing/{kind} Set approval routing for buys or creatives · Replace one storefront approval routing policy #
Ask an LLM
“Can I route creative approvals to specific users with a fallback group?”
“How do I set when approvals send reminders and escalate?”
Tell an agent
Route {kind} approvals over {primaryChannels}, falling back to {fallbackChannels}.
For {kind} approvals, remind after {reminderAfterMinutes} min and escalate after {escalateAfterMinutes} min.
PUT /approval-routing/work-items/{workItemId}/assignee Reassign an approval task · Reassign an approval work item #
Ask an LLM
“Can I move a pending approval to a different eligible reviewer?”
“Does reassigning approval work give an admin approval rights?”
Tell an agent
Reassign approval work item {workItemId} to user {userId}.
Hand approval task {workItemId} over to {userId}.
GET /media-buy-approvals List the media-buy approval queue · List media-buy approval entries #
Ask an LLM
“Which media buys are waiting for my approval?”
“Can I see media buys I already approved, rejected or revoked?”
Tell an agent
List pending media-buy approvals.
Show media-buy approvals with status {status}.
GET /media-buy-approvals/{mediaBuyId} Get one media-buy approval entry · Get a single media-buy approval entry #
Ask an LLM
“What did the buyer submit in a specific media buy awaiting approval?”
“Has a decision been recorded on a given media buy approval?”
Tell an agent
Show the approval entry for media buy {mediaBuyId}.
Get the submitted payload and status of buy {mediaBuyId}.
POST /media-buy-approvals/{mediaBuyId}/decide Approve or reject a pending media buy · Approve or reject a pending media buy #
Ask an LLM
“How do I approve a media buy so it gets forwarded upstream?”
“Can I decide on a media buy that was already approved?”
Tell an agent
Set media buy {mediaBuyId} to {status}.
Reject media buy {mediaBuyId} with status {status} and note {reviewerNotes}.
POST /media-buy-approvals/{mediaBuyId}/evaluate Check a media buy against acceptance policy · Evaluate a media buy against acceptance policy #
Ask an LLM
“Is this pending media buy on policy or does it need a human?”
“When will the evaluator recommend auto-approving a media buy?”
Tell an agent
Evaluate media buy {mediaBuyId} against my acceptance policy.
Classify whether buy {mediaBuyId} needs human approval.
POST /media-buy-approvals/{mediaBuyId}/retry-forward Retry forwarding an approved media buy · Retry forwarding an approved media buy #
Ask an LLM
“My approved media buy never reached the source — can I resend it?”
“Will retrying a forward double-book the buy?”
Tell an agent
Retry forwarding approved media buy {mediaBuyId}.
Mark the forward of buy {mediaBuyId} terminal with forceTerminal {forceTerminal} because {reason}.
GET /media-buys List all media buys on the storefront · List every media buy on the storefront #
Ask an LLM
“Which media buys have flights starting in the next two days?”
“Can I filter all my media buys by buyer or inventory source?”
Tell an agent
List every media buy on my storefront.
Show media buys from buyer {buyerCustomerId} on source {sourceId}.
GET /media-buys/{mediaBuyId}/timeline Trace a media buy's timeline · Get one buy's exchange timeline #
Ask an LLM
“Where is a media buy stuck between screening, forwarding and delivery?”
“Can I see each stage and source leg of a media buy?”
Tell an agent
Show the exchange timeline for media buy {mediaBuyId}.
Trace the stages of buy {mediaBuyId}.
GET /pending-operations List everything waiting on someone · List everything waiting on someone #
Ask an LLM
“What is waiting on me across buys, creatives and failed forwards?”
“Which failed forwards can I retry versus escalate?”
Tell an agent
Show everything pending on my storefront.
List pending approvals, creative reviews and failed forwards together.
POST /gam-cleanups/{operationId} Clean up a failed GAM order · Resolve a safe failed GAM order cleanup #
Ask an LLM
“Can the sales agent archive a failed Google Ad Manager order for me?”
“How do I record that I cleaned up a failed GAM order myself?”
Tell an agent destructive · confirm first
Archive the failed GAM order for cleanup operation {operationId}.
Resolve failed GAM order cleanup {operationId}.
GET /test-runs List recent sandbox agent test runs · List recent sandbox test runs #
Ask an LLM
“What sandbox test runs have been run against my storefront's agents?”
“Can I look up one sandbox test run by its run ID?”
Tell an agent
List my recent sandbox test runs.
Show sandbox test run {runUid}.
POST /test-campaigns/plan Plan a sandbox test campaign · Plan a sandbox inventory-source test campaign #
Ask an LLM
“Can I check a source's readiness for a no-spend test campaign before running it?”
“How do I get the plan token needed to run a sandbox campaign?”
Tell an agent
Plan a sandbox test campaign for an inventory source.
Inspect product candidates for a no-spend test campaign.
POST /test-campaigns/execute Run a confirmed sandbox test campaign · Execute a confirmed sandbox inventory-source test campaign #
Ask an LLM
“How do I launch the sandbox test campaign I planned?”
“Can I change the budget when executing a planned test campaign?”
Tell an agent
Execute the sandbox test campaign with plan token {planToken}.
Run planned test campaign {planToken}.
GET /creative-reviews List the creative review queue · List creative review queue #
Ask an LLM
“Which buyer creatives are waiting for my review?”
“Can I list creatives I've already approved or rejected?”
Tell an agent
List pending creative reviews.
Show creative reviews with status {status}.
GET /creative-reviews/{creativeId} Get a creative review · Get a creative review row #
Ask an LLM
“What is the review status of one buyer creative?”
“Can I look up a creative review by its creative ID?”
Tell an agent
Show creative review {creativeId}.
Get the review row for creative {creativeId}.
POST /creative-reviews/{creativeId}/decide Approve or reject a creative · Record a decision on a pending creative review #
Ask an LLM
“How do I approve a buyer's creative?”
“Can I revoke a creative that's already approved through the decide step?”
Tell an agent
Set creative {creativeId} to {status}.
Reject creative {creativeId} as {status} with notes {reviewer_notes}.
POST /creative-reviews/{creativeId}/evaluate Get an AI recommendation on a creative · Evaluate a pending creative review #
Ask an LLM
“Can AI tell me whether a buyer creative fits my acceptance policy?”
“Can I ask the evaluator specific questions about a creative?”
Tell an agent
Evaluate creative {creativeId} with AI.
Check creative {creativeId} is for brand {expected_brand} and answer {questions}.
GET /publishers List publisher domains · List publisher domains #
Ask an LLM
“Which publisher domains is my storefront associated with?”
“Are my publisher domains authorized in their adagents.json?”
Tell an agent
List my storefront's publisher domains.
Show publishers with their adagents.json authorization verdict.
PUT /publishers Replace the full publisher list · Replace publisher list #
Ask an LLM
“Can I upload my whole list of publisher domains at once?”
“What happens if one domain in a bulk publisher replace is invalid?”
Tell an agent
Replace my declared publishers with {publishers}.
Overwrite the publisher domain list with {publishers}.
POST /publishers Add a publisher domain · Add a publisher domain #
Ask an LLM
“Can I add a single publisher domain by pasting its URL?”
“How do I declare one more publisher on my storefront?”
Tell an agent
Add publisher domain {domain}.
Declare {domain} as one of my publishers.
GET /property-roster Get the property roster · Get the property roster #
Ask an LLM
“Which properties and collections are resolved under each of my publishers?”
“What is the authorization status of the properties in my roster?”
Tell an agent
Show my property roster.
Get every publisher's properties and authorization outcome.
POST /property-roster/properties Declare a property under a publisher · Declare a property #
Ask an LLM
“Can I add a property myself when the publisher's adagents.json doesn't list it?”
“What happens if the publisher later declares the same property?”
Tell an agent
Declare property {property} under publisher {domain}.
Add a seller-declared property {property} to {domain}.
DELETE /property-roster/properties/{domain}/{propertyKey} Remove a declared roster property · Remove a declared property #
Ask an LLM
“Can I remove a property I declared from the roster?”
“Why can't I remove a property that came from the publisher's adagents.json?”
Tell an agent destructive · confirm first
Remove property {propertyKey} from publisher {domain}.
Delete my declared property {propertyKey} under {domain}.
DELETE /publishers/{domain} Remove a publisher domain · Remove a publisher domain #
Ask an LLM
“Can I remove a publisher domain I declared?”
“Why does removing a crawled publisher domain fail?”
Tell an agent destructive · confirm first
Remove publisher domain {domain}.
Drop {domain} from my declared publishers.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scope3:scope3-storefront-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scope3-storefront-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Scope3 Storefront API
  version: 2.0.0
  description: 'REST API for partners to manage storefronts, inventory sources, and billing.


    ## Authentication


    All endpoints require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer your-api-key

    ```


    ## Base URL


    `https://api.interchange.io/api/v2/storefront`


    ## For AI Agents


    AI agents can use the MCP endpoint at `/mcp/v2/storefront` with three tools:

    - `initialize`: Start an MCP session

    - `api_call`: Make REST API calls

    - `ask_about_capability`: Learn about API features'
servers:
- url: https://api.interchange.io/api/v2/storefront
  description: Production server
tags:


# --- truncated at 32 KB (1308 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scope3/refs/heads/main/openapi/scope3-storefront-api-openapi.yml