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

# Connect Claude or ChatGPT

> Add the Chariot MCP server to Claude or ChatGPT to list voices, generate speech, read history and check credits from a chat.

> [!NOTE]
>
> **Beta.** The Chariot MCP server lets an assistant such as Claude or ChatGPT use your workspace: list voices, generate speech, read speech history and check your credit balance.

## Server URL

```text theme={null}
https://api.chariot.in/v1/mcp
```

The server uses the Streamable HTTP transport. Use the URL exactly as shown, without a trailing slash.

You sign in with OAuth. You do not need an API key, a client ID or a client secret: the assistant registers itself with Chariot and signs in with PKCE.

## Connect

> [tab] Claude
>
> **1. Add a custom connector**
>
> In Claude, open **Customize** > **Connectors** (in some versions, **Settings** > **Connectors**) and click **Add custom connector**. On a Team or Enterprise plan, an Owner adds it from **Organization settings** > **Connectors**, and each member then connects with their own account.
>
> **2. Paste the server URL**
>
> Name it `Chariot` and paste `https://api.chariot.in/v1/mcp`. Leave the OAuth client ID and secret empty. If Claude asks how to register the OAuth client, choose **Register automatically**.
>
> **3. Connect**
>
> Click **Add**, then **Connect**, and sign in to Chariot in the window that opens.

> [tab] ChatGPT
>
> **1. Turn on developer mode**
>
> In ChatGPT on the web, open **Settings** > **Apps** (called **Apps & Connectors** in some versions) and turn on **Developer mode** under **Advanced settings**. On a Business, Enterprise or Edu workspace, an admin may need to allow it first.
>
> **2. Create an app**
>
> Click **Create app** (or **Create**). Name it `Chariot`, paste `https://api.chariot.in/v1/mcp` as the MCP server URL, and choose **OAuth** for authentication. Leave any client ID and secret empty.
>
> **3. Connect**
>
> Create the app and sign in to Chariot in the window that opens. In a chat, pick Chariot from the **+** menu to use it.

Menu names in Claude and ChatGPT change from time to time. If a step does not match, look for the option to add a custom connector or app by its MCP server URL with OAuth.

### Sign in and choose a workspace

After you sign in to Chariot, the consent screen shows the app that asked to connect and the permissions it requests. Choose a **workspace** and click **Allow access**. The connection is bound to that workspace: every tool call reads that workspace's voices and history and spends its credits. To use another workspace, connect again and choose it.

## Permissions

The assistant requests these scopes. You allow all of them together, or cancel.

| Scope | Allows |
| - | - |
| `voices:read` | View the voices available in the workspace. |
| `speech:generate` | Generate speech using the workspace's credits. |
| `speech:read` | View speech-generation history and get links to its audio. |
| `usage:read` | View the credit balance. |

## Tools

| Tool | What it does | Spends credits |
| - | - | - |
| `list_voices` | Lists the published stock and custom voices in the workspace, with the models and speeds each supports. | No |
| `generate_speech` | Generates one WAV clip and returns the audio in the result. | Yes |
| `list_speech` | Lists recent generations, newest first. | No |
| `get_speech_audio` | Returns a fresh signed link to a stored generation's audio. | No |
| `get_credit_balance` | Returns the available credits and the next credit expiry. | No |

### list\_voices

| Parameter | Default | Limits |
| - | - | - |
| `limit` | `20` | 1 to 50 |
| `offset` | `0` | 0 to 10,000 |
| `query` | none | Up to 200 characters, matched against the voice name |

Each voice has its `voice_id`, name, description, gender, accent, and `models` with their speeds. A voice marked `restricted` cannot generate speech.

### generate\_speech

| Parameter | Default | Limits |
| - | - | - |
| `voice_id` | required | A `voice_id` from `list_voices` |
| `text` | required | 1 to 500 characters |
| `model` | `chariot-v0` | `chariot-v0` or `chariot-multilingual-v1` |
| `speed` | `1.0` | 0.5 to 2.0, and one of the speeds `list_voices` lists for that voice and model |

Each call creates and charges a new clip, at the same price as the API: 1 credit per input character. See [Credits and pricing](https://docs.chariot.in/guides/resources/credits.md). It also counts toward your plan's text to speech [concurrency limit](https://docs.chariot.in/guides/resources/rate-limits.md).

The result has the audio itself (WAV), the `inference_id`, `credits_used`, and `audio_stored`. When the workspace stores the audio, it also has an `audio_url` with its `url_expires_at` and `content_expires_at`.

### list\_speech

| Parameter | Default | Limits |
| - | - | - |
| `limit` | `10` | 1 to 50 |
| `offset` | `0` | 0 to 10,000 |

Each entry has its `inference_id`, status, text, voice, model, creation time, `has_audio` and `content_expires_at`.

### get\_speech\_audio

Pass an `inference_id` from `generate_speech` or `list_speech`. The result has a signed `url`, its `url_expires_at`, and `content_expires_at`.

### get\_credit\_balance

Takes no parameters. Returns `available_credits` and `next_expiry_at`.

## Audio links

Audio links are signed and short-lived: each works for about 15 minutes, and never past the content's expiry. Anyone with a link can download the audio until it expires, so do not share it or treat it as permanent. To play a clip later, call `get_speech_audio` for a fresh link.

`get_speech_audio` allows 10 link requests per generation per minute, and 600 per workspace per minute, shared with [`GET /v1/tts/history/{inference_id}/audio`](https://docs.chariot.in/api-reference/endpoint/tts-history-audio). Reuse a link until its `url_expires_at`.

## Data retention and retries

* Requests from a connected app follow your workspace's [data retention](https://docs.chariot.in/guides/resources/data-retention.md) setting, like requests made with an API key. Under a retention period, text and audio expire at `content_expires_at`; after that, `get_speech_audio` fails and the history entry has no text.
* `generate_speech` always returns the audio in its result, even when nothing is stored.
* If a generation times out or ends with an unclear error, do not generate again straight away: check `list_speech` first. The clip may already exist, and generating again charges again.

## How long a connection lasts

* Access tokens last 15 minutes. Claude and ChatGPT refresh them automatically, so you stay connected without signing in again.
* A connection lasts 30 days from when you allowed it. Refreshing does not extend it. After that, connect again.
* To disconnect an app, open **Settings** > **Connected apps** in the [Chariot dashboard](https://platform.chariot.in) and click **Revoke access**. Revoking stops future access; it does not delete audio the app has already downloaded.
* Changing or resetting your Chariot password disconnects all your connected apps. Leaving the workspace ends its connections too.
* Signing out of the dashboard does not disconnect apps.

Each person connects with their own Chariot account. **Connected apps** lists the connections you made in the current workspace.


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