Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Smartsheet in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Smartsheet API 2.0 with a personal access token (US, EU, AU or Gov): search and read sheets, rows, columns, sheet summaries and cell history, comments and attachments, workspaces, folders, reports and dashboards, users and shares; add and update rows and columns, comment, create sheets, share and send update requests. Deleting rows installs switched off.
Try asking
Example prompts for Smartsheet
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Smartsheet, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Smartsheet
Smartsheet API 2.0 with a personal access token (US, EU, AU or Gov): search and read sheets, rows, columns, sheet summaries and cell history, comments and attachments, workspaces, folders, reports and dashboards, users and shares; add and update rows and columns, comment, create sheets, share and send update requests. Deleting rows installs switched off.
Setup
Setting up takes about 2 minutes. You need a Smartsheet plan with API access (Pro, Business, Enterprise or Advanced Work Management).
- Sign in to Smartsheet, click your account icon at the bottom left and open Apps & Integrations (or Personal Settings), then API Access.
- Click Generate new access token, give it a name such as AnythingMCP and copy the token. It is shown only once.
- Paste it into
SMARTSHEET_ACCESS_TOKEN, without the wordBearer. - Set
SMARTSHEET_API_URLto the host of your account's region:https://api.smartsheet.com/2.0for app.smartsheet.com (US),https://api.smartsheet.eu/2.0for app.smartsheet.eu,https://api.smartsheet.au/2.0for app.smartsheet.au orhttps://api.smartsheetgov.com/2.0for Smartsheet Gov. A token only works on the host of its own region; anywhere else Smartsheet answers 401 "invalid access token". - Install the connector and run
smartsheet_get_current_user: it shows whose token it is and confirms it.
Whose access: every call runs as the user who owns the token, with that user's access to each sheet, and the token can do whatever its user can do in Smartsheet. When that matters, generate the token as a dedicated user who only has access to the sheets the AI should see.
What it reads: a search across everything the user can open (names of sheets, reports, dashboards, folders, workspaces and templates, cell data, comments, attachments and summary fields), narrowed with scopes such as sheetNames; sheets with their columns (type, dropdown options, primary flag) and rows, each with row number, parent row for the hierarchy and cells as value and displayValue; a single row; a text search inside one sheet; sheet summary fields; the change history of a cell with who changed it and when; comment threads on sheets and rows; attachments, with a download link valid for about 2 minutes; workspaces and folders with what they contain; reports with rows gathered from several sheets, cells keyed by virtualColumnId; dashboards (called sights in the API) with their widgets; the users of the organisation account (system admins see everyone, other users a limited view) and who an item is shared with.
Big sheets: the AI first lists the columns for their ids and types, then reads a page of rows or only some rows with row_numbers, row_ids, column_ids or rows_modified_since.
What it writes: smartsheet_add_rows and smartsheet_update_rows (only the given cells change; a location field moves a row), smartsheet_add_columns and smartsheet_update_column (changing a column's type can convert or drop cell values), new comment threads on sheets and rows and replies to them, new sheets in a workspace or folder with your own columns or as a copy of a template or sheet, smartsheet_share_asset and smartsheet_create_update_request. These tools are on at install. Shares and update requests with send_email send emails, and followers of a sheet may be notified of new comments, so the AI shows you the recipients, access level and content first and waits for your yes.
Writing cells: a cell is {"columnId": <id>, "value": <value>}. DATE takes YYYY-MM-DD, CHECKBOX true or false, PICKLIST one of its options (other values are refused unless strict is false), CONTACT_LIST an email address, numbers are sent as numbers. A formula goes into "formula": "=..." instead of value. New rows need a location: toBottom, toTop, parentId or siblingId. Columns with a column formula, system columns (auto number, created date, modified by) and locked columns cannot be written.
Switched off at install: smartsheet_delete_rows, because deleted rows, together with their child rows, attachments and comments, cannot be restored through the API. An admin switches it on when the team needs it.
Data formats: sheets, rows, columns, workspaces, folders, reports and users have long numeric ids (up to 16 digits), which the AI passes as text exactly as returned. Dates and times are ISO 8601 in UTC; date cells are YYYY-MM-DD. Multi-contact and multi-picklist cells come back as text unless level (2 or 3) and include=objectValue are passed. accessLevel is VIEWER, COMMENTER, EDITOR, EDITOR_SHARE, ADMIN or OWNER. Write calls answer {"message": "SUCCESS", "resultCode": 0, "result": ...}; resultCode 3 means partial success.
Paging: sheets, columns, discussions, attachments, users and cell history page with page and page_size (100 by default; the answer carries totalPages and totalCount) or include_all. Workspaces, workspace and folder contents, dashboards and shares page with a token: the AI passes lastKey from the answer as last_key until it is missing.
Limits: 300 requests per minute per token, 30 per minute for cell history. A 429 answer (error code 4003) means waiting a minute. A bulk row call counts as one request; keep it under a few hundred rows.
Common errors: 401 (codes 1002, 1003, 1004) means an invalid or expired token, or the host of another region. 403 (1004) means the token's user may not open that item: share it with that user or use a token of a user who has access. 404 (1006) means the id does not exist or is not visible to the user. 400 comes with an errorCode and a message naming the problem, for example a value that is not in the dropdown list, a new row without a location or a write to a column that holds a column formula.
The connector does not upload files, does not delete sheets or columns and does not create workspaces or folders.
Prerequisites: SMARTSHEET_API_URL, SMARTSHEET_ACCESS_TOKEN
Install the connector locally
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, pick Smartsheet and paste in the env vars listed under Prerequisites.
Available tools
| Tool | What it does |
|---|---|
smartsheet_get_current_user | The user the access token belongs to: id, email, name, account (organisation) id and name, admin flags, locale and time zone |
smartsheet_list_sheets | List the sheets the user can open: id, name, access level, permalink, created and modified dates |
smartsheet_get_sheet | Read a sheet: its columns (id, title, type, options, primary) and rows, each row with id, rowNumber, parentId (for hierarchy) and cells as… |
smartsheet_get_row | Read one row of a sheet with its cells (columnId, value, displayValue), parent and sibling ids and modification date. include=columns adds… |
smartsheet_search_sheet | Search the text of one sheet: returns the matching rows (objectId is the row id, text shows the match, contextData the row content) |
smartsheet_search | Search everything the user can access: sheet, report, dashboard, folder, workspace and template names, cell data, comments, attachments and… |
smartsheet_list_columns | List the columns of a sheet: id, index, title, type (TEXT_NUMBER, DATE, DATETIME, CHECKBOX, PICKLIST, MULTI_PICKLIST, CONTACT_LIST… |
smartsheet_get_cell_history | The change history of one cell: every earlier value with modifiedAt and modifiedBy, newest first |
smartsheet_get_sheet_summary | Read the sheet summary fields of a sheet (the key-value fields shown in the Summary panel, often totals and project status): id, title… |
smartsheet_list_discussions | List the discussions (comment threads) of a sheet, on the sheet itself and on its rows: id, title, parentType (SHEET or ROW), parentId… |
smartsheet_list_row_discussions | List the discussions (comment threads) of one row |
smartsheet_list_attachments | List every attachment of a sheet (sheet, row and comment attachments): id, name, attachmentType (FILE, LINK, GOOGLE_DRIVE, ...), mimeType… |
smartsheet_list_row_attachments | List the attachments of one row, including those on its comments |
smartsheet_get_attachment | Get one attachment with a temporary download URL (url, valid for urlExpiresInMillis milliseconds, usually 2 minutes) for files, or the link… |
smartsheet_list_workspaces | List the workspaces the user can access: id, name, access level and permalink |
smartsheet_get_workspace | Read a workspace's metadata: id, name, access level, permalink, created and modified dates |
smartsheet_list_workspace_children | List what is directly inside a workspace: sheets, reports, dashboards (sights), folders and templates, each with id, name, resourceType and… |
smartsheet_get_folder | Read a folder's metadata: id, name, permalink, created and modified dates |
smartsheet_list_folder_children | List what is directly inside a folder: sheets, reports, dashboards, subfolders and templates |
smartsheet_list_reports | List the reports the user can open: id, name, access level, permalink and whether it is a sheet summary report |
smartsheet_get_report | Read a report: its columns (virtualId, title, type) and rows gathered from the source sheets, each row with sheetId and cells keyed by… |
smartsheet_list_dashboards | List the dashboards (called sights in the API) the user can open: id, name, access level and permalink |
smartsheet_get_dashboard | Read a dashboard: its widgets (type, title, position and content such as the sheet or report a chart or metric reads, rich text, shortcuts… |
smartsheet_list_users | List the users of the organisation account: id, email, name, status, admin and licensed-sheet-creator flags, seat type |
smartsheet_get_user | Read one user of the organisation: email, name, admin flags, status, title, department, sheet count |
smartsheet_list_shares | List who a sheet, report, dashboard or workspace is shared with: each share with id, type (USER or GROUP), email or groupId, name… |
smartsheet_add_rows | Add rows to a sheet |
smartsheet_update_rows | Change cells of existing rows, or move rows |
smartsheet_delete_rows | Delete rows from a sheet, with their child rows, attachments and comments |
smartsheet_add_columns | Add columns to a sheet |
smartsheet_update_column | Change a column: rename it, change its type or dropdown options, move it (index), hide or lock it, set a description, width, validation or… |
smartsheet_create_discussion | Start a comment thread on a sheet with a first comment |
smartsheet_create_row_discussion | Start a comment thread on one row of a sheet, with its first comment |
smartsheet_add_comment | Reply to an existing discussion (comment thread) on a sheet or row |
smartsheet_create_sheet_in_workspace | Create a sheet at the top level of a workspace, either with your own columns (exactly one with "primary": true, usually TEXT_NUMBER) or as… |
smartsheet_create_sheet_in_folder | Create a sheet inside a folder, with your own columns (exactly one primary) or as a copy of a template or sheet (from_id) |
smartsheet_share_asset | Share a sheet, report, dashboard or workspace with people (by email) or a group, at a given access level. send_email notifies them |
smartsheet_create_update_request | Email people an update request: a form where they can edit the given rows (and columns) without opening the sheet |
Example prompts
- "Show every row in the Project Tracker sheet whose status is At Risk, with owner and due date."
- "Add a row at the bottom of the Marketing Calendar sheet: Webinar, 2026-11-20, owner [email protected], status Planned."
- "Who changed the budget cell in row 14 of the Q4 Budget sheet, and what were the earlier values?"
- "Find every sheet, comment or attachment that mentions Project Apollo."
- "Read the sheet summary of Website Relaunch and tell me the overall status and percent complete."
Next steps
Was this guide helpful?