Agent-to-Agent (A2A) Communication Guide
⚠️ OUTDATED (2026-06-20). This guide describes the retired Google ADK /Welcome to the AgentArea agent-to-agent communication documentation.InMemoryTaskManager/AgentCommunicationServicemodel. The current design runs A2A over Temporal tasks + the workflow event stream. See:The sections below are kept for historical context only.
docs/adr/2026-06-20-a2a-transport-correctness.md— how an A2A task produces and returns a result (authoritative).docs/plans/2026-03-10-agent-delegation-remote-mcp.md— delegation viaA2AAgentTool.docs/plans/2026-03-10-a2a-spec-compliance.md— A2A v0.3.0 wire contract.
This feature allows an agent A to request work from agent B by creating a task for it via the A2A-protocol API. Under the hood it is powered by:
- AgentCommunicationService – orchestration layer that issues tasks and tracks their results
- InMemoryTaskManager – default store used to register the delegated tasks
- Google ADK “ask_agent” tool – automatically injected into your
LlmAgentso it can call helper agents from within its reasoning chain.
1. When to Use
2. Architecture Overview
- ask_agent tool → validates input, generates a unique task-id, calls TaskManager (
tasks/send) with metadata: - Service stores an
asyncio.Eventand waits (max configurable 60 s) for TaskCompleted/Failed. - Result (or error) is transparently returned to the calling agent so it can continue its reasoning.
3. Prerequisites
- AgentArea backend running (
uvicorn core.agentarea.main:app --reload) - Google ADK installed (
pip install google-adk) - Event broker configured (Redis/Kafka) – required for task status events
- Agents you want to communicate must exist in the database (see CLI or REST
/agents/).
4. Enabling / Disabling Communication
Global flag is set instartup.py when AgentCommunicationService is registered.Per-run override:
ask_agent tool is not injected and direct calls raise ValueError.
5. Using the ask_agent Tool (inside an agent)
Tool specification (autogenerated)
Output:
Example Prompt
wait_for_response=true) and inject the result into the conversation.
6. Manual Task Creation (REST)
You can simulate the same process via HTTP:7. Full Example Script
examples/agent_to_agent_example.py demonstrates:
- Creating primary & helper agents
- Primary agent delegating a math task
- Waiting for completion
- Local simulation without backend (Google ADK only)
8. Configuration Options
9. Troubleshooting
Enable debug logs:
10. Security Considerations
- All delegated tasks inherit user_id of the caller (if provided) – use RBAC to restrict cross-agent calls.
- Validate metadata size to avoid abuse.
- When exposing externally, protect the
/tasks/sendendpoint with authentication.
Happy collaborating! Your agents can now talk to each other and share the workload seamlessly.
For questions join our Discord #agent-to-agent channel.