Skip to content

Releases: adcontextprotocol/adcp-client-python

v4.3.0

30 Apr 19:54
74b413d

Choose a tag to compare

4.3.0 (2026-04-30)

Features

  • server: public register_handler_tools seam + advertised_tools class attr (#318) (d96822a)
  • signing: SigningProvider Protocol for KMS-backed signing (#283) (#323) (4de648e)

Bug Fixes

  • examples: close last 5 storyboard fixture-dependent failures (#319) (#322) (d92cfb1)
  • examples: seed_product complete defaults + format_ids agent_url normalization (#319) (#321) (046b15e)

Documentation

  • handler-authoring: expand with salesagent migration production patterns (#326) (ce4c5df)

v4.2.0

30 Apr 13:35
e37930a

Choose a tag to compare

4.2.0 (2026-04-30)

Features

  • examples: DemoStore overrides for force_create_media_buy_arm, force_task_completion, and seed_* scenarios (#313) (e2a2707)
  • sdk: per-instance adcp_version pin + wire emission (Stage 2 + 3a) (#294) (4aa7a6d)
  • server: add force_create_media_buy_arm + force_task_completion controller scenarios (#282) (9818250)
  • test-controller: add seed_creative_format scenario; advertise force_session_status in capabilities (#315) (ce7e9ab)

Bug Fixes

  • examples: seller_agent.py AdCP 3.0.1 storyboard compliance (items 1-6 of #304) (#310) (04966d7)
  • server: comply_test_controller returns dict to fix controller_detected: false (#317) (9244d46)
  • server: fix streamable-http ASGI error, host binding, and AdCP 3.0.1 scenario gaps (#296) (6be0232)

v4.1.0

30 Apr 00:15
2b36d67

Choose a tag to compare

4.1.0 (2026-04-30)

⚠ BREAKING CHANGES

  • migration: FormatId.__name__ and __qualname__ change from "FormatId" to "FormatReferenceStructuredObject" because AdCP 3.0.1 polished the schema title on core/format-id.json. The public adcp.FormatId alias keeps working — Format(format_id= FormatId(...)) and isinstance(x, FormatId) are unchanged. Two niche cases break: pickled FormatId instances from 4.0 fail to unpickle on 4.1, and snapshot tests / log scrapers asserting on __name__ see the rename. See MIGRATION_v4.0_to_v4.1.md.
  • a2a: ADCPClient.pending_task_id is now ADCPClient.active_task_id (same for A2AAdapter). The constructor's context_id= kwarg and reset_context() now raise TypeError (was ValueError) on non-A2A protocols — the string value is fine, the operation doesn't apply to MCP.

Features

  • a2a: checkpoint/from_checkpoint API, harden context-id retention (a17ffb3)
  • a2a: expose peer protocol versions, add force_a2a_version pin (3898c53)
  • a2a: migrate to a2a-sdk 1.0 with 0.3 wire-compat shim (c07db7d)
  • a2a: migrate to a2a-sdk 1.0 with 0.3 wire-compat shim (Release-As: 4.1.0) (28a4a13)
  • adcp: support ADCP_BASE_URL env override in sync_schemas.py (#285) (a2bc977)
  • adcp: sync canonical agent skills from protocol tarball (#275) (5312f05)
  • agents: /claude-triage comment nudge (5af8b47)
  • agents: /claude-triage comment nudge (d3b8b28)
  • agents: add Claude Code routines scaffolding (aa23ef3)
  • agents: add Claude Code routines scaffolding (d312abf)
  • agents: add silent-triage path to triage prompt (6abb495)
  • agents: commit .claude/agents/ experts for cloud routine access (55144f2)
  • agents: migrate manual triage nudge to /triage slash-command-dispatch (#267) (6bd434d)
  • agents: security + product review fixes for triage routine (cbafef5)
  • agents: switch triage nudge prefix to @claude-triage (#265) (77bfce2)
  • agents: triage bundles ready items, never splits issues (#266) (2227a6b)
  • agents: triage default — execute when outcome is clear (e3f8a6c)
  • agents: triage defer subtypes + partial-rollout linkage rule (#273) (c97aa95)
  • agents: triage fires on comments + claude-triaging lifecycle label (#277) (604d795)
  • agents: triage PR ergonomics — refs adcp#3121 (#279) (31606eb)
  • agents: triage prompt handles RFC/epic/scope bucket/milestone (cac3525)
  • agents: triage runs pre-PR build+test gate before expert review (#271) (8fcc5ee)
  • agents: triage runs pre-PR expert review on diff before opening PR (#269) (46dd708)
  • agents: triage v2 — expert consultation + race + coverage (bf6e18b)
  • client: ADCPClient.from_mcp_client() factory for in-process MCP transport (#293) (d83aa53)
  • signing: close 4 SSRF gaps and add opt-in port hardening (foundation audit) (84b837e)
  • signing: default replay store, signed-fetch preset, migration guide (#272) (52019b8)
  • signing: drain three foundation-audit deferreds (#298, #299, #300) (072998a)
  • validation: schema-driven validation with client hooks and opt-in server middleware (5cbac87)
  • validation: schema-driven validation with client hooks and opt-in server middleware (a38ff57)

Bug Fixes

  • a2a: address expert-review feedback on 1.0 migration (7e54b97)
  • adcp: skip eager httpx.AsyncClient alloc in WebhookSender.aenter on owned-client path (#301) (4bd45d1), closes #300
  • agents: already-engaged check + tighten label creation (02baa89)
  • agents: triage already-engaged + ship-more (missed in #259) (ca42d29)
  • agents: webhook-miss sweep grace period (no double-fire) (#280) (3a5f1c2)
  • deps: add types-protobuf to pip dev extras (801ac16)
  • handlers: sync MEDIA_BUY_STATE_MACHINE with spec v3 enum (#289) (54fd18b)
  • signing: validate-before-sign symmetry in deliver() + HMAC SSRF coverage + 4.1 migration notes (bc8da3a)
  • triage: drop apostrophe from MODE text (port of adcp#3325) (#287) (2efa423)
  • validation: address code + security review feedback ([...
Read more

v4.0.0

22 Apr 12:44
2ffe024

Choose a tag to compare

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_level is removed. Migrate to reallocation_threshold / reallocation_unlimited on plan.budget, and set plan.human_review_required for 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]...
Read more

v3.12.0

16 Apr 02:43
1340ed2

Choose a tag to compare

3.12.0 (2026-04-16)

Features

  • skill-based agent generation with storyboard validation (e0eef4c)
  • skill-based agent generation with storyboard validation (d9d8778)

Bug Fixes

  • authorization_type takes precedence over stale properties key (3fc9ed0)
  • resolve property_ids and property_tags in get_all_properties() (ef55dcb)
  • resolve property_ids and property_tags in get_all_properties() (eca6bd7), closes #172
  • SSRF protections for authoritative_location redirects (6d1c962)

v3.11.0

04 Apr 11:52
ba2d9c7

Choose a tag to compare

3.11.0 (2026-04-04)

Features

  • ADCP 3.0.0-rc3 spec + full registry support (c3f6937)
  • implement ADCP 3.0.0-rc3 spec with full registry support (edc9578)
  • remove all backward-compat type stubs for clean 3.0.0 surface (a45cdf5)

Bug Fixes

  • add backward-compat FormatCategory/FormatType enum stub (756ed50)
  • clean up formatting in registry_sync and property_registry (44a1914)
  • remove accidental cursor file, add to .gitignore (2650f8e)
  • remove stale buyer_campaign_ref from MCP tool schemas (3c7a2c8)

v3.10.0

17 Mar 00:45
99496ac

Choose a tag to compare

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

16 Mar 16:51
e415f23

Choose a tag to compare

3.9.1 (2026-03-16)

Bug Fixes

  • flatten validation-only oneOf schemas for consumer subclassing (3171a95)
  • flatten validation-only oneOf schemas to single subclassable classes (c242a7d)

v3.9.0

13 Mar 14:37
35740b3

Choose a tag to compare

3.9.0 (2026-03-13)

Features

  • add RootModel getattr proxy and minimal sales agent example (#150) (f1c3990), closes #145 #148

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

v3.8.0

01 Mar 13:32
03dcd68

Choose a tag to compare

3.8.0 (2026-03-01)

Features

Bug Fixes

  • resolve CI failures from GetSignalsRequest union alias (#144) (f135651)