AdCP 3.1.13 · Protocol
get_adcp_capabilities
get_adcp_capabilities is an operation in the Protocol area of AdCP 3.1.13. get_adcp_capabilities is the first call a buyer makes to discover an AdCP seller's supported protocols, auth model, version, and feature capabilities.
get_adcp_capabilities request fields
The required column reflects the top-level required array only. The request schema declares no required array, so none of the 5 request fields carries a top-level required flag. A top-level if, anyOf, oneOf or dependencies block can make an unmarked field mandatory in the mode being called, and a flat table cannot render
a rule that fires in one mode only. Those branches are visible in the request schema itself.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
protocols | string[] | Specific protocols to query capabilities for. One of: media_buy, signals, governance, sponsored_intelligence, creative. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
get_adcp_capabilities reads. 30 of the 64 registered operations are flagged x-mutates-state and its request schema is not one of them, so repeating the call is side-effect free. AdCP's release notes describe x-mutates-state as a non-normative tooling
hint that agents do not validate, so it is the registry's classification of the operation rather than
a contract, and it is the only machine-readable answer in the registry to whether an operation is
safe to retry.
get_adcp_capabilities response fields
The first 13 rows are the shared protocol envelope from core/version-envelope.json and core/protocol-envelope.json. Only 22 of the 35 rows below belong to get_adcp_capabilities itself, beginning with adcp, supported_protocols and account. 3 fields in the whole response are marked required: status, adcp, supported_protocols.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
adcp | object | required | Core AdCP protocol information |
supported_protocols | string[] | required | AdCP protocols this agent supports. One of: media_buy, signals, governance, sponsored_intelligence, creative, brand, measurement. |
account | object | Account management capabilities. | |
media_buy | object | Media-buy protocol capabilities. | |
signals | object | Signals protocol capabilities. | |
governance | object | Governance protocol capabilities. | |
sponsored_intelligence | object | Sponsored Intelligence protocol capabilities. | |
brand | object | Brand protocol capabilities. | |
creative | object | Creative protocol capabilities. | |
request_signing | object | RFC 9421 HTTP Signatures support for incoming requests. | |
webhook_signing | object | RFC 9421 webhook-signature support for outbound webhook callbacks (top-level peer of request_signing). | |
identity | object | Operator identity posture — trust-root pointer (`brand_json_url`) plus key-scoping and compromise-response controls the agent operates. | |
measurement | object | Experimental measurement capability block. | |
compliance_testing | object | Compliance testing capabilities. | |
specialisms | specialism[] | Optional — specialized compliance claims this agent supports. | |
extensions_supported | string[] | Extension namespaces this agent supports. | |
experimental_features | string[] | Experimental AdCP surfaces this agent implements. | |
wholesale_feed_versioning | object | Conditional-fetch token capabilities for get_products and get_signals. | |
last_updated | string | ISO 8601 timestamp of when capabilities were last updated. | |
errors | error[] | Task-specific errors and warnings | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. | |
wholesale_feed_webhooks | object | Per-agent wholesale product-feed and wholesale signals-feed webhook capabilities. |
The shared protocol envelope
62 of AdCP's 64 registered operations carry every one of the 13 envelope fields. report_plan_outcome and check_governance compose core/version-envelope.json only, so they carry the version pair and none of the task fields.
status resolves to enums/task-status.json, which admits nine values:
submitted, working, input-required, completed, canceled, failed, rejected, auth-required,
unknown. The envelope marks it required on every response, and a synchronous call emits completed rather than omitting it. When it returns submitted or working instead, task_id is the
polling handle and
push_notification_config is the webhook the agent echoes back to confirm the callback.
Webhooks are A2A and REST only: MCP sends progress notifications and defines no webhook.
payload appears in the response field table typed object. core/protocol-envelope.json describes it as a documentary construct and states that it is not a required wire field. Body fields
are siblings of the envelope fields: on MCP at the root of the tool response, on A2A in task.artifacts[0].parts[].DataPart, on REST at the root of the JSON body. An accessor that reads response.payload finds
nothing there.
Field lists are not published over the wire
AdCP's integration guide, docs/protocol/calling-an-agent.mdx, states that its MCP
servers no longer publish per-tool parameter schemas: a tools/list call returns an empty
properties object for every tool, and the guide directs clients not to infer shape from it. A client
author reads the schema registry instead of the tool list.
Example get_adcp_capabilities calls
The field tables above come from the 3.1.13 schema release and these blocks come from the documentation tree, which is versioned separately, so the two can disagree.
{
"adcp": {
"major_versions": [3],
"idempotency": { "supported": true, "replay_ttl_seconds": 86400 }
}
} {
"adcp": {
"major_versions": [3],
"idempotency": { "supported": false }
}
} {
"adcp": {
"major_versions": [3],
"idempotency": { "supported": true, "replay_ttl_seconds": 86400 },
"capability_changes": {
"capabilities_version": "rev_20260702_091455",
"last_modified": "2026-07-02T09:14:55Z",
"cache_ttl_seconds": 3600,
"notifications": {
"supported": true,
"registration_task": "sync_agent_notification_configs",
"event_types": ["capabilities.changed"],
"coalescence_window_seconds": 300
}
}
}
} Frequently asked
- What does get_adcp_capabilities do?
- get_adcp_capabilities is the first call a buyer makes to discover an AdCP seller's supported protocols, auth model, version, and feature capabilities.
- Which fields does a get_adcp_capabilities request require?
- The published 3.1.13 schema declares no required array on the get_adcp_capabilities request. Constraints can still apply: a top-level if, anyOf, oneOf or dependencies rule fires in one mode only, and a flat field table cannot render it.
- Which AdCP version do these get_adcp_capabilities field tables describe?
- AdCP 3.1.13, the current published release, last updated 2026-08-11. The documentation tree is versioned separately from the schema tree in the same repository, so a doc page and a schema file can describe the same field differently.