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

# Connecting to MCPs

> Making use of the MCPs

Pinkfish MCP (Model Context Protocol) servers fall into two categories: **embedded** and **application**. Embedded servers are built into the platform and require no setup. Application servers connect to external services like Gmail or Slack and require an OAuth connection managed through **PinkConnect**.

This page explains how to set up connections, retrieve your **PCID** (PinkConnect ID), and pass it when calling application MCP tools.

<Note>All examples on this page require a runtime token (`$PINKFISH_TOKEN`). See [Authentication](/api-reference/platform/authentication) to learn how to get one.</Note>

## Embedded MCPs

**Embedded MCPs** are built-in platform services — code execution, AI models, data storage, web search, and more. They require no connection or PCID. Just authenticate and call them through the MCP Farm (`https://mcp.app.pinkfish.ai`). See the [Embedded MCPs overview](/api-reference/mcp-servers/embedded/overview) to get started — the full list of embedded servers is in the sidebar.

## Application MCPs

**Application MCPs** are proxied connections to external services (Gmail, Slack, Salesforce, Google Drive, etc.). Each one requires:

1. **A connection** — Set up on the [Integrations](https://app.pinkfish.ai/integrations) page in the Pinkfish web app. This creates an OAuth link to the external service.
2. **A PCID** — Every connection has a unique PinkConnect ID. You pass this PCID as a tool argument so the MCP Farm knows which OAuth connection to use (e.g., which Gmail account).

See the [Application MCPs overview](/api-reference/mcp-servers/application/overview) to get started — the full list of application servers is in the sidebar.

## Retrieving Your PCID

There are two ways to get the PCID for a connection:

| Method                              | When to use                                                          | Base URL                                  |
| ----------------------------------- | -------------------------------------------------------------------- | ----------------------------------------- |
| [PinkConnect API](#pinkconnect-api) | List all your connections and their statuses                         | `https://proxy.pinkfish.ai` (PinkConnect) |
| [Discovery](#discovery)             | Find the right connection for a specific task using natural language | `https://mcp.app.pinkfish.ai` (MCP Farm)  |

### PinkConnect API

**PinkConnect** is the connection management service that handles OAuth links to external services. Its API lives at a separate base URL from the MCP Farm:

| Service                             | Base URL                      |
| ----------------------------------- | ----------------------------- |
| PinkConnect (connection management) | `https://proxy.pinkfish.ai`   |
| MCP Farm (tool execution)           | `https://mcp.app.pinkfish.ai` |

List all your connections:

```bash theme={null}
curl -s -X GET "https://proxy.pinkfish.ai/manage/user-connections" \
  -H "Authorization: Bearer $PINKFISH_TOKEN" \
  -H "Content-Type: application/json"
```

| Query param | Description                                                                 |
| ----------- | --------------------------------------------------------------------------- |
| `statuses`  | Comma-separated filter: `connected`, `error`, `disconnected`. Default: all. |

**Response:** An array of connections. Each `id` field is the PCID you pass to application MCP tools. The `service_key` identifies the connected product or service family.

For most application MCPs, the `service_key` also matches the MCP server path (for example, a `service_key` of `"gmail"` means you call `https://mcp.app.pinkfish.ai/gmail`).

For products with a **parent server and child servers**, the connection is still shared, but you call one of that product's **child server paths** instead of the top-level parent name. For example:

* A connection with `service_key: "genesys"` uses the same PCID across paths like `https://mcp.app.pinkfish.ai/genesys-conversations` and `https://mcp.app.pinkfish.ai/genesys-routing`
* A connection with `service_key: "jira"` can use paths like `https://mcp.app.pinkfish.ai/jira-issues` and `https://mcp.app.pinkfish.ai/jira-projects`

Use the relevant server page in the [Application MCPs overview](/api-reference/mcp-servers/application/overview) to choose the correct MCP path.

```json theme={null}
[
  {
    "id": "abc123-def456",
    "name": "My Gmail",
    "service_key": "gmail",
    "status": "connected"
  },
  {
    "id": "ghi789-jkl012",
    "name": "My Slack",
    "service_key": "slack",
    "status": "connected"
  }
]
```

### Discovery

If you don't know which connection to use, the `capabilities_discover` tool can find it for you based on a natural language description of your task. This tool lives on the [`pinkfish-sidekick`](/api-reference/mcp-servers/embedded/pinkfish-sidekick) embedded MCP server and is called through the MCP Farm.

It returns both the tools and connections relevant to your request. The PCID is in `connections[].id`. See the [Discovery](/api-reference/platform/discovery) page for full details.

```bash theme={null}
curl -s -X POST "https://mcp.app.pinkfish.ai/pinkfish-sidekick" \
  -H "Authorization: Bearer $PINKFISH_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "capabilities_discover",
      "arguments": {
        "request": "search my gmail"
      }
    },
    "id": 1
  }'
```

## Using a PCID

Once you have a PCID, pass it as an argument when calling any application MCP tool. The request goes to the MCP Farm (`https://mcp.app.pinkfish.ai`), not PinkConnect:

```bash theme={null}
curl -s -X POST "https://mcp.app.pinkfish.ai/gmail" \
  -H "Authorization: Bearer $PINKFISH_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "gmail_search_emails",
      "arguments": {
        "PCID": "abc123-def456",
        "query": "is:unread"
      }
    },
    "id": 1
  }'
```

For products with a **parent server and child servers**, invocation works the same way:

* Use the **same PCID**
* Change only the MCP server path to the specific child server you want
* Call a tool exposed by that child server

Example:

```bash theme={null}
curl -s -X POST "https://mcp.app.pinkfish.ai/genesys-routing" \
  -H "Authorization: Bearer $PINKFISH_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "genesys_routing_get_routing_queues",
      "arguments": {
        "PCID": "abc123-def456"
      }
    },
    "id": 1
  }'
```
