# A2A Connector - Full Documentation --- product: A2A Connector version: 2.0 is-latest-version: true --- # Using Anypoint Code Builder to Configure A2A Connector 2.0 > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Cloud IDE (Beta) is scheduled for retirement on August 31, 2026. August 30, 2026 is the last day you can access Cloud IDE (Beta). Download your projects to work from Desktop IDE. Learn more in [Migrate a Project from Cloud IDE to Desktop IDE](../../anypoint-code-builder/int-import-mule-project#migrate-cloud-to-desktop). To use Anypoint Code Builder to configure a connector or module, create a basic integration project in Anypoint Code Builder, add connectors and other components to your Mule application to process your business logic, and configure the attributes. ## Before You Begin Before creating an integration project, you must: - [Set up and access the Anypoint Code Builder web or desktop IDE](../../anypoint-code-builder/start-acb) - Have credentials to access the connector’s API - Ensure that the Visual Studio Code Extension Pack for Java is installed. To use this connector, you must be familiar with: - The connector’s API - Anypoint Connectors - Mule runtime engine (Mule) ## Create a New Integration Project To create a new integration project: 1. In the activity bar of the IDE, click the ![Anypoint Code Builder icon](../../connectors/_images/acb-icon-ms-logo.png) (**Anypoint Code Builder**) icon. 2. From **Quick Actions**, click **Develop an Integration**: ![Develop an Integration link highlighted in the Getting started section](../../anypoint-code-builder/_images/develop-integration-option-mat.png) 3. Complete the following in the **Develop an Integration** form:
AttributeValue

Project Name

Unique name for your project.

This name is used as the title and name of the integration project file. For example, if the project name is "Salesforce Integration," the project file name is salesforce-integration.

Project Location

Your home directory or another directory you create. Click Browse to select a different directory for the integration project.

Don’t create the project within another project directory.

4. Select the type of project to create by selecting either the **Empty Project** or **Template or Example** card. 5. Select the **Mule runtime** and **Java Version** for your app. 6. Click **Create Project**. ## Add the Connector to Your Integration Project Anypoint Connectors provide operations for retrieving, modifying, and sending data to and from systems. In addition to the [built-in connectors](../../anypoint-code-builder/acb-reference#builtin-connectors) that Anypoint Code Builder provides, you can download many other connectors from Anypoint Exchange. To import a connector from Exchange and add it to your configuration: 1. In the Explorer view, open the configuration XML file for your project, such as `my-project-name.xml`. 2. Click the ![Show Mule graphical mode icon](../../anypoint-code-builder/_images/icon-tree-view.png) (**Show Mule graphical mode**) icon in the activity bar to open the canvas UI if it doesn’t open automatically. 3. Add the connector the same way you added other components from the canvas UI: 1. In the canvas UI, click the ![Add component icon](../../anypoint-code-builder/_images/icon-plus.png) (**Add component**) icon. 2. In the **Add Component** panel, click **Connectors**. 3. Click the connector name and then click the operation to add, such as **Publish**: ![Add Publish operation from Anypoint MQ Connector](../../anypoint-code-builder/_images/int-add-connector-operation.png) If the connector is not available locally, click the ![Search in Exchange icon](../../anypoint-code-builder/_images/icon-search-exchange.png) (**Search in Exchange**) toggle: ![Search in Exchange toggle](../../anypoint-code-builder/_images/int-connector-search-exchange.png)
1Search locally
2Search in Exchange
4. Select the connector to add to your project. 5. Select the operation from the **Add Component** panel. Adding a connector to an integration project does not make that connector available to other projects in your Anypoint Code Builder workspace. ## Configure the Source For the Flow A source (trigger) starts the flow when specified conditions are met. You can configure these sources for A2A Connector: - **A2A Server - Task Authorizer Listener** A2A Server authorization listener that gates auth-required operations before they execute. It runs for both the JSON-RPC and HTTP+JSON transport bindings. If the flow completes successfully, the request is authorized. If the flow raises an error, the request is denied and an `A2A:UNAUTHORIZED` error is returned to the caller. The current operation name is available on `attributes.operationName` so a single listener can gate multiple operations. This source supersedes the **A2A Server - Authorization Listener** from earlier versions. - **A2A Server - Task Listener** Listens for and receives incoming A2A protocol-compliant requests from other AI agents, enabling the Mule-based agent to act as an A2A server and respond to tasks. This unified source serves blocking, non-blocking, and streaming `SendMessage` requests over both transport bindings; there is no separate stream listener. - **A2A Server - On Async Request Listener** Server-side listener that customizes the initial `Task` returned for streaming (`SendStreamingMessage`) and non-blocking (`SendMessage` with `returnImmediately=true`) requests. Use this source in conjunction with **A2A Server - Task Listener**. - **A2A Server - On Push Notification Set Listener** Validates the push notification configuration before routing the request to the **A2A Server - Task Listener** source. For example, to configure an **A2A Server - Task Listener** source, follow these steps: 1. Click the **A2A Server - Task Listener** component on the canvas. 2. (Optional) Click the edit icon to change the name of the **A2A Server - Task Listener** component. 3. In the **General** tab, configure the connection for the A2A Server. See [A2A Server Configuration](a2a-connector-reference#Server). 4. Select the **Advanced** tab to configure these attributes:
AttributeDescriptionRequired

Primary node only

Select this option to execute the A2A Server - Task Listener source on the primary node only when running in a cluster.

No

Redelivery policy

Configures the redelivery policy for executing requests that generate errors. You can add a redelivery policy to any source in a flow.

No

Reconnection strategy

Retry strategy in case of connectivity errors. When an operation in a Mule application fails to connect to an external server, the default behavior is for the operation to fail immediately and return a connectivity error. You can modify the default behavior by configuring the reconnection strategy for the operation.

No

## Add Components to Your Project Add components to your integration project to build a flow: 1. In the **Explorer** view, open the XML file for your project, such as `my-project-name.xml`. 2. Select **Build a Flow** from the start card to create an empty flow: ![Anypoint Code Builder canvas with starting cards with the options to start from scratch, build a flow, or build a subflow](../../connectors/_images/acb-build-flow.png) 3. Change the name of the flow: 1. Click **Flow**. 2. Click the edit icon. ![Arrow pointing to the flow name edit pencil icon](../../connectors/_images/acb-change-flow-name.png) 3. Enter the flow name, and click the checkmark. 4. In the canvas UI, click the ![Add component icon](../../anypoint-code-builder/_images/icon-plus.png) (**Add component**) icon. 5. In the **Add Component** panel, search for and select your component from the results. The following example shows the **Listener** component from the **HTTP** search results: ![Listener component highlighted in the Add Component section](../../anypoint-code-builder/_images/main-tutorial-add-first-listener.png) The configuration XML file now includes the XML for the HTTP Listener into the `` element, for example: ```XML ``` ## Configure the Component Attributes After you add components to your integration project, configure the attributes in the component UI, or configure the attributes directly in the XML code editor. Connector XML tags start with a namespace followed by an operation, following the syntax `namespace:operation`, such as `` for a **Select** operation in Anypoint Connector for Database (Database Connector). You can use autocomplete from an expression (**fx**) field for a component to select DataWeave functions from the Core module and other values accepted in this field. ## Create a New Configuration XML File Anypoint Code Builder creates the initial Mule configuration XML file in `src/main/mule` within the Mule project. This file contains global configurations and flow structures. You can create additional configuration files, for example, to store global configurations. To create a new XML configuration file: 1. In the Explorer view, right-click the **mule** folder (`src/main/mule`) and select **New File**. Alternatively, use the menu. Show me how Select the `mule` folder, and then: - In the desktop IDE, select **File** > **New Mule Configuration File**. - In the cloud IDE, click the ![](../../anypoint-code-builder/_images/icon-menu.png) (menu) icon, and select **File** > **New File**. 2. Enter a name for the new file with the `.xml` extension. 3. In the Editor view for the new file, press Ctrl+Space to display available options. 4. Select **Empty mule configuration**: ![New Mule configuration option in auto-correct](../../anypoint-code-builder/_images/int-new-mule-config.png) This command adds the following code to the file: ```xml ``` ## Debug the App Debug your Mule application using the embedded debugger in Anypoint Code Builder. See [Debugging Mule Applications](../../anypoint-code-builder/int-debug-mule-apps). ## See Also - [Anypoint Code Builder Overview](../../anypoint-code-builder/) - [Creating Integrations](../../anypoint-code-builder/int-create-integrations) - [Using Anypoint Code Builder to Configure a Connector](../../connectors/introduction/intro-config-use-acb) - [Anypoint Code Builder Components and Commands Reference](../../anypoint-code-builder/acb-reference) - [Defining and Securing Properties for a Mule Application](../../anypoint-code-builder/int-create-secure-configs) - [Triggering Flows in Your Development Environment](../../anypoint-code-builder/int-trigger-flows) - [Configuring Components](../../anypoint-code-builder/int-configure-components) - [Debugging Mule Applications](../../anypoint-code-builder/int-debug-mule-apps) - [Salesforce Help](https://help.salesforce.com) - [Deployment Options](../../runtime-manager/deployment-strategies) --- product: A2A Connector version: 2.0 is-latest-version: true --- # A2A Connector 2.0 - Examples > For the full documentation index, see: https://docs.mulesoft.com/llms.txt A2A Connector 2.0 speaks A2A protocol 1.0.0. An A2A server exposes an agent to the world through an agent card and one or more transport bindings. Client A2A agents use the card to determine: - When to use the agent (based on description, skills, and capabilities) - Where to contact the agent (based on `supportedInterfaces[].url` and `protocolBinding`) - Whether the endpoint is multi-tenant (based on `supportedInterfaces[].tenant`) ## Configure an A2A Server An A2A server serves each agent over one or more transport bindings. The two supported bindings are `JSONRPC` and `HTTP_JSON` (gRPC is out of scope for this release). Every binding you register in the DSL must be advertised by the agent card, and every card entry must be registered in the DSL. Startup validates this bijection. ```xml ```
1a2a:server-config defines the A2A server configuration.
2a2a:connection binds the server to an HTTP listener and specifies the base agentPath. The agent card is served at {agentPath}/.well-known/agent-card.json, and each transport binding is registered under {agentPath}{interface.path}.
3a2a:interfaces declares one or more transport bindings, each with a protocol (JSONRPC or HTTP_JSON) and a path segment. There is no tenant attribute on <a2a:interface>. Tenant identities live only in the agent card.
4a2a:agent-card points to the JSON file that describes the agent. On CloudHub, use ${app.home}/agent-card.json.
If you register an `` whose `(protocol, path)` is not advertised in the card (or vice versa), startup fails with an error naming the offending entry, so misconfiguration surfaces at deployment time instead of as runtime 404s. ## Choose a Transport: JSON-RPC vs HTTP+JSON The two bindings deliver the same agent over different wire shapes. A client that talks A2A can use either. - JSON-RPC 2.0 (protocol `JSONRPC`): Every operation is a `POST` to a single URL with a JSON-RPC envelope. The `method` field identifies the operation (`SendMessage`, `SendStreamingMessage`, `GetTask`, `CancelTask`, `SubscribeToTask`, `ListTasks`, `CreateTaskPushNotificationConfig`, `GetTaskPushNotificationConfig`, `ListTaskPushNotificationConfigs`, `DeleteTaskPushNotificationConfig`). - HTTP+JSON (protocol `HTTP_JSON`): Each operation has its own URL and HTTP method: `POST /message:send`, `POST /message:stream` (SSE), `GET /tasks/{id}`, `GET /tasks`, `POST /tasks/{id}:cancel`, `POST /tasks/{id}:subscribe` (SSE), `POST /tasks/{id}/pushNotificationConfigs`, `GET /tasks/{id}/pushNotificationConfigs/{configId}`, `GET /tasks/{id}/pushNotificationConfigs`, `DELETE /tasks/{id}/pushNotificationConfigs/{configId}`. The connector’s server-side flow logic is transport-agnostic. The same **A2A Server - Task Listener** flow serves both. You only need to advertise the bindings you actually register. ## A2A Request Format The minimum required JSON-RPC 2.0 request for `SendMessage`: ```json { "jsonrpc": "2.0", "method": "SendMessage", "id": "test-001", "params": { "message": { "messageId": "550e8400-e29b-41d4-a716-446655440000", "role": "ROLE_USER", "parts": [{ "text": "Hello, this is my message" }] } } } ``` The equivalent HTTP+JSON request is `POST {agentPath}{interface.path}/message:send` with only the `params` body: ```json { "message": { "messageId": "550e8400-e29b-41d4-a716-446655440000", "role": "ROLE_USER", "parts": [{ "text": "Hello, this is my message" }] } } ``` You can use metadata types in Anypoint Studio to ensure your payloads conform to the A2A schema. The connector ships JSON schema definitions for `MessageSendParams`, `Task`, `TaskStatusUpdateEvent`, `TaskArtifactUpdateEvent`, `ListTasksParams`, and other A2A objects. > [!NOTE] The wire-level JSON-RPC method names in A2A 1.0.0 are PascalCase (`SendMessage`, > `GetTask`, and so on), not the slash-form (`message/send`, `tasks/get`) used in the older 0.3.0 > spec. Clients written against 0.3.0 must update their method strings. ## Write a Task Listener The **A2A Server - Task Listener** source is now unified. The same flow serves blocking `SendMessage`, non-blocking `SendMessage` (with `returnImmediately=true`), and `SendStreamingMessage` over both JSON-RPC and HTTP+JSON. There is no separate **A2A Server - On Task Stream Listener** element anymore. ```xml ``` Task and context identifiers are surfaced on `attributes` (`attributes.taskId`, `attributes.contextId`), along with the resolved tenant (`attributes.tenant`, which is an empty string when the client did not send one). Use these for direct addressing rather than deriving them from the request body. ### Example Response The **A2A Server - Task Listener** flow does not return a `Task` payload directly. It emits one or more update events via the **A2A Server - Update Task Status** and **A2A Server - Update Task Artifact** operations, and the connector materializes the client response automatically from the persisted task state after a terminal or interrupted status update is dispatched. Each update event follows the A2A `StreamResponse` shape: a single root key (`statusUpdate` for status events, `artifactUpdate` for artifact events) whose value carries `taskId`, `contextId`, and the update body. A typical successful sequence is an intermediate `statusUpdate` (working), an `artifactUpdate` for the result, and a final `statusUpdate` in a terminal state: ```xml ``` When the terminal (or interrupted) `statusUpdate` is dispatched, the connector materializes the current `Task` from the task store, carrying every `artifactUpdate` and message history persisted along the way, and delivers it to the caller: - Blocking `SendMessage`: Returned synchronously as a `StreamResponse` with a `task` root key. - `SendStreamingMessage` and `SubscribeToTask`: The same terminal event also closes the SSE stream. The exception is `TASK_STATE_AUTH_REQUIRED`, which does not close the stream so the agent can resolve auth out of band. Terminal states are `TASK_STATE_COMPLETED`, `TASK_STATE_FAILED`, `TASK_STATE_CANCELED`, and `TASK_STATE_REJECTED`. Interrupted states are `TASK_STATE_INPUT_REQUIRED` and `TASK_STATE_AUTH_REQUIRED`. ## Mule App Example This example shows a financial A2A agent that answers queries about US companies by combining an MCP-tool lookup with an LLM prompt. ```xml #(1) #(2) #(3) #(4) #(5) #(6) #(7) #(8) #(9) #(10) ```
1The A2A Server - Task Listener waits for an incoming SendMessage (blocking, non-blocking, or streaming) from any registered transport binding.
2The logger component records a diagnostic entry.
3attributes.taskId is captured to task_id. Prefer attributes over deriving IDs from payload. The attribute is authoritative for both JSON-RPC and HTTP+JSON.
4attributes.contextId is captured to context_id. Reuse it in subsequent event payloads so the client can correlate.
5The user prompt is extracted from payload.message.parts[0].text.
6The ms-inference:mcp-tools-native-template calls the LLM with the tools configured for financial analysis.
7The tool-augmented response is captured to mcp_tooling_results.
8A second inference pass converts the tool output into the user-facing JSON structure.
9The A2A Server - Update Task Artifact operation emits the LLM answer as an artifact event. The DataWeave payload uses the artifactUpdate root key required by the A2A StreamResponse shape. Artifact events do not close the response by themselves. They are streamed to SSE subscribers and merged into the persisted Task.
10The A2A Server - Update Task Status operation with state: "TASK_STATE_COMPLETED" is the terminal event that triggers the connector to materialize the current Task from the store and deliver it to the caller (or close the SSE stream). Emit exactly one terminal or interrupted status per invocation.
## Configure the A2A Client to Call Other A2A Agents The client connection provider is transport-specific. Choose the one that matches the target agent card’s `supportedInterfaces[].protocolBinding`. ```xml ```
1The config parameter is now agentUrl (previously serverUrl). The connector discovers the target agent via {agentUrl}/.well-known/agent-card.json.
2Every outbound request automatically sends A2A-Version: 1.0 as a default header, unless overridden via <a2a:default-headers>. Agent-card discovery (connect-time and the A2A Client - Get Card operation) is exempt from the header.
A minimal flow that listens for an A2A task and forwards it to a remote agent: ```xml ``` ## Non-Blocking Send Message (`returnImmediately=true`) Clients that don’t want to hold a connection open for the entire compute can send `configuration.returnImmediately=true`. The server acknowledges immediately with an initial `Task` (typically in `TASK_STATE_SUBMITTED` or `TASK_STATE_WORKING`) and continues processing asynchronously. The client can later call the **A2A Client - Subscribe To Task** operation to stream events for the ongoing task. To customize the initial `Task` response, add an **A2A Server - On Async Request Listener** flow to the same server config: ```xml ```
1The A2A Server - On Async Request Listener runs for SendStreamingMessage requests and for SendMessage with returnImmediately=true. It receives the incoming MessageSendParams as payload and attributes.taskId / attributes.contextId / attributes.tenant / request headers on attributes.
2The flow must return the initial task as a StreamResponse with a task root key (matching the same envelope shape used for statusUpdate and artifactUpdate events). Missing or unparseable output is rejected with A2A:INTERNAL_ERROR.
3The Task under task can already be in a terminal state (TASK_STATE_COMPLETED, TASK_STATE_FAILED, TASK_STATE_CANCELED, or TASK_STATE_REJECTED) or an interrupted state (TASK_STATE_INPUT_REQUIRED or TASK_STATE_AUTH_REQUIRED) to short-circuit the request. In that case, the A2A Server - Task Listener compute flow is not invoked.
4The flow can raise a Mule error to reject the request outright. The raised error type propagates on the wire.
> [!NOTE] Concurrency and terminal-state safety on `SendMessage`: > > - In-flight rejection: Cluster-wide, only one active `SendMessage` (blocking, non-blocking, or > streaming) may run against a given `taskId` at any time. A duplicate concurrent submission is > rejected with `A2A:INVALID_REQUEST` ("Another SendMessage is already in flight for taskId {id}; > retry once it completes."), so a task’s message-history ordering holds under concurrency. Orphan > claims from a crashed worker auto-clear via the multi-replica claim store’s 5-minute TTL. > - Terminal-sticky rejection: Once a task reaches a terminal state (`TASK_STATE_COMPLETED` / > `TASK_STATE_FAILED` / `TASK_STATE_CANCELED` / `TASK_STATE_REJECTED`), further `SendMessage` / > `SendStreamingMessage` requests against that `taskId` are rejected with > `A2A:UNSUPPORTED_OPERATION` ("Task has reached terminal state."). The same rejection also fires > when a legitimate terminal transition (typically an out-of-replica `CancelTask` or the **A2A > Server - Task Listener** flow’s own terminal **A2A Server - Update Task Status** operation) > commits while a concurrent write is mid-flight, so racing and non-racing multi-turn attempts > look identical to the client. ## Streaming with the Unified Task Listener Streaming (`SendStreamingMessage`, wire `POST /message:stream` on HTTP+JSON) uses the same **A2A Server - Task Listener** flow as non-streaming. No separate **A2A Server - On Task Stream Listener** is needed. Emit intermediate status and artifact events via the **A2A Server - Update Task Status** and **A2A Server - Update Task Artifact** operations. The connector delivers them over SSE to the connected client. Each event’s DataWeave payload uses the `StreamResponse` root key (`statusUpdate` or `artifactUpdate`) with `taskId`, `contextId`, and body under it. There is no explicit `final` boolean. The connector derives finality from `TaskStatus.state.isFinal()`. ```xml ``` ### Expected SSE Event Format The stream is delivered as standard server-sent events. Every event carries a JSON payload in `data:`, but the wire envelope depends on the protocol binding that received the streaming request: - HTTP+JSON: Each `data:` payload is the bare A2A `StreamResponse` envelope. The oneof discriminator is the root key: `task` for the initial task snapshot, `statusUpdate` for status events, and `artifactUpdate` for artifact events. - JSON-RPC: Each `data:` payload wraps the same `StreamResponse` inside a JSON-RPC 2.0 success response: `{"jsonrpc":"2.0","id":,"result":}`. The `id` echoes the client’s `SendStreamingMessage` or `SubscribeToTask` request id. HTTP+JSON (`POST /message:stream` or `POST /tasks/{id}:subscribe`): ```text event: task data: {"task":{"id":"task-123","contextId":"context-task-123","status":{"state":"TASK_STATE_WORKING"}}} event: artifact-update data: {"artifactUpdate":{"taskId":"task-123","contextId":"context-task-123","artifact":{"artifactId":"artifact-task-123","name":"partial-answer","parts":[{"text":"Here is an incremental result chunk."}]}}} event: status-update data: {"statusUpdate":{"taskId":"task-123","contextId":"context-task-123","status":{"state":"TASK_STATE_COMPLETED"}}} ``` JSON-RPC (`method: "SendStreamingMessage"` or `method: "SubscribeToTask"`, request id `"req-1"`): ```text event: task data: {"jsonrpc":"2.0","id":"req-1","result":{"task":{"id":"task-123","contextId":"context-task-123","status":{"state":"TASK_STATE_WORKING"}}}} event: artifact-update data: {"jsonrpc":"2.0","id":"req-1","result":{"artifactUpdate":{"taskId":"task-123","contextId":"context-task-123","artifact":{"artifactId":"artifact-task-123","name":"partial-answer","parts":[{"text":"Here is an incremental result chunk."}]}}}} event: status-update data: {"jsonrpc":"2.0","id":"req-1","result":{"statusUpdate":{"taskId":"task-123","contextId":"context-task-123","status":{"state":"TASK_STATE_COMPLETED"}}}} ``` Finality is derived from `TaskStatus.state`, not a separate `final` field. The stream closes automatically on: - Any terminal state (`TASK_STATE_COMPLETED` / `TASK_STATE_FAILED` / `TASK_STATE_CANCELED` / `TASK_STATE_REJECTED`). - `TASK_STATE_INPUT_REQUIRED`: The client must submit more input before the task can proceed. `TASK_STATE_AUTH_REQUIRED` does not close the stream. The agent can resolve auth out of band and continue on the same stream. ### Error Handling for Streaming Flows Wrap stream-processing logic in error handling and always send a terminal status update on failures: ```xml ``` ## Subscribe to an Ongoing Task The **A2A Client - Subscribe To Task** operation (previously known as _Task Resubscribe_) reconnects to a task that is already running on the server and streams its remaining events. It reuses the same `On Task Status Update` and `On Task Artifact Update` route callbacks as the **A2A Client - Send Stream Message** operation. The task can be created by any of the three _SendMessage_ variants: blocking **A2A Client - Send Message**, non-blocking **A2A Client - Send Message** (`returnImmediately=true`), or **A2A Client - Send Stream Message**. All three attach a subscribable event stream at task creation, so a client can subscribe to any non-terminal task regardless of how it was originally submitted. ```xml ``` If the target task is already in a terminal state at subscribe time, the server rejects with `A2A:UNSUPPORTED_OPERATION` ("Cannot subscribe to task in terminal state …​"). Otherwise, the connector replays all previously buffered events for the task to the late subscriber before live event delivery resumes. It replays the current `task` snapshot first, then every `statusUpdate` and `artifactUpdate` published before the subscribe point. Buffering keeps growing as long as the task is still open. After the task reaches a terminal state (`TASK_STATE_COMPLETED`, `TASK_STATE_FAILED`, `TASK_STATE_CANCELED`, or `TASK_STATE_REJECTED`) or `TASK_STATE_INPUT_REQUIRED`, the stream closes and no further events flow through it. `TASK_STATE_AUTH_REQUIRED` does not close the stream. ## Multi-Tenant Configuration A single `(protocol, path)` endpoint can serve multiple logically distinct tenants. Tenant identities are advertised in the agent card, not in the DSL. Each request carries its tenant in one canonical location: - JSON-RPC: Always in `params.tenant` on the request body. - HTTP+JSON POST-with-body operations (`SendMessage`, `SendStreamingMessage`, and `CreateTaskPushNotificationConfig`): In `params.tenant` on the body. - HTTP+JSON GET, DELETE, and POST-custom-method operations: In the `?tenant=` query parameter. Every request is validated against the tenants advertised for the endpoint’s `(protocol, path)`. Unknown tenants are rejected with `A2A:INVALID_PARAMS`. Missing or blank tenants are normalized to the empty string sentinel (`""`) on both transports. Every source (**A2A Server - Task Listener**, **A2A Server - On Async Request Listener**, **A2A Server - On Push Notification Set Listener**, **A2A Server - Task Authorizer Listener**) surfaces `attributes.tenant` for per-tenant branching: ```xml ``` The corresponding agent card advertises the tenants: ```json { "supportedInterfaces": [ { "protocolBinding": "JSONRPC", "url": "https://fqdn.com/stock-summarizer/rpc", "protocolVersion": "1.0", "tenant": "us-east" }, { "protocolBinding": "JSONRPC", "url": "https://fqdn.com/stock-summarizer/rpc", "protocolVersion": "1.0", "tenant": "eu-west" }, { "protocolBinding": "HTTP_JSON", "url": "https://fqdn.com/stock-summarizer/", "protocolVersion": "1.0", "tenant": "us-east" } ] } ``` ## Task Authorization The **A2A Server - Task Authorizer Listener** source (which supersedes the older **A2A Server - Authorization Listener** source) gates every auth-required operation before it executes. It runs on both JSON-RPC and HTTP+JSON. The payload is the A2A operation’s params object (transport-agnostic), and its concrete shape depends on the operation being authorized: - `ListTasks`: The flow receives a JSON array of `{taskId, contextId}` candidates for the current page. It must return the authorized subset (return the same shape with the entries to keep, or an empty array to deny the whole page). This is the only operation that expects a return payload from the flow. - `SendMessage` and `SendStreamingMessage`: Payload is `MessageSendParams` (`{ message: { messageId, role, parts, …​ }, configuration?, metadata? }`). - `GetTask`, `CancelTask`, and `SubscribeToTask`: Payload is `TaskIdParams` (`{ id, metadata? }`). - `CreateTaskPushNotificationConfig`: Payload is `TaskPushNotificationConfig` (`{ taskId, pushNotificationConfig: { url, id?, token?, authentication? }, metadata? }`). - `GetTaskPushNotificationConfig` and `DeleteTaskPushNotificationConfig`: Payload is `GetTaskPushNotificationConfigParams` or `DeleteTaskPushNotificationConfigParams` (`{ id, pushNotificationConfigId, metadata? }`). - `ListTaskPushNotificationConfigs`: Payload is `ListTaskPushNotificationConfigParams` (`{ id, pageSize?, pageToken?, metadata? }`). For every operation except `ListTasks`, successful completion of the flow authorizes the request. Raising an error denies it (mapped to `A2A:UNAUTHORIZED`). The current operation name is exposed on `attributes.operationName` so a single listener flow can multiplex all the payload shapes. ```xml ``` ## Server-Side Batch Read and Metadata ### A2A Server - Get Tasks: Resolve Tasks Referenced by an Incoming Message A server-side operation that fetches a batch of tasks from the task store by ID. The primary use case is resolving `referenceTaskIds` on incoming A2A messages: when a client’s `SendMessage` / `SendStreamingMessage` request carries `params.message.referenceTaskIds: ["taskA", "taskB", …​]`, the agent flow needs the full task objects (status, artifacts, history) to have proper conversational context. Drop the **A2A Server - Get Tasks** operation into the **A2A Server - Task Listener** flow with those IDs to load them in a single call. ```xml ``` `taskIds` is a JSON array of task IDs. `historyLength` caps the number of history entries returned per task (`0` omits history, default `0`). Tasks that cannot be found are not treated as errors. They are reported separately in `nonExistentTaskIds`. The response is a `GetTasksResponse` object with two arrays: ```json { "tasks": [ { "id": "task-a", "contextId": "ctx-a", "status": { "state": "TASK_STATE_COMPLETED" }, "artifacts": [ ... ], "history": [ ... ], "metadata": { ... } } ], "nonExistentTaskIds": [ "task-b" ] } ``` `tasks[]` carries the full `Task` object for every ID that resolved. `nonExistentTaskIds[]` lists the input IDs that could not be resolved because they were not found in the store or failed to load. The server logs the underlying reason. ### A2A Server - Get Tasks By Context: Recover a Conversational Session A server-side operation that fetches every task belonging to a `contextId`, oldest first. A2A 1.0.0 treats a `contextId` as a conversational session that groups multiple task and message objects, so this operation lets an agent flow recover that session in a single call. Unlike the **A2A Client - List Tasks** operation, the full ordered task list is returned rather than paged, and tasks are never truncated. Use **History Length** to bound the message history embedded within each task (default is all history). A blank or unknown `contextId` returns an empty list rather than an error. ```xml ``` The response is an array of the full `Task` objects recorded for the context, oldest first. ### A2A Server - Set Task Metadata: Replace Metadata Full-replace (no merge) of the persisted ``Task’s `metadata`` field. Pass an empty JSON object (`{}`) to clear. Typical use is inside an **A2A Server - Task Listener** flow to stamp workflow-tracking or annotation data on the task as it progresses, so downstream `GetTask` / `ListTasks` reads (and the eventual terminal response materialized for a blocking `SendMessage`) reflect it. Because the operation persists straight to the task store and does not dispatch a `statusUpdate` / `artifactUpdate` event, streaming subscribers do not receive it out-of-band. ```xml ``` Rejected for tasks already in a terminal state (`A2A:INTERNAL_ERROR`). Other errors: `A2A:PARSE_ERROR` (payload not valid JSON), `A2A:TASK_NOT_FOUND` (unknown `taskId`). ## Client-Side List Operations ### A2A Client - List Tasks: List Tasks from the Server The **A2A Client - List Tasks** operation returns the tasks from the target A2A server as a list (`Array of Any`) with a configurable streaming strategy, so it can be iterated from a `` in the flow. ```xml ``` ### A2A Client - List Push Notification Configs: List Configs from the Server Now returns its results as a list (`Array of Any`) with a configurable streaming strategy too: ```xml ``` ### A2A Client - Get Card: Fetch Public or Extended Agent Card The extended agent card is fetched via the **Use Extended Card** boolean parameter on the existing **A2A Client - Get Card** operation: ```xml ``` Agent-card discovery (both connect-time and the **A2A Client - Get Card** operation) is exempt from the default `A2A-Version: 1.0` request header. ## JSON-RPC 2.0 Request and Response Patterns ### Non-Streaming Send (`SendMessage`) ```json { "jsonrpc": "2.0", "id": "req-1001", "method": "SendMessage", "params": { "message": { "messageId": "550e8400-e29b-41d4-a716-446655440000", "role": "ROLE_USER", "parts": [{ "text": "Summarize the latest task status." }] } } } ``` Response, where the `result` object is an A2A `Task`: ```json { "jsonrpc": "2.0", "id": "req-1001", "result": { "id": "task-1001", "contextId": "context-task-1001", "status": { "state": "TASK_STATE_COMPLETED" }, "artifacts": [ { "artifactId": "artifact-task-1001", "name": "answer", "parts": [{ "text": "Task completed successfully." }] } ], "history": [] } } ``` ### Non-Blocking Send (`SendMessage` + `returnImmediately`) ```json { "jsonrpc": "2.0", "id": "req-2001", "method": "SendMessage", "params": { "message": { "messageId": "...", "role": "ROLE_USER", "parts": [{ "text": "Run a long-running analysis." }] }, "configuration": { "returnImmediately": true } } } ``` The response comes back synchronously with an initial `Task` (typically in `TASK_STATE_SUBMITTED` or `TASK_STATE_WORKING`). The server continues compute asynchronously. Follow up with `SubscribeToTask` to stream the remaining events. ### Streaming Send (`SendStreamingMessage`) ```json { "jsonrpc": "2.0", "id": "req-stream-3001", "method": "SendStreamingMessage", "params": { "message": { "messageId": "...", "role": "ROLE_USER", "parts": [{ "text": "Generate a step-by-step answer." }] } } } ``` The response is an SSE stream shaped as in [Streaming with the Unified Task Listener](#configure-streaming-with-unified-task-listener). ### Multi-Tenant Request To target a specific tenant, add `params.tenant`: ```json { "jsonrpc": "2.0", "id": "req-4001", "method": "SendMessage", "params": { "tenant": "us-east", "message": { "messageId": "...", "role": "ROLE_USER", "parts": [{ "text": "..." }] } } } ``` ## HTTP+JSON Request and Response Patterns The HTTP+JSON binding uses one URL per operation. The body carries only the `params` (no JSON-RPC envelope). Base path is `{agentPath}{interface.path}`.
OperationHTTP method + URLBody / query

SendMessage

POST /message:send

Body = MessageSendParams JSON

SendStreamingMessage

POST /message:stream (SSE)

Body = MessageSendParams JSON

GetTask

GET /tasks/{id}

?historyLength=&tenant=

CancelTask

POST /tasks/{id}:cancel

Body = TaskIdParams JSON

SubscribeToTask

POST /tasks/{id}:subscribe (SSE)

No body. ?tenant=

CreateTaskPushNotificationConfig

POST /tasks/{id}/pushNotificationConfigs

Body = TaskPushNotificationConfig JSON

GetTaskPushNotificationConfig

GET /tasks/{id}/pushNotificationConfigs/{configId}

?tenant=

ListTaskPushNotificationConfigs

GET /tasks/{id}/pushNotificationConfigs

?pageSize=&pageToken=&tenant=

DeleteTaskPushNotificationConfig

DELETE /tasks/{id}/pushNotificationConfigs/{configId}

?tenant=

ListTasks

GET /tasks

?pageSize=&pageToken=&tenant=

GetPublicAgentCard

GET /.well-known/agent-card.json

No headers required. Discovery is exempt from the A2A-Version header.

GetExtendedAgentCard

GET /extendedAgentCard

?tenant=

Example `POST /message:send`: ```json { "message": { "messageId": "550e8400-e29b-41d4-a716-446655440000", "role": "ROLE_USER", "parts": [{ "text": "Hello, this is my message" }] } } ``` The response body is a plain A2A `Task` (no JSON-RPC envelope). ## Sample `agent-card.json` for A2A 1.0.0 Use this as a starting point for cards that advertise both JSON-RPC and HTTP+JSON transports, plus streaming, push notifications, and tenants: ```json { "name": "Finance Streaming Agent", "description": "Handles financial analysis tasks with streaming progress updates and push notifications.", "version": "2.0.0", "protocolVersion": "1.0", "provider": { "organization": "Example Org", "url": "https://example.org" }, "supportedInterfaces": [ { "protocolBinding": "JSONRPC", "url": "https://example.org/stock-summarizer/rpc", "protocolVersion": "1.0", "tenant": "" }, { "protocolBinding": "HTTP_JSON", "url": "https://example.org/stock-summarizer/", "protocolVersion": "1.0", "tenant": "" } ], "capabilities": { "streaming": true, "pushNotifications": true, "extendedAgentCard": false }, "skills": [ { "id": "financial-analysis", "name": "Financial Analysis", "description": "Analyzes public company financial performance." } ], "defaultInputModes": ["application/json", "text/plain"], "defaultOutputModes": ["application/json", "text/plain"] } ``` The card is the single source of truth for tenants. To add a tenant, add another entry with the same `(protocolBinding, url)` and a distinct `tenant` value. No DSL rewrite or redeploy is needed for the transport wiring. ## Complete Mule App Example A full example combining a multi-transport server, an initial-task customizer, a unified task listener, push-notification config handling, and a client **A2A Client - List Tasks** call: ```xml #[attributes.taskId] #[attributes.contextId] ``` ## See Also - [A2A Connector Troubleshooting](a2a-connector-troubleshooting) - [A2A Connector Reference](a2a-connector-reference) - [MuleSoft Inference Connector Documentation](../../mulesoft-inference-connector/latest/) - [Introduction to Anypoint Connectors](../../connectors/introduction/introduction-to-anypoint-connectors) - [Salesforce Help](https://help.salesforce.com) --- product: A2A Connector version: 2.0 is-latest-version: true --- # A2A Connector 2.0 Reference > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Connector for Agent2Agent (A2A) (A2A Connector) provides A2A protocol support for LLM agents, enabling your agents to talk to other agents. ## Configurations ### Client The application or AI system that initiates requests and consumes services offered by A2A servers. This allows Mule apps to act as A2A brokers between non A2A “head” agents and A2A “node” agents. #### Parameters
NameTypeDescriptionDefault ValueRequired

Name

String

Name for this configuration. Connectors reference the configuration with this name.

x

Connection

The connection types to provide to this configuration.

x

Name

String

ID used to reference this configuration.

x

Expiration Policy

Configures the minimum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration.

#### Connection Types ##### Http Json Client Connection ###### Parameters
NameTypeDescriptionDefault ValueRequired

Agent Url

String

Base URL for the target A2A agent, used for agent card discovery via /.well-known/agent-card.json.

x

Request Timeout

Number

Sets the duration to wait for server responses before timing out requests.

30

Request Timeout Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit for the Request Timeout field.

SECONDS

Authentication

HttpRequestAuthentication

Authentication method used when sending requests to the target A2A agent.

Default Headers

Object

Default headers.

Tls Context

Configures TLS for secure communication with the target A2A agent.

Reconnection

When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy.

##### Jsonrpc Client Connection ###### Parameters
NameTypeDescriptionDefault ValueRequired

Agent Url

String

Base URL for the target A2A agent, used for agent card discovery via /.well-known/agent-card.json.

x

Request Timeout

Number

Sets the duration to wait for server responses before timing out requests.

30

Request Timeout Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit for the Request Timeout field.

SECONDS

Authentication

HttpRequestAuthentication

Authentication method used when sending requests to the target A2A agent.

Default Headers

Object

Default headers.

Tls Context

Configures TLS for secure communication with the target A2A agent.

Reconnection

When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy.

#### Associated Operations - [A2A Client - Cancel Task](#CancelTask) - [A2A Client - Create Push Notification Config](#CreatePushNotificationConfig) - [A2A Client - Delete Push Notification Config](#DeletePushNotificationConfig) - [A2A Client - Get Card](#GetCard) - [A2A Client - Get Push Notification Config](#GetPushNotificationConfig) - [A2A Client - Get Task](#GetTask) - [A2A Client - List Push Notification Configs](#ListPushNotificationConfigs) - [A2A Client - List Tasks](#ListTasks) - [A2A Client - Send Message](#SendMessage) - [A2A Client - Send Stream Message](#SendStreamMessage) - [A2A Client - Subscribe To Task](#SubscribeToTask) --- ### Server The A2A server acts as a remote agent that exposes an HTTP(S) endpoint and implements the A2A protocol methods for interacting with other AI agents. This allows Mule-based agents to receive and respond to A2A protocol-compliant requests. #### Parameters
NameTypeDescriptionDefault ValueRequired

Name

String

Name for this configuration. Connectors reference the configuration with this name.

x

Connection

The connection types to provide to this configuration.

x

Name

String

ID used to reference this configuration.

x

Expiration Policy

Configures the minimum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration.

Card Json

String

Agent card as a JSON string.

Card Path

String

The absolute path of a JSON file to load the agent card.

Task History Enabled

Boolean

Set to true to enable retrieval of task history. Task history is stored as message objects.

true

Default Max History Length

Number

Maximum number of task history objects to store.

Task Repository Object Store

ObjectStore

Object store used to persist tasks and their history. If not set, the default object store is used.

#### Connection Types ##### Server Connection ###### Parameters
NameTypeDescriptionDefault ValueRequired

Listener Config

String

Reference to the <http:listener-config> used to expose the task listener endpoints.

x

Agent Path

String

Base HTTP path for this agent. The agent card is served at {agentPath}/.well-known/agent-card.json. Each interface’s JSON-RPC or HTTP+JSON routes are registered at the agent path plus that interface’s path.

x

Interfaces

Array of Interface

Interfaces the agent supports.

x

Tls Context Ref

String

Reference to the TLS context used to secure the inbound endpoint.

Reconnection

When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy.

#### Associated Operations - [A2A Server - Get Tasks](#GetTasks) - [A2A Server - Get Tasks By Context](#GetTasksByContext) - [A2A Server - Send Push Notification](#SendPushNotification) - [A2A Server - Set Task Metadata](#SetTaskMetadata) - [A2A Server - Update Task Artifact](#UpdateTaskArtifact) - [A2A Server - Update Task Status](#UpdateTaskStatus) #### Associated Sources - [A2A Server - On Async Request Listener](#OnAsyncRequestListener) - [A2A Server - On Push Notification Set Listener](#PushNotificationConfigListener) - [A2A Server - Task Authorizer Listener](#TaskAuthorizerListener) - [A2A Server - Task Listener](#TaskListener) ## A2A Client - Cancel Task `` Cancels the task specified by its unique identifier. It’s used to stop a previously initiated task. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Task Id

Any

Unique identifier for the task.

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_CANCELABLE - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - Create Push Notification Config `` Creates a push notification configuration for a specified task. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Task Push Notification Config

Any

Associates a push notification configuration with a specific task.

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - Delete Push Notification Config `` Deletes an associated push notification configuration for a task. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Get Push Config Params

Any

Object for fetching the push notification configuration for a task.

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - Get Card `` Gets the agent card. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Use Extended Card

Boolean

When true, fetches the authenticated extended agent card instead of the normal agent card.

false

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:EXTENDED_CARD_UNCONFIGURED - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_CARD - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:UNAUTHORIZED - A2A:UNSUPPORTED_OPERATION - A2A:VERSION_UNSUPPORTED ## A2A Client - Get Push Notification Config `` Retrieves the current push notification configuration for a specified task. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Get Push Config Params

Any

Object for fetching the push notification configuration for a task.

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - Get Task `` Retrieves information about a task based on a provided query. This enables you to fetch the status or details of a task from another agent. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Task Query

Any

Query object identifying the task to retrieve (TaskQueryParams schema).

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - List Push Notification Configs `` Retrieves the associated push notification configurations for a specified task. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

List Push Config Params

Any

Object for listing the push notification configurations for a task.

x

Output Mime Type

String

The MIME type of the payload that this operation outputs.

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Streaming Strategy

Configures whether repeatable streams are used, and their behavior.

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Array of Any

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - List Tasks `` Retrieves a list of tasks from the target agent. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

List Tasks Params

Any

Object for listing tasks from the target agent.

x

Output Mime Type

String

The MIME type of the payload that this operation outputs.

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Streaming Strategy

Configures whether repeatable streams are used, and their behavior.

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Array of Any

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Client - Send Message `` Sends a message. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Message

Any

Message to send.

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:CONTENT_TYPE_UNSUPPORTED - A2A:EXTENSION_SUPPORT_REQUIRED - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:UNSUPPORTED_OPERATION - A2A:VERSION_UNSUPPORTED ## A2A Client - Send Stream Message `` Sends a message to the A2A agent and establishes an SSE streaming connection to receive real-time status updates, artifacts, and error notifications as the agent processes the request. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Stream Message

Any

Message to send (MessageSendParams schema).

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:CONTENT_TYPE_UNSUPPORTED - A2A:EXTENSION_SUPPORT_REQUIRED - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:UNSUPPORTED_OPERATION - A2A:VERSION_UNSUPPORTED ## A2A Client - Subscribe To Task `` Reconnects to an existing SSE streaming session for an ongoing task to receive buffered events and continue receiving real-time updates from where the connection was lost. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Task Id Params

Any

Task ID to resubscribe to (TaskIdParams schema).

x

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Additional Properties

Object

Additional properties to include with the request. Use this field to specify custom key-value pairs that are sent with the A2A connector request. This field is optional and null-safe.

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Client](#Client) ### Throws - A2A:CONNECTIVITY - A2A:CONTENT_TYPE_UNSUPPORTED - A2A:EXTENSION_SUPPORT_REQUIRED - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:UNSUPPORTED_OPERATION - A2A:VERSION_UNSUPPORTED ## A2A Server - Get Tasks `` Retrieves a batch of tasks from the server’s internal task store. Resolved tasks are returned in `tasks`; task IDs that the store doesn’t have are reported in `nonExistentTaskIds`. Genuine failures (such as a corrupt store entry, an ObjectStore IO failure, or an unexpected serialization error) are surfaced as A2A errors rather than reported as nonexistent. This is a blocking operation because each lookup performs synchronous IO against the underlying ObjectStore (often Object Store v2). Lookups run sequentially on the calling thread to avoid uncontrolled fan-out against a remote, rate-limited store. The primary use case is resolving `referenceTaskIds` on incoming A2A messages so the agent flow has the full context of referenced tasks. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Task IDs

Array of String

Task identifiers to retrieve.

#[payload]

History Length

Number

Maximum number of most recent history entries to include per task. 0 (default) omits history; a positive value caps history at that many entries. See A2A spec section 3.2.4.

0

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

### For Configurations - [Server](#Server) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:RETRY_EXHAUSTED ## A2A Server - Get Tasks By Context `` Retrieves every task belonging to a `contextId`, oldest first, from the server’s internal task store. A2A 1.0.0 treats a `contextId` as a conversational session that groups multiple task and message objects, so this operation lets an agent flow recover that session by reading all tasks recorded for the context in a single call. The full ordered task list is returned and isn’t paged, because the underlying object store offers no ranged or cursored read: the per-context index loads as a single entry regardless. Tasks are never truncated, because dropping tasks would give the agent an incomplete conversation. Use the **History Length** field to bound the message history embedded within each task. Lookups are synchronous IO against the underlying object store, resolved sequentially to avoid uncontrolled fan-out against a remote, rate-limited store. Genuine internal failures (such as an object store IO error or corrupt stored task JSON) are logged server-side with full detail and surfaced as a generic A2A:INTERNAL_ERROR. A blank or unknown `contextId` returns an empty task list rather than an error. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Context Id

String

The conversational context whose tasks are retrieved.

x

History Length

Number

Maximum number of most recent history entries to include per task. Defaults to all history, for full context reconstruction.

2147483647

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Target Variable

String

Name of the variable that stores the operation’s output.

Target Value

String

Expression that evaluates the operation’s output. The outcome of the expression is stored in the Target Variable field.

#[payload]

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Array of Any

### For Configurations - [Server](#Server) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:RETRY_EXHAUSTED ## A2A Server - Send Push Notification `` Sends a push notification with the provided streaming event payload. This operation allows sending asynchronous updates at various stages of a task, not just at the end. The body sent to the push URL is the StreamResponse JSON, as specified in A2A spec section 4.3.3. This is a non-blocking operation that uses a completion callback for asynchronous result handling. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Notification Message

Any

JSON for a single streaming event (task, message, status update, or artifact update).

#[payload]

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### For Configurations - [Server](#Server) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:INVALID_AGENT_RESPONSE - A2A:INVALID_PARAMS - A2A:INVALID_REQUEST - A2A:PARSE_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:SERVER_ERROR - A2A:TASK_NOT_FOUND - A2A:UNAUTHORIZED - A2A:VERSION_UNSUPPORTED ## A2A Server - Set Task Metadata `` Fully replaces (does not merge) the task’s metadata. Pass an empty JSON object (`{}`) to clear it. This operation doesn’t dispatch an event; subsequent Get Task or blocking responses return whatever metadata the persisted task carries. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Task Id

String

The ID of the task whose metadata is being replaced.

x

Metadata

Any

The JSON object to persist as task-level metadata. Pass {} to clear existing metadata.

#[payload]

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### For Configurations - [Server](#Server) ### Throws - A2A:CONNECTIVITY - A2A:INTERNAL_ERROR - A2A:PARSE_ERROR - A2A:RETRY_EXHAUSTED - A2A:TASK_NOT_FOUND ## A2A Server - Update Task Artifact `` Updates a task artifact and dispatches the update through the event dispatcher. Artifacts are progress updates and never close responses. An unknown task ID returns A2A:TASK_NOT_FOUND. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Artifact Update Content

Any

TaskArtifactUpdateEvent content following A2A specification.

#[payload]

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### For Configurations - [Server](#Server) ### Throws - A2A:CONNECTIVITY - A2A:CONTENT_TYPE_UNSUPPORTED - A2A:EXTENSION_SUPPORT_REQUIRED - A2A:INTERNAL_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:TASK_NOT_FOUND - A2A:UNSUPPORTED_OPERATION ## A2A Server - Update Task Status `` Updates a task status and dispatches the update through the event dispatcher. Rejects transitions out of terminal states (A2A spec section 3.1.1). An unknown task ID returns A2A:TASK_NOT_FOUND. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Status Update Content

Any

TaskStatusUpdateEvent content following A2A specification.

#[payload]

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Error Mappings

Array of Error Mapping

Set of error mappings.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### For Configurations - [Server](#Server) ### Throws - A2A:CONNECTIVITY - A2A:CONTENT_TYPE_UNSUPPORTED - A2A:EXTENSION_SUPPORT_REQUIRED - A2A:INTERNAL_ERROR - A2A:PUSH_NOTIFICATION_UNSUPPORTED - A2A:RETRY_EXHAUSTED - A2A:TASK_NOT_FOUND - A2A:UNSUPPORTED_OPERATION ## Sources ## A2A Server - On Async Request Listener `` Lets the agent flow customize the initial Task emitted for streaming (Send Stream Message) and non-blocking (Send Message with `returnImmediately=true`) requests. The flow receives MessageSendParams as the payload (with `taskId` and `contextId` as attributes) and must return a Task, which is used to seed initial state, attach artifacts, or gate the request. Returning a terminal or interrupted Task, or raising an error, rejects the request up front. A missing or unparseable Task is a server-side fault: the client sees A2A:INTERNAL_ERROR with a generic message, while the location and parse detail are logged server-side. Push notification configuration is handled by the [A2A Server - On Push Notification Set Listener](#PushNotificationConfigListener) source, not this listener. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Primary Node Only

Boolean

Determines whether to execute this source on only the primary node when running Mule instances in a cluster.

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Redelivery Policy

Defines a policy for processing the redelivery of the same message.

Reconnection Strategy

Retry strategy in case of connectivity errors.

Task

Binary

@Content defaults the value to the flow’s final #[payload], so on-async-request-listener flows can express the initial Task by setting the payload (for example, via an <ee:transform>) without wiring <a2a:initial-task><a2a:task> explicitly. An explicit DSL expression overrides the default.

#[payload]

### Output

Type

Any

Attributes Type

### For Configurations - [Server](#Server) ## A2A Server - On Push Notification Set Listener `` Validates the push notification configuration before routing the request to the **Task Listener** source. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Primary Node Only

Boolean

Determines whether to execute this source on only the primary node when running Mule instances in a cluster.

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Redelivery Policy

Defines a policy for processing the redelivery of the same message.

Reconnection Strategy

Retry strategy in case of connectivity errors.

Additional Headers

Object

Additional HTTP headers to include with each request.

Authentication

HttpRequestAuthentication

Authentication method used when sending push notification requests.

Push notification request timeout

Number

Duration to wait for a push notification request to complete before timing out.

60

Request Timeout Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit for the Push notification request timeout field.

SECONDS

Proxy Config

HttpProxyConfig

Proxy configuration.

### Output

Type

Any

Attributes Type

### For Configurations - [Server](#Server) ## A2A Server - Task Authorizer Listener `` A2A Server task authorizer listener. Gates every auth-required operation before it executes. The flow’s payload shape depends on the operation. For List Tasks, the flow receives a JSON array of candidate `{taskId, contextId}` pairs for the current page and must return a JSON array of the authorized subset (each entry with `taskId` and `contextId`); an empty array denies the entire page. For other auth-required operations (Get Task, Cancel Task, Subscribe To Task, and the push notification config Get, List, and Delete operations), the flow receives the raw JSON-RPC request params as the payload. Successful completion of the flow authorizes the request; the returned payload isn’t inspected. To deny a request, raise an error from the flow, which is mapped to UNAUTHORIZED. The current operation is available on `attributes.operationName`. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Primary Node Only

Boolean

Determines whether to execute this source on only the primary node when running Mule instances in a cluster.

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Redelivery Policy

Defines a policy for processing the redelivery of the same message.

Reconnection Strategy

Retry strategy in case of connectivity errors.

Authorized Tasks

Array of Any

For List Tasks, the authorized subset of tasks the flow returns (each entry with taskId and contextId). An empty array denies the entire page.

### Output

Type

Array of Any

Attributes Type

### For Configurations - [Server](#Server) ## A2A Server - Task Listener `` Allows a Mule application to listen for and receive incoming A2A protocol-compliant requests from other AI agents, enabling the Mule-based agent to act as an A2A server and respond to tasks. ### Parameters
NameTypeDescriptionDefault ValueRequired

Configuration

String

Name of the configuration to use.

x

Primary Node Only

Boolean

Determines whether to execute this source on only the primary node when running Mule instances in a cluster.

Config Ref

ConfigurationProvider

Name of the configuration to use to execute this component.

x

Redelivery Policy

Defines a policy for processing the redelivery of the same message.

Reconnection Strategy

Retry strategy in case of connectivity errors.

### Output

Type

Any

Attributes Type

### For Configurations - [Server](#Server) ## Types ### TLS Configures TLS to provide secure communications for the Mule app.
FieldTypeDescriptionDefault ValueRequired

Enabled Protocols

String

Comma-separated list of protocols enabled for this context.

Enabled Cipher Suites

String

Comma-separated list of cipher suites enabled for this context.

Trust Store

Configures the TLS truststore.

Key Store

Configures the TLS keystore.

Revocation Check

Configures a revocation checking mechanism.

### Truststore Configures the truststore for TLS.
FieldTypeDescriptionDefault ValueRequired

Path

String

Path to the truststore. Mule resolves the path relative to the current classpath and file system.

Password

String

Password used to protect the truststore.

Type

String

Type of store.

Algorithm

String

Encryption algorithm that the truststore uses.

Insecure

Boolean

If true, Mule stops performing certificate validations. Setting this to true can make connections vulnerable to attacks.

### Keystore Configures the keystore for the TLS protocol. The keystore you generate contains a private key and a public certificate.
FieldTypeDescriptionDefault ValueRequired

Path

String

Path to the keystore. Mule resolves the path relative to the current classpath and file system.

Type

String

Type of store.

Alias

String

Alias of the key to use when the keystore contains multiple private keys. By default, Mule uses the first key in the file.

Key Password

String

Password used to protect the private key.

Password

String

Password used to protect the keystore.

Algorithm

String

Encryption algorithm that the keystore uses.

### Standard Revocation Check Configures standard revocation checks for TLS certificates.
FieldTypeDescriptionDefault ValueRequired

Only End Entities

Boolean

Which elements to verify in the certificate chain:

  • true

Verify only the last element in the certificate chain.

  • false

Verify all elements in the certificate chain.

Prefer Crls

Boolean

How to check certificate validity:

  • true

Check the Certification Revocation List (CRL) for certificate validity.

  • false

Use the Online Certificate Status Protocol (OCSP) to check certificate validity.

No Fallback

Boolean

Whether to use the secondary method to check certificate validity:

  • true

Use the method that wasn’t specified in the Prefer Crls field (the secondary method) to check certificate validity.

  • false

Don’t use the secondary method to check certificate validity.

Soft Fail

Boolean

What to do if the revocation server can’t be reached or is busy:

  • true

Avoid verification failure.

  • false

Allow the verification to fail.

### Custom OCSP Responder Configures a custom OCSP responder for certification revocation checks.
FieldTypeDescriptionDefault ValueRequired

Url

String

URL of the OCSP responder.

Cert Alias

String

Alias of the signing certificate for the OCSP response. If specified, the alias must be in the truststore.

### CRL File Specifies the location of the certification revocation list (CRL) file.
FieldTypeDescriptionDefault ValueRequired

Path

String

Path to the CRL file.

### Reconnection Configures a reconnection strategy for an operation.
FieldTypeDescriptionDefault ValueRequired

Fails Deployment

Boolean

When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy.

Reconnection Strategy

Reconnection strategy to use.

### Reconnect Configures a standard reconnection strategy, which specifies how often to reconnect and how many reconnection attempts the connector source or operation can make.
FieldTypeDescriptionDefault ValueRequired

Frequency

Number

How often to attempt to reconnect, in milliseconds.

Blocking

Boolean

If false, the reconnection strategy runs in a separate, non-blocking thread.

true

Count

Number

How many reconnection attempts the Mule app can make.

### Reconnect Forever Configures a forever reconnection strategy by which the connector source or operation attempts to reconnect at a specified frequency for as long as the Mule app runs.
FieldTypeDescriptionDefault ValueRequired

Frequency

Number

How often to attempt to reconnect, in milliseconds.

Blocking

Boolean

If false, the reconnection strategy runs in a separate, non-blocking thread.

true

### Expiration Policy Configures an expiration policy strategy.
FieldTypeDescriptionDefault ValueRequired

Max Idle Time

Number

Configures the maximum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration.

Time Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit for the Max Idle Time field.

### Response Attributes In A2A Connector 1.0 and later, this represents the HTTP response attributes for an A2A request. This type encapsulates HTTP response metadata, including status code, headers, and reason phrase, that are sent as part of an A2A protocol response.
FieldTypeDescriptionDefault ValueRequired

Status Code

Number

HTTP status code of the response.

x

Headers

Object

Map of HTTP headers in the message.

x

Reason Phrase

String

HTTP reason phrase of the response.

### Error Mapping
FieldTypeDescriptionDefault ValueRequired

Source

Enumeration, one of:

  • ANY

  • REDELIVERY_EXHAUSTED

  • TRANSFORMATION

  • EXPRESSION

  • SECURITY

  • CLIENT_SECURITY

  • SERVER_SECURITY

  • ROUTING

  • CONNECTIVITY

  • RETRY_EXHAUSTED

  • TIMEOUT

Type of error to map to the target error type.

Target

String

Custom error type to map the source error to.

x

### Repeatable In Memory Iterable
FieldTypeDescriptionDefault ValueRequired

Initial Buffer Size

Number

Number of instances initially allowed in memory to consume the stream and provide random access to it. If the stream contains more data than the buffer can hold, the buffer expands according to the Buffer Size Increment field, up to the Max Buffer Size limit. The default is 100 instances.

Buffer Size Increment

Number

By how much the buffer size expands if it exceeds its initial size. A value of 0 or lower means the buffer doesn’t expand, and a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised when the buffer is full. The default is 100 instances.

Max Buffer Size

Number

Maximum amount of memory used. If exceeded, a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised. A value of 0 or lower means no limit.

### Repeatable File Store Iterable
FieldTypeDescriptionDefault ValueRequired

In Memory Objects

Number

Maximum number of instances kept in memory. If more are required, the content is buffered on disk.

Buffer Unit

Enumeration, one of:

  • BYTE

  • KB

  • MB

  • GB

Unit in which In Memory Objects is expressed.

### Streaming Response Attributes In A2A Connector 1.0 and later, this represents the HTTP response attributes for A2A streaming operations (SSE). This specialized type extends [Response Attributes](#ResponseAttributes) with streaming-specific metadata, including information about final events received during the SSE session. This final event information is not related to the A2A protocol final event, but the connector’s.
FieldTypeDescriptionDefault ValueRequired

Final Event Found

Boolean

Whether a final event was found during SSE session.

false

Status Code

Number

HTTP status code of the response.

x

Headers

Object

Map of HTTP headers in the message.

x

Reason Phrase

String

HTTP reason phrase of the response.

### Interface One entry under ``: a protocol binding that specifies a transport and a path segment appended to the connection’s agent path for that binding. For example, with agent path `/my-agent` and path `/rpc`, JSON-RPC is exposed at `/my-agent/rpc/`. Use ``.
FieldTypeDescriptionDefault ValueRequired

Protocol

Enumeration, one of:

  • JSONRPC

  • HTTP_JSON

Protocol binding (transport) that the interface uses.

x

Path

String

Path segment appended to the connection’s agent path for this binding.

x

### Request Attributes In A2A Connector 1.0 and later, this represents the HTTP request attributes for an A2A incoming request. This type encapsulates the HTTP request metadata, including query parameters and headers, that are received as part of an A2A protocol request.
FieldTypeDescriptionDefault ValueRequired

Task Id

String

The ID assigned to this task, either provided by the client or auto-generated by the connector.

x

Context Id

String

The context ID assigned to this task, either provided by the client or auto-generated by the connector.

x

Query Params

Object

The query parameters received in the HTTP request.

x

Headers

Object

The HTTP headers received in the request.

x

Version

String

HTTP version of the request. Former http.version.

x

Scheme

String

HTTP scheme of the request. Former http.scheme.

x

Method

String

HTTP method of the request. Former http.method.

x

Local Address

String

Local host address from the server.

x

Remote Address

String

Remote host address from the sender. Former http.remote.address.

x

Operation Name

Enumeration, one of:

  • SendMessage

  • SendStreamingMessage

  • GetTask

  • CancelTask

  • SubscribeToTask

  • CreateTaskPushNotificationConfig

  • GetTaskPushNotificationConfig

  • ListTaskPushNotificationConfigs

  • ListTasks

  • DeleteTaskPushNotificationConfig

The A2A operation being processed (for example, GetTask or ListTasks). Populated by the binding layer so flow authors can distinguish which operation is running without parsing the JSON-RPC method themselves. The enum constants match the A2A spec section 3 wire names.

Tenant

String

Optional tenant routing key from the A2A request. The tenant parameter is used for agent routing per A2A spec section 3.1.2, allowing a single endpoint URL to host multiple agent implementations. For example, /assistant/message:send routes to the "assistant" agent.

Client Certificate

Client certificate (if 2 way TLS is enabled). Former http.client.cert.

### Certificate Data
FieldTypeDescriptionDefault ValueRequired

Basic Constraints

Number

Basic constraints extension value indicating if the certificate can be used to sign other certificates.

Critical Extension OI Ds

Array of String

Object identifiers (OIDs) of critical extensions in the certificate.

Encoded

Binary

The encoded form of the certificate.

Extended Key Usage

Array of String

Extended key usage extension indicating specific purposes for which the certificate public key can be used.

Extensions

Certificate extensions providing additional information about the certificate.

Issuer Alternative Names

Alternative names for the certificate issuer.

Issuer DN

Distinguished name of the certificate issuer.

Issuer Unique ID

Array of Boolean

Unique identifier for the certificate issuer.

Issuer X500 Principal

X.500 principal information for the certificate issuer.

Key Usage

Array of Boolean

Key usage extension indicating the purposes for which the certificate public key can be used.

Name

String

Name associated with the certificate.

Non Critical Extension OI Ds

Array of String

Object identifiers (OIDs) of non-critical extensions in the certificate.

Not After

Date

Expiration date of the certificate.

Not Before

Date

Date from which the certificate is valid.

Public Key

Public key information from the certificate.

Serial Number

Number

Serial number of the certificate.

Serial Number Object

Serial number object containing detailed serial number information.

Sig Alg Name

String

Name of the signature algorithm used to sign the certificate.

Sig Alg OID

String

Object identifier (OID) of the signature algorithm.

Sig Alg Params

Binary

Parameters for the signature algorithm.

Signature

Binary

Digital signature of the certificate.

Subject Alternative Names

Alternative names for the certificate subject.

Subject DN

Distinguished name of the certificate subject.

Subject X500 Principal

X.500 principal information for the certificate subject.

Type

String

Type of the certificate.

Version

Number

Version number of the certificate format.

### Certificate Extension
FieldTypeDescriptionDefault ValueRequired

Criticality

Boolean

Indicates whether the extension is critical. If true, the extension must be processed by the certificate user.

Oid

String

Object identifier (OID) that uniquely identifies the extension type.

Value

Binary

The extension value in its encoded form.

### Alternative Name Data
FieldTypeDescriptionDefault ValueRequired

Name

String

The alternative name value.

Type

Number

The type of alternative name.

### Principal Data
FieldTypeDescriptionDefault ValueRequired

Common Name

String

The common name (CN) component of the distinguished name.

Name

String

The full distinguished name string representation.

### X500 Principal Data
FieldTypeDescriptionDefault ValueRequired

Name

String

The X.500 distinguished name in string format.

### Public Key Data
FieldTypeDescriptionDefault ValueRequired

Algorithm

String

The algorithm used for the public key (for example, RSA, DSA, EC).

Encoded

Binary

The encoded form of the public key.

Modulus

Number

The modulus value for RSA public keys.

Params

Number

Algorithm-specific parameters for the public key.

Public Key

String

The public key value in string representation.

### Serial Number Data
FieldTypeDescriptionDefault ValueRequired

Serial Number

Number

The serial number value of the certificate.

### Redelivery Policy Configures the redelivery policy for executing requests that generate errors. You can add a redelivery policy to any source in a flow.
FieldTypeDescriptionDefault ValueRequired

Max Redelivery Count

Number

Maximum number of times to process a redelivered request unsuccessfully before returning a REDELIVERY_EXHAUSTED error.

Message Digest Algorithm

String

Secure hashing algorithm to use if the Use Secure Hash field is true. If the payload of the message is a Java object, Mule ignores this value and returns the value that the payload’s hashCode() returned.

Message Identifier

One or more expressions that determine if a message was redelivered. This property can be set only if the Use Secure Hash field is false.

Object Store

ObjectStore

Configures the object store that stores the redelivery counter for each message.

### Redelivery Policy Message Identifier Configures how to identify a redelivered message and how to find out when the message was redelivered.
FieldTypeDescriptionDefault ValueRequired

Use Secure Hash

Boolean

If true, Mule uses a secure hash algorithm to identify a redelivered message.

Id Expression

String

One or more expressions that determine when a message was redelivered. You can set this property only if the Use Secure Hash field is false.

## See Also - [Using Anypoint Code Builder to Configure a Connector](../../connectors/introduction/intro-config-use-acb) - [Using Studio to Configure a Connector](../../connectors/introduction/intro-config-use-studio) - [A2A Connector Overview](./) - [Salesforce Help](https://help.salesforce.com) --- product: A2A Connector version: 2.0 is-latest-version: true --- # Using Anypoint Studio to Configure A2A Connector 2.0 > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Studio (Studio) editors help you design and update your Mule applications, properties, and configuration files. To add and configure a connector in Studio: 1. [Create a Mule project](#create-mule-project). 2. [Add the connector to your Mule project](#add-connector-to-project). 3. [Configure a source for the connector’s flow](#configure-source). 4. [Add a connector operation to the flow](#add-connector-operation). 5. [Configure a global element for the connector](#configure-global-element). 6. [Configure the other connector fields](#configure-other-fields). When you run the connector, you can view the app log to check for problems in real time, as described in [View the App Log](#view-app-log). If you are new to configuring connectors in Studio, see [Using Anypoint Studio to Configure a Connector](../../connectors/introduction/intro-config-use-studio). If, after reading this topic, you need additional information about the connector fields, see the [A2A Connector Reference](a2a-connector-reference). ## Create a Mule Project In Studio, create a new Mule project in which to add and configure Anypoint Connector for A2A (A2A Connector): 1. In Studio, select **File > New > Mule Project**. 2. Enter a name for your Mule project and click **Finish**. ## Add the Connector to Your Mule Project Add A2A Connector to your Mule project to automatically populate the XML code with the connector’s namespace and schema location and add the required dependencies to the project’s `pom.xml` file: 1. In **Mule Palette**, click **(X) Search in Exchange**. 2. In **Add Dependencies to Project**, type `a2a` in the search field. 3. Click **A2A Connector** in **Available modules**. 4. Click **Add**. 5. Click **Finish**. Adding a connector to a Mule project in Studio does not make that connector available to other projects in your Studio workspace. ## Configure a Source A source initiates a flow when a specified condition is met. You can configure connector-specific sources, or other sources to use with A2A Connector, such as: - **HTTP > Listener** Initiates a flow each time it receives a request on the configured host and port - **Scheduler** Initiates a flow when a time-based condition is met For example, to configure an **HTTP > Listener** source, follow these steps: 1. In **Mule Palette**, select **HTTP > Listener**. 2. Drag **Listener** to the Studio canvas. 3. On the **Listener** configuration screen, optionally change the value of the **Display Name** field. 4. Specify a value for the **Path** field. 5. Click the plus sign (**+**) next to the **Connector configuration** field to configure a global element that can be used by all instances of the **HTTP > Listener** source in the app. 6. On the **General** tab, specify the connection information for the connector. 7. On the **TLS** tab, optionally specify the TLS information for the connector. 8. On the **Advanced** tab, optionally specify reconnection information, including a reconnection strategy. 9. Click **Test Connection** to confirm that Mule can connect with the specified server. 10. Click **OK**. ## Add a Connector Operation to the Flow When you add a connector operation to your flow, you are specifying an action for that connector to perform. To add an operation for A2A Connector, follow these steps: 1. In **Mule Palette**, select **A2A** and then select the desired operation. 2. Drag the operation onto the Studio canvas, next to the source. ## Configure a Global Element for the Connector When you configure a connector, configure a global element that all instances of that connector in the app can use. Configuring a global element requires you to provide the authentication credentials that the connector requires to access the target A2A system. You can reference a configuration file that contains ANT-style property placeholders (recommended), or you can enter your authorization credentials in the global configuration properties. For information about the benefits of using property placeholders and how to configure them, see [Anypoint Connector Configuration](../../connectors/introduction/intro-connector-configuration-overview). To configure the global element for A2A Connector, follow these steps: 1. Select the operation in the Studio canvas. 2. On the properties screen for the operation, click the Add (**+**) icon to access the global element configuration fields. 3. In the **General** tab, in **Connection**, select the authentication method to configure: - [Expression or Bean Reference](#expression-or-bean-ref) - [Basic Authentication](#basic_authentication) - [Digest](#digest) - [NTLM](#ntlm) 4. On the **TLS** tab, optionally specify the TLS information for the connector. 5. On the **Advanced** tab, optionally specify reconnection information, including a reconnection strategy. 6. Click **Test Connection** to confirm that Mule can connect with the specified server. 7. Click **OK**. ### Expression or Bean Reference Uses a DataWeave expression or bean reference to define authentication. Enter the authentication information in the **Global Element Properties** screen: 1. Select **General > Authentication > Expression or Bean reference** and enter the DataWeave expression. 2. Click **OK**. ### Basic Authentication Basic authentication is a simple (less secure) authentication scheme where the client sends the username and password in plain text (encoded in Base64) in the HTTP Authorization header. Enter the Basic authentication information in the **Global Element Properties** screen: 1. Select **General > Authentication > Basic authentication** and enter or set the values for these fields:
FieldUser Action

Username

Username used to initialize the session.

Password

Password used to authenticate the user.

Preemptive

If set to true, the client sends its authentication credentials (username and password) with the initial HTTP request to the server, rather than waiting for the server to challenge (401 Unauthorized) the client.

2. Click **OK**. ### Digest Digest is an HTTP authentication scheme that uses a challenge-response mechanism to avoid sending passwords in plain text. Enter the Digest authentication information in the **Global Element Properties** screen: 1. Select **General > Authentication > Digest authentication** and enter or set the values for these fields:
FieldUser Action

Username

Username used to initialize the session.

Password

Password used to authenticate the user.

Preemptive

If set to true, the client sends its authentication credentials (username and password) with the initial HTTP request to the server, rather than waiting for the server to challenge (401 Unauthorized) the client.

2. Click **OK**. ### NTLM NTLM authentication is a Microsoft authentication protocol used primarily in Windows environments. It uses a challenge-response mechanism and is commonly used for network authentication. Enter the NTLM authentication information in the **Global Element Properties** screen: 1. Select **General > Authentication > Ntlm authentication** and enter or set the values for these fields:
FieldUser Action

Domain

Name of the proxy domain.

Workstation

Name of the proxy workstation.

Username

Username used to initialize the session.

Password

Password used to authenticate the user.

Preemptive

If set to true, the client sends its authentication credentials (username and password) with the initial HTTP request to the server, rather than waiting for the server to challenge (401 Unauthorized) the client.

2. Click **OK**. ## Configure Additional Connector Fields After you configure a global element for A2A Connector, configure the other required fields for the connector. The required fields vary depending on which connector operation you use. ## View the Application Log To check for problems, you can view the app log as follows: - If you’re running the app from Anypoint Platform, the app log output is visible on the Anypoint Studio console window. - If you’re running the app using Mule from the command line, the app log output is visible in your operating system console. Unless the log file path is customized in the app’s log file (`log4j2.xml`), you can also view the app log in the default location `MULE_HOME/logs/.log`. You can configure the location of the log path in the app log file `log4j2.xml`. ## See Also - [Introduction to Anypoint Connectors](../../connectors/introduction/introduction-to-anypoint-connectors) - [Using Studio to Configure a Connector](../../connectors/introduction/intro-config-use-studio) - [A2A Connector Reference](a2a-connector-reference) - [Salesforce Help](https://help.salesforce.com) --- product: A2A Connector version: 2.0 is-latest-version: true --- # A2A Connector 2.0 Troubleshooting > For the full documentation index, see: https://docs.mulesoft.com/llms.txt To troubleshoot Anypoint Connector for A2A (A2A Connector), become familiar with the information about performing general troubleshooting, addressing specific common errors, and interpreting commonly thrown exception messages. ## Error Unmarshalling String JSON Payload into Type io.a2a.spec.Task. Cause: Argument "content" is Null Likely cause: - The payload maps to a task or message schema that expects a non-null text content field, but received `null`. Resolution checklist: - Ensure every text part includes a non-empty `text` value. - Avoid sending `content: null` or equivalent nullable fields in message or task parts. - Validate outbound JSON in Studio using connector metadata types before sending. - Confirm your DataWeave transformation outputs JSON objects, not quoted JSON strings. ## Failed to Establish SSE Connection Likely causes: - Request is sent as a non-streaming `SendMessage` instead of `SendStreamingMessage` (JSON-RPC), or to `POST /message:send` instead of `POST /message:stream` (HTTP+JSON). - The server app doesn’t include an active **A2A Server - Task Listener** flow. - The agent card does not advertise `capabilities.streaming: true`. - Reverse proxy or gateway strips `text/event-stream` semantics or closes long-lived HTTP connections. Resolution checklist: - Verify the method is `SendStreamingMessage` (JSON-RPC) or the request targets `POST /message:stream` (HTTP+JSON). - Verify the server flow includes an **A2A Server - Task Listener**. The unified task listener serves streaming requests. There is no separate **A2A Server - On Task Stream Listener** in 2.0. - Confirm the agent card advertises `capabilities.streaming: true`. - Confirm HTTP 200 response with `Content-Type: text/event-stream`. - Check timeout and keepalive settings in intermediary proxies and load balancers. ## A2A Server Config Errors Despite Correct Configuration Likely causes: - Invalid **Agent Path** to listener route binding. - Card file path not found at runtime. - Agent card JSON is malformed or missing capability metadata expected by clients. Resolution checklist: - Use `${app.home}/agent-card.json` when deploying to CloudHub. - Validate card JSON syntax and required top-level fields. - Confirm `` references a valid `http:listener-config`. - Check app startup logs for binding or card parsing errors before runtime requests. ## See Also - [A2A Connector Examples](a2a-connector-examples) - [A2A Connector Reference](a2a-connector-reference) - [Salesforce Help](https://help.salesforce.com) - [Known Issues](https://help.salesforce.com/s/issues) --- product: A2A Connector version: 2.0 is-latest-version: true --- # Upgrading and Migrating A2A Connector to Version 2.x > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Upgrade Anypoint Connector for Agent2Agent (A2A) (A2A Connector) to version 2.x. ## Supported Upgrade Paths
From VersionTo Version

1.x

2.x

## Changes in 2.0 A2A Connector 2.0 uplifts the connector from A2A protocol 0.3.0 to A2A protocol 1.0.0. This is a breaking change: wire method names, transport configuration, client and listener elements, and the error palette all change. Review the changes below and update your apps before upgrading. ### Protocol and Transports - A2A Connector now uses A2A protocol 1.0.0 instead of 0.3.0. Wire JSON-RPC method names change from slash-form to PascalCase. For example, `message/send` becomes `SendMessage`, `message/stream` becomes `SendStreamingMessage`, `tasks/get` becomes `GetTask`, `tasks/cancel` becomes `CancelTask`, and `tasks/resubscribe` becomes `SubscribeToTask`. Clients written against 0.3.0 must update their method strings. - An A2A Server can expose the same agent over both the JSON-RPC and the new HTTP+JSON transport bindings on a single connection (gRPC is out of scope for this release). - You can now send a non-blocking `SendMessage` request by setting `returnImmediately` to `true` in the request configuration. The A2A Server acknowledges the request with the initial `Task` and continues processing asynchronously, and the **A2A Server - On Async Request Listener** source authors that initial response. - At most one active `SendMessage` request (blocking, non-blocking, or streaming) can run against a given `taskId` at a time. A duplicate concurrent submission is rejected with `A2A:INVALID_REQUEST` ("Another SendMessage is already in flight for taskId {id}; retry once it completes."), which preserves the ordering of a task’s message history under concurrency. - Tasks in a terminal state (`TASK_STATE_COMPLETED`, `TASK_STATE_FAILED`, `TASK_STATE_CANCELED`, or `TASK_STATE_REJECTED`) are immutable. A `SendMessage` or `SendStreamingMessage` request against a terminal task is rejected with `A2A:UNSUPPORTED_OPERATION` ("Task has reached terminal state."). - Task states now use the `TASK_STATE_*` constants (for example, `TASK_STATE_WORKING`, `TASK_STATE_COMPLETED`) instead of the lowercase 0.3.0 states. - Streaming events use the A2A `StreamResponse` envelope shape with a single root key (`task`, `statusUpdate`, or `artifactUpdate`). There is no explicit `final` boolean. Finality is derived from `TaskStatus.state`. ### Server Configuration - New required `` block on ``. One or more `` entries select the **Protocol** (`JSONRPC` or `HTTP_JSON`) and the **Path** segment appended to **Agent Path**. This is what enables multi-transport agents on a single connection. - **Agent Path** on `` is now the base HTTP path for both the agent card (served at `{agentPath}/.well-known/agent-card.json`) and every configured interface (`{agentPath}{interface.path}`), rather than a single fixed agent endpoint. - Startup validates a bijection between the configured `` entries and `agentCard.supportedInterfaces`. Mismatched `(protocol, path)` pairs fail initialization instead of surfacing as runtime 404s. - Multi-tenant support: A single connection can serve multiple tenants at the same `{agentPath}{interface.path}` surface. Each request’s tenant (the `params.tenant` field on the request body, or `?tenant=` on GET/DELETE) is validated against `agentCard.supportedInterfaces[].tenant` and surfaced to flows as `attributes.tenant`. ### Client Configuration - The **Client Connection** provider is replaced by two transport-specific connection providers, **Jsonrpc Client Connection** and **Http Json Client Connection**, chosen via the **Connection** dropdown in Studio. The transport must match one of the entries in the target `agentCard.supportedInterfaces`. - The **Server Url** connection parameter is renamed to **Agent Url**, the base URL of the target A2A agent that the connector discovers via `{agentUrl}/.well-known/agent-card.json`. - Every outbound request now sends `A2A-Version: 1.0` as a default header unless you override it via ``. If overridden, the value is validated to be a `1.x` version. Agent-card discovery (both connect-time and the **A2A Client - Get Card** operation) is exempt from this header. ### Sources - The **A2A Server - Task Listener** source is now a unified listener. The same flow serves blocking `SendMessage`, non-blocking `SendMessage` (`returnImmediately=true`), and `SendStreamingMessage` over both JSON-RPC and HTTP+JSON, with no DSL change to distinguish the modes. The standalone **A2A Server - On Task Stream Listener** source is removed. - The new **A2A Server - On Async Request Listener** source lets the flow customize the initial `Task` response emitted for streaming and non-blocking `SendMessage` requests. The flow receives the incoming `MessageSendParams` as payload and must return a `Task` (or raise an error to reject the request, or return a terminal or interrupted-state `Task` to short-circuit and skip the **A2A Server - Task Listener** flow entirely). - The **A2A Server - Authorization Listener** source is replaced by the **A2A Server - Task Authorizer Listener** source, which uses a per-operation authorization contract and exposes the current operation name on `attributes.operationName`. - The **A2A Server - On Push Notification Set Listener** source output payload is now the resolved `TaskPushNotificationConfig` JSON rather than the raw request params. - SSE streams now close on terminal states (`TASK_STATE_COMPLETED`, `TASK_STATE_FAILED`, `TASK_STATE_CANCELED`, `TASK_STATE_REJECTED`) and on the interrupted state `TASK_STATE_INPUT_REQUIRED`. `TASK_STATE_AUTH_REQUIRED` does not close the stream. ### Operations - The new **A2A Client - List Tasks** operation is a client operation that returns the tasks from the target A2A server as a list (`Array of Any`) with a configurable streaming strategy, consumable from ``. - The new **A2A Server - Get Tasks** operation is a server-side batch read of stored tasks by ID. The flow supplies a **Task IDs** list and an optional **History Length** per task. - The new **A2A Server - Get Tasks By Context** operation is a server-side read of every stored task that belongs to a **Context Id**, returned oldest first. The flow supplies a **Context Id** and an optional **History Length** per task. - The new **A2A Server - Set Task Metadata** operation is a full-replace (no merge) of the persisted ``Task’s `metadata`` field. Pass `{}` to clear. It’s rejected for tasks in a terminal state. - The **Task Resubscribe** operation is renamed to **A2A Client - Subscribe To Task**. - The **A2A Client - Set Push Notification Config** operation is renamed to **A2A Client - Create Push Notification Config** (``). - The extended agent card is now fetched via a new **Use Extended Card** boolean parameter on the existing **A2A Client - Get Card** operation (defaults to `false`). No separate operation was added. - The **A2A Client - List Push Notification Configs** operation now returns its results as a list (`Array of Any`) with a configurable streaming strategy, also consumable from ``. - The **A2A Server - Send Push Notification** operation now accepts a full `StreamingMessageResponse` payload (Task, Message, `TaskStatusUpdateEvent`, or `TaskArtifactUpdateEvent`). - The **A2A Server - Update Task Status** and **A2A Server - Update Task Artifact** operations are uplifted to the A2A 1.0.0 event schemas, and each now declares only the concrete error types it raises. ### Errors - Added: `A2A:CONTENT_TYPE_UNSUPPORTED`, `A2A:INVALID_AGENT_RESPONSE`, `A2A:EXTENDED_CARD_UNCONFIGURED`, `A2A:EXTENSION_SUPPORT_REQUIRED`, and `A2A:VERSION_UNSUPPORTED`. - Updated: The `A2A:UNAUTHORIZED` JSON-RPC code moved from `-32005` to `-32099` (`-32005` is now the code for `CONTENT_TYPE_UNSUPPORTED`). Every error type now also carries a `google.rpc.ErrorInfo` reason string. - Dropped: `A2A:JSON_RPC_ERROR` (the umbrella parent type), `A2A:METHOD_NOT_FOUND`, and `A2A:REQUEST_TIMEOUT`. Each operation now declares only the concrete error types it actually raises, so verify your error handling after upgrading. ## Requirements Ensure your system meets the following compatibility requirements before you perform the upgrade:
SoftwareVersion

Mule

4.9.8 and later

OpenJDK

17

A2A protocol

1.0.0

A2A Connector requires Mule Maven Plugin 4.6.0 or later to support Server-Sent Events (SSE) for streaming operations. See [A2A Connector XML and Maven Support](a2a-connector-xml-maven). ## Upgrade Prerequisites Before you perform the upgrade, create a backup of your files, data, and configuration in case you need to restore to the previous version. Because 2.0 is a breaking change, plan to update your Mule apps for the following before or immediately after upgrading: - Add the required ``/`` block and ensure **Agent Path** is set on every ``, and that your agent card’s `supportedInterfaces` matches it exactly. - Replace the **Client Connection** provider with **Jsonrpc Client Connection** or **Http Json Client Connection**, and rename **Server Url** to **Agent Url**. - Replace any **A2A Server - On Task Stream Listener** source with the unified **A2A Server - Task Listener** source. - Replace the **A2A Server - Authorization Listener** source with the **A2A Server - Task Authorizer Listener** source. - Update client method strings and event payloads to A2A 1.0.0 (PascalCase methods, `TASK_STATE_*` states, `StreamResponse` envelopes). - Update error handling for the added, renamed, and dropped `A2A:` error types. ## Upgrade Steps Follow these steps to perform the upgrade to version 2.x: 1. In Anypoint Studio, create a Mule project. 2. In the **Mule Palette** view, click **Search in Exchange**. 3. In **Add Dependencies to Project**, enter `a2a` in the search field. 4. In **Available modules**, select **A2A Connector** and click **Add**. 5. Click **Finish**. 6. Verify that the A2A Connector dependency version is 2.x in the `pom.xml` file in the Mule project. Studio upgrades the connector automatically. ## Post-Upgrade Steps After you install the latest version of the connector, verify that your app reflects the breaking changes listed in [Upgrade Prerequisites](#upgrade-prerequisites): transport configuration, client connection elements, unified task listener, authorizer listener, protocol 1.0.0 method names and payloads, and the updated error palette. ## Verify the Upgrade After you install the latest version of the connector, follow these steps to verify the upgrade: 1. In Studio, verify that there are no errors in the **Problems** or **Console** views. 2. Verify that there are no problems in the project `pom.xml` file. 3. Confirm the app starts without an interface/agent-card bijection error. 4. Test the connection to verify that the operations work. ## Revert the Upgrade If it is necessary to revert to the previous version of A2A Connector, change the A2A Connector dependency version in the project’s `pom.xml` file to the previous version. You must update the project’s `pom.xml` file in Anypoint Studio. ## See Also - [A2A Connector Reference](a2a-connector-reference) - [A2A Connector Examples](a2a-connector-examples) - [Introduction to Anypoint Connectors](../../connectors/introduction/introduction-to-anypoint-connectors) - [Salesforce Help](https://help.salesforce.com) --- product: A2A Connector version: 2.0 is-latest-version: true --- # A2A Connector 2.0 XML and Maven Support > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Although you can manually code a Mule app in XML, it is more efficient to use Anypoint Code Builder or Studio: - If you manually code a Mule runtime engine (Mule) app in XML, either from the Anypoint Code Builder or Studio XML editor, or from a text editor, you can access the connector from your app by adding reference statements to both your XML Mule flow and the Apache Maven `pom.xml` file. - If you add the connector in Anypoint Code Builder or Studio, the XML is automatically populated the code with the connector’s namespace and schema location and it also adds a dependency to the `pom.xml` file. ## Add a Namespace for the Connector Paste the following code inside the `mule` tag of the header of your configuration XML: ```xml http://www.mulesoft.org/schema/mule/a2a http://www.mulesoft.org/schema/mule/a2a/current/mule-a2a.xsd ``` This example shows how the namespace statements are placed in the `` XML block: ```xml ``` ## Add a POM File Dependency The Apache Maven `pom.xml` file generated by Anypoint Studio contains dependencies for a Mule app. If you code a Mule app manually, include this XML snippet in your `pom.xml` file to enable access to this connector: ```xml com.mulesoft.connectors mule4-a2a-connector x.x.x mule-plugin ``` Replace `x.x.x` with the version that corresponds to the connector you are using. To obtain the most up-to-date `pom.xml` file information: 1. Go to [Anypoint Exchange](https://www.mulesoft.com/exchange/). 2. In Exchange, click **Login** and supply your Anypoint Platform username and password. 3. In Exchange, search for `a2a`. 4. Select the connector. 5. Click **Dependency Snippets** near the upper right of the screen. ## Update Maven Plugin Version A2A Connector requires Mule Maven Plugin 4.6.0 or later to support Server-Sent Events (SSE) for streaming operations. Update your project’s `pom.xml` file to include this version: ```xml 4.9.8 4.6.0 ``` Without this update, you might encounter classloading errors related to `org.mule.runtime.http.api.sse.server.SseClient` when deploying applications that use streaming features. ## Next Step After completing your namespace and pom.xml file, you can try the [Examples](a2a-connector-examples). ## See Also - [Introduction to Anypoint Connectors](../../connectors/introduction/introduction-to-anypoint-connectors) - [Salesforce Help](https://help.salesforce.com) --- product: A2A Connector version: 2.0 is-latest-version: true --- # A2A Connector 2.0 > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Connector for Agent2Agent (A2A) (A2A Connector) facilitates inter-agent communication for Large Language Model (LLM) agents and other applications by implementing the A2A protocol. This enables agents to interact and delegate specialized tasks to other agents. The A2A protocol is an open standard that supports: - Capability discovery Identifies the functions and services offered by agents. - Interaction negotiation Establishes communication methods between agents. - Secure information exchange Transmits data between agent systems without requiring direct internal access. A2A Connector provides Mule app integration that functions as both A2A servers and A2A clients. For information about compatibility and fixed issues, see the A2A Connector Release Notes. ## Before You Begin To use this connector, you must be familiar with: - Anypoint Connectors - Mule runtime engine (Mule) - Elements and global elements in a Mule flow - How to create a Mule app using Anypoint Code Builder or Anypoint Studio Before creating an app, you must have: - Java 17 - Apache Maven - Anypoint Platform - Credentials to connect with the target resource - The latest versions of Anypoint Code Builder or Anypoint Studio ## Common Use Cases for the Connector Build specialized domain specific agents each for Customer Service, Sales, or Marketing and have other agents interact with these agents using the A2A protocol. A2A Connector also provides distributed tracing support, enabling comprehensive monitoring and observability of A2A interactions across distributed systems. ## Connection Types A2A Connector supports these connection types: - A2A server - A2A client ## Next Step After you complete the prerequisites, you’re ready to create an app and configure the connector using [Anypoint Studio](a2a-connector-studio) or [Anypoint Code Builder](a2a-connector-acb). ## See Also - [Anypoint Connectors Overview](../../connectors/introduction/introduction-to-anypoint-connectors) - [Using Anypoint Code Builder to Configure a Connector](../../connectors/introduction/intro-config-use-acb) - [Using Anypoint Studio to Configure a Connector](../../connectors/introduction/intro-config-use-studio) - [A2A Connector Reference](a2a-connector-reference) - [Salesforce Help](https://help.salesforce.com)