Documentation Index
Fetch the complete documentation index at: https://docs.prisme.ai/llms.txt
Use this file to discover all available pages before exploring further.
Read & Write Values
Get, update, append and clear cell values across single ranges, multiple ranges or via data filters
Structure & Formatting
Add/delete sheets, insert/delete/resize rows and columns, merge cells, set borders, conditional formats, banding and charts
Data Operations
Find/replace, sort ranges, set the basic filter, manage named & protected ranges and developer metadata
Prerequisites
- A Google account with access to the spreadsheets you want to expose. For Google Workspace, the workspace admin may need to allow third-party OAuth apps.
- A Google Cloud project with the Google Sheets API enabled at console.cloud.google.com/apis/library/sheets.googleapis.com. Enable the Drive API too if you plan to locate spreadsheets via the Google Drive connector.
- A Google OAuth 2.0 Client of type Web application, created at console.cloud.google.com/apis/credentials. The Authorized redirect URIs must contain the value shown in the
OAuth Callback URLfield of the installed app instance (auto-populated on install — copy it back into the Google Cloud Console after installation). - An OAuth consent screen configured in the Google Cloud project. While the app is in Testing state, add the end-user’s email to Test users. The default scopes
spreadsheets+drive.filego through Google’s verification process when the consent screen moves to Production. - Base URL (default:
https://sheets.googleapis.com/v4)
The Google Sheets API cannot list or search spreadsheets. To find spreadsheets or obtain a
spreadsheetId, use the Google Drive connector — filter mimeType = application/vnd.google-apps.spreadsheet — then call spreadsheets.get here.- Usage as App
- Usage as MCP
Installation
- Go to Apps in your workspace
- Search for Google Sheets and install it
- Open the app instance configuration and fill in the required fields
Configuration
| Field | Description |
|---|---|
| Google Sheets API Base URL | Base URL of the Sheets API (default https://sheets.googleapis.com/v4) |
| Google OAuth Access Token (fallback) | Optional static OAuth access token used as a shared fallback for all users of this tenant. Stored as a workspace secret. Most deployments leave this empty and rely on per-user OAuth instead. |
| Google OAuth2 Client ID | Google OAuth Application Client ID. Create an OAuth client of type Web application in the Google Cloud Console |
| Google OAuth2 Client Secret | Google OAuth Client Secret, stored as a workspace secret |
| OAuth Callback URL | Auto-populated on install — paste this value into the Authorized redirect URIs list of your Google OAuth client |
| OAuth Authorize URL | Default https://accounts.google.com/o/oauth2/v2/auth |
| OAuth Token URL | Default https://oauth2.googleapis.com/token |
| OAuth Revoke URL | Default https://oauth2.googleapis.com/revoke |
| OAuth Scopes | Space-separated Google API scopes. Default https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive.file |
| Access Token TTL (seconds) | Default 3600 (Google access tokens expire in 1h; refresh is automatic) |
| MCP Endpoint | Auto-populated on install — URL of the MCP endpoint for this instance |
| MCP API Key | Auto-populated on install — signed key used in the mcp-api-key header. Do not modify |
MCP Endpoint, MCP API Key and OAuth Callback URL are generated automatically by the onInstall flow. The OAuth credentials (Google OAuth2 Client ID, Google OAuth2 Client Secret) must be filled in manually after creating the OAuth client in the Google Cloud Console.Authorize end-users
Once the app instance is configured, each end-user authorizes their own Google account through a browser-based consent screen:Trigger the connect flow
From an MCP client (Agent Creator capability or any tool client), call any data tool. If no OAuth session exists for the current user × tenant, the MCP server returns a
connector_auth_required payload with a connect_url. Alternatively, call the connect tool explicitly to receive the same payload.Open the connect URL
Open the returned URL in a browser tab where the user is already authenticated to Prisme.ai. The platform redirects to the Google OAuth consent screen.
Grant access
The user reviews the requested scopes (default
spreadsheets + drive.file) and clicks Allow. Google redirects back to the platform’s oauthCallback webhook.Available Instructions
Every instruction resolves credentials from the workspace configuration. Most operations target a singlespreadsheetId. Value operations use A1 notation ranges (e.g. Sheet1!A1:C10); structural operations target a sheet by its numeric sheetId (gid). Use batchUpdate directly to compose multiple structural changes in one atomic call.Spreadsheets
| Instruction | Arguments |
|---|---|
createSpreadsheet | properties, sheets, namedRanges |
getSpreadsheet | spreadsheetId*, ranges, includeGridData |
getSpreadsheetByDataFilter | spreadsheetId, dataFilters, includeGridData |
batchUpdateSpreadsheet | spreadsheetId, requests, includeSpreadsheetInResponse, responseRanges, responseIncludeGridData |
Values
| Instruction | Arguments |
|---|---|
getValues | spreadsheetId, range, majorDimension, valueRenderOption, dateTimeRenderOption |
updateValues | spreadsheetId, range, valueInputOption, values, majorDimension, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption |
appendValues | spreadsheetId, range, valueInputOption, values, majorDimension, insertDataOption, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption |
clearValues | spreadsheetId, range |
batchGetValues | spreadsheetId, ranges, majorDimension, valueRenderOption, dateTimeRenderOption |
batchUpdateValues | spreadsheetId, valueInputOption, data*, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption |
batchClearValues | spreadsheetId, ranges |
batchGetValuesByDataFilter | spreadsheetId, dataFilters, majorDimension, valueRenderOption, dateTimeRenderOption |
batchClearValuesByDataFilter | spreadsheetId, dataFilters |
batchUpdateValuesByDataFilter | spreadsheetId, valueInputOption, data*, includeValuesInResponse, responseValueRenderOption, responseDateTimeRenderOption |
Sheets (Tabs)
| Instruction | Arguments |
|---|---|
addSheet | spreadsheetId, properties |
deleteSheet | spreadsheetId, sheetId |
duplicateSheet | spreadsheetId, sourceSheetId, insertSheetIndex, newSheetId, newSheetName |
updateSheetProperties | spreadsheetId, properties, fields* |
copyToSheet | spreadsheetId, sheetId, destinationSpreadsheetId* |
Dimensions (Rows & Columns)
| Instruction | Arguments |
|---|---|
insertDimension | spreadsheetId, range, inheritFromBefore |
deleteDimension | spreadsheetId, range |
appendDimension | spreadsheetId, sheetId, dimension, length |
updateDimensionProperties | spreadsheetId, range, properties, fields |
autoResizeDimensions | spreadsheetId, dimensions |
moveDimension | spreadsheetId, source, destinationIndex* |
Cells
| Instruction | Arguments |
|---|---|
repeatCell | spreadsheetId, range, cell, fields |
updateCells | spreadsheetId, rows, fields*, start, range |
mergeCells | spreadsheetId, range, mergeType |
unmergeCells | spreadsheetId, range |
updateBorders | spreadsheetId, range, top, bottom, left, right, innerHorizontal, innerVertical |
Data
| Instruction | Arguments |
|---|---|
findReplace | spreadsheetId, find, replacement*, matchCase, matchEntireCell, searchByRegex, includeFormulas, range, sheetId, allSheets |
sortRange | spreadsheetId, range, sortSpecs* |
setBasicFilter | spreadsheetId, filter |
clearBasicFilter | spreadsheetId, sheetId |
Named Ranges
| Instruction | Arguments |
|---|---|
addNamedRange | spreadsheetId, namedRange |
deleteNamedRange | spreadsheetId, namedRangeId |
Protected Ranges
| Instruction | Arguments |
|---|---|
addProtectedRange | spreadsheetId, protectedRange |
deleteProtectedRange | spreadsheetId, protectedRangeId |
Conditional Formats
| Instruction | Arguments |
|---|---|
addConditionalFormatRule | spreadsheetId, rule, index |
deleteConditionalFormatRule | spreadsheetId, index, sheetId |
Charts
| Instruction | Arguments |
|---|---|
addChart | spreadsheetId, chart |
Banding
| Instruction | Arguments |
|---|---|
addBanding | spreadsheetId, bandedRange |
deleteBanding | spreadsheetId, bandedRangeId |
Developer Metadata
| Instruction | Arguments |
|---|---|
getDeveloperMetadata | spreadsheetId, metadataId |
searchDeveloperMetadata | spreadsheetId, dataFilters |
Arguments flagged with
* are required.DSUL Examples
Create a spreadsheet with two tabs
Append a row to the end of a table
Read two ranges in one call
Find & replace placeholders across an entire spreadsheet
Apply an atomic batchUpdate (freeze header + auto-resize columns)
Error Handling
| HTTP Status | Meaning | Typical Cause |
|---|---|---|
400 | Bad Request | Malformed range, missing valueInputOption, invalid Request object inside a batchUpdate |
401 | Unauthorized | Missing / expired OAuth token, revoked refresh token, user has not connected yet |
403 | Forbidden | Sheets API disabled in the Google Cloud project, scope insufficient, user lost access to the spreadsheet |
404 | Not Found | Spreadsheet / sheet / named range does not exist or the user has no access |
409 | Conflict | Optimistic concurrency failure in a batchUpdate with requiredRevisionId |
429 | Rate Limited | Per-user or per-project quota exhausted. Back off and retry |
500 / 503 | Server Error | Transient Google Sheets API error. Retry with exponential backoff |
Common Issues
“Not configured” — The app instance has no OAuth Client ID/Secret. Create an OAuth client in the Google Cloud Console and paste the credentials into the app configuration. “Invalid API key” (MCP) — Themcp-api-key header does not match the central app secret. Reinstall the app instance to regenerate a signed key.
“Credentials lookup failed” — The MCP endpoint could not reach the getConfig webhook of the installed app. Verify that the app instance is still installed in the expected workspace.
connector_auth_required — The calling user has no Google OAuth session yet for this tenant. The response payload includes a connect_url; relay it to the user so they can authorize their Google account.
redirect_uri_mismatch during the OAuth dance — The value of OAuth Callback URL in the app config has not been added to the Authorized redirect URIs of the Google OAuth client. Copy it back into the Google Cloud Console and retry.
Unable to parse range — The range argument is not valid A1 notation. The sheet name must be quoted with single quotes if it contains spaces (e.g. 'Q2 results'!A1:C10).
Missing valueInputOption (400) — Write operations (update, append, batchUpdate*) require valueInputOption: RAW or USER_ENTERED. The latter interprets formulas, dates and numbers like the Sheets UI.
“No spreadsheetId” / cannot list spreadsheets — The Google Sheets API does not expose a list/search endpoint. Pair this connector with the Google Drive connector to enumerate spreadsheets (mimeType = application/vnd.google-apps.spreadsheet), then call spreadsheets.get.
The user does not have sufficient permissions for file … (403) — The default scope drive.file only grants access to files the user created with the app or opened with the app. To work with arbitrary user spreadsheets, broaden the scope to https://www.googleapis.com/auth/spreadsheets.readonly + drive.readonly (read-only) or spreadsheets + drive (full Drive). Broader scopes require Google verification before going to production.
External Resources
Google Sheets API v4
Official Google Sheets REST API reference
Tool Agents
Build AI agents that call MCP tools dynamically