The Media Partners page and the public V3
seller/connection nouns plus
save_connection are available to every buyer account. An
Apostra-provisioned signup sandbox is the narrow exception: its verified
Agent Registration receives the reversible setup contract, including unmap
and remove, but not seller selection, billing, feature-policy, or spend
authority.open_connections_page launches Media Partners — the buyer’s unified
catalog for Global Market Makers, Regional Market Makers, and Marketplace
sellers. The buyer interface calls these commercial counterparties media
partners; the public API keeps the seller noun and sellerId fields. The page
shows only sales sources: creative, signal, measurement, optimization, and
composite agents belong on their own surfaces. It opens on Ready for buying;
choose All to include media partners that are not open for buying yet. The
page keeps marketplace
classification, marketplace readiness, account-wide
selection, required action, and per-advertiser activation separate. It is a
widget launcher: the tool accepts optional positive integer-string
advertiserId and sellerId seeds. Omit both for the account overview. Pass
connectionAction: "connect" with sellerId to open that seller’s connection
setup. The launcher itself is read-only; authorization begins only after the
buyer confirms in the widget. The launcher
returns only a UI resource directive plus the supplied seeds, and the page then
self-fetches its own data. It is buyer-only; writes remain limited to the page’s
host-authorized seller, connection, billing, and mapping operations.
A seller is the API noun for a media partner: one exact Storefront that can be
discovered and selected even before it is connected. A connection is one
buyer-account authorization grant to that seller. One seller can therefore
have zero, one, or several connections. Each connection can expose several
provider accounts (for example, child ad accounts under one authorized business
manager); those accounts are detail inside the connection, not additional
seller or connection nouns.
Advertiser availability
Media Partners evaluates seller-managed availability from an advertiser’s country scope and channels. When the country scope is unknown or no channel is selected, the advertiser view pauses before showing media partners and offers one advertiser setup action. A confirmed empty country list means the advertiser has no country qualifier; it is a complete scope and does not block Media Partners. It also contributes no regional market match. A legacy advertiser whose country scope is unknown can set that scope once from Edit advertiser. The setup prompt is not repeated on each media partner card. Direct ad-platform connections do not trigger this requirement because their availability does not depend on the advertiser’s country scope and channels. Once setup is complete, a Regional Market Maker that does not cover the advertiser’s markets explains the mismatch and offers Add media partner when an account-level override is available.From an agent (MCP)
Ask in natural language — “show my media partners”, “set up my connection to Meta”, “connect Google Ads”, or “map this account to an advertiser” — and the agent callsopen_connections_page after resolving the seller when necessary.
Omit advertiserId to open the account overview:
connectionAction when
the user asked to set up another authorization grant; it opens the relevant
detail and leaves the final action to the buyer:
search({kind: "seller"}).
Account-scope responses preserve the empty {} result; scoped responses echo
only the supplied widget seeds.
The response carries the Media Partners page resource
(ui://agentic-api/connections/mcp-app.html) in _meta; a host that renders
MCP-UI widgets opens the page. Hosts that don’t render widgets receive a plain
confirmation and no connection data — the tool never returns connection facts
itself.
The embedded app uses the same public V3 contract available to agents:
search/get for sellers, connections, and advertisers (provider accounts and
mappings are bounded detail on a connection); save_connection for connection
desired state; and save_ask for a supply request. Advertiser setup uses the
resource-bound, app-only open_add_advertiser handoff. The former app-only
bridge remains a temporary rolling-deploy fallback only when the host reports
that the public V3 capability is unavailable; service, authorization, and
schema errors are shown instead of silently switching protocols. The app never
receives the generic api_call tool.
From a headless agent
An agent can perform the same workflow without rendering this page:- Call
searchwithkind: "seller"to find the Seller id. - Call
save_connectionwith thatsellerIdandauthorization. - Open the returned
authorization.urlin an interactive browser, or show the URL to the user when the host is headless. - Poll
searchorgetwithkind: "connection"until authorization and account discovery complete. - Use
save_connectionto refresh/select an account and map it to an advertiser. To enable reporting for exactly one connected account, send{ "connectionId": "901", "enhancedReporting": { "accountId": "1204", "enabled": true } }. This is account-scoped and is not a seller feature policy. - The same tool can unmap the advertiser or remove the connection if setup needs to be reversed, including while using a signup sandbox.
search with the returned nextCursor until it is absent. The Media Partners
widget initially pages the seller, connection, and advertiser collections; it
does not fetch every provider account up front. Opening a seller lazily calls
get(kind: "connection") for that seller’s grants and caches the detail by
connection id. Connection detail returns provider accounts and advertiser
mappings in bounded pages; when accountsPage.hasMore or
accountMappingsPage.hasMore is true, call get again with the corresponding
connectionAccountsOffset or connectionMappingsOffset.
save_connection reports the committed action as successful even if an
immediate readback is temporarily unavailable. In that case object is null
and the response tells the agent to reconcile with get; do not retry the
write based only on a readback warning.
OAuth providers redirect from a one-time Apostra launch. Bearer providers
show a focused Apostra form. In both cases the provider credential travels
between the browser and Apostra only; it is never returned to the model or
MCP host. The launch first shows a Continue page, and the one-time capability
is consumed only after that button is selected, so link previews and browser
prefetching do not invalidate it.
What the page reads
Once open, the page loads live data from the public V3 nouns:- Media partners — the Storefront catalog, control plane, and declared capabilities
- Connections — one summary per authorization grant, joined to its seller by
sellerId - Advertisers — the account’s advertisers and preferred reporting time zones, to map accounts against
update_storefront_connection_policy, and appear only when the seller declares
the corresponding sync_event_sources or sync_audiences tool. Capability
checks load progressively per connection. While a check is pending or unavailable,
the page says so instead of treating the capability as unsupported. Connecting a provider hands off to the provider’s OAuth; mapping an account to
an advertiser is a durable write, and the page surfaces the reason inline if a
map or unmap fails so you can retry. See the
connecting ad platforms guide for the
end-to-end flow.
An advertiser-scoped seller detail shows each provider account’s effective
reporting time zone and whether the provider treats it as buyer-selected,
seller-assigned, or seller-fixed. If that zone differs from the advertiser’s
preference, the page shows both and flags the mismatch. Reporting dates remain
seller-authored: the provider account’s effective zone controls its day
boundaries, and mapping does not silently change the advertiser preference.
Filter by buying readiness, market, or channel
The page groups media partners by their current state. Active contains only partners whose activation is active for the current account or advertiser. Needs connection contains platforms that still require your account connection. Available contains the remaining media partners. Buying readiness is separate from activation. The toolbar defaults to Ready for buying; choose All to include media partners that are not open for buying yet, together with their readiness status. Needs connection always keeps its full list so platforms that require your account connection remain discoverable. Buying readiness does not replace activation status: the detail view shows both Active and Not open for buying when both are true. The toolbar also has Market and Channel filters alongside the status chips and search box, so you can narrow the list to, for example, every media partner selling in the Netherlands or offering CTV. Options are built from the media partners currently loaded on the page, not a separate lookup: a market appears once at least one loaded media partner’s coverage includes it, whether through its declared regions or an approved market-maker grant (Global Market Makers match every market; Regional Market Makers match the markets their grant lists). The filters combine with each other and with the status chips and search box — a media partner must match every active filter to appear — and a Clear filters action restores Ready for buying, All markets, and All channels. In the web app, the Media Partners page readsmarket and channel from the URL
(for example ?market=NL&channel=ctv), so a shared link opens the page with
those filters already applied. Changing a filter afterward updates the
toolbar but not the address bar; share a fresh link with the updated
market/channel values to hand someone the same filtered view. Inside
Claude, ChatGPT, and other chat hosts, the filters are local to that
conversation’s view of the page.