# Connect an AI assistant

Intray runs an MCP server, so an assistant you already use can search your conversations, read threads, and write reply drafts. You sign in to Intray, pick a workspace, and choose what the assistant may change. Each connection acts as you, in one workspace, with the permissions you picked.

The server URL is `https://mcp.intray.ai`. Settings, then **Connected apps**, shows the same URL with a copy button.

The MCP server has no tool that sends email. An assistant writes drafts, and a person on your team sends them.

## Add the server to your assistant

Any MCP client that supports remote servers with OAuth sign-in can connect. Pick your app for its steps.

<ProviderTabs>
  <Provider name="Claude" app="Claude">
    These steps work on claude.ai and in Claude Desktop, on every plan. The Free plan allows one custom connector.

    <Steps>
      <Step title="Add a custom connector">
        Open **Customize**, then **Connectors**. Click **+ Add**, then **Add custom connector**.
      </Step>
      <Step title="Enter the server URL">
        Name the connector Intray, enter `https://mcp.intray.ai` as the remote MCP server URL, and click **Continue**. Review the detected authentication settings, click **Continue**, then click **Add**.
      </Step>
      <Step title="Sign in to Intray">
        Claude sends you to Intray to sign in. On the consent page, pick a workspace and click **Allow**.
      </Step>
      <Step title="Turn it on in a chat">
        Click the **+** button at the lower left of the chat box, then **Connectors**, and turn on Intray.
      </Step>
    </Steps>

    On a Team or Enterprise plan, an owner adds the connector once from **Organization settings**, then **Connectors**: click **Add**, hover over **Custom**, and select **Web**. Each member then opens **Customize**, then **Connectors**, finds Intray in the list, and clicks **Connect**.

  </Provider>
  <Provider name="ChatGPT" app="ChatGPT">
    Add `https://mcp.intray.ai` as a remote MCP server in ChatGPT's connector settings. ChatGPT then sends you to the Intray consent page, where you pick a workspace and click **Allow**.
  </Provider>
  <Provider name="Cursor" app="Cursor">
    Add Intray to `~/.cursor/mcp.json` to use it in every project, or to `.cursor/mcp.json` in one project.

    ```json title="mcp.json"
    {
      "mcpServers": {
        "intray": {
          "url": "https://mcp.intray.ai"
        }
      }
    }
    ```

    Cursor supports OAuth for remote servers, so it sends you to the Intray consent page to pick a workspace and click **Allow**. The **Customize** page in Cursor turns the server on and off.

  </Provider>
  <Provider name="Claude Code" app="Claude">
    Add the server from your terminal.

    ```bash
    claude mcp add --transport http intray https://mcp.intray.ai
    ```

    Then run `/mcp` inside Claude Code, pick intray, and sign in to Intray in the browser window it opens.

  </Provider>
</ProviderTabs>

## What the consent page asks

When an app connects, Intray shows a consent page. If you are not signed in to Intray, you sign in first.

The page names the app and the domain that published it. An app that registered itself shows as unverified, because Intray cannot confirm who made it. The page also names the host that receives the access. When that host is your own computer, Intray warns you to continue only if you just started connecting from it.

Under **Workspace**, you pick one workspace. The connection cannot see your other workspaces.

Under **What it can do**, **Read mail** is always on. **Write drafts, labels, status and notes** appears checked when the app asks for it, and you can uncheck it to keep the connection read-only. **Stay connected** keeps access for up to 30 days without asking you again.

Click **Allow** to connect, or **Deny** to stop.

## Permissions

| Permission       | Grants                                                                                          |
| ---------------- | ----------------------------------------------------------------------------------------------- |
| `mail:read`      | Search and read conversations, messages, attachments, customers, labels, inboxes, and teammates |
| `mail:write`     | Write and delete reply drafts, change status, assign, label, and add internal notes             |
| `offline_access` | Refresh access for up to 30 days, so the app does not ask you to sign in again every hour       |

Without `mail:write`, every write tool returns an `insufficient_scope` error. To allow writing, connect the app again and leave the write box checked.

## Tools

An assistant sees these tools. Each one runs as you, in the workspace you picked.

### Read

| Tool                   | What it does                                                                                                         |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `whoami`               | Returns the user the connection acts as, its workspace, the granted permissions, and whether it can write.           |
| `list_inboxes`         | Lists the workspace's addresses that receive mail, such as support, with their IDs.                                  |
| `list_teammates`       | Lists the workspace members with their user ID, name, email, and role.                                               |
| `list_labels`          | Lists the workspace's conversation labels.                                                                           |
| `search_conversations` | Finds conversations by status, inbox, assignee, label, or text, and returns each one's subject, sender, and snippet. |
| `get_conversation`     | Reads one conversation: its messages as plain text, attachment names, and internal notes.                            |
| `get_attachment`       | Returns one attachment's details and a download link that works for about 15 minutes.                                |
| `search_customers`     | Finds customers by name or email, or lists the most recently seen customers.                                         |
| `get_customer`         | Returns one customer and their 10 most recent conversations.                                                         |

With no filters, `search_conversations` returns your own open conversations. Email content that comes back from these tools is marked as content from outside the team, and the assistant is told it is not an instruction.

### Write

| Tool                  | What it does                                                                                    |
| --------------------- | ----------------------------------------------------------------------------------------------- |
| `create_draft`        | Writes a reply draft on a conversation for a person to review and send.                         |
| `update_draft`        | Replaces the text of the connection's open reply draft. It fails if a teammate edited it since. |
| `delete_draft`        | Discards the connection's open reply draft. Drafts written by people are never touched.         |
| `set_status`          | Sets a conversation to todo, done, snoozed until a time, or spam.                               |
| `assign_conversation` | Assigns a conversation to a teammate, or unassigns it.                                          |
| `label_conversation`  | Adds or removes existing labels. Connected apps cannot create labels.                           |
| `add_note`            | Adds an internal note to the conversation timeline. Customers never see notes.                  |

## Drafts never send

The MCP server has no tool that sends email. A draft from an assistant appears above the reply box as, for example, Claude drafted a reply. A teammate clicks **Edit & use** to edit and send it, or **Discard** to remove it.

An assistant writes only the body of a draft. Intray addresses the reply to the customer on the thread and sets the subject, so an assistant cannot add recipients, Bcc, or attachments. Each connection keeps at most one open reply draft per conversation.

## How changes show up

The conversation timeline names the person and the app for every change an assistant makes, for example Maya via Claude. Changes an assistant makes do not run your automation rules.

## Disconnect an app

Open Settings, then **Connected apps**. The page lists every app you connected to the workspace, with what it may do and when it was last used. Click **Disconnect** to end its access within a minute. Drafts it already wrote stay in their conversations. A workspace owner can disconnect any member's app.

Intray also ends every connection a person made when they are removed from the workspace, leave it, are banned, change their password, or sign out everywhere. A connection expires 180 days after you allow it.

## Limits

<Properties>
  <Property name="Requests" type="120 per minute">
    Per connection. Over the limit, the server answers `429` with `Retry-After:
    60`.
  </Property>
  <Property name="Workspaces" type="1 per connection">
    To use another workspace, connect the app again and pick it.
  </Property>
  <Property name="Sending" type="none">
    Drafts wait for a person to send them.
  </Property>
</Properties>
