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

# MCP connected apps

> Read public MCP setup instructions and manage the OAuth connections belonging to your APOB account.

Use [GraphQL authentication](/api-reference/authentication) to manage the MCP
apps connected to the authenticated APOB account. These operations use an APOB
API key or Firebase login; an MCP OAuth token does not authenticate GraphQL.
See [MCP authentication](/mcp/authentication) to connect an MCP client.

## Read client setup instructions

`listMcpClientInstructions` is a public query with no arguments or authentication
requirement. It returns `[McpClientInstruction!]!`:

```graphql McpClientInstructions theme={null}
query McpClientInstructions {
  listMcpClientInstructions {
    name
    logoUrl
    instruction
    setupPrompt
  }
}
```

| Field | Type | Meaning |
| - | - | - |
| `name` | `String!` | Client tab name. |
| `logoUrl` | `String` | Optional client logo URL. |
| `instruction` | `String!` | Short setup instruction. |
| `setupPrompt` | `String!` | Plain-text setup steps containing the configured MCP server URL. |

The query returns instructions in the order Codex, Claude Code, Cursor, and
Other. It returns an empty list when MCP authentication is disabled. These are
setup instructions; they do not authorize an account, start OAuth, or establish
compatibility with an installed client version.

## List connected apps

`listPersonalMcpConnections` takes no arguments and returns `[McpConnection!]!`:

```graphql McpConnections theme={null}
query McpConnections {
  listPersonalMcpConnections {
    clientId
    clientName
    logoUrl
  }
}
```

| Field | Type | Meaning |
| - | - | - |
| `clientId` | `String!` | OAuth client identifier to use when revoking this connection. |
| `clientName` | `String!` | Stored client display name. |
| `logoUrl` | `String` | Optional client logo URL; can be absent. |

The list includes clients with saved consent or an active access token for the
account, ordered by `clientName` and then `clientId`. Saved consent can remain
after a token expires, so a listed app does not prove that it currently has a
usable token. The response contains client metadata, without token values.

## Revoke a connection

Pass the exact `clientId` from the listing:

```graphql RevokeMcpConnection theme={null}
mutation RevokeMcpConnection($clientId: String!) {
  revokeMcpConnection(clientId: $clientId)
}
```

```json Variables theme={null}
{
  "clientId": "<MCP_CLIENT_ID>"
}
```

`clientId` must be nonblank and at most 100 characters. The mutation returns
`Boolean!`. A successful call returns `true`, including when there is no stored
client or connection to revoke.

Revocation removes the account's consent and invalidates its stored access
tokens and authorization codes for that client. Pending authorizations without
a token or code are removed. Other accounts' connections are unaffected.
The client must complete authorization again before obtaining new access.
Revocation does not cancel generation tasks that were already submitted.

## Unavailable connections

When MCP authentication is disabled, both operations return the GraphQL error
`MCP connected apps are unavailable.` A storage failure returns
`Unable to list MCP connected apps.` or `Unable to revoke MCP connected app.`
Read the GraphQL `errors` array; an error does not represent an empty listing
or a successful revocation. See [GraphQL errors](/api-reference/errors).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.