NylorunDocsBeta
A2A

Profile v2

The Nylorun A2A profile, version 2, with its answers to the questions A2A 1.0 leaves open and its five extensions.

POST /v1/a2a/agents/support
A2A-Version: 1.0
A2A-Extensions: https://docs.nylorun.com/a2a/interactions/v1, https://docs.nylorun.com/a2a/progress/v1

A2A 1.0 leaves some questions open, and keeps agents opaque by design. The Nylorun profile answers those questions for every Agent the Runtime serves, and its extensions carry what a client shows a person: approvals, plan steps, cost, a trace id, and file versions.

The profile is versioned: a change to any row is a new version. Version 2 keeps every row of version 1, adds three extensions, and adds the rules marked v2 below. Every extension is declared with required: false, so an Agent that serves v2 also serves a v1 client and a plain A2A 1.0 client.

The rules

Question A2A leaves openNylorun's answerSince
Which interrupted state an approval usesAUTH_REQUIRED. A question uses INPUT_REQUIRED. A missing connection uses AUTH_REQUIRED with kind connection.v1; kind connection in v2
How an approval is expressedOnly through interactions/v1 metadata. Text never approves.v1
A step whose outcome was lostThe task stays WORKING, with uncertain under effects/v1.v1
A new message in a busy contextQueued, and answered with the task that will take it. A message with delivery: "reject" in its metadata gets UnsupportedOperationError, reason CONTEXT_BUSY, as in v1.v2
Task idOne per turn, made from the context and the turn. Opaque to callers.v1
What is visible while workingStates, step text, and plan steps under progress/v1. Never tool calls, arguments, results, or delegations.v1; plan steps in v2
Who the caller acts forThe subject the caller authenticated as.v2

The extensions

The Agent Card declares each extension with required: false. A client activates the ones it wants with the A2A-Extensions request header, a comma-separated list of URIs, and the Agent echoes the ones it activated in the same response header. Extension data travels in metadata, keyed by the extension's URI. A message that carries extension data lists the URI in its extensions.

Extension URICarriesOnSince
https://docs.nylorun.com/a2a/interactions/v1An open interaction (interactionId, kind, prompt, detail); the caller's answer (interactionId, approved or value)Status message; reply messagev1
https://docs.nylorun.com/a2a/effects/v1uncertain: the id of the effect whose outcome was lostStatus updatev1
https://docs.nylorun.com/a2a/progress/v1The agent's plan: up to 20 steps, each with a label, a state, and a noteStatus updatev2
https://docs.nylorun.com/a2a/telemetry/v1Totals (steps, tokens, costUsd) and the turn's trace idTerminal status updatev2
https://docs.nylorun.com/a2a/files/v1Each artifact's kind, version, size, sha256, and its path in the agent's outputsArtifactv2

What a v2 Agent serves

A2A operationv2
BindingsJSON-RPC, A2A 1.0, listed in the card's supportedInterfaces. Not HTTP+JSON, gRPC, or 0.3.
SendMessage, GetTask, CancelTaskYes. A blocking SendMessage waits up to the Runtime limit a2aWaitMs, 5 minutes by default, then answers with the task still WORKING.
SendStreamingMessage, SubscribeToTaskNo: the card says streaming: false. Updates reach callers by push.
ListTasksYes, scoped to the caller's subject and the Agent, filtered by contextId, state, and statusTimestampAfter, latest status change first.
Push notification configsYes, when the Runtime has a push secret: delivered at least once, signed with Standard Webhooks, to hosts the Runtime allows. Retries last up to 24 hours. See Push notifications.
url file parts, in and outYes. See files/v1.
GetExtendedAgentCardNo.

The full statement, with every documented choice, is on Conformance.

What a client gets

TierAgentWhat the client gets
Profile v2An Agent on @nylorun/runtime 0.37.0-beta or later, with the extensions activatedTyped approvals and connections, plan steps, cost, a trace id, and file versions
CoreAny A2A 1.0 agent, or an Agent called with no extension activatedStates, messages, and artifacts. Approvals and connections arrive as text questions, and a text reply does not approve. No plan steps or cost.

createA2aClient() from @nylorun/agents/a2a activates all five extensions by default. See A2A client.

Next step

On this page