Connecting an MCP client doesn’t install a pixel, connect a CRM or start a feed. Each path below is
its own step.
Send events from your application
- Pick the owning advertiser and use an API key for the buyer REST API.
- Register the source:
POST /api/v2/buyer/event-sourcesfor one, orPOST /api/v2/buyer/advertisers/{advertiserId}/event-sources/syncfor several. - Send events from your backend to
POST /api/v2/buyer/event-sources/{key}/events, up to 10,000 per call. - Read the source’s health (
not_seen,receiving,needs_attention) until it’sreceiving.
save_measurement_source (sourceType: "event") creates or updates one source and
log_event sends events with the same fields as the REST call; get with
kind: "measurement_source" reads health. Semicola keeps daily and hourly counts (and a daily total
value) per event type, not individual events. Send an eventId so a resent event is dropped as a
duplicate instead of counting twice.
To have sellers optimize for the conversions, name the source in a campaign’s
optimization goal. When the campaign sends a buy to a seller,
Semicola registers the source on that seller, and later events that carry an eventId are forwarded
to it (see How a source reaches each seller).
Payloads, event types and health are in Event sources. The
Set up an event source skill walks an agent through it. Don’t send
raw personal data; send only the fields the endpoint documents.
Import a finished creative
Your application can make content with its own tools and bring the approved version in.- Pick the advertiser, and the campaign if the creative is for one.
- Read the formats the campaign’s sellers accept before you choose a rendition (see How AdCP thinks about video for size and duration rules).
- Upload the file:
POST /api/v2/buyer/assets/uploadreturns a signeduploadUrlanduploadHeaders;PUTthe bytes there. In chat,upload_creative_assetopens the upload task instead. - Save the creative with
save_creative:sourceAssetsfor uploaded files,urlAssetfor a VAST tag or tracker,copyfor text, andcampaignIdsto attach it. - Read the creative back and check each seller’s review before launch (Creatives).
Import a tag sheet
An ad-server export with one tag per placement becomes one draft creative per row. Preview it first with Inspect a tag sheet, then import it from the creative library’s Bulk upload creatives. Resending the same sheet reuses the creatives it already made.Connect seller inventory
From the Seller account, callget_status, then search with kind: "inventory_source" to see
what’s already set up. Save a source with save_inventory_source (an external sales agent’s URL and
auth, or the ad server). Enter credentials in the setup page, not in chat. Read the source with get;
a saved connection isn’t proof of a successful call, so run a test (see
Inventory sources and Test a sales agent).
Saving a source doesn’t publish it. With
runDiscoveryTest: true, or later with run_inventory_source_discovery_test, Semicola sends a probe
brief through the agent’s get_products so you can see real products come back. To check the whole
transaction path without spending, save_test_run answers a practice brief, books a sandbox media buy
and reads delivery back.
If your inventory is an avails spreadsheet or export rather than a sales agent, create a modular source
with Add a modular source, then preview and commit its rows with Import inventory feed. Committed
rows become products; see Modular sources.
Add seller materials
save_material teaches the storefront agent from a media kit, rate card, deck, past RFP, note or URL.
Send the content as inline text, a url, or an uploaded file’s assetRef. Read it with get
(kind: "material") and review each extracted selling point (confirm it, withdraw it or add your own
with the save_material actions) in the Library before relying on it. Nothing changes
your listing, products or playbook until someone confirms it, and a rate card is evidence, not a price
change. Documents in a cloud
drive can be requested through Cloud drive connections.
Not available yet
- Aggregated outcome uploads (CRM, MMP or warehouse totals by day or campaign).
- Identity fields (see Event sources).
- A browser pixel: events come from your backend.
- Reading inventory from an ad server (Google Ad Manager, FreeWheel, SpringServe) or trafficking to one: an ad-server connection can be saved, but it stores settings only.
- Booking, trafficking or reporting through a modular source: its avails feed works, the rest is still manual (see Modular sources).