---
title: Connect Claude
description: Add Upclient as a connector in Claude or Claude Code so you can ask about projects, tasks, clients and messages, and make changes, in plain language.
icon: bot
---

Upclient runs a remote MCP server, so you can add your workspace to Claude as a custom connector. Once connected you can ask questions like "Which tasks are waiting for my review?" or "What did Juniper Furniture say in the Website Redesign thread?", and ask Claude to do the work: create a project from a template, add a task, approve a submission or reply to a client.

Claude acts as you. It sees only what you can see in Upclient and can only change what your role allows.

## How the connection works

- **Server URL:** `https://api.upclient.app/mcp`. Claude talks to it over Streamable HTTP.
- **Signing in:** Claude opens Upclient in your browser, you sign in and choose **Allow**. Claude then holds a token that lasts an hour and renews itself for up to 30 days of inactivity. Claude never sees your password.
- **Workspaces:** one connection covers every workspace you belong to. Claude calls `list_workspaces` first and passes the workspace on each request, so it can answer "in Copperline, …" without reconnecting. If you only have one workspace, Claude uses it without asking.
- **Permissions:** every request runs through the same role and project checks as the app. A viewer can read but never write; a member only sees the projects they are on. Billing that has ended stops the connection the same way it stops the app.
- **Read only:** when you connect you can grant reading only. Claude can still look everything up, and asks you to reconnect with write access the first time it tries to change something.

:::note
Some actions reach your clients: creating or showing a task in the portal, sending a task back for changes, sending a project message, inviting a contact to the portal, creating a project from a template with client-facing tasks, and showing a page. Claude is told which tools do this and most apps ask you to confirm before it uses them.
:::

## What Claude can do

| Area     | Read                                                                                           | Change                                                           |
| -------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| Projects | list and open projects with their stages, people, progress                                     | create a project (blank or from a template), add a stage         |
| Tasks    | list by status, assignee, due date, review queue or overdue; open a task with its client steps | create a task, change it, approve a review or send it back       |
| Clients  | list and open contacts and companies                                                           | add a contact or company, invite a contact to the portal         |
| Library  | templates, forms, form submissions with answers, contracts                                     | none                                                             |
| Messages | list a project's threads, read a thread                                                        | reply, or start an internal or project thread                    |
| Pages    | list and read project pages                                                                    | create a page (always hidden at first), edit it, show or hide it |

Claude cannot delete anything, change settings, billing or team members, edit workflows, or manage API keys. Lists return at most 50 items per page and Claude asks for the next page when it needs more.

## Connect Claude

You need a workspace plan that lets you add custom connectors in Claude.

1. In Claude (web or desktop), open **Settings** → **Connectors** and choose **Add custom connector**.
2. Name it `Upclient` and paste `https://api.upclient.app/mcp` as the URL. Leave the OAuth client fields empty; Claude registers itself.
3. Choose **Connect**. Upclient opens in your browser; sign in if you are asked.
4. Check the access Claude asks for and choose **Allow**.
5. In a chat, open the tools menu and make sure Upclient is turned on, then ask something like "List my overdue tasks in Fernhill Studio".

## Connect Claude Code

Add the server once from your terminal:

```bash
claude mcp add --transport http upclient https://api.upclient.app/mcp
```

Then run `/mcp` inside Claude Code, pick `upclient` and choose **Authenticate**. Your browser opens the same sign-in and **Allow** screen as above.

To use the connector from a script or a shared machine without a browser, send a workspace API key instead (the same `stk_` key the REST API uses). A key is fixed to its workspace, so Claude Code does not pass a workspace and does not see `list_workspaces`:

```bash
claude mcp add --transport http upclient https://api.upclient.app/mcp \
  --header "Authorization: Bearer $UPCLIENT_API_KEY"
```

An API key acts with the role of the person who created it, and keys of viewers can only read.

## Disconnect

Remove the connector in Claude's **Settings** → **Connectors**, or run `claude mcp remove upclient` in Claude Code. Claude forgets its tokens, and a token that is left over stops working within an hour. When a connection has been withdrawn on the Upclient side, the next request answers "This app is no longer connected to Upclient" and Claude asks you to connect again. Revoke the API key to stop a key-based connection.

## Troubleshooting

- **"Say which workspace to use"**: Claude did not pass a workspace. Ask it to list your workspaces first.
- **"None of your workspaces matches …"**: the workspace slug is wrong or you are not a member. Upclient gives the same answer in both cases so it never reveals other workspaces, and the same goes for projects, tasks and clients you cannot see: "Nothing with that id was found in this workspace."
- **"This connection can only read"**: you granted read access only. Disconnect and connect again, allowing changes.
- **"This API key only works in the workspace …"**: a key is fixed to its workspace; leave the workspace out.
- **Too many requests**: a connection can make 300 requests a minute, the same limit as the REST API. Claude waits for the time in the `Retry-After` header and tries again.
