Skip to content

Commit dd52d51

Browse files
Merge pull request #65 from microsoft/gughini-a2a
Fix formatting
2 parents e94b1f7 + 48289ac commit dd52d51

File tree

1 file changed

+23
-22
lines changed

1 file changed

+23
-22
lines changed

_posts/2025-12-02-copilot-studio-a2a-multi-agents.md

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@ About two weeks ago at Microsoft Ignite, Copilot Studio gained several new ways
2020
- Connect Microsoft 365 agents via SDK
2121
- Connect any agent that speaks the new A2A (Agent-to-Agent) protocol
2222

23-
In this quickstart well focus on the last one: **connecting an A2A-enabled agent to Copilot Studio**.
23+
In this quickstart we'll focus on the last one: **connecting an A2A-enabled agent to Copilot Studio**.
2424

25-
To keep things concrete, well use as connected agent a sample that I built with the [Microsoft Agent Framework](https://learn.microsoft.com/en-us/agent-framework/overview/agent-framework-overview) that exposes A2A. Don't be scared, Agent Framework is not a prerequisite for A2A, but simply a choice that I made in order to have something that exposes A2A ready to be plugged in Copilot Studio. You can use any A2A enabled agent that you already have.
25+
To keep things concrete, we'll use as connected agent a sample that I built with the [Microsoft Agent Framework](https://learn.microsoft.com/en-us/agent-framework/overview/agent-framework-overview) that exposes A2A. Don't be scared, Agent Framework is not a prerequisite for A2A, but simply a choice that I made in order to have something that exposes A2A ready to be plugged in Copilot Studio. You can use any A2A enabled agent that you already have.
2626

27-
If you don't have any A2A agent, you can clone my GitHub repo for the sample agent: [Microsoft Copilot Studio A2A Samples | GitHub](https://github.com/microsoft/CopilotStudioSamples/tree/main/A2ASamples/Simple-A2A-Sample)
27+
If you don't have any A2A agent, you can clone my GitHub repo for the sample agent.
28+
[Microsoft Copilot Studio A2A Samples | GitHub](https://github.com/microsoft/CopilotStudioSamples/tree/main/A2ASamples/Simple-A2A-Sample)
2829

29-
Well go end-to-end:
30+
We'll go end-to-end:
3031

3132
1. Configure and run the sample A2A agent
3233
2. Expose it via a public endpoint (Dev Tunnels or similar)
@@ -53,22 +54,22 @@ Compared to traditional HTTP connectors or tools, A2A is:
5354
- More interoperable: different agent frameworks can participate as long as they implement A2A
5455
- Richer in context: the payload carries extra metadata your agent can use for routing, personalization, logging, and more
5556

56-
In other words, instead of calling an API, youre delegating a task to another agent.
57+
In other words, instead of "calling an API", you're "delegating a task to another agent".
5758

5859
---
5960

60-
## What youll build
61+
## What you'll build
6162

62-
By the end of this quickstart youll have:
63+
By the end of this quickstart you'll have:
6364
- A simple A2A agent running locally via the Microsoft Agent Framework (or you can use your already made A2A agent if you have one)
6465
- Exposed it over HTTPS using Dev Tunnels (or any other hosting you like)
6566
- Wired it into a Copilot Studio agent as an A2A connection
6667
- Successfully invoked from Copilot Studio with a natural language task:
67-
> Which plant needs more light: a tomato plant or a strawberry plant?
68+
> "Which plant needs more light: a tomato plant or a strawberry plant?"
6869
69-
And youll see:
70+
And you'll see:
7071
- A successful A2A connection from Copilot Studio
71-
- The agents activity log confirming it received and processed the task
72+
- The agent's activity log confirming it received and processed the task
7273
- The full A2A payload, including the extra metadata Copilot Studio sends
7374

7475
---
@@ -78,7 +79,7 @@ And you’ll see:
7879
> If you already have an agent exposing A2A you can skip this section
7980
{: .prompt-tip }
8081

81-
If you want to copy my A2A agent, youll need:
82+
If you want to copy my A2A agent, you'll need:
8283
- An Azure OpenAI resource with:
8384
- An endpoint URL
8485
- A deployed model (deployment name)
@@ -165,24 +166,24 @@ Dev Tunnels will give you a public URL, e.g.:
165166

166167
- `https://xyz123-9000.dev.tunnels.ms/`
167168

168-
This is the URL youll use in Copilot Studio as the A2A endpoint.
169+
This is the URL you'll use in Copilot Studio as the A2A endpoint.
169170

170-
> For real-world scenarios, youll likely deploy this agent as a web app or container with proper auth. Dev Tunnels are great for demos and development.
171+
> For real-world scenarios, you'll likely deploy this agent as a web app or container with proper auth. Dev Tunnels are great for demos and development.
171172
{: .prompt-info }
172173

173174
---
174175

175176
## Step 3 – Create the A2A connection in Copilot Studio
176177

177-
Now that your A2A agent is reachable, lets plug it into a Copilot Studio agent.
178+
Now that your A2A agent is reachable, let's plug it into a Copilot Studio agent.
178179

179180
1. Open Copilot Studio and select the agent you want to extend.
180181
2. Go to the Agents section, where you manage connected agents for the agent
181182
3. Choose to add a new **A2A agent**.
182183
4. Fill in the details:
183184
- Name: `Simple A2A Agent` (or similar)
184185
- Endpoint URL: the Dev Tunnel URL, e.g. `https://xyz123-5073.dev.tunnels.ms/`
185-
- Auth: for the sample, you can typically leave it as none (the repo doesnt enforce auth by default).
186+
- Auth: for the sample, you can typically leave it as "none" (the repo doesn't enforce auth by default).
186187
5. Save and continue
187188

188189
If everything is configured correctly, Copilot Studio should report a **successful connection** to the A2A agent.
@@ -210,18 +211,18 @@ On the A2A agent side, you should see logs confirming:
210211
- The prompt contained the plant question
211212
- The agent produced a response, which was then returned to Copilot Studio
212213

213-
![Image 2: The A2A agents activity log, showing the task and the generated response about tomato vs strawberry plants](/assets/posts/copilot-studio-a2a-multi-agents/a2a-response.png){: .shadow w="972" h="589" }
214-
_The sample A2A agent log showing it was invoked with the Which plant needs more light…? task and responded successfully._
214+
![Image 2: The A2A agent's activity log, showing the task and the generated response about tomato vs strawberry plants](/assets/posts/copilot-studio-a2a-multi-agents/a2a-response.png){: .shadow w="972" h="589" }
215+
_The sample A2A agent log showing it was invoked with the "Which plant needs more light…?" task and responded successfully._
215216

216-
If you see this, youve completed the basic loop: **Copilot Studio → A2A protocol → external agent → back to Copilot Studio**.
217+
If you see this, you've completed the basic loop: **Copilot Studio → A2A protocol → external agent → back to Copilot Studio**.
217218

218219
---
219220

220221
## Step 5 – Inspect the A2A payload and metadata
221222

222223
One cool advantages of using the A2A protocol is that Copilot Studio sends a **rich payload** to your agent.
223224

224-
In the sample, if you inspect the request body the agent receives, youll see more than just the user question. Youll typically see metadata such as the complete chat history as well as the locale used, etc.
225+
In the sample, if you inspect the request body the agent receives, you'll see more than just the user question. You'll typically see metadata such as the complete chat history as well as the locale used, etc.
225226

226227
The sample log output will show the full JSON payload as it arrives at the A2A endpoint.
227228

@@ -239,7 +240,7 @@ A2A is especially useful when you already have agents built on another framework
239240
You would still use:
240241
- Traditional connectors / HTTP tools for plain APIs and services
241242
- MCP servers for tool/resource-style integrations in the MCP ecosystem
242-
- Activity Protocol when what youre calling is itself an agent built with Microsoft Technology (such as Microsoft 365 Agents SDK)
243+
- Activity Protocol when what you're calling is itself an agent built with Microsoft Technology (such as Microsoft 365 Agents SDK)
243244

244245
All three patterns can coexist in the same Copilot Studio agent.
245246

@@ -260,6 +261,6 @@ Once you have this basic A2A connection working, you can:
260261

261262
- Copilot Studio can now connect to external agents via the **A2A protocol**, alongside Fabric agents, Foundry agents and Microsoft 365 SDK agents.
262263
- With the **Simple A2A Agent** sample, you can quickly see the full round-trip: Copilot Studio → A2A → agent → Copilot Studio.
263-
- The A2A payload includes **rich chat history**, not just the last users message, which you can exploit for routing, logging, and governance.
264+
- The A2A payload includes **rich chat history**, not just the last user's message, which you can exploit for routing, logging, and governance.
264265

265-
If youre investing in agents beyond Copilot Studio, A2A gives you a clean way to bring them in and orchestrate them together.
266+
If you're investing in agents beyond Copilot Studio, A2A gives you a clean way to bring them in and orchestrate them together.

0 commit comments

Comments
 (0)