Releases: adcontextprotocol/adcp-client-python
Releases · adcontextprotocol/adcp-client-python
v4.0.0
4.0.0 (2026-04-22)
⚠ BREAKING CHANGES
- types: rename Asset content types to Content
- server: pluggable TaskStore on A2A — unblock production A2A adoption
- server: expert-review followups — tenant-scoped idempotency, A2A context_factory, ContextVar safety
- types: AssetsNN semantic aliases + format_category shim + downstream smoke
- sdk: ResolvedBrand.brand_manifest removed. Use .brand. CreateMediaBuyRequest.brand_manifest removed. Use brand. BrandManifest, FormatCategory, DeliverTo, PromotedProducts, PromotedOfferings, Pricing, PackageStatus imports now raise ImportError. See MIGRATION_v3_to_v4.md.
- webhooks: ADCPClient webhook verification now requires raw_body to be passed through from the HTTP handler. Callers that relied on the implicit re-serialize-from-payload fallback will start seeing ADCPWebhookSignatureError until they plumb the raw body through from their framework's pre-parse hook. Fix path:
- webhooks: get_adcp_signed_headers_for_webhook now signs the compact-separator JSON form of the payload. Callers that previously hand-serialized spaced JSON and POSTed it with content= will see signature mismatches after this change. The fix is to also serialize with separators=(",", ":") or switch to httpx json= which already uses that form.
- serve(mount=...) kwarg removed.
Budget.authority_levelis removed. Migrate toreallocation_threshold/reallocation_unlimitedonplan.budget, and setplan.human_review_requiredfor decisions affecting data subjects. See the rc.4 migration section in README.md.
Features
- A2A server support in serve() (d0c3015)
- A2A server support in serve() (4e5db4f), closes #175
- a2a: auto-retain contextId + taskId across multi-turn calls (0564635)
- a2a: auto-retain contextId + taskId across multi-turn calls (8a084ec)
- ADCP 3.0 server DX helpers, type guards, and schema sync (de4a079)
- ADCP 3.0 server DX helpers, type guards, and schema sync to latest (bf0d81d)
- AdCP RFC 9421 request-signing profile (ba53961)
- add collection_list and sync_governance task methods (2dbeac1)
- address PR review — real-world transforms and SDK error types (cfaa9c5)
- AssetsNN aliases, format_category shim, MCP adoption hooks — unblock salesagent (ed7d30a)
- auto-inject context passthrough in create_tool_caller (4d4fe5e)
- bump to 4.0.0b1 with test fixtures updated for new schema shape (dcd6709)
- bundle-based schema sync + Sigstore verify + 4.0.0b1 on latest (755071a)
- error translation helper for multi-transport servers (7825ed6)
- error translation helper for multi-transport servers (#176) (88126d1)
- examples: add seller_agent.py reference impl (40341c9)
- idempotency_key auto-injection, typed errors, and capability gate (af9dd2d)
- idempotency_key auto-injection, typed errors, and capability gate (12cc983)
- implement AdCP RFC 9421 request-signing profile (fc995e9)
- MCP response + error extraction per AdCP spec (d991b1e)
- MCP response + error extraction per AdCP spec (896beb8)
- mcp: auto-generate sync_governance inputSchema from Pydantic (ac1edb3)
- mcp: inline $defs in generated inputSchema (closes #208) (8eaeb4d)
- mcp: inline $defs in generated inputSchema (closes #208) (ffa58e5)
- migrate+types: v3->v4 codemod, strict-validation flag, version helpers, subclass test (0f50d39)
- migrate+types: v3->v4 codemod, strict-validation flag, version helpers, subclass test (32bfbeb)
- salesagent review feedback - typed error codes, state machine export, missing types (8ef8161)
- schemas: regen for AdCP 3.0 GA — custom pricing + experimental_features (4dfaffe)
- schemas: regen for AdCP 3.0 GA — custom pricing + experimental_features (db913ba), closes #204
- sdk: 4.0 beta cleanup — version wiring, brand_manifest drop, migration guide (ebaab12)
- server+migrate: round-1 feedback followups (dbbc390)
- server+migrate: round-1 feedback followups (0fe9cb5)
- server: AccountAwareToolContext + multi-tenant contract doc (69fd3da)
- server: AccountAwareToolContext + multi-tenant contract doc (3747939)
- server: context_factory, tenant_id, DISCOVERY_TOOLS — unblock MCP adoption (2203c1d)
- server: DISCOVERY_METHODS + document tools/list pre-auth posture (closes #222) (a26c948)
- server: DISCOVERY_METHODS + lock tools/list pre-auth posture (closes #222) (ba2de29)
- server: gate tools/list on method overrides (#220) (816d22c)
- server: gate tools/list on method overrides (closes #220) (fc1a788)
- server: idempotency middleware per AdCP #2315 spec (101713c)
- server: idempotency middleware per AdCP #2315 spec (f708ed2)
- server: middleware parity, auth, A2A parser hook, startup log ([549d190]...
v3.12.0
v3.11.0
v3.10.0
3.10.0 (2026-03-17)
Features
- add feature capability validation API (supports/require) (d550c08)
- add RC2 governance support and full spec coverage (523ea20)
- feature capability validation API (supports/require) (f86f6c4)
- filter MCP tools by handler type, add webhook replay protection (ae7f378)
Bug Fixes
- address PR review feedback (FieldModel collision, handler boilerplate, deprecation aliases) (b9eac61)
- replace TypeAdapter with model_validate, tighten slug regex (103d616)
- require webhook headers when secret configured, restrict unknown handler tools (12f1080)
- walk MRO for tool filtering, add tool name validation (39985e5)
v3.9.1
v3.9.0
3.9.0 (2026-03-13)
Features
Bug Fixes
- add raw_body support for verification and use Unix timestamps (4a663e5), closes #151
- set AdCPBaseModel extra='ignore' and remove obsolete generate_models.py (#157) (21077d9)
- unwrap RootModel unions for consumer subclassing (#156) (8fd7b92)
- use default JSON separators for webhook HMAC signing (2223f6e)
- use default JSON separators for webhook HMAC signing (0dd495f), closes #151