R.2

Objects and fields

The proto defines every object in a request, a response, or a stream frame, and each field has one lowerCamelCase JSON name, one type, and a presence rule.

Bold rows name proto messages, the normative source for data objects, and the rows under each are its fields. Fields carry their lowerCamelCase JSON names, although the §5.5 example converts push_notification_config, a field the proto names task_push_notification_config (conflict D22).

Yes in the Req. column marks a REQUIRED field, which must be present and set in every valid message. A required array holds one element or more, yet an empty tasks list is legitimate (conflict D19). A type that starts with optional uses the proto keyword that records whether the field was set.

The tables leave out some optional fields. Task, Message, Part, Artifact, and both stream events carry a metadata object, and Message and Artifact carry extensions, a list of URIs. A part can name a filename, an artifact a description, a skill its examples, and a card a documentationUrl and an iconUrl. Every request message, from SendMessageRequest to GetExtendedAgentCardRequest, carries an optional tenant string that must match the chosen interface's tenant when that is set. Operations by binding lists the request and response messages.

Task and message objects

Message, Part, Artifact and chunks, Task, TaskStatus, and TaskState, SendMessage, and push notification configs define these objects.

FieldTypeReq.Meaning
TaskThe unit of work, created by the server
idstringyesMinted by the server
contextIdstringThe context. Both stream events require it.
statusTaskStatusyesThe state, status message, and time
artifactsrepeated ArtifactThe outputs. ListTasks needs includeArtifacts for them.
historyrepeated MessageThe kept messages, capped by historyLength
TaskStatusThe status of a task
stateTaskStateyesA value from Task states
messageMessageThe agent's note, such as a question
timestampgoogle.protobuf.TimestampWhen it was recorded, in ISO 8601 and UTC
MessageOne turn of conversation
messageIdstringyesMinted by the sender. Agents can use it to detect duplicates.
contextIdstringThe context. Every server message has it.
taskIdstringThe task. A client value names an existing task that matches contextId.
roleRoleyesROLE_USER from the client, ROLE_AGENT from the server
partsrepeated PartyesThe content, one part or more
referenceTaskIdsrepeated stringOther tasks the message refers to
PartExactly one of text, raw, url, and data
textstringText content
rawbytesFile content, base64 in JSON
urlstringA URL to the file content
datagoogle.protobuf.ValueAny JSON value
mediaTypestringThe media type, for every kind of part
ArtifactOne output of a task
artifactIdstringyesUnique in the task. Chunks match on it.
namestringA readable name, such as test-log.txt
partsrepeated PartyesThe content, one part or more
TaskStatusUpdateEventA change of task status
taskId, contextIdstringyesThe task and its context
statusTaskStatusyesThe new status
TaskArtifactUpdateEventA new artifact, or one chunk of it
taskId, contextIdstringyesThe task and its context
artifactArtifactyesThe artifact or the chunk
appendboolWhen true, add to the artifact with this artifactId
lastChunkboolWhen true, this is the last chunk
StreamResponseA frame or push body, one of four
taskTaskThe task now. It opens task streams and subscriptions.
messageMessageA message-only stream holds one, then closes.
statusUpdateTaskStatusUpdateEventA change of task status
artifactUpdateTaskArtifactUpdateEventA new artifact or chunk
SendMessageConfigurationThe configuration of a send
acceptedOutputModesrepeated stringMedia types the client accepts
taskPushNotificationConfigTaskPushNotificationConfigA webhook to register, with no taskId
historyLengthoptional int32Unset means no limit, and 0 means none.
returnImmediatelyboolTrue returns once the task exists. The default waits.
TaskPushNotificationConfigA webhook for one task
tenantstringMust match the interface tenant, if set
idstringThe configuration id, assigned on create
taskIdstringThe task it belongs to
urlstringyesThe webhook URL
tokenstringA token for the task or session. No transport is defined.
authenticationAuthenticationInfoHow the agent authenticates: a required scheme, such as Bearer, and optional credentials

Agent card objects

AgentCard fields, Extended cards and signatures, Security schemes, and Extensions define these objects.

FieldTypeReq.Meaning
AgentCardWhat the agent offers, where, and what it demands
namestringyesA readable name, such as test-runner
descriptionstringyesWhat the agent does
supportedInterfacesrepeated AgentInterfaceyesWhere to reach it. The first entry is preferred.
providerAgentProviderThe provider: a required url and organization
versionstringyesThe agent's own version, such as 2.3.0
capabilitiesAgentCapabilitiesyesThe optional features it supports
securitySchemesmap<string, SecurityScheme>Accepted authentication schemes, by name
securityRequirementsrepeated SecurityRequirementScheme names mapped to scopes, such as {"schemes": {"bearer": {"list": []}}}
defaultInputModesrepeated stringyesMedia types accepted across all skills
defaultOutputModesrepeated stringyesMedia types produced across all skills
skillsrepeated AgentSkillyesWhat the agent does well
signaturesrepeated AgentCardSignatureJWS signatures over the canonical card
AgentInterfaceOne way to reach the agent
urlstringyesAn absolute HTTPS URL in production
protocolBindingstringyesJSONRPC, GRPC, HTTP+JSON, or a custom binding URI
tenantstringA routing value. When set, copy it into each request sent to this interface.
protocolVersionstringyesThe A2A version, such as 1.0
AgentCapabilitiesOptional features. An absent flag means false.
streamingoptional boolAllows SendStreamingMessage and SubscribeToTask
pushNotificationsoptional boolAllows the four push configuration operations
extensionsrepeated AgentExtensionThe protocol extensions it supports
extendedAgentCardoptional boolAllows GetExtendedAgentCard
AgentExtensionOne extension the agent supports, in capabilities.extensions
uristringThe URI that identifies the extension
descriptionstringHow this agent uses the extension
requiredboolWhen true, the client must understand and comply with the extension
paramsgoogle.protobuf.StructConfiguration for the extension, as a JSON object
AgentSkillOne thing the agent does well
idstringyesThe skill id, such as run-tests
namestringyesA readable name
descriptionstringyesWhat the skill does
tagsrepeated stringyesKeywords, one or more
inputModesrepeated stringInput media types that override the card's
outputModesrepeated stringOutput media types that override the card's
securityRequirementsrepeated SecurityRequirementRequirements for this skill

Names the proto does not define

Older material and stale pages of the docs still use these names, and none exists in the v1.0.1 proto (conflict D10).

NameUse instead
kind on a part or a stream eventThe member name, such as text or statusUpdate
TextPart, FilePart, DataPartOne Part with text, raw or url, or data
final on TaskStatusUpdateEventThe close of the stream
taskStatusUpdate, taskArtifactUpdatestatusUpdate, artifactUpdate
Task.createdAt, Task.lastModifiedstatus.timestamp
TaskArtifactUpdateEvent.indexartifactId, which chunks match on
PushNotificationConfig, CreateTaskPushNotificationConfigRequestTaskPushNotificationConfig, which the create operation takes as its request (conflict D4)
configId on a push configurationid
Card url, protocolVersion, preferredTransport, additionalInterfacessupportedInterfaces, with url and protocolVersion on each entry
Card supportsAuthenticatedExtendedCardcapabilities.extendedAgentCard
Card securitysecurityRequirements (conflict D6)
Card extensions at the top levelcapabilities.extensions (discrepancy N2)
cursor, limit, nextCursorpageToken, pageSize, nextPageToken

A2A protocol 1.0.1 · 3303592 · 2026-05-28 · Edition 2026.10