MCP server.
Plug Output Charts into the assistant you already use. It builds the dashboard, publishes it or shares it by email, and updates the same page next time.
- Server URL
https://api.outputcharts.com/mcp- Transport
- Streamable HTTP. No OAuth, nothing to install.
- Sign-in
- None to start. After that, your API key as a bearer token, or your key's own URL for chat apps that cannot send a header.
- Tools
- 22 with a Manage key;
signupanddescribe_visual_typeswith no key.
Two ways to start
No account yet. Add https://api.outputcharts.com/mcp with no sign-in. It offers two tools, signup and describe_visual_types. Ask the assistant to sign you up with your email address:
Sign me up for Output Charts with me@example.com, then make a published dashboard from the attached CSV and give me the link.signup opens your account on a seven-day Solo trial, no card, and answers with an API key, that key's MCP URL and a claim link. Reconnect with the key (the steps for your client are below) to get every tool, and open the claim link within 24 hours, or the tools pause until you do. If your address already has an account, signup makes nothing and says so; use the next way instead.
Already have an account. Make a key under Account → API keys. The page shows the key and its MCP URL once. A Manage key gets every tool; a Push only key gets the ones that read and send data. Keys are part of Solo, which every new account has for its first seven days.
Your key's URL, https://api.outputcharts.com/mcp/<your key>, is as secret as the key: whoever has it can use the key. Revoking the key on the keys page cuts the URL off too.
Claude
On claude.ai and in the desktop app (Pro, Max, Team and Enterprise; Free allows one custom connector): go to Customize → Connectors, click + Add, then Add custom connector. Name it Output Charts, paste the URL and click Continue; under Authentication choose No sign in, then click Add. In a chat, click + at the lower left, choose Connectors and switch Output Charts on. Paste your key's URL if you have one, or the plain URL to sign up first; after signup, add the mcpUrl it returns as a new connector and remove the first.
Claude Code, with no key yet:
claude mcp add --transport http output-charts https://api.outputcharts.com/mcpWith a key in OC_KEY (run claude mcp remove output-charts first if you added the keyless one):
claude mcp add --transport http output-charts https://api.outputcharts.com/mcp --header "Authorization: Bearer $OC_KEY"Cursor
The button installs the server with no key, for signup. With a key, put this in ~/.cursor/mcp.json, or .cursor/mcp.json in a project, and set OC_KEY in your shell profile so the key stays out of the file:
{
"mcpServers": {
"output-charts": {
"url": "https://api.outputcharts.com/mcp",
"headers": { "Authorization": "Bearer ${env:OC_KEY}" }
}
}
}ChatGPT
Custom MCP servers are available to Business, Enterprise and Edu workspaces on the web, and to some personal plans. Open chatgpt.com/plugins, click +, then Add custom MCP server. Name it Output Charts, enter your key's URL as the server URL, choose No authentication, accept the warning and click Create as a plugin. Install the plugin, then type @ in the prompt box and pick it. ChatGPT asks before each tool that writes.
Grok
Open grok.com/connectors, click New Connector, then Custom, and enter your key's URL. Grok finds the tools and uses them in your chats.
Any other client
VS Code, Windsurf, an agent framework or your own code: add https://api.outputcharts.com/mcp as a remote server over Streamable HTTP (some clients call the type http), with the header Authorization: Bearer <your key>. A client that cannot send headers uses your key's URL instead. When it asks how to sign in, choose none: there is no OAuth. The server answers each POST with JSON and keeps no event stream, so a GET answers 405.
The steps above use each vendor's own menus, which can change: Claude's, ChatGPT's and Grok's as of 2026-10-19, Cursor's as of 2026-11-12.
Instructions for the assistant
The server sends its own instructions when a client connects. For a bot or a project with standing instructions, paste this too:
You have Output Charts connected as tools. Call describe_visual_types once. Create a dashboard with its visuals and publish true in one create_dashboard call, using a ref you choose for the dashboard and each visual, so a later run finds them instead of making duplicates; give the person dashboard.url. Push new data with push_visual_data by the visual's id, append_rows to add rows, or batch_update for several visuals by ref. Work on one dashboard at a time. Never delete a dashboard. If a tool answers requires_solo, the trial has ended: call get_checkout_link and give the person the checkoutUrl; the tools work again once they pay. If a tool answers claim_required, the person has not claimed the account: give them the claimUrl from the result; the tools work again as soon as they open it.The tools
Each tool is one call of the agent API, with the same rules, answers and errors. Tool calls count against the key's 60 requests a minute; listing the tools does not.
| Tool | Needs | Call |
|---|---|---|
signup | No key | POST /v1/signup |
describe_visual_types | No key | GET /v1/schema |
whoami | Any key | GET /v1/me |
create_api_key | Manage | POST /v1/keys |
get_checkout_link | Manage | POST /v1/billing/checkout |
list_dashboards | Manage | GET /v1/dashboards |
create_dashboard | Manage | POST /v1/dashboards |
get_dashboard | Manage | GET /v1/dashboards/{id} |
update_dashboard | Manage | PATCH /v1/dashboards/{id} |
reorder_visuals | Manage | PUT /v1/dashboards/{id}/order |
publish_dashboard | Manage | POST /v1/dashboards/{id}/publish |
unpublish_dashboard | Manage | POST /v1/dashboards/{id}/unpublish |
share_dashboard | Manage | POST /v1/dashboards/{id}/shares |
list_shares | Manage | GET /v1/dashboards/{id}/shares |
revoke_share | Manage | DELETE /v1/dashboards/{id}/shares/{shareId} |
create_visual | Manage | POST /v1/dashboards/{id}/visuals |
batch_update | Any key | PUT /v1/dashboards/{id}/data |
get_visual | Any key | GET /v1/visuals/{id} |
update_visual | Manage | PATCH /v1/visuals/{id} |
delete_visual | Manage | DELETE /v1/visuals/{id} |
push_visual_data | Any key | PUT /v1/visuals/{id}/data |
append_rows | Any key | POST /v1/visuals/{id}/rows |
When the trial ends
After the seven days, on an account that has not paid, every tool but two answers requires_solo. Nothing is deleted: the dashboards and their pages stay up and the key pauses. whoami still says where the account stands, and get_checkout_link gives the assistant a Stripe Checkout link to hand you. The tools work again the moment you pay. See pricing.
The same flow over the plain API, line by line: a real run from a coding agent, sign-up to link in 2.2 seconds.