# Get Started with Microsoft Agent Framework A2A Please install this package via pip: ```bash pip install agent-framework-a2a --pre ``` ## A2A Agent Integration The A2A agent integration enables communication with remote A2A-compliant agents using the standardized A2A protocol. This allows your Agent Framework applications to connect to agents running on different platforms, languages, or services. ### A2AAgent (Client) The `A2AAgent` class is a client that wraps an A2A Client to connect the Agent Framework with external A2A-compliant agents. ```python from agent_framework.a2a import A2AAgent # Connect to a remote A2A agent a2a_agent = A2AAgent(url="http://remote-agent/a2a") response = await a2a_agent.run("Hello!") ``` ### A2AExecutor (Hosting) The `A2AExecutor` class bridges local AI agents built with the `agent_framework` library to the A2A protocol, allowing them to be hosted and accessed by other A2A-compliant clients. ```python from agent_framework.a2a import A2AExecutor from a2a.server.apps import A2AStarletteApplication from a2a.server.request_handlers import DefaultRequestHandler from a2a.server.tasks import InMemoryTaskStore # Create an A2A executor for your agent executor = A2AExecutor(agent=my_agent) # Set up the request handler and server application request_handler = DefaultRequestHandler( agent_executor=executor, task_store=InMemoryTaskStore(), ) app = A2AStarletteApplication( agent_card=my_agent_card, http_handler=request_handler, ).build() ``` ### Basic Usage Example See the [A2A agent examples](../../samples/04-hosting/a2a/) which demonstrate: - Connecting to remote A2A agents - Hosting local agents via A2A protocol - Sending messages and receiving responses - Handling different content types (text, files, data) - Streaming responses and real-time interaction ## Security considerations The hosting example above focuses on protocol wiring and does not add authentication or authorization by itself. Production A2A hosts should protect their HTTP or JSON-RPC entry points with the deployment's normal auth layer and verify that each caller is allowed to access the requested agent, task, or session. Task, thread, context, and session identifiers used by an A2A host are routing handles, not bearer credentials. Do not rely on client-supplied identifiers alone to select or mutate persisted state; bind them to authenticated user, tenant, or workspace context first.