> For the complete documentation index, see [llms.txt](https://docs.uprightplatform.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.uprightplatform.com/upright-agent/external-clients-mcp.md).

# Connecting external AI clients

The chat tools described in [Data and tools available](/upright-agent/data-and-tools.md) are also exposed as a [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server. This lets you reach the same Upright data from external AI clients — Claude Desktop, [Claude.ai](https://claude.ai), Microsoft Copilot Studio, and other MCP-compatible clients — instead of (or in addition to) the in-platform chat.

The MCP endpoint and the in-platform chat share one tool set and one set of guardrails; the answers are the same regardless of which client you ask from.

## Endpoint

The MCP server is available at:

```
https://api.uprightproject.com/api/mcp
```

It speaks the standard MCP HTTP transport with OAuth 2.0 authentication (Dynamic Client Registration). Any spec-compliant MCP client can connect to it without Upright-specific wrapping.

## Access

{% hint style="warning" %}
The MCP connector is controlled by a **separate permission** from the in-platform chat. Depending on your account type it may already be enabled alongside the in-platform chat, or it may need to be turned on for your organization.

If you cannot connect, contact your Upright contact person or write to <info@uprightproject.com> to request connector access. Include the email addresses of the users who should be enabled.
{% endhint %}

Once your organization has been enabled, you can connect any MCP-compatible client by following one of the setups below. Authentication uses your existing Upright Platform login — there are no separate API keys or tokens to manage for these clients.

## Claude Desktop and Claude.ai

The Upright connector works with both [Claude Desktop](https://claude.com/download) and the [Claude.ai](https://claude.ai) web interface. We recommend the Desktop app for slightly more flexible tool-permission controls, but both behave identically against the Upright endpoint.

1. Open Claude's **Connectors** view (in Claude Desktop: **Settings → Connectors**; on Claude.ai: **Settings → Connectors**) and choose **Add custom connector**.
2. Fill in the **Add custom connector** dialog:
   * **Name:** `Upright`
   * **URL:** `https://api.uprightproject.com/api/mcp`
   * Leave the advanced settings at their defaults.
3. Click **Add**. A browser window opens on `uprightplatform.com`. Log in to Upright if you are not already signed in, then click **Allow access** to authorize the connection.
4. The connector now appears in your Claude **Connectors** list, with all Upright tools exposed under **Interactive tools** and **Other tools**.
   * If your organization's policy allows it, you can flip both groups to **Always allow** to skip per-call confirmation prompts. This is optional.
5. Open a new conversation and try a question such as *"What is the net impact of Apple?"* Claude calls the appropriate Upright tool (e.g. `get_net_impact_summary`) and renders the response inline.

If the connector ever stops working, return to the Connectors view, click the three-dot menu next to **Upright**, and choose **Reconnect** to restart the OAuth flow.

## Microsoft Copilot Studio

[Copilot Studio](https://www.microsoft.com/en-us/microsoft-365-copilot/microsoft-copilot-studio) lets you build AI agents that are deployable across the Microsoft 365 ecosystem — Microsoft 365 Copilot, Teams, web chat, and others. The Upright MCP connector plugs into Copilot Studio as a custom tool.

{% hint style="info" %}
If Copilot Studio does not open for your account, make sure a Dataverse environment has been defined for your organization. This is a Copilot Studio prerequisite, not an Upright one.
{% endhint %}

1. In Copilot Studio, open the **Tools** panel and click **New tool**.
2. Select **Model Context Protocol** as the tool type.
3. Fill in the **Model Context Protocol** form:
   * **Server name:** `Upright`
   * **Server description:** `Sustainability impact data: Net impact, DMA, SDG, EU Taxonomy, financial effects`
   * **Server URL:** `https://api.uprightproject.com/api/mcp`
   * **Authentication:** `OAuth 2.0`
   * **Type:** `Dynamic discovery`
4. Click **Create**. Reload the page if the new tool does not appear in the **Tools** view immediately.
5. In the **Agents** view, create (or open) the agent that should use the Upright tool. A short prompt such as *"An agent that answers questions about company sustainability impact using Upright data"* is enough to get started.
6. Inside the agent, go to **Tools → Add a tool**, choose **All**, search for *Upright*, and select the **Upright** tool you just created.
7. In the **Add tool** dialog, click **Not connected → Create a new connection**. A browser window opens on `uprightplatform.com`; log in if needed and click **Allow access** to authorize.
8. Once the connection shows as active, click **Add and configure** to attach the tool to the agent.
9. Test the agent from the chat panel on the right. Try a question such as *"What is the net impact of Apple?"* In some cases you may need to re-authorize the Upright MCP connection the first time you test.

## Other MCP-compatible clients

Any MCP client that supports the HTTP transport with OAuth 2.0 Dynamic Client Registration can connect to the same endpoint:

```
https://api.uprightproject.com/api/mcp
```

The exact UI varies by client, but the setup follows the same shape: add a new MCP server with the URL above, complete the OAuth flow in the browser when prompted, and the Upright tools become available. The connector has also been used successfully from clients such as Mistral Le Chat, ChatGPT custom connectors, and Google AI Search.

Compliance with the public MCP specification varies between clients; if your client cannot complete Dynamic Client Registration, ask your Upright contact person about alternative integration options.

## Behaviour parity with the in-platform chat

External MCP clients have access to the same tool set as the in-platform chat:

* All six analytical lenses (Net Impact, DMA, Financial Effects, UN SDG alignment, EU Taxonomy, SFDR PAI).
* Drill-downs (product-level reasoning, supporting articles, contributing products, DMA reasoning).
* Group, portfolio, and ad-hoc multi-company tools.
* Product value-chain, site identification, physical climate risk.
* Knowledge-base search and methodology FAQ.

Two behavioural differences to be aware of when calling from external clients:

* **Release scope.** External clients are restricted to Upright's latest model release, the same constraint that applies to the in-platform chat. Tool calls targeting older releases return a `release-not-supported` error.
* **Presentation primitives.** KPI tiles, tone badges, and callout cards are platform UI elements — external clients render plain Markdown / JSON instead. The underlying data is identical; only the styling differs.

## Rate limits and quotas

Connector usage is metered under its own per-organization allowance, separate from the in-platform chat budget. (Because external clients run their own model against Upright's tools, that traffic is counted as connector tool calls rather than against the in-platform chat's token budget.) If you anticipate heavy programmatic usage, contact your Upright contact person to discuss limits.

## Troubleshooting

* **`401 Unauthorized` on every request** — the connector has not been enabled for your organization. Contact your Upright contact person or <info@uprightproject.com> to request access.
* **OAuth flow returns to the client without a token** — make sure you are signed in to [uprightplatform.com](https://uprightplatform.com) in the same browser that the connector opens, then retry. In Claude, use **Reconnect** on the Upright connector.
* **Empty tool list after connecting** — the client may not be reading the server's `tools/list` response. Confirm the client supports the HTTP transport and is on a current MCP spec version.
* **`release-not-supported` error** — the tool call targeted a non-latest release. Re-issue the call against the latest release.
