* Bump Python package versions for 1.15.0 release Prepare the CHANGELOG-selected Python packages for the 1.15.0 release. Root and core move to 1.15.0; changed stable extensions receive package-specific minor or patch bumps; changed beta packages receive the 260821 stamp; no beta cohort bump is applied. Core dependency floors use the conservative policy for co-released packages. Release validation also adds the six dependency required by the supported Azure Cosmos SDK floor and retains cross-platform-compatible development-tool pins. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 98e979bd-1d07-41fd-946d-00db8a93e248 * Remove hook-only formatting changes Keep the Python 1.15.0 release commit scoped to package metadata, release notes, dependency floors, and the lockfile. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 98e979bd-1d07-41fd-946d-00db8a93e248 * Minimize release lockfile changes Restore the upstream PyPI-backed lockfile and retain only package versions and dependency metadata changed by the Python 1.15.0 release. Also preserve the development-tool upgrades already present on main. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 98e979bd-1d07-41fd-946d-00db8a93e248 * Retain OpenAI core compatibility floor Keep agent-framework-openai 1.13.1 compatible with core 1.13 because its streaming tool-call index fix uses the existing additional_properties API and does not require core 1.15. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 98e979bd-1d07-41fd-946d-00db8a93e248 * Raise OpenAI version and core floor Bump agent-framework-openai to 1.14.0 and require core 1.15.0 so the new dependency requirement is signaled as a minor release. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 98e979bd-1d07-41fd-946d-00db8a93e248 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 98e979bd-1d07-41fd-946d-00db8a93e248
Get Started with Microsoft Agent Framework A2A
Please install this package via pip:
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.
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.
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 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.