Availability and compatibility
- v3 is available to every authenticated Buyer and Seller Account.
- v2 remains the stable default and is not deprecated.
- v3 is intentionally an agent-facing MCP contract, not a REST-version
replacement.
/api/v3/documentsis limited to authenticated exact reads and downloads of approved public immutable agreement revisions. Discovery, comparison, private documents, and governing-agreement selection are not yet REST resources; other integrations should continue to use the stable v2 REST APIs. - The unversioned buyer and seller MCP aliases continue to resolve to stable v2.
- Organisation accounts currently provide navigation and shared tools, not an organisation-specific noun catalog.
- The active account still determines which buyer or seller catalog appears.
get_status and switch_account remain available in an unclassified account so
a session can orient and move to a Buyer or Seller Account. No domain catalog is
implied by a successful connection to an unclassified account.
Buyer limitations
The Buyer surface supports advertiser and campaign authoring, creative management, proposal requests, media-buy staging, and explicit campaign launch. The following gaps remain:
Launching is supported, but only as a separate, two-call update to an existing
campaign: a preview with
desiredPhase: "active" and no confirmLaunch
returns the campaign revision and what would launch; the confirm call sends
confirmLaunch: true with that expectedRevision. Both calls require their
own idempotencyKey. See
Launch a campaign with explicit confirmation.
A failed launch may report a partial write because downstream execution state
was attempted. Re-read before retrying.
Seller limitations
- Every Media Company account can
use
save_advertiser,save_campaign,save_creative,save_creative_collection,request_proposals, andsave_media_buydirectly from its Seller account. Sandbox Advertisers are available to every Media Company. Live Advertisers and campaigns are available only to organizations enrolled in theamc-campaign-managementrollout. Every operation is pinned server-side to that company’s own Storefront. A missing, foreign, or wider Storefront, Proposal, qualified Product, or existing MediaBuy scope is rejected before dispatch. - Integrated
search/getcan list and read authorized sandbox or live Advertisers, scoped Campaigns, Creative, Creative Collections, Proposals, and buyer-side MediaBuys.get(kind: "seller", id, advertiserId, include: ["products"] )opens the company’s own wholesale catalog, so callers can pass qualified Products directly tosave_media_buywithout requesting Proposals. When a Product advertisessignal_targeting_options, its eligible Signals can be selected throughproducts[].targetingOverlay. - The live rollout changes account access only. Live campaign launch still requires ordinary source currency compatibility, account mapping, publisher authorization, creative approval, funding, standing, and any seller-side approval. No sandbox or publish-validation bypass applies to live traffic.
- Seller
search(kind: "media_buy", filter: { campaignId })orfilter: { advertiserId }selects the integrated Buyer projection. Omitting both selects the Seller inventory/execution projection. - Seller Accounts use the left rail to move between Inventory, Advertisers,
Buyers, and Agents. Setup progress appears on Inventory. Advertisers lists the
account’s sandbox Advertisers, plus live own-supply Advertisers once the
account is enrolled in
amc-campaign-management; selecting an Advertiser opens its Campaigns, Creatives, and Reporting work. Campaign creation and delivery requests stay in Murph so the same V3 own-supply guards apply. Buyers lists external AdCP counterparties separately; selecting one shows media buys, synced creatives, and Delivery on your inventory for that relationship, plus its account admission case when setup needs attention. Advertisers uses the shared buyer advertiser picker and work rail for the accounts the seller operates; protected System accounts are read-only. Marketplace, Connections, Buyer Setup, and unbound production Advertisers are not part of this preview. - Shared Page hydration permits only three Seller-key Buyer REST reads: the
Advertiser roster (sandbox by default; live only when enrolled in
amc-campaign-management), Campaign listing for an explicitly bound Advertiser in either environment with wider-supply rows removed, and that Advertiser’s promoted Creative list in read-only mode. Buyer REST detail, mutations, and reporting remain unavailable to Seller keys. - Portable callers can use
get_delivery({ report: "campaign_delivery" })with explicit metrics, dimensions, a date range of at most 90 inclusive days orrange: { lifetime: true }, and optional advertiser, campaign, or media-buy filters. ApackageIdfilter requires a bounded date range (not lifetime), because the reporting operation fetches all campaign data before filtering by package. Integrated Media Companies must name an own-supply advertiser, campaign, or media buy. - Some credential, payout, approval, retry, and reassignment work intentionally remains in Pages rather than model-authored tools.
save_media_kitremains for compatibility but is deprecated; new clients should author Listing identity throughsave_seller’slistingfield.get/save_media_kit’s deprecatedkind/field is now canonically spelledlisting, withmedia_kit/mediaKitaccepted as deprecated aliases for the same handler.- Seller delivery is seller-reported. It is not Buyer measurement and does not establish billing eligibility by itself.
Catalog and host differences
The runtime catalog may be narrower than the tables in these docs because of account kind, permissions, feature rollout, and MCP App visibility. A principal that can reach both Buyer and Seller Accounts instead receives their deduplicated union at connection time, so hosts that cachetools/list retain both workflows
after an account switch. Tools remain authorized only for the selected account.
Always use tools/list and get_status for the active account.
After switch_account, clients should process notifications/tools/list_changed
and call get_status again. A stale tool call fails with typed wrong-account
guidance rather than crossing the account boundary.
Payload, connection, and timing limits
- Structured responses over 200 KB are truncated as a safety backstop.
- One MCP connection is held open for at most 30 minutes; reconnect with the existing session when the client uses sessionful MCP.
- A single tool call is also limited to 30 minutes.
- Deploys can close connections and eventually interrupt long in-flight calls.
request_proposalsdurably schedules the full eligible cohort. Each background seller attempt has a 30-second bound; terminal result pages carry at most 50 seller outcomes and at most five bounded product projections. Product-heavy sellers continue on the returned cursor. Diagnostic pages carry at most 100 sanitized outcomes.- A returned
productQueryIdstays stageable while the buyer deliberates. The discovery-analytics sweep marks a product query inactive after 60 minutes without activity (DISCOVERY_SESSION_INACTIVITY_MS, an infrastructure setting), butsave_media_buyreopens such a query on first use, so a long deliberation does not lose the offer. A query that was already executed or replaced is refused withPRODUCT_QUERY_EXPIRED; callrequest_proposalsagain. A quoted proposal expires at the seller’s ownvalidUntilor after 90 days, whichever comes first;PROPOSAL_EXPIREDnames which window lapsed. - Seller delivery ranges are inclusive and limited to 90 days.
Direct-client model usage
Interchange can observe API calls, server-side model calls, and Murph-hosted turns. It cannot observe the input/output token usage or model cost incurred by an external MCP client’s own model. Integrators remain responsible for that client-side budget and telemetry.Choosing v2 or v3
Use v3 when:- an account-resolved MCP surface is useful;
- the required workflow appears in the current tool catalog; and
- the documented preview gaps do not require a v2 continuation.
- the integration requires a stable production contract or REST;
- the workflow is listed as incomplete above; or
- migration would remove a capability the integration already depends on.