25 connectors. 0 have spent money.
The whole supply matrix, graded on our own evidence ledger.
One connector — Vibe, on 13 August 2026 — has had read-only calls accepted by a live vendor API: OAuth, advertiser discovery and a 549-unit catalogue read. That is the entirety of the live vendor evidence. No connector has ever executed a buy.
- where the grades come from
- The adapter-level status in packages/adapters/src/provenance.ts, not a slide and not the README, which is stale on at least two rails.
- what keeps the zeros honest
- A continuous-integration check fails the build if anything claims spend-tested or report-verified without a dated evidence record.
- what a grade is not
- Evidence maturity is never inferred from the presence of code or credentials. A mocked HTTP test proves a client was written and nothing else.
6 levels of evidence. Nothing has reached the top 2.
Most platforms answer "what can you actually buy?" with a wall of logos, which is unfalsifiable and therefore worth nothing to the person asking. This is the falsifiable version, and the grades are not ours to soften: they come from our own evidence ledger, which states that a mocked HTTP test proves a client was written, not that a vendor accepted the request, spent money, or returned real delivery. Two of the six levels have never been reached by anything, and a continuous-integration check enforces that those two counts stay honest.
- level 1 of 60of 25 connectorsSandbox only
Deterministic behaviour for planning and rehearsal. No live path is claimed at all.
No connector sits here as a whole, which is why the count is zero. The level is reached inside connectors, on single operations that claim no live path at all: StackAdapt's inventory browse and Vibe's forecast are both sandbox, on rails whose other operations are not.
- level 2 of 66of 25 connectorsStub
The adapter models the vendor's shapes and drives the sandbox, but every live method fails closed and makes no vendor call whatsoever. Blocked on a contract, a seat or a published schema.
Vistar Media · Comcast Universal Ads · European Unified ID · CACI · Adsquare · Cint
- level 3 of 618of 25 connectorsClient built
A live HTTP client exists and passes mocked tests. In our own words, that proves the client is written — not that a vendor accepted the request, spent money, or returned real delivery.
all 18 listed in the matrix below
- level 4 of 61of 25 connectorsContract tested
A real vendor API accepted real calls from this client. It does not mean a buy has been executed.
Vibe
- level 5 of 60of 25 connectorsSpend testednever reached
A controlled paid activation has run through this rail.
Nothing has reached this level. Our continuous integration keeps the count at zero until a rail genuinely earns it, so this number cannot be moved by a decision to describe things differently.
- level 6 of 60of 25 connectorsReport verifiednever reached
Provider report rows have been reconciled to an invoice through this rail.
Nothing has reached this level. Our continuous integration keeps the count at zero until a rail genuinely earns it, so this number cannot be moved by a decision to describe things differently.
0 + 6 + 18 + 1 + 0 + 0 = 25. Every connector sits at exactly one level, and the level it sits at is the adapter’s own status in our evidence ledger rather than a judgement made for this page.
All 25 rails, and what each one is waiting on
Grouped by what the rail actually is, because the four kinds fail differently: a buying API is waiting on a contract and a canary, a booking workflow is waiting on a sales house to send its first delivery statement, an audience source is waiting on a data licence, and a measurement source is waiting on a campaign with rows in it. Every row carries a blocker, and none of them is hidden behind a disclosure.
Buying API
12 of 25 · 2 stub · 9 client built · 1 contract tested · 0 spend testedThe vendor publishes an API and we call it directly. A grade here describes the client that was written, not a buy that was made.
| Vendor | What it is | Channels | Evidence grade | What stands between it and the next grade |
|---|---|---|---|---|
| StackAdaptstackadaptP0 | What it isProgrammatic CTV, audio and DOOH through one GraphQL seat. The broadest single rail here. | ChannelsCTV & streamingPodcast & audioDOOH | Evidence gradeClient builtlevel 3 of 6 | Blocker A contracted seat, then a controlled paid activation reconciled to a StackAdapt invoice. Access · not a signup StackAdapt is graded Client built on the six-level evidence ledger.Live inventory browse is not available: the client deliberately reports that StackAdapt has no public inventory-browse API, so catalogues shown in the sandbox are sandbox catalogues. |
| Google Adsgoogle-adsP0 | What it isPaid search, with buyer-applied keywords and negatives on a version-fenced draft. Provider suggestions never auto-buy. | ChannelsPaid search | Evidence gradeClient builtlevel 3 of 6 | Blocker The design-partner canary, passed for this rail specifically: staged PAUSED, human-recorded creative decision, separately granted resume, capped canary, then spend reconciled to the Google account total. Access · not a signup Google Ads is graded Client built on the six-level evidence ledger.Initial canaries are clicks-only. Live conversion optimisation fails closed until an approved conversion definition is bound to an exact provider-owned goal, read back before staging and reverified at resume. |
| Microsoft Advertisingmicrosoft-adsP0 | What it isPaid search on Bing, planned against the same neutral brief as Google rather than as a separate campaign. | ChannelsPaid search | Evidence gradeClient builtlevel 3 of 6 | Blocker Microsoft Advertising is graded Client built on the six-level evidence ledger.The same canary gate, passed separately. A Google pass proves nothing about Microsoft. |
| Meta Adsmeta-adsP0 | What it isPaid social on Facebook and Instagram, staged PAUSED until a human approves the exact creative bytes. | ChannelsPaid social | Evidence gradeClient builtlevel 3 of 6 | Blocker Meta Ads is graded Client built on the six-level evidence ledger.The canary gate, passed separately, including an ad-account and Page identity check. |
| TikTok for Businesstiktok-adsP0 | What it isPaid social on TikTok. AI-generated video carries a self-disclosure provenance declaration that must survive the provider readback. | ChannelsPaid social | Evidence gradeClient builtlevel 3 of 6 | Blocker TikTok for Business is graded Client built on the six-level evidence ledger.The canary gate, plus exact AI-generation provenance on every selected video. |
| Amazon Adsamazon-dspP0 | What it isAmazon DSP sub-seat for CTV and audio, with refresh-token rotation held under a single-writer lock. | ChannelsCTV & streamingPodcast & audio | Evidence gradeClient builtlevel 3 of 6 | Blocker A live test buy and a reconciled report. Access · not a signup Amazon Ads is graded Client built on the six-level evidence ledger.Requires a DSP sub-seat obtained through an authorised reseller. Not an open developer signup. |
| Spotifyspotify-adsP0 | What it isSpotify Ads API for podcast and music audio. | ChannelsPodcast & audio | Evidence gradeClient builtlevel 3 of 6 | Blocker A successful write. A live probe on 13 August 2026 established only that the snake_case routes answer 400 or 403 — that is route existence, not an accepted request. Access · not a signup Spotify is graded Client built on the six-level evidence ledger.Needs an Ads-API-enabled app, API-terms registration and per-ad-account user OAuth, which grants access to your own account rather than multi-tenant inventory. Podcast targeting remains topic and genre based in closed-test campaign APIs. |
| RokurokuP0 | What it isRoku CTV. Reporting only. | ChannelsCTV & streaming | Evidence gradeClient builtlevel 3 of 6 | Blocker Roku documents campaign and ad-group writes and creative operations as future functionality, so activation, pause, creative submission, forecast and audience sync all fail closed before any request. Only report pulls are implemented. Access · not a signup Roku is graded Client built on the six-level evidence ledger.Self-service Ads Manager accounts, not credential-free multi-tenant supply. |
| Perion (Hivestack)hivestackP0 | What it isProgrammatic DOOH. | ChannelsDOOH | Evidence gradeClient builtlevel 3 of 6 | Blocker Live activation requires hand-picked Hivestack unit ids: venue and postcode semantics have no verified vendor-id translation, and live creative submission and report pulls both fail closed. A compiled DOOH persona cannot drive this rail end to end today. Access · not a signup Perion (Hivestack) is graded Client built on the six-level evidence ledger.Keys come through a commercial relationship rather than open self-serve signup. |
| VibevibeP1 | What it isPerformance CTV in the United States. The only rail with any live vendor evidence at all. | ChannelsCTV & streaming | Evidence gradeContract testedlevel 4 of 6 | Blocker Contract-tested covers the header and the inventory read only — OAuth, advertiser discovery and a 549-unit catalogue read, on 13 August 2026. Activation, pause, creative and reporting are all still client-built, forecast is sandbox, and the report download payload is undocumented. Its own gate reads: execute one controlled test buy and verify the asynchronous report payload end to end. Access · not a signup Vibe is graded Contract tested on the six-level evidence ledger.US inventory in USD only. The adapter refuses a non-USD budget outright, and this rail is deferred from the UK queue until that changes. The 549 units are US units and are not UK reach. |
| Vistar MediavistarP0 | What it isDOOH and cinema supply. Sandbox planning data only. | ChannelsDOOHCinema | Evidence gradeStublevel 2 of 6 | Blocker There is no live client. Forecast, activate, pause, creative submission, reporting and inventory listing all throw before any request. Vistar publishes no stable normalised reporting schema, and creative submission needs an advertiser domain, IAB categories, publisher scope and OpenRTB markup the current shape cannot carry. Access · not a signup Vistar Media is graded Stub on the six-level evidence ledger.An approved trafficking seat plus separate bidder approval. Partner access, not developer signup. |
| Comcast Universal Adsuniversal-adsP0 | What it isA typed client stub for the Universal Ads Marketing API. | ChannelsAddressable & linear TV | Evidence gradeStublevel 2 of 6 | Blocker Partner approval and a per-request RSA signing key, neither of which exists. Every live method fails closed. We do not buy ITV, Sky or Channel 4 inventory today, and this rail should not be read as implying otherwise. Access · not a signup Comcast Universal Ads is graded Stub on the six-level evidence ledger.Developer registration is a form; the partner approval behind it is a commercial relationship, and we have not entered into one. |
Booking workflow
6 of 25 · 6 client built · 0 spend testedNo self-serve API exists, so we generate the booking brief, drive the clearance step and hold the insertion-order state machine. It does not make the booking and it does not report the delivery.
| Vendor | What it is | Channels | Evidence grade | What stands between it and the next grade |
|---|---|---|---|---|
| Digital Cinema Mediadcm-cinemaP0 | What it isGenerates the UK cinema booking brief with audience and genre packs, drives the clearance step, and holds the IO state machine. | ChannelsCinema | Evidence gradeClient builtlevel 3 of 6 | Blocker Digital Cinema Media is graded Client built on the six-level evidence ledger.Ingest and reconcile the first authoritative sales-house delivery statement. These rails automate the paperwork; they do not make the booking and they do not report the delivery. In live mode a report pull throws rather than fabricating rows, and a pause requires sales-house acknowledgement. |
| Pearl & Deanpearl-deanP1 | What it isThe same booking automation for the cinema circuits DCM does not carry. | ChannelsCinema | Evidence gradeClient builtlevel 3 of 6 | Blocker Pearl & Dean is graded Client built on the six-level evidence ledger.Ingest and reconcile the first authoritative sales-house delivery statement. |
| Sky Mediasky-adsmartP1 | What it isSky AdSmart addressable TV, booked as a generated brief on household attribute combinations rather than bid on. | ChannelsAddressable & linear TV | Evidence gradeClient builtlevel 3 of 6 | Blocker Sky Media is graded Client built on the six-level evidence ledger.Ingest and reconcile the first authoritative sales-house delivery statement. |
| ITVitv-planetvP1 | What it isITV Planet V booking paperwork. | ChannelsAddressable & linear TV | Evidence gradeClient builtlevel 3 of 6 | Blocker ITV is graded Client built on the six-level evidence ledger.Ingest and reconcile the first authoritative sales-house delivery statement. |
| Global DAXdax-dealsP1 | What it isDeal paperwork for Global's digital audio supply. | ChannelsPodcast & audio | Evidence gradeClient builtlevel 3 of 6 | Blocker Global DAX is graded Client built on the six-level evidence ledger.Ingest and reconcile the first authoritative sales-house delivery statement. |
| AcastacastP1 | What it isPodcast private-marketplace and named-show package paperwork. | ChannelsPodcast & audio | Evidence gradeClient builtlevel 3 of 6 | Blocker Acast is graded Client built on the six-level evidence ledger.Ingest and reconcile the first authoritative sales-house delivery statement. |
Audience data
3 of 25 · 3 stub · 0 spend testedIdentity, classification and movement sources that would rank or address inventory. Each blocker names the contract that is missing, and what the product emits without it.
| Vendor | What it is | Channels | Evidence grade | What stands between it and the next grade |
|---|---|---|---|---|
| European Unified IDeuidP0 | What it isA consent-chained identifier for addressing first-party lists without a cookie. | ChannelsCTV & streaming | Evidence gradeStublevel 2 of 6 | Blocker European Unified ID is graded Stub on the six-level evidence ledger.An operator agreement. The adapter makes no vendor call, and the CTV compiler emits an empty EUID audience list — no compiled plan carries an EUID today. |
| CACIcaci-acornP0 | What it isAcorn classifications, intended for ranking cinema and DOOH catchments. | ChannelsCinemaDOOH | Evidence gradeStublevel 2 of 6 | Blocker CACI is graded Stub on the six-level evidence ledger.A CACI data licence. No Acorn data is in the product: the stub's scores are deterministic pseudo-random output, and cinema venue ids are constructed from postcode districts rather than from a licensed catchment dataset. |
| AdsquareadsquareP1 | What it isConsent-attested movement data, intended for DOOH screen ranking. | ChannelsDOOH | Evidence gradeStublevel 2 of 6 | Blocker Adsquare is graded Stub on the six-level evidence ledger.An Adsquare contract. There is no movement index in the product: the DOOH compiler emits an empty screen-ranking list, and hand-picked inventory carries a constant over-index of 1.0. |
Measurement
4 of 25 · 1 stub · 3 client built · 0 spend testedWhere the response side of a campaign is read from: your own site analytics, podcast attribution, and survey-based brand lift.
| Vendor | What it is | Channels | Evidence grade | What stands between it and the next grade |
|---|---|---|---|---|
| Plausible AnalyticsplausibleP0 | What it isYour own site's analytics, read through your token, so brand response is measured on data you already own and can audit. | ChannelsAll seven | Evidence gradeClient builtlevel 3 of 6 | Blocker Plausible Analytics is graded Client built on the six-level evidence ledger.A human-verified analytics dossier bound to the site and revision, and a known goal and revenue total reconciled, before the source counts as observed. |
| Google Analytics 4ga4P0 | What it isGA4 as an alternative brand-response source where that is what the advertiser already runs. | ChannelsAll seven | Evidence gradeClient builtlevel 3 of 6 | Blocker Google Analytics 4 is graded Client built on the six-level evidence ledger.The same dossier and reconciliation gate as Plausible. |
| PodscribepodscribeP0 | What it isPodcast attribution: pixel and promo-code response against audio delivery. | ChannelsPodcast & audioCTV & streaming | Evidence gradeClient builtlevel 3 of 6 | Blocker Podscribe is graded Client built on the six-level evidence ledger.A live campaign with rows to reconcile. |
| CintcintP0 | What it isBrand-lift survey panels, intended for the fourth measurement verb. | ChannelsCTV & streamingPodcast & audioAddressable & linear TVCinemaDOOH | Evidence gradeStublevel 2 of 6 | Blocker Cint is graded Stub on the six-level evidence ledger.A Cint contract, and a commissioned study. The adapter makes no vendor call and the measurement payload returns brand lift as an explicit placeholder. |
If the rail you need is a stub, that is a conversation about a contract rather than a roadmap promise. Bring the brief and we will tell you which grade it is really on.
Talk it throughWhat has to happen before a rail is called live
Read this twice. It is the reason nothing above is called live, and it is the reason a rail that clears it will be worth believing: 6 steps, in order, each of which has to produce a record rather than an assurance. Nothing on this site describes a rail as live until the last one is done.
- 01
Contract and credentialed probe
Hold the supplier contract and account scope, save the encrypted credentials, and run a probe against that approved account. Record the accepted request and response shapes, permissions, currency, account identity and idempotency behaviour in a supplier dossier bound to that connection revision. - 02
Stage everything paused
The first outbound activation creates the campaign, ad group and ad PAUSED — DISABLED on TikTok — persists every provider id in an exact staged-resource manifest, and begins no spend at all. - 03
A human approves the exact bytes
A named person records the provider's decision for the exact creative bytes, the immutable destination and the external reference. Approval records evidence; it cannot enable spend. - 04
A separate grant enables it
Resume is a separately granted action that first proves the upstream hierarchy still equals the persisted manifest — no extra, missing or substituted child — and that the upstream account equals both the current credential account and the staged account. A mismatch fails before any write. - 05
A tiny capped canary, then a rehearsed failure
Run a small canary against a capped commitment, confirm delivery in the provider's own UI, invoke the durable pause, and reconcile both a known-success path and an ambiguous one. An ambiguous outcome is never blindly retried; it goes to a human. - 06
Reconcile to the invoice
Pull a non-empty authoritative report, preserve native dimensions and currency, and reconcile spend to the provider invoice or account total, with the exact export bytes uploaded by a signed human. Only then may a rail move to spend-tested and report-verified.
The step that carries the sequence is the separately granted resume. Approval records evidence and cannot enable spend, so the person who approved the creative is not the act that starts it, and a hierarchy that has drifted by one substituted child fails before any write. Without that separation the other steps are a checklist; with it they are a gate.
A design-partner engagement is the process of walking one rail through these six steps with you, on your budget and your brief.
Talk it throughWhat works today, and what does not
The whole loop — brief to persona to plan to creative to approval to launch to delivery to measurement — runs today in a deterministic sandbox that needs no credentials and no card. That is a real product you can drive, not a video of one. What is not ready is ordinary customer spend. The live buying clients are written but not proven: most pass tests against mocked responses only, one connector has had read-only calls accepted by a live vendor, and several are stubs that make no vendor call at all. None has cleared our launch standard of a controlled paid activation reconciled to a provider invoice, so live spend sits behind a design-partner engagement rather than a signup form.
What buyers ask about this page
The questions this page produces, answered from the same ledger rather than around it.
Can I buy media through AdBuyMCP today?
Not self-serve. You can run the entire loop today in a sandbox that needs no credentials and no card — brief, persona, seven compiled plans, creative, approval, launch, delivery, measurement — and everything it returns is deterministic and repeatable. What is gated is real spend: no rail has reached spend-tested or report-verified on our own evidence ledger, so live buying happens inside a design-partner engagement rather than behind a signup form.
What does client-built actually mean?
That a live HTTP client is written and passes tests against mocked responses. Our ledger is deliberately blunt about the limit of that: a mocked HTTP test proves the client is built, not that a vendor accepted the request, spent money, or returned real delivery. Eighteen of the twenty-five connectors are at this grade. It is real engineering and it is not evidence of supply.
Which rails have had a real vendor accept a real call?
One. Vibe, on 13 August 2026 — OAuth, advertiser discovery and a 549-unit catalogue read, all read-only, all US inventory. Its own missing gate reads: execute one controlled test buy and verify the asynchronous report payload end to end. Within that same connector, activation, pause, creative and reporting are still client-built. Nothing here has ever executed a buy.
Why are cinema and addressable TV described as workflows rather than APIs?
Because that is what they are. Digital Cinema Media and Sky AdSmart do not offer self-serve buying APIs. AdBuyMCP automates the paperwork: it generates the booking brief with the right audience packs, drives the clearance step and holds the IO state machine. We do not make the booking and we do not report the delivery — in live mode a report pull throws rather than fabricating rows, and a pause requires sales-house acknowledgement. No cinema or addressable-TV delivery has ever been reconciled here.
Your README lists Vistar as having a live client. This page says it is a stub.
The code is right and the README is stale. Every one of Vistar's live methods — forecast, activate, pause, creative submission, reporting and inventory listing — throws before making any request, and the provenance ledger grades it stub. Where prose and code disagree anywhere on this site, the code wins.
Do you buy ITV, Sky or Channel 4?
No. The Universal Ads integration, which would cover that inventory in one partnership, is a typed client stub whose every live method fails closed, blocked on partner approval and a per-request signing key that does not exist. Sky AdSmart and ITV Planet V are booking-paperwork rails rather than buying APIs. Any impression that we buy UK broadcast inventory today would be wrong.
What happens if a supplier's authority expires mid-campaign?
Spend stops. An expired or blocked supplier dossier raises a spend lock before any scheduler work runs, sends one incident-bound emergency pause, and refuses to retry an ambiguous response. Only a signed human reconciliation clears it, and re-verifying then revoking again uses a fresh incident id rather than reopening the resolved one.
Bring the rail you actually need.
In a working session we compile a real brief live and show you the sandbox output for the channels you care about, with the grade and the blocker on every rail it touches. If the honest answer is that your plan needs a rail sitting at stub, that is what you will hear, and it is better heard now than after a contract.
45 minutes. Bring a real brief and we compile it live.