supply status

25 connectors. 0 have spent money.

The whole supply matrix, graded on our own evidence ledger.

25 registered connectors, all functional in a deterministic sandbox. Live evidence is graded on a six-level ledger, and no rail has yet spent money or reconciled a real report.
connectors registered
25
client built
18 of 25
contract tested
1 of 25
report verified
0 of 25
spend tested0 of 25
how live buying happens
45 minutes. Bring a real brief and we compile it live.
Book a working session
the whole of the live evidence

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.
the evidence ladder

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.

  1. level 1 of 6
    0
    of 25 connectors
    Sandbox 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.

  2. level 2 of 6
    6
    of 25 connectors
    Stub

    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

  3. level 3 of 6
    18
    of 25 connectors
    Client 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

  4. level 4 of 6
    1
    of 25 connectors
    Contract tested

    A real vendor API accepted real calls from this client. It does not mean a buy has been executed.

    Vibe

  5. level 5 of 6
    0
    of 25 connectors
    Spend 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.

  6. level 6 of 6
    0
    of 25 connectors
    Report 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.

the matrix

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.

keyStub6Client built18Contract tested1P0, P1 and P2 are our own integration queue positions, not delivery dates.

Buying API

12 of 25 · 2 stub · 9 client built · 1 contract tested · 0 spend tested

The vendor publishes an API and we call it directly. A grade here describes the client that was written, not a buy that was made.

Buying API connectors, with the evidence grade and blocker on each.
VendorWhat it isChannelsEvidence gradeWhat stands between it and the next grade
StackAdaptstackadaptP0What it isProgrammatic CTV, audio and DOOH through one GraphQL seat. The broadest single rail here.ChannelsCTV & streamingPodcast & audioDOOHEvidence gradeClient builtlevel 3 of 6
Blocker

A contracted seat, then a controlled paid activation reconciled to a StackAdapt invoice.

Access · not a signup

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.

StackAdapt is graded Client built on the six-level evidence ledger.
Google Adsgoogle-adsP0What it isPaid search, with buyer-applied keywords and negatives on a version-fenced draft. Provider suggestions never auto-buy.ChannelsPaid searchEvidence 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

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.

Google Ads is graded Client built on the six-level evidence ledger.
Microsoft Advertisingmicrosoft-adsP0What it isPaid search on Bing, planned against the same neutral brief as Google rather than as a separate campaign.ChannelsPaid searchEvidence gradeClient builtlevel 3 of 6
Blocker

The same canary gate, passed separately. A Google pass proves nothing about Microsoft.

Microsoft Advertising is graded Client built on the six-level evidence ledger.
Meta Adsmeta-adsP0What it isPaid social on Facebook and Instagram, staged PAUSED until a human approves the exact creative bytes.ChannelsPaid socialEvidence gradeClient builtlevel 3 of 6
Blocker

The canary gate, passed separately, including an ad-account and Page identity check.

Meta Ads is graded Client built on the six-level evidence ledger.
TikTok for Businesstiktok-adsP0What it isPaid social on TikTok. AI-generated video carries a self-disclosure provenance declaration that must survive the provider readback.ChannelsPaid socialEvidence gradeClient builtlevel 3 of 6
Blocker

The canary gate, plus exact AI-generation provenance on every selected video.

TikTok for Business is graded Client built on the six-level evidence ledger.
Amazon Adsamazon-dspP0What it isAmazon DSP sub-seat for CTV and audio, with refresh-token rotation held under a single-writer lock.ChannelsCTV & streamingPodcast & audioEvidence gradeClient builtlevel 3 of 6
Blocker

A live test buy and a reconciled report.

Access · not a signup

Requires a DSP sub-seat obtained through an authorised reseller. Not an open developer signup.

Amazon Ads is graded Client built on the six-level evidence ledger.
Spotifyspotify-adsP0What it isSpotify Ads API for podcast and music audio.ChannelsPodcast & audioEvidence 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

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.

Spotify is graded Client built on the six-level evidence ledger.
RokurokuP0What it isRoku CTV. Reporting only.ChannelsCTV & streamingEvidence 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

Self-service Ads Manager accounts, not credential-free multi-tenant supply.

Roku is graded Client built on the six-level evidence ledger.
Perion (Hivestack)hivestackP0What it isProgrammatic DOOH.ChannelsDOOHEvidence 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

Keys come through a commercial relationship rather than open self-serve signup.

Perion (Hivestack) is graded Client built on the six-level evidence ledger.
VibevibeP1What it isPerformance CTV in the United States. The only rail with any live vendor evidence at all.ChannelsCTV & streamingEvidence 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

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.

Vibe is graded Contract tested on the six-level evidence ledger.
Vistar MediavistarP0What it isDOOH and cinema supply. Sandbox planning data only.ChannelsDOOHCinemaEvidence 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

An approved trafficking seat plus separate bidder approval. Partner access, not developer signup.

Vistar Media is graded Stub on the six-level evidence ledger.
Comcast Universal Adsuniversal-adsP0What it isA typed client stub for the Universal Ads Marketing API.ChannelsAddressable & linear TVEvidence 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

Developer registration is a form; the partner approval behind it is a commercial relationship, and we have not entered into one.

Comcast Universal Ads is graded Stub on the six-level evidence ledger.

Booking workflow

6 of 25 · 6 client built · 0 spend tested

No 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.

Booking workflow connectors, with the evidence grade and blocker on each.
VendorWhat it isChannelsEvidence gradeWhat stands between it and the next grade
Digital Cinema Mediadcm-cinemaP0What it isGenerates the UK cinema booking brief with audience and genre packs, drives the clearance step, and holds the IO state machine.ChannelsCinemaEvidence gradeClient builtlevel 3 of 6
Blocker

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.

Digital Cinema Media is graded Client built on the six-level evidence ledger.
Pearl & Deanpearl-deanP1What it isThe same booking automation for the cinema circuits DCM does not carry.ChannelsCinemaEvidence gradeClient builtlevel 3 of 6
Blocker

Ingest and reconcile the first authoritative sales-house delivery statement.

Pearl & Dean is graded Client built on the six-level evidence ledger.
Sky Mediasky-adsmartP1What it isSky AdSmart addressable TV, booked as a generated brief on household attribute combinations rather than bid on.ChannelsAddressable & linear TVEvidence gradeClient builtlevel 3 of 6
Blocker

Ingest and reconcile the first authoritative sales-house delivery statement.

Sky Media is graded Client built on the six-level evidence ledger.
ITVitv-planetvP1What it isITV Planet V booking paperwork.ChannelsAddressable & linear TVEvidence gradeClient builtlevel 3 of 6
Blocker

Ingest and reconcile the first authoritative sales-house delivery statement.

ITV is graded Client built on the six-level evidence ledger.
Global DAXdax-dealsP1What it isDeal paperwork for Global's digital audio supply.ChannelsPodcast & audioEvidence gradeClient builtlevel 3 of 6
Blocker

Ingest and reconcile the first authoritative sales-house delivery statement.

Global DAX is graded Client built on the six-level evidence ledger.
AcastacastP1What it isPodcast private-marketplace and named-show package paperwork.ChannelsPodcast & audioEvidence gradeClient builtlevel 3 of 6
Blocker

Ingest and reconcile the first authoritative sales-house delivery statement.

Acast is graded Client built on the six-level evidence ledger.

Audience data

3 of 25 · 3 stub · 0 spend tested

Identity, 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.

Audience data connectors, with the evidence grade and blocker on each.
VendorWhat it isChannelsEvidence gradeWhat stands between it and the next grade
European Unified IDeuidP0What it isA consent-chained identifier for addressing first-party lists without a cookie.ChannelsCTV & streamingEvidence gradeStublevel 2 of 6
Blocker

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.

European Unified ID is graded Stub on the six-level evidence ledger.
CACIcaci-acornP0What it isAcorn classifications, intended for ranking cinema and DOOH catchments.ChannelsCinemaDOOHEvidence gradeStublevel 2 of 6
Blocker

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.

CACI is graded Stub on the six-level evidence ledger.
AdsquareadsquareP1What it isConsent-attested movement data, intended for DOOH screen ranking.ChannelsDOOHEvidence gradeStublevel 2 of 6
Blocker

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.

Adsquare is graded Stub on the six-level evidence ledger.

Measurement

4 of 25 · 1 stub · 3 client built · 0 spend tested

Where the response side of a campaign is read from: your own site analytics, podcast attribution, and survey-based brand lift.

Measurement connectors, with the evidence grade and blocker on each.
VendorWhat it isChannelsEvidence gradeWhat stands between it and the next grade
Plausible AnalyticsplausibleP0What it isYour own site's analytics, read through your token, so brand response is measured on data you already own and can audit.ChannelsAll sevenEvidence gradeClient builtlevel 3 of 6
Blocker

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.

Plausible Analytics is graded Client built on the six-level evidence ledger.
Google Analytics 4ga4P0What it isGA4 as an alternative brand-response source where that is what the advertiser already runs.ChannelsAll sevenEvidence gradeClient builtlevel 3 of 6
Blocker

The same dossier and reconciliation gate as Plausible.

Google Analytics 4 is graded Client built on the six-level evidence ledger.
PodscribepodscribeP0What it isPodcast attribution: pixel and promo-code response against audio delivery.ChannelsPodcast & audioCTV & streamingEvidence gradeClient builtlevel 3 of 6
Blocker

A live campaign with rows to reconcile.

Podscribe is graded Client built on the six-level evidence ledger.
CintcintP0What it isBrand-lift survey panels, intended for the fourth measurement verb.ChannelsCTV & streamingPodcast & audioAddressable & linear TVCinemaDOOHEvidence gradeStublevel 2 of 6
Blocker

A Cint contract, and a commissioned study. The adapter makes no vendor call and the measurement payload returns brand lift as an explicit placeholder.

Cint is graded Stub on the six-level evidence ledger.

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 through
the go-live standard

What 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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 through
Design-partner phase

What 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.

what happens next

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.