Data part (A2A)
An A2A Part that carries structured JSON in its data field, such as form fields, records or machine-readable results, instead of prose.
A data part is an A2A Part whose content member is data, which holds structured JSON so that two agents can exchange fields and records directly instead of describing them in prose.
Shape. In a2a.proto, data is a google.protobuf.Value, so it can hold any JSON value: an object, an array, a string, a number, a boolean or null. Appendix A.2.1 shows v1.0 data parts with mediaType set to application/json. Like other parts, a data part can also carry metadata. Illustrative:
{
"data": {
"orderId": "PO-5518",
"lineItems": [{"sku": "VALVE-22", "quantity": 40}],
"requestedBy": "2026-10-15"
},
"mediaType": "application/json"
}
What changed from v0.3. Version 0.3 marked the type with "kind": "data" and required data to be a JSON object. Version 1.0 drops kind, since the data key itself identifies the part, and accepts any JSON value.
Declaring and checking support. An agent lists the media types it accepts in the Agent Card’s defaultInputModes and in each skill’s inputModes. A client can ask for structured results by listing application/json in acceptedOutputModes. A part with a media type the agent does not support gets ContentTypeNotSupportedError (JSON-RPC -32005). A2A does not define schemas for the JSON itself. The fields a skill expects are an agreement between the two sides. An agent can describe them in the skill’s description and examples, or an A2A extension can define them precisely.
When to use one. Data parts suit values a program acts on: order numbers, amounts, dates, addresses, form answers and results that feed another system. A message can mix them with text parts, for example a short explanation for a person alongside the structured request.
Validation. A data part is untrusted input like any other. The receiver should check types, ranges and required fields before acting, in the same way it would validate a request to an ordinary API.
Neighbouring terms. Text parts carry prose, file parts carry files, and ProtoJSON defines how google.protobuf.Value maps to plain JSON.