One agent is often not enough: a "travel" agent needs a "flights" agent; a support bot needs a "refunds" agent. Agents work together two ways: A2A, an open protocol to call another agent across teams or vendors, and in-process patterns where one program coordinates several agents. AgentCore hosts A2A agents; Strands gives you the patterns.
New to these words? Read chapter 02 "Key terms" (A2A, MCP, agent, tool). MCP connects agent to tools; A2A connects agent to agents.Your container runs an A2A server on port 9000 at / (the SDK helper serve_a2a does this).
A caller fetches the Agent Card at /.well-known/agent-card.json to learn the skills and URL.
The caller sends a JSON-RPC message/send to / (with SigV4 or OAuth).
The agent runs, isolated in its own microVM, and may use its own tools.
It replies with a task and artifacts (the result).
AgentCore acts as a transparent proxy: it passes the JSON-RPC straight through to your A2A container, and adds enterprise authentication and per-session isolation on top. Port 9000 and path / are what make it A2A (vs 8080 + /invocations for HTTP, 8000 + /mcp for MCP).
name, description, version the agent's identity
url where to reach it
protocolVersion "0.3.0", preferredTransport "JSONRPC"
capabilities { streaming: true } what it can do
skills [ { id, name, description, tags } ] what it is good atWrap one agent as a tool another agent can call. Good for a supervisor that delegates.
Peer agents collaborate, handing off to whoever is best for the step.
An explicit flow of agents: A, then B or C, with the edges you draw.
A structured, multi-step orchestration of agents and tasks.