Skip to main content
MemoryLake implements the A2A (Agent-to-Agent) protocol by Google. If you are already familiar with A2A, you can use any A2A-compatible client to interact with MemoryLake agents. Refer to the A2A specification for the standard request and response schemas. Official SDKs are available at github.com/a2aproject.
Permission required: workspace:a2a

Base URL

Append standard A2A paths directly — for example POST {baseUrl}/message:send or GET {baseUrl}/tasks/{taskId}.

Protocol Versions

MemoryLake exposes two parallel sets of A2A routes, one per protocol version, and each version is reachable over two transports: REST and JSON-RPC 2.0.
The /v1/ path prefix refers to the older A2A v0.3 wire format, not to protocol version 1.0. The un-prefixed routes implement the current A2A v1.0 format. Make sure the request body shape matches the route you call — a v0.3-style REST body (message.content) is rejected by the v1.0 REST routes, and vice versa.
Over JSON-RPC, both versions post to the bare {baseUrl} and pick the operation with method: v1.0 uses SendMessage, SendStreamingMessage, GetTask, CancelTask, SubscribeToTask; v0.3 uses message/send, message/stream, tasks/get, tasks/cancel, tasks/resubscribe. The protocol version is negotiated from the method name, and v1.0 clients should also send A2A-Version: 1.0. All four route families accept the same configuration object and the same MemoryLake extension described below:

MemoryLake Extension

MemoryLake extends the standard A2A protocol through the metadata.memorylake namespace. Pass this object in the request metadata of message:send or message:stream to control how the agent interacts with MemoryLake’s memory layer. This is the key difference from a vanilla A2A server — these fields connect the agent to workspaces, projects, and actors in MemoryLake.
object
required
MemoryLake-specific configuration. Without this, the agent runs without any memory context.

Examples

Sending a message spans three independent choices — protocol version (v1.0 / v0.3) × method (send / stream) × transport (REST / JSON-RPC) — so there are eight valid combinations. All eight are shown below. Paths below are relative to the base URL; JSON-RPC always posts to the bare base URL and selects the operation with method. In the Headers column, SSE means Accept: text/event-stream and v1.0 means A2A-Version: 1.0. All eight take the same configuration object and the same metadata.memorylake extension. The four streaming variants respond with text/event-stream; the four send variants respond with a single JSON body.
Watch the three shape differences between versions and transports: v1.0 uses parts with role: "ROLE_USER"; v0.3 REST uses content with role: "ROLE_USER"; v0.3 JSON-RPC uses parts where every part carries a kind discriminator, with role: "user" in lowercase.

REST transport

JSON-RPC transport

Both versions share the same path — POST {baseUrl} with no suffix. The version comes from the method name; v1.0 clients should also send A2A-Version: 1.0.