> ## Documentation Index
> Fetch the complete documentation index at: https://docs.operata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Microsoft Copilot Studio

> Add the Operata MCP Server as a tool in a Copilot Studio agent, so your team can ask about call quality and customer journeys in plain language.

Connect a Copilot Studio agent to the Operata MCP Server, and it can answer questions about call quality, agent experience, and customer journeys from your live Operata data. Publish that agent to Microsoft Teams or Microsoft 365 Copilot, and your whole team can get those answers in the tools they already use every day, without opening Operata.

Unlike the other clients, you set this up once for everyone who uses the agent, not only for yourself.

For authentication, groups, and regions, start with the [Operata MCP server](/docs/guides-mcp-intro) overview.

<Info>
  Copilot Studio supports the **Streamable HTTP** transport only. Server-Sent Events (SSE) has not been supported since August 2025. The Operata MCP Server uses Streamable HTTP, so no change is needed on your side.
</Info>

## Before you start

* An active Operata subscription and credentials for your chosen endpoint — see [Choose how to connect](/docs/guides-mcp-intro#choose-how-to-connect).
* A Microsoft Copilot Studio license.
* Maker permissions in the Power Platform environment where the agent lives.
* Confirmation from your Power Platform administrator that your data policy permits the connection. MCP access in Copilot Studio runs through Power Platform connectors, so any data loss prevention (DLP) policy that governs connectors also governs this server. If the policy blocks it, the tool won't run for anyone.

## Choose an authentication method before you build

This decision is harder here than on other clients, and it's difficult to change later. Read this section before you open the wizard.

An agent is shared and long-running, used by many people. That cuts against the usual guidance of "OAuth for people, API keys for machines".

|                      | OAuth 2.0                       | API key                                                        |
| :------------------- | :------------------------------ | :------------------------------------------------------------- |
| **Endpoint**         | `https://mcp.operata.io/mcp`    | `https://api.operata.io/v1/mcp`                                |
| **Acts as**          | Each user, individually         | One shared API user                                            |
| **Group access**     | Every group that user can reach | The single group the key belongs to                            |
| **Per-user sign-in** | Yes, each user authorizes once  | No                                                             |
| **Audit trail**      | Attributable to the individual  | All activity attributed to the key                             |
| **Rate limit**       | Per user session                | 100 requests per minute, shared across every user of the agent |

**Use an API key** when the agent serves one contact center and everyone should see the same data. It's the simplest to deploy, with no per-user sign-in. The trade-offs: one group, and a rate limit shared across every user.

**Use OAuth 2.0** when users belong to different groups, or when you need activity attributable to individuals. Each person authorizes the connection once through the Connection Manager.

<Warning>
  An API key is permanently scoped to the group it was created in. An agent built on an API key can't serve a customer with multiple groups — `switch_group` returns `403 "API key access is restricted to its own group"`. If you may need more than one group later, use OAuth now.
</Warning>

## Add the server with the onboarding wizard

The wizard is the recommended route. It creates the underlying Power Platform connector for you.

1. Open your agent in Copilot Studio and go to the **Tools** page.

2. Select **Add a tool**, then **New tool**.

3. Select **Model Context Protocol**. The MCP onboarding wizard opens.

4. Fill in the server details:

   * **Server name** — `Operata CX Observability`
   * **Server URL** — `https://mcp.operata.io/mcp` for OAuth, or `https://api.operata.io/v1/mcp` for an API key
   * **Server description** — see below

5. Select the authentication type that matches your decision above, and provide the credential.

6. Select **Create**, then create the connection when the **Add tool** dialog appears.

### Write the description carefully

The agent's orchestrator reads the server description at runtime to decide whether to call Operata at all. A vague description means the agent answers from the model's general knowledge instead of your data. Something like:

```text Example - server description theme={null}
Operata CX observability for contact centers. Query live interaction traces,
call quality metrics (MOS, jitter, packet loss, round-trip time), agent
softphone and device diagnostics, IVR flow performance, bot and AI
interactions, and end-to-end customer journeys. Also searches Operata product
documentation. Use for any question about call quality, agent experience,
queue performance, or what happened on a specific call or contact ID.
```

## Alternative: create a custom connector

If you need to customize the connector, for example to add policies or fit an existing application lifecycle management (ALM) process, create it in Power Apps instead of using the wizard. Create a new custom connector using **Create from blank**, then point it at the Operata MCP endpoint.

Most teams should use the wizard.

## Test the agent

Use the **Test** pane in Copilot Studio before publishing.

If you're using OAuth, the first query prompts you to sign in. Select **Open Connection Manager**, select **Connect**, sign in with your Operata credentials, then return to the chat and select **Retry**.

Start with a question that forces a tool call:

```
Which of our queues had the worst average call quality last week?
```

Then confirm the agent is reading real data rather than improvising, by asking something only your account would know:

```
List the Operata groups this agent can access.
```

## Publish

Once the agent answers correctly in the Test pane, publish it and add the channels you need. Microsoft Teams and Microsoft 365 Copilot are the common choices. See Microsoft's guidance on connecting an agent to Teams and Microsoft 365 for channel setup and permissions.

Each user connecting through an OAuth-backed agent establishes their own connection on first use, via the Connection Manager.

## Select a group

Every query runs against one group.

* **OAuth** — the agent can call `list_groups` and `switch_group`. Consider naming the intended group in the agent's instructions so users don't have to, for example: *"Always switch to the group named Contact Centre AU before answering."*
* **API key** — the key is fixed to its own group and there's nothing to select.

See [Groups and regions](/docs/guides-mcp-intro#groups-and-regions) for detail. For more example prompts, see [Questions to ask your AI client](/docs/guides-mcp-intro#questions-to-ask-your-ai-client).

## Governance notes

* **DLP policies apply.** Because the server is reached through a Power Platform connector, your environment's data policy governs it. Review this with your Power Platform administrator before rolling the agent out.
* **The rate limit is shared.** An API-key agent shares 100 requests per minute across every user. A busy agent can exhaust this. OAuth spreads load across per-user sessions.
* **Who can reach the agent.** A published agent can expose Operata data to everyone on its channels. Traces contain PII such as customer phone numbers, agent names, and IP addresses, so confirm the audience before you publish. See [Best practices](/docs/guides-mcp-intro#best-practices) for privacy and least-privilege guidance.

## Troubleshooting

| Symptom                                                          | Cause and fix                                                                                                                   |
| :--------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| The tool can't be added, or fails immediately for all users      | A DLP policy is blocking the Power Platform connector. Ask your administrator to permit it.                                     |
| Connection error mentioning transport or SSE                     | The server URL is wrong or points at a non-Streamable endpoint. Confirm you used one of the two documented URLs.                |
| The agent answers from general knowledge and never calls Operata | The server description is too vague. Rewrite it to name the data and the questions it answers.                                  |
| `403 API key access is restricted to its own group`              | The agent tried to switch groups on an API-key connection. Use OAuth, or restrict the agent to the key's group.                 |
| Users are repeatedly prompted to sign in                         | The connection wasn't completed in the Connection Manager. Have the user select **Connect**, sign in, then **Retry** the query. |
| Intermittent failures at busy times                              | The shared rate limit is exhausted. Move to OAuth, or reduce query volume.                                                      |

For more, see [Troubleshoot the MCP server](/docs/guides-mcp-troubleshooting).

## Related

* [Operata MCP server](/docs/guides-mcp-intro) — authentication, groups, and regions.
* [Connect GitHub Copilot](/docs/guides-mcp-github-copilot) — VS Code, Visual Studio, JetBrains, and the Copilot CLI.
* [MCP tools reference](/docs/guides-mcp-tools) — every tool, its parameters, and examples.
* [Troubleshoot the MCP server](/docs/guides-mcp-troubleshooting) — common failure modes and fixes.
* [Authentication](/docs/api-authentication) — mint the API keys the server uses.
* [Rate limits](/docs/api-rate-limits) — the 100 requests per minute per key limit.
