- AdCP discovery - Does this agent support AdCP? Which versions?
- Protocol support - Which domain protocols (media_buy, signals, governance, sponsored_intelligence, creative)?
- Detailed capabilities - Features, AXE integrations, geo targeting, portfolio
/schemas/v1/protocol/get-adcp-capabilities-request.json
Response Schema: /schemas/v1/protocol/get-adcp-capabilities-response.json
Tool-Based Discovery
AdCP uses native MCP/A2A tool discovery. The presence ofget_adcp_capabilities in an agent’s tool list indicates AdCP support.
- Uses standard MCP/A2A mechanisms (no custom extensions)
- Always returns current capabilities (not stale metadata)
- Single source of truth for all capability information
adcp-extension.json) has been removed in v3. Use tool-based discovery instead.
:::
Request Parameters
| Field | Type | Description |
|---|---|---|
protocols | string[] | Optional. Filter to specific protocols (media_buy, signals, governance, sponsored_intelligence, creative). If omitted, returns all supported protocols. |
Response Structure
adcp
Core AdCP protocol information:| Field | Type | Description |
|---|---|---|
major_versions | integer[] | Required. AdCP major versions supported (e.g., [1]) |
supported_protocols
Array of domain protocols this seller supports:media_buy
Media-buy protocol capabilities. Only present ifmedia_buy is in supported_protocols.
features
Optional media-buy features. If declared true, seller MUST honor requests using that feature.| Feature | Description |
|---|---|
inline_creative_management | Accepts creatives inline in create_media_buy requests |
property_list_filtering | Honors property_list parameter in get_products |
content_standards | Full support for content standards configuration |
execution
Technical execution capabilities:| Field | Type | Description |
|---|---|---|
axe_integrations | string[] | Agentic ad exchange (AXE) URLs this seller can execute through |
creative_specs | object | Creative specification support (VAST versions, MRAID, etc.) |
targeting | object | Targeting capabilities (geo granularity) |
creative_specs
| Field | Type | Description |
|---|---|---|
vast_versions | string[] | VAST versions supported (e.g., ["4.0", "4.1", "4.2"]) |
mraid_versions | string[] | MRAID versions supported |
vpaid | boolean | VPAID support |
simid | boolean | SIMID support |
targeting
| Field | Type | Description |
|---|---|---|
geo_countries | boolean | Country-level targeting using ISO 3166-1 alpha-2 codes |
geo_regions | boolean | Region/state-level targeting using ISO 3166-2 codes (e.g., US-NY, GB-SCT) |
geo_metros | object | Metro area targeting with system-specific support |
geo_postal_areas | object | Postal area targeting with country and precision support |
| System | Description |
|---|---|
nielsen_dma | Nielsen DMA codes (US market, e.g., 501 for NYC) |
uk_itl1 | UK ITL Level 1 regions |
uk_itl2 | UK ITL Level 2 regions |
eurostat_nuts2 | Eurostat NUTS Level 2 regions (EU) |
| System | Description |
|---|---|
us_zip | US 5-digit ZIP codes (e.g., 10001) |
us_zip_plus_four | US 9-digit ZIP+4 codes (e.g., 10001-1234) |
gb_outward | UK postcode district (e.g., SW1, EC1) |
gb_full | UK full postcode (e.g., SW1A 1AA) |
ca_fsa | Canadian Forward Sortation Area (e.g., K1A) |
ca_full | Canadian full postal code (e.g., K1A 0B1) |
de_plz | German Postleitzahl (e.g., 10115) |
fr_code_postal | French code postal (e.g., 75001) |
au_postcode | Australian postcode (e.g., 2000) |
portfolio
Inventory portfolio information:| Field | Type | Description |
|---|---|---|
publisher_domains | string[] | Required. Publisher domains this seller represents |
primary_channels | string[] | Main advertising channels |
primary_countries | string[] | Main countries (ISO codes) |
description | string | Markdown portfolio description |
advertising_policies | string | Content policies and restrictions |
signals
Signals protocol capabilities. Only present ifsignals is in supported_protocols. Reserved for future use.
governance
Governance protocol capabilities. Only present ifgovernance is in supported_protocols. Governance agents provide property data like compliance scores, brand suitability ratings, quality metrics, and sustainability metrics.
property_features
Array of property features this governance agent can evaluate:| Field | Type | Description |
|---|---|---|
feature_id | string | Required. Unique identifier (e.g., mfa_score, coppa_certified) |
type | string | Required. Data type: binary, quantitative, or categorical |
range | object | For quantitative: { min, max } |
categories | string[] | For categorical: valid values |
description | string | Human-readable description |
methodology_url | string | URL to methodology documentation |
extensions_supported
Array of extension namespaces this agent supports. Buyers can expect meaningful data inext.{namespace} fields on responses from this agent.
| Field | Type | Description |
|---|---|---|
extensions_supported | string[] | Extension namespaces (e.g., ["scope3", "garm"]) |
ext.{namespace} data in responses.
Example:
- Product responses may include
ext.scope3with Scope3 sustainability data - Creative policies may include
ext.garmwith GARM brand suitability categorizations - Responses may include
ext.iab_tcfwith IAB TCF consent data
The Capability Contract
If a capability is declared, the seller MUST honor it.media_buy.execution.targeting.geo_postal_areas.us_zip: true→ Buyer can send US ZIP codes, seller MUST target themmedia_buy.execution.targeting.geo_metros.nielsen_dma: true→ Buyer can send DMA codes, seller MUST target themmedia_buy.features.content_standards: true→ Seller MUST apply content standards when provided- AXE URL in
media_buy.execution.axe_integrations→ Seller can execute through that exchange
false or omit it.
Common Scenarios
Basic Capability Discovery
Filter Sellers by Capability
Use Capabilities to Build Targeting
Capabilities tell you what you CAN specify in create_media_buy targeting. Userequired_geo_targeting to filter products to sellers that support specific geo targeting levels and systems:
| Inventory Type | Filter By | Example |
|---|---|---|
| Digital (display, OLV, CTV) | Capability: required_geo_targeting | Products have broad coverage, target at buy time |
| Local (radio, DOOH, local TV) | Coverage: metros, regions | Products ARE geographically bound |
- Digital inventory: Use
countries+required_geo_targeting(capability), apply fine-grained targeting increate_media_buy - Local inventory: Use
metros/regions(coverage) to find products with coverage in your target markets
Local Inventory Example (Radio, DOOH)
For locally-bound inventory, products ARE geographically specific. A radio station in NYC DMA only covers NYC.Response Example
- AdCP versions: Version 1
- Protocols: Media-buy only (signals not supported)
- Country targeting: Available (ISO 3166-1 alpha-2:
US,GB, etc.) - Region targeting: Available (ISO 3166-2:
US-NY,GB-SCT, etc.) - Metro targeting: Nielsen DMA only (US market)
- Postal targeting: US ZIP, UK outward codes, Canadian FSA
- Extensions: Scope3 sustainability data in
ext.scope3
Geo Standards Reference
| Level | System | Examples |
|---|---|---|
| Country | ISO 3166-1 alpha-2 | US, GB, DE, CA |
| Region | ISO 3166-2 | US-NY, GB-SCT, DE-BY, CA-ON |
| Metro (US) | nielsen_dma | 501 (NYC), 803 (LA), 602 (Chicago) |
| Metro (UK) | uk_itl2 | UKI (London), UKD (North West) |
| Metro (EU) | eurostat_nuts2 | DE30 (Berlin), FR10 (Île-de-France) |
| Postal (US) | us_zip | 10001, 90210 |
| Postal (US) | us_zip_plus_four | 10001-1234 |
| Postal (UK) | gb_outward | SW1, EC1, M1 |
| Postal (UK) | gb_full | SW1A 1AA |
| Postal (CA) | ca_fsa | K1A, M5V |
Migration from list_authorized_properties (v2)
Thelist_authorized_properties task was removed in v3. If migrating from v2:
| Old Field | New Location |
|---|---|
publisher_domains | media_buy.portfolio.publisher_domains |
primary_channels | media_buy.portfolio.primary_channels |
primary_countries | media_buy.portfolio.primary_countries |
portfolio_description | media_buy.portfolio.description |
advertising_policies | media_buy.portfolio.advertising_policies |
last_updated | last_updated (top level) |
adcp.major_versions- Version compatibilitysupported_protocols- Which domain protocols are supportedmedia_buy.features- Optional feature supportmedia_buy.execution.axe_integrations- Ad exchange supportmedia_buy.execution.creative_specs- VAST/MRAID versionsmedia_buy.execution.targeting- Geo targeting granularity
Error Handling
| Error Code | Description | Resolution |
|---|---|---|
AUTH_REQUIRED | Authentication needed | Provide credentials |
INTERNAL_ERROR | Server error | Retry with backoff |
Best Practices
1. Cache Capabilities Capabilities rarely change. Cache results and uselast_updated for staleness detection.
2. Check Protocol Support First
Before accessing protocol-specific fields, verify the protocol is in supported_protocols.
3. Check Before Requesting
Don’t send postal areas for a system the seller doesn’t support. Don’t request features the seller doesn’t support.
4. Fail Fast on Incompatibility
If a seller doesn’t support required capabilities, skip them early rather than discovering failures later.
5. Use Protocol Version for Routing
Route requests to appropriate API versions based on adcp.major_versions.
Next Steps
After discovering capabilities:- Filter products: Use
get_productswith capability-aware filters - Validate properties: Fetch publisher
adagents.jsonfiles for property definitions - Create buys: Use
create_media_buywith supported features
Learn More
- adagents.json Specification - Publisher authorization files
- Product Filters - Capability-aware filtering
- Content Standards - Brand safety configuration