DocsAI assistants

MCP server

RenderChart's MCP server lets an AI assistant make charts for you. Ask for a chart in plain words and the assistant gets back a chart URL it can paste anywhere an image works: a chat reply, a document, a Slack message, a README. Nothing is rendered until someone loads the URL.

MCP needs a paid plan (Starter or above) and a verified email address.

Server URL: https://app.renderchart.com/mcp (Streamable HTTP).

Connecting

There are two ways to sign in, and the MCP page in the app (https://app.renderchart.com/mcp) shows copyable setup for each client.

  • OAuth. Connector clients such as Claude.ai, Claude Desktop and ChatGPT register themselves, send you to RenderChart to sign in and approve, and refresh their own access. You can see and revoke each authorisation on the MCP page.
  • A personal MCP token. For Claude Code, Cursor and any client that can send a header, create a token on the MCP page and send it as Authorization: Bearer rc_mcp_live_.... The token is shown once. Name your tokens after the machine or tool they live on, and revoke one the moment you stop using it.

Claude.ai and Claude Desktop (OAuth)

  1. In Claude, open Customize, then Connectors.
  2. Choose + and then Add custom connector.
  3. Paste https://app.renderchart.com/mcp and choose Add.
  4. Claude sends you to RenderChart to sign in and approve. Paid Claude plans can add any number of connectors; Claude's Free plan allows one.

ChatGPT (OAuth)

  1. In ChatGPT on the web, open Settings, then Security and login, and turn on Developer mode (Plus, Pro, Business, Enterprise and Education plans).
  2. Open Plugins, choose + and create an app for a remote MCP server.
  3. Use https://app.renderchart.com/mcp with OAuth authentication, and approve it when ChatGPT sends you to RenderChart.
  4. In a chat, choose + in the composer, then Developer mode, and pick the app.

Claude Code (token)

Create a token on the MCP page, then:

claude mcp add --transport http renderchart --scope user https://app.renderchart.com/mcp \
  --header "Authorization: Bearer rc_mcp_live_YOUR_TOKEN"

--scope user makes it available in every project; leave it out for the current project only.

Cursor (token)

Create a token, then add this to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "renderchart": {
      "url": "https://app.renderchart.com/mcp",
      "headers": {
        "Authorization": "Bearer rc_mcp_live_YOUR_TOKEN"
      }
    }
  }
}

Other clients

Any client that speaks Streamable HTTP and can send a header works with a personal token: the URL above, and Authorization: Bearer rc_mcp_live_YOUR_TOKEN. Clients that support OAuth with dynamic client registration can sign in instead; the discovery documents are at https://app.renderchart.com/.well-known/oauth-protected-resource/mcp and https://app.renderchart.com/.well-known/oauth-authorization-server.

What the assistant can do

Tools

Tool Does Needs
create_chart_url Turns a description of a chart into a chart URL, signed with your default key by default, and returns the URL, a Markdown image and an HTML snippet. Can save it as a short chart in the same call. Starter
create_short_chart Saves a chart behind a short URL (/s/{id}) that hides your key and data. Starter
update_short_chart Renames a short chart, or changes its data so the same URL shows the new chart within about five minutes. Starter to rename; Pro to change the data
list_short_charts Your saved charts, newest first, 50 at a time. Read-only. Starter
get_usage This month's renders against your monthly allowance, and when it renews. Read-only. Starter
list_chart_types The chart types and when to use each. Read-only. Starter

Every tool that takes a chart takes the same description:

Field Type Notes
type bar, hbar, line, area, pie, doughnut, radar, polar or scatter Default bar.
labels array of strings Category labels (the x axis, or the slices). Not for scatter.
x array of numbers scatter only: the x values shared by every series.
series array of {name?, values, colour?} One to ten. values are numbers, with null for a gap; every series has as many values as there are labels. colour is a hex colour such as #2563eb. pie, doughnut and polar take exactly one series.
title string Up to 200 characters.
options object Any of xlabel, ylabel, width and height (50 to 2000), dpr (1 to 3), background (hex or transparent), theme (light, dark, brand on Pro), legend (top, bottom, left, right, none), stacked, values, smooth (booleans), min, max (numbers), format (png, or pdf on Pro), and colours (hex colours, one per slice or series).

create_chart_url also takes sign (default true: the URL is signed with your default key, so it renders without the watermark) and short (default false: also save it as a short chart). create_short_chart and update_short_chart take a name (up to 80 characters); update_short_chart takes the chart's id.

The fields map onto the URL spec one to one: labels is x, each series is y1, n1, c1 and so on, width is w, background is bg, and the booleans become 1. When a label contains a comma the tool chooses a sep for you. The result of a chart tool is text an assistant can paste, plus the same fields as structured content:

{"url": "https://c.renderchart.com/?key=rc_pub_live_...&type=bar&x=Mon,Tue,Wed&y1=12,19,3&sig=...", "markdown": "![Signups](https://c.renderchart.com/?...)", "html": "<img src=\"https://c.renderchart.com/?...\" alt=\"Signups\" width=\"600\" height=\"400\">", "signed": true, "watermarked": false, "short_id": null}

create_short_chart and update_short_chart return the saved chart as the REST API shows it (id, name, url, type, params, version, render_count, last_rendered_at, created_at, updated_at) plus markdown and html. list_short_charts returns charts (the same shape) and next_cursor; get_usage returns plan, plan_name, period (start, end), limit (null when unlimited), used and remaining; list_chart_types returns types (type, use).

Chart parameters are checked by the same parser the chart endpoint uses, so a tool never returns a URL that would show the 400 image; an invalid description comes back as an error naming the field.

Resources

  • renderchart://docs/url-spec: the URL spec, for an assistant that wants to write URLs itself.
  • renderchart://docs/examples: where charts go and how (Examples).

Prompt

chart_from_table takes table (CSV, TSV or a Markdown table) and an optional goal (what the chart should show). It asks the assistant to read the table, choose the chart type by the rules in list_chart_types, call create_chart_url with sign on, and answer with the Markdown image and one sentence about what it shows.

Errors

A tool error is text that says what went wrong and what to do:

  • No key: "You have no active API key. Create one on the keys page: https://app.renderchart.com/keys."
  • Plan: "Editing a saved chart's data needs the Pro plan. On Starter, save a new short URL instead. Upgrade at https://app.renderchart.com/billing?plan=pro."
  • Invalid chart: the field and what is wrong with it, such as "series.0.values: Series 0 has 2 values but there are 3 labels." or, from the chart parser, "y: y must be numbers separated by ","."
  • Unknown chart: "There is no saved chart abc123 on this account. list_short_charts shows the ids."
  • Charts briefly unavailable: "Charts are briefly unavailable. Try again in a moment; nothing was saved."

A connection that is refused as a whole says why. No or invalid credentials give HTTP 401 with a WWW-Authenticate header pointing OAuth clients at the sign-in metadata. An unverified address, a Free plan, or an OAuth authorisation without MCP access gives HTTP 403 with a JSON-RPC error (code -32001) whose message says what to do and whose data carries reason (email_unverified, plan_required or insufficient_scope) and upgrade_url. Every account can make 120 calls a minute; more get HTTP 429.

Privacy

Each call is logged with its tool name, when it ran, how long it took and whether it succeeded, so you can see your own usage and we can keep the service healthy. The chart data itself is not logged separately: it is in the URL you asked for, exactly as with any other chart.

Next: REST API