Agent-to-Agent (A2A) Protocol
Experimental Feature
This is an experimental feature. It is in active development and may be significantly changed or removed.
GoodData Cloud exposes an A2A protocol endpoint that allows external AI agents to interact with the GoodData AI Assistant. Through this endpoint, third-party agents can discover available analytics skills, send natural-language requests, and receive structured responses including visualizations, key driver analyses, and what-if scenarios.
Prerequisites
- Enable the A2A Protocol for the workspace.
- Configure an active LLM endpoint for the target workspace.
- By default, our Agent has the Visualization skill. Reach out to our Support team if you want to try out more experimental skills or would like to opt in to data sharing with LLMs.
Connecting to the A2A Server
The Agent Card URL for a given workspace is:
/api/v1/ai/workspaces/{workspace_id}/a2a
Use this URL with any A2A-compatible client (e.g., the official Python or TypeScript A2A SDK). The client will retrieve the Agent Card and automatically derive all further interaction details from it, including the JSON-RPC endpoint, supported input/output modes, and available skills.
Authentication
The A2A endpoint uses the same authentication as any other GoodData REST API. You can authenticate using:
The connection to the A2A endpoint is always made on behalf of a specific user. The agent operates with the same data and metadata permissions as that user. It can only access the workspaces, datasets, and objects that the authenticated user is allowed to see.
Limitations
The current implementation covers the core A2A request-response flow but does not yet support the full A2A protocol specification. The following limitations apply:
- Task cancellation — The
cancelmethod is defined, but is a no-op. The agent processes requests synchronously and completes within a single exchange, so there is no long-running task to cancel. - Task resubscription — Reconnecting to an in-progress or completed task to receive its events again is not supported.
- Task pause and resume — There is no ability to pause a running task and resume it later.
- Task retrieval — Retrieving the list of previously completed tasks is not supported.