A2A 1.0 message shape: role, parts and response

Use ROLE_USER in a v1 request and put the content in parts.data or parts.text without the legacy kind discriminator. A v1 SendMessage response wraps its message in result.message. A plain result.parts response is the legacy shape.

Get a field-level diagnosis

  1. Use your approved MCP client connected to https://silent.aibitious.com/mcp.
  2. Call diagnose_a2a_request with the target protocol version and a sanitized request example.
  3. Apply the listed corrections locally. The returned example is a fixed template to adapt, not an executed repair.

Worked example: three version mismatches

This authored example intentionally uses a legacy method, role and part for version 1.0.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "diagnose_a2a_request",
    "arguments": {
      "protocolVersion": "1.0",
      "request": {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "message/send",
        "params": {
          "message": {
            "messageId": "example-1",
            "role": "user",
            "parts": [
              {
                "kind": "data",
                "data": {}
              }
            ]
          }
        }
      }
    }
  }
}

Expected findings: METHOD_VERSION_MISMATCH, ROLE_VERSION_MISMATCH, PART_VERSION_MISMATCH. The v1 template uses SendMessage, ROLE_USER and data without kind.

For manual or automated operator checks, send X-Silent-Door-Operator-Test: true. Diagnostic calls have separate usage counters from repository handoffs.

Common errors

Connection instructions · Measured usage · A2A 1.0 specification