You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A2A server ignores the profile's input member, so 3.2 JS clients' requests arrive empty (9.6.1, and next) #1887
On adcp 9.6.1, the A2A executor reads an invocation DataPart's parameters member only (a2a_server.py, the data.get("parameters", {}) calls in the skill parser and _parse_skill_from_message). A client that follows the AdCP v3 A2A profile sends { "skill": ..., "input": { ... } }, so the task handler receives {}.
@adcp/sdk 16.7.0 (the adcp-3.2 dist-tag) sends input whenever the agent card's A2A protocolVersion is not 0.x. Against a 9.6.1 server, every A2A call from that client loses its request:
get_adcp_capabilities succeeds but doesn't echo context, so the storyboard capability_discovery steps fail with "Response echoes back the context object at /context".
Versioned tools fail with VERSION_UNSUPPORTED: adcp_version is required, because adcp_version was in the dropped input.
The same calls over MCP pass.
Expected
The A2A profile (docs/building/by-layer/L0/a2a-profile-extension.mdx) defines input as the required member: "parameters is not an alias for input in this profile". A 3.2-line server should dispatch input to the handler and echo its context.
10.0.0b13 lists input in _DATA_MEMBERS, but its default parser still reads parameters (lines 626, 640 and 1137). #1659's description notes the gap: "The default parser reads parameters but not the A2A profile's input member. This is a separate issue." This is that issue.
Ask
Read input in the default A2A parser on next.
Backport to 9.x so 3.2 servers interoperate with the 3.2 JS client.
Accepting parameters from clients that don't activate the profile (A2A 0.x) keeps older callers working.
Reproduction
Serve any DecisioningPlatform with 9.6.1 over A2A, then:
npx -y @adcp/sdk@16.7.0 storyboard run http://localhost:8000/ --protocol a2a (storyboard capability_discovery)
Impact
The embedded sales agent (scope3data/embedded-sales-agent) can't move its blocking storyboard gate off @adcp/sdk 12.1.1 (AdCP 3.1) once it stops serving 3.1. Our 3.1 removal is waiting on this.
Both read the profile's input member. A request that does not activate the AdCP A2A profile keeps working with parameters; when it carries both members, parameters wins and they are never merged.
For a request that activates the profile (A2A-Extensions: https://adcontextprotocol.org/extensions/adcp/v3):
10.x follows the profile strictly. parameters (alone or beside input), a missing or non-object input, or a DataPart count other than one is refused with INVALID_REQUEST.
9.x stays non-breaking. It refuses only an invocation carrying both members. Every other non-conforming shape is still dispatched as before, and a deprecation warning is logged.
Reproduction: @adcp/sdk@16.7.0 storyboard run <agent> capability_discovery --protocol a2a. It fails on unfixed 9.x with the context echo error and passes 2/2 on both branches. media_buy_seller over A2A also passes on both, with 56 steps passed and 0 failed.
Activity
fix(server): treat a hand-built A2A context as not activating the pro…
fix(server): treat a hand-built A2A context as not activating the pro…
bokelley commentedon Nov 9, 2026
The fix is in review on both lines:
next(10.x beta): fix(server): read the A2A profile's input member, and refuse parameters when the profile is activated #1888main(9.x backport): fix(server): read the A2A profile's input member, and refuse an activated invocation that carries both members #1889. chore(deps): pin tzdata in the dev dependencies so legacy zone aliases resolve on ubuntu-26.04 runners #1890 unblocks its CI on the new ubuntu-26.04 runners.Both read the profile's
inputmember. A request that does not activate the AdCP A2A profile keeps working withparameters; when it carries both members,parameterswins and they are never merged.For a request that activates the profile (
A2A-Extensions: https://adcontextprotocol.org/extensions/adcp/v3):parameters(alone or besideinput), a missing or non-objectinput, or a DataPart count other than one is refused withINVALID_REQUEST.Reproduction:
@adcp/sdk@16.7.0 storyboard run <agent> capability_discovery --protocol a2a. It fails on unfixed 9.x with thecontextecho error and passes 2/2 on both branches.media_buy_sellerover A2A also passes on both, with 56 steps passed and 0 failed.fix(server): read the A2A profile's input member, and refuse paramete…
fix(server): keep dispatching an activated parameters-only A2A invoca…
test(server): cover the 9.x warn-and-dispatch shapes for an activated…
fix(server): read the A2A profile's input member, and refuse paramete…
test(server): cover the A2A input member and the profile's parameters…
fix(server): treat a hand-built A2A context as not activating the pro…
fix(server): keep dispatching an activated parameters-only A2A invoca…
test(server): cover the 9.x warn-and-dispatch shapes for an activated…
fix(server): read the A2A profile's input member, and refuse an activ…