# A2A for agents

Source: https://docs.littlebigbrain.com/sdks/a2a/

The hosted [A2A](https://a2a-protocol.org/latest/specification/) interface lets
an agent ask a question against a Little Big Brain graph and receive an answer
as a text message. It uses A2A 1.0 over JSON-RPC 2.0.

## Check discovery

Fetch the [Agent Card](https://littlebigbrain.com/.well-known/agent-card.json)
to find the interface and its requirements. The card comes from the hosted
service: publishing this documentation or the website does not itself deploy
the service. A non-200 response means the card is unavailable; try again later.
A card response does not establish that your account has access or that Ask is
healthy. The service must be deployed separately before it can be used.

## Authenticate and choose an environment

Obtain an organization-scoped WorkOS OAuth access token for the resource
`https://mcp.littlebigbrain.com`, following the
[protected-resource metadata](https://mcp.littlebigbrain.com/.well-known/oauth-protected-resource)
and [agent authentication instructions](https://littlebigbrain.com/auth.md).
For a registered agent identity, the client must have the trusted `mcp:access`
permission. Your organization must own the environment and have subscription access.

The card's interface URL is `https://mcp.littlebigbrain.com/a2a`. Send the
existing environment slug in `X-LBB-Stack`; no environment is selected automatically.
Alternatively, use `https://mcp.littlebigbrain.com/a2a/<environment-slug>`. The
server checks ownership for the authenticated organization. Add `?graph=<name>`
to select a graph, or omit it to use the hosted service's default graph.

## Send a question

Set `LBB_OAUTH_TOKEN` and `LBB_STACK_SLUG` in your environment and choose a
unique message ID for each request:

```sh
curl -sS 'https://mcp.littlebigbrain.com/a2a' \
  -H "Authorization: Bearer $LBB_OAUTH_TOKEN" \
  -H "X-LBB-Stack: $LBB_STACK_SLUG" \
  -H 'A2A-Version: 1.0' \
  -H 'Content-Type: application/json' \
  --data '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "SendMessage",
    "params": {
      "message": {
        "messageId": "example-message-1",
        "role": "ROLE_USER",
        "parts": [{"text": "Which services exist?"}]
      }
    }
  }'
```

A successful response has `result.message`, with `role: "ROLE_AGENT"` and a
text part containing the answer and any citations returned by Ask. If Ask
cannot answer, the message says so. The request can contain up to eight text
parts, joined with newlines, and the question is limited to 4,000 Unicode
characters. Ask uses the environment's configured models and can consume model tokens.

This interface handles one question per call. A supplied `contextId` is echoed
for correlation; it does not restore a conversation. No tasks are retained:
`GetTask` and `CancelTask` return `TaskNotFound`, and `ListTasks` returns an
empty result. Streaming, push notifications and extended Agent Cards are not supported. Use
[MCP](https://docs.littlebigbrain.com/sdks/mcp/) for the broader tool surface.
