ChartKitMCP docs

Errors and limits

HTTP status codes, JSON-RPC errors, tool error results and how to fix them.

A request can fail at three levels. Check them in this order.

LevelHow you see itTypical cause
HTTPA status other than 200 or 202Missing or revoked token, a GET instead of a POST, a body that is not JSON
JSON-RPCAn error object instead of resultInput that does not validate, an unknown tool, method or chart id
Toolresult.isError is trueThe tool ran but could not finish: no plan or licence, no open deck, an unknown chart in update_chart

HTTP status codes

StatusMeaning
200The body holds the JSON-RPC response, which may itself be an error.
202The request held only notifications, which get no reply.
400The body is not valid JSON. The reply is JSON-RPC error -32700.
401No token, or a token the server does not accept: unknown, revoked, expired or malformed. See authentication.
405A method other than POST with a valid token. The server opens no event stream, so a GET gets JSON-RPC error -32000.
5xxA server or network problem. Retry with backoff.
Redirects

https://getchartkit.app/mcp answers with a redirect to https://www.getchartkit.app/mcp. Clients do not follow redirects for a POST, so the call fails. Use the www URL.

JSON-RPC errors

The HTTP status is 200 and the reply has an error with a code and a message. The message names the problem, often with the expected shape, so log it in full.

Responsejson
{
  "jsonrpc": "2.0",
  "id": 7,
  "error": {
    "code": -32603,
    "message": "table.values has 2 rows but table.series has 3 entries; values needs exactly one row per series (values[seriesIndex][categoryIndex]). Expected shape: …"
  }
}
CodeMessageWhen
-32700Parse errorThe request body is not JSON.
-32000Method not allowed.The HTTP method is not POST.
-32601Method not found: …The JSON-RPC method is not one the server answers.
-32602Unknown tool, Unknown chart id, chart_id must be a non-empty string, …An unknown tool name; a missing or unknown chart_id in get_chart_svg or get_live_chart_embed; update_chart with nothing to change; get_live_chart_embed with both or neither of chart_id and chart data; an invalid slide_number or mode.
-32603The validation message, or Failed to save chart (status …)The chart input for create_chart, visualize_data or get_live_chart_embed did not validate, or storing the chart failed. A failed save is safe to retry.
-32002Resource not found: …resources/read with an unknown uri.

With the MCP Python SDK, these raise mcp.MCPError, with the code in error.code and the text in error.message.

Tool error results

The call reached the tool, and the tool returned a normal result with isError: true. The reason is in content[0].text, and deck tools also put a short message in structuredContent.

Responsejson
{
  "jsonrpc": "2.0",
  "id": 8,
  "result": {
    "content": [{ "type": "text", "text": "Unknown chart id: q3Vt8wXc_LmZ0aBf" }],
    "isError": true
  }
}

Plan and licence

Signed in withResult textFix
OAuthChartKit in Claude and ChatGPT is part of Pro. Start a free Pro trial at https://www.getchartkit.app/dashboardUpgrade the account, start a trial, or join a team.
Team API keySays the team's licence is not active.Renew the Enterprise licence. The key works again without changes.

These checks run on every tool call. initialize and tools/list work without a plan.

By tool

ToolReturns isError when
update_chartThe chart id is unknown, the new input does not validate, or the change would turn a chart into or out of gantt or custom.
insert_chart_into_slidesThe chart id is unknown, no deck is open, deck matches no open deck, the deck did not answer, or the extension could not insert.
list_charts_in_deckThe deck did not answer, or the extension could not list its charts.
save_chart_modelThe chart id is unknown, the chart belongs to another user, or the save failed.

With a team API key, insert_chart_into_slides, list_open_decks and list_charts_in_deck are not available. Insert charts with the Google Slides API instead.

Limits

LimitValue
Stored chart model512 KB of JSON
Active API keys per team20
Charts listed by list_charts_in_deck60
text_scale in get_chart_svg1 to 2
Axis breaks per chart1
imageUrl and svgUrlValid for the chart's current version. After update_chart they return 404; use the new URLs.

Retries

  • Retry HTTP 5xx, timeouts and connection errors with exponential backoff.
  • Do not retry 401, 400, or a JSON-RPC error other than a failed save. The same request fails the same way.
  • Each successful create_chart call stores a new chart with a new id. If a retry might repeat a call that already succeeded, the extra chart is harmless but unused. update_chart with the same input gives the same chart.

Troubleshooting