Skip to content

Guided tour

FabrCore 2.0 · Release and package availability

These guides track the current 2.0 source. Stable 2.0.0 publication is pending; package commands show the release target. Until it is published, follow the source quick start or use a matching available prerelease set. Release migration · Runtime modes

MODULE 10 · LESSON 10.9

Let Copilot Studio call FabrCore through A2A

Expose FabrCore to Copilot Studio through inbound A2A.

Lesson 61 of 86 · FabrCore 2.0

Overview

A2A cards describe capabilities; authenticated message endpoints perform work. Discovery can be anonymous while calls require credentials. Caller-to-principal mapping determines whether two callers share an instance/history or remain isolated.

Discovery and execution are separate requests

An A2A card describes an exposed agent's capabilities and connection information. Studio can use that metadata to configure its call, but authenticated message/task requests perform the actual work. Do not treat a publicly readable card as authorization to execute the agent or access its owner’s history.

Caller mapping determines conversation isolation

Choose how authenticated Studio callers map to FabrCore principals and agent instances. Mapping every caller to one shared identity deliberately shares that runtime context unless further isolation is implemented. Keep card metadata truthful about the interface actually installed; a skill description is not a runtime harness skill package.

Expose the assistant to Copilot Studio

  1. Enable FabrCore:A2A and explicitly publish agents or choose described-type discovery. Add useful descriptions/capabilities to their registry metadata.
  2. Choose API-key or JWT authentication and a principal strategy suited to isolation. Grant cross-principal access where needed in SQL mode.
  3. Use the correct message endpoint in Copilot Studio. Verify card CORS, proxy forwarding, task/stream behavior and text-only responses that do not depend on an invisible Surface form.
Minimum configuration · reference snippet
{
  "A2A": {
    "Enabled": true,
    "PublicBaseUrl": "https://agents.contoso.com",
    "Discovery": { "AgentTypes": "Described" },
    "Authentication": {
      "Mode": "ApiKey",
      "ApiKey": { "Keys": [ { "Name": "copilot-studio", "Value": "a-long-random-secret" } ] }
    }
  }
}

Discover, call and compare two callers

  1. Fetch the configured A2A card and confirm its endpoint identifies your intended FabrCore service. Configure the Studio test connection with the proper execution authentication.
  2. Send a distinctive request from Studio and trace the inbound task/message to the chosen FabrCore principal and agent. Inspect the returned A2A result in Studio.
  3. Repeat with another test caller and verify the intended sharing/isolation policy. An anonymous execution attempt must be rejected when your configured policy requires credentials.

The result verifies an inbound A2A integration. It is not the same addon or authentication path as a person chatting through Teams.

If the result is different

If no POST reaches the Host, inspect Studio orchestration/discovery first. If cards load but calls fail, inspect auth; if the browser blocks card discovery, inspect CORS.

Go deeper

Explore the related documentation.