# Connect an AI assistant (MCP)

MCP is how AI assistants like Claude connect to other apps. Connect yours to Chartjuice and you can ask for a chart in plain words: the assistant makes it, shows it to you and saves it to your account.

## What you need

A Chartjuice account, which is free. If you do not have one, you can make it while you connect. Connecting an assistant is part of every Chartjuice plan, Free included.

Claude, ChatGPT and most other assistants connect by signing you in. You give the assistant the address of Chartjuice, sign in to Chartjuice in your browser, and choose Allow. There is no key to copy and nothing to install.

An assistant that cannot sign you in connects with an API key instead. [Connect with an API key](https://chartjuice.com/docs/mcp/#with-a-key) covers that.

## Connect your assistant

Every assistant asks for the same thing: the address of the Chartjuice server. Claude calls what you are adding a custom connector. ChatGPT, Cursor and VS Code call it an MCP server. Both names mean the same thing. This is the address:

```
https://chartjuice.com/mcp
```

Find your assistant below. Each one sends you to a Chartjuice page that names the assistant and lists what it will be able to do. Choose Allow there and you go back to the assistant, connected.

### Add Chartjuice to Claude

This works in Claude on the web and in the Claude desktop app, on every Claude plan. On the Free plan, Claude lets you add one connector of your own.

1. In Claude, open Customize, then Connectors.
2. Choose Add, then Add custom connector.
3. Enter a name, such as Chartjuice, and paste the address above. Choose Continue.
4. Claude shows the sign-in settings it found. If there is a setting called OAuth client, set it to Register automatically. Choose Continue, then Add.
5. Claude sends you to Chartjuice, either now or the first time it uses the connector. Sign in, check that the page names Claude, and choose Allow.

Then start a chat and ask for a chart. If Claude does not use Chartjuice, open the + menu in the chat, choose Connectors, and turn Chartjuice on.

On a Team or Enterprise plan, an owner adds the connector first, under Organization settings, then Connectors. After that, each person finds Chartjuice under Customize, then Connectors, and chooses Connect.

### Add Chartjuice to ChatGPT

Use ChatGPT on the web. If you use ChatGPT through a workplace, its settings may not let you add a server yourself.

1. Go to `chatgpt.com/plugins`.
2. Choose the plus button, then Add custom MCP server.
3. Enter a name, such as Chartjuice. Under Connection, paste the address above as the server URL.
4. For authentication, choose OAuth.
5. Read the warning, choose I understand and want to continue, then Create as a plugin.
6. Install the plugin that this makes. When ChatGPT sends you to Chartjuice, sign in, check that the page names ChatGPT, and choose Allow.

To use it, type @ in a chat and pick Chartjuice.

### Add Chartjuice to Claude Code

Claude Code is the assistant from Anthropic that runs in a terminal. Run this command in a terminal:

```bash
claude mcp add --transport http chartjuice --scope user https://chartjuice.com/mcp
```

That adds Chartjuice for every project on your computer. Start Claude Code and type `/mcp`. It shows that Chartjuice needs you to sign in: follow the steps in your browser, and choose Allow.

### Add Chartjuice to Cursor

Open the file `~/.cursor/mcp.json`, or create it if it does not exist yet, and put this in it:

```json
{
  "mcpServers": {
    "chartjuice": {
      "url": "https://chartjuice.com/mcp"
    }
  }
}
```

Cursor signs you in to a server that asks for it. When it asks about Chartjuice, sign in in your browser and choose Allow. If the file already lists other servers, add the `chartjuice` entry beside them, inside `mcpServers`.

### Add Chartjuice to VS Code

Open the Command Palette, run **MCP: Open User Configuration**, and put this in the file that opens:

```json
{
  "servers": {
    "chartjuice": {
      "type": "http",
      "url": "https://chartjuice.com/mcp"
    }
  }
}
```

When VS Code starts the server, it registers itself with Chartjuice and asks you to sign in. Do that in your browser and choose Allow.

## What a connected app can and can't do

An assistant you connect by signing in is listed on your [account page](https://chartjuice.com/account), under Connected apps.

It can:

- make, edit, export and delete your charts
- read and set your brand palette
- see your plan and the email address you sign in with

It can't:

- see or change your billing or payment details
- add or remove teammates
- change your email address
- delete your account
- make an API key for itself

"Your charts" means every chart saved to your account, with its data, including the ones you made yourself in the editor.

Chartjuice holds every connected app to this list, whatever the app asks for. Your plan's limits apply to it as they do to you.

### Disconnect an app

On your [account page](https://chartjuice.com/account), under Connected apps, choose Disconnect beside the app. It stops being able to see or change your charts right away. Your charts stay as they are, and you can connect the app again later. Then remove Chartjuice from the assistant's own settings, so it stops trying.

## Connect with an API key

Use a key when your assistant cannot sign you in, or when you want something that runs on its own, like a script.

A key is a password for programs: it lets your assistant work with your charts without signing in as you. Create one on your [account page](https://chartjuice.com/account), under API keys. Copy it when it appears, because it is shown once.

In each example, put your own key in place of `YOUR_API_KEY`. When you make a new key, the panel that shows it has these examples with the key already in them.

### Claude Code, with a key

Run this command in a terminal:

```bash
claude mcp add --transport http chartjuice --scope user https://chartjuice.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"
```

That adds Chartjuice for every project on your computer. Start Claude Code and type `/mcp` to check that it is connected.

### Cursor, with a key

Open the file `~/.cursor/mcp.json`, or create it if it does not exist yet, and put this in it:

```json
{
  "mcpServers": {
    "chartjuice": {
      "url": "https://chartjuice.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
```

To use Chartjuice in one project only, save the same file as `.cursor/mcp.json` in that project. If the file already lists other servers, add the `chartjuice` entry beside them, inside `mcpServers`.

### VS Code, with a key

Open the Command Palette, run **MCP: Open User Configuration**, and put this in the file that opens:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "chartjuice-api-key",
      "description": "Chartjuice API key",
      "password": true
    }
  ],
  "servers": {
    "chartjuice": {
      "type": "http",
      "url": "https://chartjuice.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:chartjuice-api-key}"
      }
    }
  }
}
```

VS Code asks for your key the first time it starts the server and keeps it for you, so the key is never written into the file. To set it up for one project only, save the same content as `.vscode/mcp.json` in that project.

### Claude, with a key

Signing in, as described at the top of this page, is the shorter way to connect Claude. Claude can also connect with a key. Anthropic is still rolling that out, so your account may not have it yet.

1. In Claude, open Customize, then Connectors, and choose Add custom connector.
2. Enter a name, such as Chartjuice, and the address above.
3. For Authentication, choose No sign-in.
4. Open Request headers. Pick `authorization` as the header name, and for its value enter the word `Bearer`, a space, and your key.
5. Choose Add.

If the window has no Request headers section, your account does not have this yet.

### Another assistant

Any assistant that can connect to an MCP server at a web address can use Chartjuice. If it can sign you in (the feature is often called OAuth), give it the address above and nothing else. If it cannot, give it the address and this header:

```
Authorization: Bearer YOUR_API_KEY
```

## What you can ask for

Once the assistant is connected, ask in plain words. For example:

- "Make a bar chart of these sales figures", with your data pasted underneath.
- "Turn it sideways and put the biggest bar at the top."
- "Make the bars dark green and add the title Q3 revenue."
- "Show me the chart."
- "Is it easy to read? Fix anything that is not."
- "Find my chart about churn and put this month's numbers in it."
- "Make a copy as a line chart so I can compare the two."
- "Give me a link to that chart as a picture, for my newsletter."

The assistant shows you the chart as a picture and gives you a link. The chart is saved to your account, so you can open the link and carry on by hand in the editor.

## An example, start to finish

Say you paste four rows of data and type this:

> Make a bar chart from this data, make it horizontal, sort it, and show me.
>
> ```
> Product,Units
> Tea,420
> Coffee,910
> Juice,650
> Water,300
> ```

The assistant decides which tools to use and in what order. Here is what it does. You never have to name a tool or write any of this yourself. Where a step shows `$CHART_ID`, the assistant sends the id that Chartjuice gave the new chart in step 1.

1. Create a chart. Makes a bar chart from the data, gives it a title and saves it to your account. The tool is [create_chart](https://chartjuice.com/docs/mcp/#create_chart), and this is what the assistant sends:

   ```json
   {
     "type": "bar",
     "data": "Product,Units\nTea,420\nCoffee,910\nJuice,650\nWater,300",
     "ops": [
       {
         "op": "setTitle",
         "title": {
           "text": "Units sold by product"
         }
       }
     ]
   }
   ```

2. Edit a chart. Turns the bars sideways and sorts them by size. The tool is [apply_ops](https://chartjuice.com/docs/mcp/#apply_ops), and this is what the assistant sends:

   ```json
   {
     "id": "$CHART_ID",
     "ops": [
       {
         "op": "setVariants",
         "variants": {
           "bar": {
             "orientation": "horizontal"
           }
         }
       },
       {
         "op": "addTransform",
         "transform": {
           "type": "sort",
           "column": "c2",
           "direction": "desc"
         }
       }
     ]
   }
   ```

3. Render a chart. Draws the chart as a picture, so the assistant can check it and show it to you. The tool is [render_chart](https://chartjuice.com/docs/mcp/#render_chart), and this is what the assistant sends:

   ```json
   {
     "id": "$CHART_ID",
     "scale": 2
   }
   ```

Then it answers you with the picture and a link like `https://chartjuice.com/charts/7b0c9f1e-6c1d-4c57-9a47-2f1f0a3b8e21`, which opens the chart in the editor.

## What the assistant can do

Each thing the assistant can do is called a tool. It picks the tools itself. They are listed here so you know what you are letting it do: some only read, some change your charts, and one deletes.

The assistant reads these same descriptions, so they are written to it: "you" is the assistant, and "the person" is you.

### Charts

#### List charts

`list_charts` Only reads

The account's saved charts, most recently changed first. Returns each chart's id, name, type and the address a person opens it at. Use it to find a chart someone names, then read it with [`get_chart`](https://chartjuice.com/docs/mcp/#get_chart). Page through with `cursor`.

#### Get a chart

`get_chart` Only reads

A chart as it is now, without its rows: its type and options, which column plays which role, the columns, the steps applied to the data, the main style settings and any warnings. Read this before editing a chart you did not make in this conversation, to get the column ids that ops use and to see what is already set. To see how the chart looks, call [`render_chart`](https://chartjuice.com/docs/mcp/#render_chart).

#### Create a chart

`create_chart` Changes your charts or account

Save a new chart. Start from a chart type and your own data (`type` with `data`), from a chart type with sample data (`type` alone), or from a gallery example (`example`). `ops` are applied before it is saved, so one call can make and style a chart. Columns get the ids c1, c2, c3 and so on, in the order they appear in the data, so `ops` can name them in the same call. The answer has the chart's id to use from then on, its `url` to give the person, its columns with their ids, and its warnings, which are what [`lint_chart`](https://chartjuice.com/docs/mcp/#lint_chart) would report. Call [`render_chart`](https://chartjuice.com/docs/mcp/#render_chart) next to look at the result, and [`apply_ops`](https://chartjuice.com/docs/mcp/#apply_ops) to change it. If you are not sure which type suits the data, [`list_chart_types`](https://chartjuice.com/docs/mcp/#list_chart_types) says what each is for. On the Free plan this is refused with [`chart_limit_reached`](https://chartjuice.com/docs/limits/#chart_limit_reached) once the account has its limit of saved charts.

#### Edit a chart

`apply_ops` Changes your charts or account

Change a chart with ops, the same edits the editor makes: its type, which columns it charts, steps such as sort and top N, titles, axes, colors, and the data itself. [`get_op_catalog`](https://chartjuice.com/docs/mcp/#get_op_catalog) lists every op and its fields: read it once before the first edit. The ops apply together or not at all; if one is wrong the answer is [`invalid_ops`](https://chartjuice.com/docs/limits/#invalid_ops) with what to fix, and the chart is unchanged. Returns the chart's warnings after the change, which are what [`lint_chart`](https://chartjuice.com/docs/mcp/#lint_chart) would report, so there is no need to call that as well. Use column ids (c1, c2), not column names: [`create_chart`](https://chartjuice.com/docs/mcp/#create_chart) answers with them, and [`get_chart`](https://chartjuice.com/docs/mcp/#get_chart) has them for any chart. Afterwards call [`render_chart`](https://chartjuice.com/docs/mcp/#render_chart) to check how the chart looks.

#### Rename a chart

`rename_chart` Changes your charts or account

Change a chart's name in My charts. The title drawn on the chart is separate: change that with the `setTitle` op.

#### Duplicate a chart

`duplicate_chart` Changes your charts or account

Save a copy of a chart, named "Copy of" and the original's name. Use it to try another design without changing the original. The copy counts toward the Free plan's saved charts like any other chart.

#### Delete a chart

`delete_chart` Deletes

Delete a chart for good. There is no undo, so use it only when the person asked for that chart to be deleted.

#### Check a chart

`lint_chart` Only reads

Readability problems with a chart as it is now: too many slices, colors too faint to see, an axis that misleads. An empty list means none were found. [`create_chart`](https://chartjuice.com/docs/mcp/#create_chart), [`apply_ops`](https://chartjuice.com/docs/mcp/#apply_ops) and [`set_data`](https://chartjuice.com/docs/mcp/#set_data) already answer with the same list as `warnings`, so call this for a chart you have not just changed. Fix a `warn` with [`apply_ops`](https://chartjuice.com/docs/mcp/#apply_ops). An `info` is a suggestion: leave it when it is about something the person asked for, such as a color they chose. A pie reads best with 6 slices or fewer: a `topN` step with `n` set to 5 keeps the five largest and adds the rest up as a sixth.

#### Render a chart

`render_chart` Only reads

A saved chart as a PNG image, at 1 or 2 times its size, so you can see what the person will see. Look at it after creating or editing a chart: check that the labels fit, the colors can be told apart and the chart says what it should. The warnings that [`create_chart`](https://chartjuice.com/docs/mcp/#create_chart) and [`apply_ops`](https://chartjuice.com/docs/mcp/#apply_ops) answer with cover the problems that are easy to miss by eye; for a chart you have not just changed, [`lint_chart`](https://chartjuice.com/docs/mcp/#lint_chart) gives them. Counts toward the daily renders. With `data`, the chart is drawn with that data in place of its own, in the same design: the saved chart is a template and is not changed, and the image counts toward the month's image renders instead, once for each different picture. On the Free plan the image carries a small chartjuice.com mark, as downloads from the editor do.

### Data

#### Replace the data

`set_data` Changes your charts or account

Replace a chart's data with CSV, TSV or JSON rows, read the way a pasted or uploaded file is (header row, numbers and dates detected). Use it to show new numbers in a chart that is already designed. If the new data has the columns the chart had, by name, the chart keeps its roles, steps and colors. If the columns are different, roles are picked again: read the chart with [`get_chart`](https://chartjuice.com/docs/mcp/#get_chart) to see what it charts now.

#### Describe the data

`describe_data` Only reads

A summary of each column the chart is drawn from, after its steps: numbers get their lowest, highest and average; text and dates get their most common values. Use it to understand data you haven't seen. For the rows themselves, use [`query_data`](https://chartjuice.com/docs/mcp/#query_data).

#### Query the data

`query_data` Only reads

Rows of the chart's data after its steps, with extra steps of your own if you like (they are tried, not saved). Use it to check what a sort, filter or total would give before adding it with [`apply_ops`](https://chartjuice.com/docs/mcp/#apply_ops).

### Images

#### Render a chart from data

`render_image` Only reads

A PNG of a chart drawn from a chart type and data you give, with nothing saved to the account. Use it when the person wants a picture and not a chart to keep or edit; to make a chart they can open later, use [`create_chart`](https://chartjuice.com/docs/mcp/#create_chart). `ops` style it before it is drawn. Counts toward the month's image renders, once for each different picture: 100 on the Free plan and 1,000 on Pro. On the Free plan the image carries a small chartjuice.com mark.

#### Create an image link

`create_image_url` Changes your charts or account

A link that shows a saved chart as an image to anyone who has it, with no key and no sign-in: for an `<img>` tag in an email, a doc, a dashboard or another site's page. The link is a live image. It shows the chart as it is now and changes when the chart is edited, so the picture in the email stays current. With `data`, the link draws the chart with that data in place of its own. The link is signed, so nobody can change it to show another chart. It works until its signing key is rotated or revoked on the account page, or for `expires_in` seconds if you give that. The link is for the site it was made on. Making a link costs nothing. Its picture counts toward the month's image renders once each time the chart changes, and once at the start of each month, however many people open it. On the Free plan the image carries a small chartjuice.com mark.

### Brand palette

#### Get the brand palette

`get_brand_palette` Only reads

The account's saved brand palette: the colors it uses for its own charts. `null` when none is saved. Apply it to a chart with the `setPalette` op.

#### Set the brand palette

`set_brand_palette` Changes your charts or account

Save the account's brand palette, replacing the one it had, or clear it with `null`. Saving a palette needs the Pro plan ([`forbidden_plan`](https://chartjuice.com/docs/limits/#forbidden_plan) otherwise).

#### Get colors from a website

`extract_brand_palette` Only reads

The brand colors a website uses, read from its page and stylesheets. Nothing is saved: look at the colors, then save the ones you want with [`set_brand_palette`](https://chartjuice.com/docs/mcp/#set_brand_palette). Needs the Pro plan, and an account can look up 20 websites a day.

### Account

#### Get the account

`get_account` Only reads

The plan, how many charts are saved against the plan's limit, and what is left of the request, render and image allowances. Check it before making many charts or images, and to explain a [`chart_limit_reached`](https://chartjuice.com/docs/limits/#chart_limit_reached), [`render_limit_reached`](https://chartjuice.com/docs/limits/#render_limit_reached) or [`image_limit_reached`](https://chartjuice.com/docs/limits/#image_limit_reached) refusal.

### Reference

#### List chart types

`list_chart_types` Only reads

Every chart type: what it is for, the data it needs (one column per role), and a short guide to its options. Read it to choose a chart for some data, then make it with [`create_chart`](https://chartjuice.com/docs/mcp/#create_chart).

#### List examples

`list_examples` Only reads

The gallery of example charts, each with sample data and a finished design. Pass an id as `example` to [`create_chart`](https://chartjuice.com/docs/mcp/#create_chart) to start from one.

#### List palettes

`list_palettes` Only reads

The preset color palettes. Apply one to a chart with the `setPalette` op and its colors.

#### Get the op catalog

`get_op_catalog` Only reads

Every op [`apply_ops`](https://chartjuice.com/docs/mcp/#apply_ops) takes, with its fields: as a compact text reference, and as a JSON Schema per op. Read it once before editing charts.

#### Look up the docs

`lookup_docs` Only reads

Search Chartjuice's reference: which chart suits what, how to shape data for each chart, palettes, number formats, plans and limits. Use it when unsure, before guessing.

## Good to know

### Your plan's limits apply

The assistant works within the same limits as the editor: how many charts you can save, how many pictures it can draw in a day, and how many requests it can send in a minute. [Limits and errors](https://chartjuice.com/docs/limits/) has the numbers. Each picture the assistant draws of a saved chart counts toward the day's images. A picture drawn from new data, and a picture shown by an image link, count toward the month's image renders, which [Chart images](https://chartjuice.com/docs/images/) explains.

### Your charts stay yours

Everything the assistant makes is saved to your account. Open the link it gives you to see the chart in the editor.

### Deleting is for good

The assistant can delete a chart when you ask it to, and there is no undo. Chartjuice marks that tool as one that deletes, so an assistant can check with you first.

### What you send is seen twice

The data you give your assistant for a chart goes to the company that makes the assistant as well as to Chartjuice, as everything you type to it does. Our [privacy policy](https://chartjuice.com/privacy-policy/) says what Chartjuice does with it, under Connected apps. What the assistant's maker does with it is in that company's own policy.

### How to disconnect

If you connected by signing in, choose Disconnect beside the app on your [account page](https://chartjuice.com/account), under Connected apps. If you connected with a key, revoke the key there, under API keys. Either way the assistant stops working with your charts at once. Then remove Chartjuice from the assistant's settings.

### If it does not connect

When you connect by signing in, the page that asks you to allow the app works once and for ten minutes. If it says the request has expired, go back to the assistant and connect again.

When you connect with a key, check the key. It starts with `cj_live_`, it has to be pasted whole, and the word `Bearer` and a space come before it. A key that was revoked no longer works, so make a new one.

### Where these steps come from

The steps for each assistant follow its maker's own instructions, as they stood on October 11, 2026: Anthropic's for [Claude](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) and [Claude Code](https://code.claude.com/docs/en/mcp), OpenAI's for [ChatGPT](https://developers.openai.com/api/docs/guides/custom-mcp-server), and the docs for [Cursor](https://cursor.com/docs/mcp) and [VS Code](https://code.visualstudio.com/docs/agents/reference/mcp-configuration). Menus change. If a step here does not match what you see, go by the assistant's own page. MCP is an open standard, described at [modelcontextprotocol.io](https://modelcontextprotocol.io).

## For developers

The Chartjuice MCP server is a remote server that we host, so there is nothing to install or run on your own machine. It speaks Streamable HTTP at the address above. It keeps no session: each request stands alone and is answered as JSON. It offers tools and two kinds of resource: `chartjuice://ops`, the list of chart edits, and `chartjuice://chart-types/{type}`, a guide to each chart type. The tools are the operations of the [REST API](https://chartjuice.com/docs/api/) under the same names, with the same limits and the same error codes. A refused tool call comes back as a result marked as an error, with the code and what to do about it.

A request with no key or token is answered 401 with a `WWW-Authenticate` header that points to the server's OAuth protected resource metadata, at `https://chartjuice.com/.well-known/oauth-protected-resource/mcp`. That names the authorization server, which supports the authorization code flow with PKCE and dynamic client registration. Ask for the scope `email`. An access token lasts a short time and comes with a refresh token.

---

This is https://chartjuice.com/docs/mcp/ as Markdown. Every docs page is listed at https://chartjuice.com/llms.txt.
