Skip to content

MCP Tools Reference

The InstaCharts MCP server gives AI apps 14 tools. Your AI assistant picks the right tool based on what you ask, so you don’t need to name tools in your prompts. This page lists each tool, what it does and the inputs it takes, which helps when you want to understand what an assistant can do or are building your own agent.

MCP server URL: https://api.instacharts.io/mcp

How the data is organized

Data lives in sheets, sheets live in workspaces, and each chart is built on one sheet. A typical flow is:

  1. list_workspaces to pick a workspace.
  2. create_sheet, import_from_url or create_upload_link to add the data (or list_sheets and read_sheet to use data already in InstaCharts).
  3. update_chart to set up the sheet’s first chart, or create_chart for another one.
  4. get_chart_image to check how the chart looks.
  5. share_chart for a public link and embed code.

Columns can be named by their header text or by their id. Each new sheet comes with a blank first chart, returned as firstChartId, which the assistant sets up with update_chart.

Tool summary

ToolWhat it doesPermissionTask
list_workspacesLists your workspaces and whether you can edit in each oneViewFree
list_sheetsLists the sheets in a workspace with their sizeViewFree
read_sheetReads a sheet’s columns and a page of its rowsViewFree
list_chartsLists the charts built on a sheetViewFree
get_chart_imageRenders a chart as a PNG imageView1 task
create_sheetCreates a sheet from CSV text or rowsEdit1 task
import_from_urlCreates a sheet from a data file at a public linkEdit1 task
create_upload_linkReturns a one-time link for uploading a data fileEdit1 task for the upload
add_rowsAdds up to 1,000 rows to a sheetEdit1 task
update_rowsChanges cells in existing rowsEdit1 task
delete_rowsDeletes rows from a sheetEdit1 task
create_chartCreates a chart on a sheetEdit1 task
update_chartChanges a chart’s columns, type and settingsEdit1 task
share_chartMakes a chart public and returns its link and embed codeEdit1 task

Tools that need the edit permission only appear when you approve Create and edit your sheets, charts and embeds while connecting the AI app. See Permissions and Tasks.

Read tools

list_workspaces

Lists the workspaces your account can use, and whether you can edit in each one. This is where the assistant finds a workspaceId. Only workspaces on a paid plan are listed.

list_sheets

Lists the sheets (data tables) in a workspace along with their size.

InputRequiredDescription
workspaceIdYesThe workspace to list

read_sheet

Reads a sheet’s columns (id, name and type) and a page of its rows. Each row has a rowId that update_rows and delete_rows use.

InputRequiredDescription
sheetIdYesThe sheet to read
offsetNoRows to skip. Default 0
limitNoRows to return. Default 100, at most 1,000

list_charts

Lists the charts built on a sheet.

InputRequiredDescription
sheetIdYesThe sheet whose charts to list

get_chart_image

Renders a chart as a PNG image so the assistant can see how it looks. Counts as one task.

InputRequiredDescription
chartIdYesThe chart to render

Sheet tools

create_sheet

Creates a sheet in a workspace from CSV text or an array of rows, with the header row first. Column types (text, number, date, percent, currency) are detected from the values, and the workspace’s plan limits the rows and columns. Returns the new sheet with its columns and firstChartId.

InputRequiredDescription
workspaceIdYesThe workspace for the new sheet
nameNoSheet name, up to 100 characters
csvOne of csv or rowsComma separated text with a header row
rowsOne of csv or rowsRows of cell values, header row first

This tool suits small datasets. For a file at a public link use import_from_url, and for a local file or more than a few hundred rows use create_upload_link.

import_from_url

Creates a sheet from a data file at a public web address. InstaCharts downloads the file itself, so the data never has to pass through the conversation. Good sources include an open data portal’s CSV or JSON export link, a raw file on GitHub (raw.githubusercontent.com) or a Google Sheet published to the web as CSV.

The link has to download the file directly, be public and use https://. A link to a web page that displays the data is refused. CSV, TSV, Excel, OpenDocument, Numbers and JSON files work, up to the plan’s file size. An Excel file with several pages makes one sheet per page.

InputRequiredDescription
workspaceIdYesThe workspace for the new sheet
urlYesThe https:// address of the file
nameNoSheet name. Without one, the sheet takes the file’s name

To keep a sheet in sync with a link from the InstaCharts app, see Import and Sync from a Link.

Returns a one-time upload link (uploadUrl) that turns a data file into a new sheet. This is meant for files and datasets too large to send as CSV text. The file has to be sent within 15 minutes as an HTTP POST with multipart/form-data, with the file in a field named file:

Terminal window
curl -F "file=@sales.csv" <uploadUrl>

On Windows PowerShell use curl.exe. CSV, TSV, Excel, OpenDocument, Numbers and JSON files work, up to the size in maxFileSizeMB. The upload’s response is the new sheet, the same as create_sheet returns. Each link works once. Creating the link is free, and the upload counts as one task.

This tool needs an AI app that can send a file, such as one that can run commands (ex: Claude Code) or make HTTP requests.

InputRequiredDescription
workspaceIdYesThe workspace for the new sheet
nameNoSheet name. Without one, the sheet takes the file’s name

add_rows

Appends up to 1,000 rows to a sheet. Each row is an object of column name (or id) and value. Every chart on the sheet updates with the new rows.

InputRequiredDescription
sheetIdYesThe sheet to add to
rowsYesEx: [{"Region": "East", "Sales": 120}]

update_rows

Changes cells in existing rows, found by the rowId from read_sheet. Only the columns sent are changed.

InputRequiredDescription
sheetIdYesThe sheet to change
changesYesUp to 1,000 changes. Ex: [{"rowId": 3, "values": {"Sales": 150}}]

delete_rows

Deletes rows by the rowId from read_sheet. Deleted rows can’t be recovered.

InputRequiredDescription
sheetIdYesThe sheet to change
rowIdsYesUp to 1,000 row ids

Chart tools

create_chart

Creates a chart on a sheet. The workspace’s saved theme, fonts, colors and locale are applied.

  • x is the category or date column.
  • y is the number column being measured. Without y, the chart counts rows for each x value.
  • groupBy splits the values into series for grouped and stacked chart types. On a heatmap it is the second category.
  • aggregate defaults to sum for a number column and count for other columns.
InputRequiredDescription
sheetIdYesThe sheet to chart
typeYesThe chart type (see below)
xYesColumn name or id for the x axis
yNoColumn name or id for the values
groupByNoColumn name or id that splits the data into series
aggregateNosum, count, average, median, min, max, distinct, valid or missing. See Aggregation
dateGroupingNoyear, quarter, month, week, day, monthOfYear or dayOfWeek
titleNoChart title
subtitleNoChart subtitle
captionNoText under the chart
nameNoChart name in the sheet’s chart list
colorSchemeNoOne of the InstaCharts color schemes
sortNoauto, x, y or none
sortDescendingNotrue puts the largest value or last label first
horizontalNoBar charts only. Horizontal bars suit long category names
width, heightNoChart size in pixels, 200 to 3,000
gaugeMin, gaugeMax, gaugeTargetNoGauge charts only

Chart types

typeChartUses groupBy
barBar ChartNo
stackedBarStacked Bar ChartYes
groupedBarGrouped Bar ChartYes
lineLine ChartNo
groupedLineGrouped Line ChartYes
scatterScatterplot ChartNo
groupedScatterGrouped Scatterplot ChartYes
areaArea ChartNo
groupedAreaGrouped Area ChartYes
piePie ChartNo
radarRadar ChartYes
heatmapHeatmap ChartYes
mekkoMekko ChartYes
gaugeGauge ChartNo
groupedGaugeGrouped Gauge ChartYes

Date grouping

dateGrouping applies to date columns on the x axis. year, quarter, month, week and day follow the timeline. monthOfYear and dayOfWeek combine every year into 12 months or 7 weekdays. When it isn’t set, dates spanning more than 5 years are grouped by year, and dates spanning 2 to 5 years are grouped by month.

update_chart

Changes an existing chart, including the sheet’s blank first chart. Only the fields sent are changed. It takes chartId plus any of the create_chart inputs. Send null for groupBy or y to clear it.

InputRequiredDescription
chartIdYesThe chart to change

share_chart

Makes a chart public and returns its share link (shareUrl), its embed URL and the iframe embed code. Anyone with the link can see the chart. Send active: false to make the chart private again.

InputRequiredDescription
chartIdYesThe chart to share
activeNotrue shares the chart (default), false stops sharing

Read more about sharing charts and embedding charts in a website.