Skip to content

A2A responses fail validation due to strict 'extra inputs not permitted' #109

@bokelley

Description

@bokelley

Problem

When calling tools via A2A protocol, responses that include a message field fail Pydantic validation because the response models use extra='forbid'.

Reproduction

uvx adcp https://adcp-test-agent.fly.dev get_products '{"brief": "test campaign"}' --protocol a2a --auth "ci-test-token" --json

Error

Failed to parse response: Response doesn't match expected schema GetProductsResponse: 1 validation error for GetProductsResponse
message
  Extra inputs are not permitted [type=extra_forbidden, input_value='No products matched your requirements.', input_type=str]

Comparison with TypeScript Client

The TypeScript client (@adcp/client) handles this gracefully - it extracts the message field separately and displays it as "Protocol Message":

npx @adcp/client https://adcp-test-agent.fly.dev get_products '{"brief": "test campaign"}' --protocol a2a --auth "ci-test-token"
# ✅ SUCCESS
# Protocol Message: No products matched your requirements.
# Response: { "products": [] }

Suggested Fix

Either:

  1. Change response models to use extra='ignore' instead of extra='forbid'
  2. Or extract known protocol-level fields (like message) before validation

Environment

  • adcp Python SDK: v2.16.0
  • Target AdCP Spec: 2.5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions