For how A2A fits next to MCP at runtime, see A2A transport.
Each agent is exposed behind its own route prefix:
So a support agent gets:
GET /agent/support/.well-known/agent-card.json
POST /agent/support
What the endpoint serves
The A2A mount provides a stateful agent contract over one JSON-RPC endpoint:
- agent discovery via the public card
- request/response execution
- SSE streaming
- task retrieval, cancellation, and resubscription
- push-notification config operations
Endpoint reference
Supported JSON-RPC methods
SendMessage
SendStreamingMessage
GetTask
ListTasks
CancelTask
SubscribeToTask
GetTaskPushNotificationConfig
ListTaskPushNotificationConfigs
CreateTaskPushNotificationConfig
DeleteTaskPushNotificationConfig
GetExtendedAgentCard
Request body contract
SendMessage and SendStreamingMessage use this shape:
Streaming uses the same payload but changes method to
SendStreamingMessage.
Typical flow (recommended)
GET /agent/{agentName}/.well-known/agent-card.json
POST /agent/{agentName} with SendMessage or SendStreamingMessage
- If you receive a task result, use
GetTask for later polling
- Use
SubscribeToTask for SSE replay of task events
Continuity is task-based: use task IDs to poll, stream, or resume work across
turns.
Request examples
SendMessage
SendStreamingMessage
GetTask
SubscribeToTask
Operational notes
SendMessage can return a task-shaped result when execution is stateful.
- Tool permissions follow the allowlist in each agent’s config.
- On model reload, agent routes match your latest declarations.
- CORS headers are set on agent routes for browser-friendly access.
Troubleshooting
If tool invocation is unexpectedly blocked, check the agent’s tool_access
policy and root defaults in .hyperterse.
Next: configure providers in Model providers and tune permission policy in Tool access.