Skip to Content
ResourcesIntegrationsProductivity & DocsGoogle Sheets

Google Sheets

Service domainSPREADSHEETS
Google Sheets icon
Arcade Optimized

Arcade.dev LLM tools for Google Sheets.

Author:Arcade
Version:8.0.0
Auth:User authorization via the Google auth provider
6tools
4require secrets

Google Sheets toolkit connects Arcade to Google Sheets (and Drive), enabling LLMs to create, read, edit, search, and audit spreadsheets on behalf of authenticated users.

Capabilities

  • Spreadsheet creation & editing — Create new spreadsheets or batch-edit existing ones using typed cell operations (updateCells, addSheet, sortRange, addConditionalFormatRule, autoResizeDimensions, and more); supports formulas, formatting, and structured table layouts.
  • Structure inspection & data reading — Inspect workbook structure (tabs, charts, merges, conditional formats, table regions) cheaply before reading, then pull specific cell ranges as grids with optional annotations and markdown/CSV/TSV export.
  • Search & discovery — Search a user's Google Drive for spreadsheets by title or content, returning metadata (title, ID, URL); excludes trashed files.
  • Edit history auditing — Retrieve revision history (contributor identity and timestamps) from Drive; supports summary mode (aggregates, recent preview) and paginated list mode for full history traversal.
  • Drive file picker integration — Generate a first-party Google Drive Picker URL to let users grant file-level access when a file is not found or access is denied, enabling retry flows.
  • User profile & permissions — Retrieve the authenticated user's name, email, profile picture, and Google Sheets access permissions.

OAuth

This toolkit uses OAuth 2.0 via Google. See the Arcade Google auth provider docs for setup details.

Secrets

ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL

This secret is a URL override or feature flag value that controls the behavior of the inline Google Drive Picker flow used by GoogleSheets.GenerateGoogleFilePickerUrl. It is not a credential issued by Google — it is a configuration value set by the developer (or Arcade platform operator) to enable or customize the picker URL endpoint used internally. Set this in your Arcade secrets configuration; no specific Google dashboard page issues it.

See the Arcade secrets configuration docs for how to define and manage secrets, and the Arcade secrets dashboard to set values.

Available tools(6)

6 of 6 tools
Operations
Behavior
Tool nameDescriptionSecrets
Create a new spreadsheet or batch-edit an existing one. Omit `spreadsheet_id` to create; provide it to edit. All writes flow through `requests[]` — typed operations like updateCells, addSheet, sortRange, addConditionalFormatRule, autoResizeDimensions, and more. For updateCells use ExtendedValue with an explicit type field (stringValue, numberValue, boolValue, formulaValue). By default, build clean, professional-looking tables with restrained, consistent formatting and plain-text tab names/headers (no emojis); only use emojis or decorative styling when the user explicitly asks for it.
1
Generate a URL where the user can grant this app access to specific Drive files. Opens Google's first-party Drive picker. The user selects which files to share with this application — it is not a sign-in or credential prompt. Use this when a prior tool reported that a file was not found or access was denied, and the user expects the file to exist. After the user completes the picker flow, retry the prior tool.
Report who edited a spreadsheet and when, from Google Drive revisions. Reports the "who" and "when" only — not which cells changed, and it can't revert. 'summary' (default) answers "who last edited this and when" (read from the file's head, so always accurate), plus per-window aggregates (revisions read, contributors, first edit) and a preview of recent edits — computed over a bounded window of history per call. These aggregates describe the whole history only when `is_incomplete` is false; it is true when the scan was resumed from a token and/or more history remains. To answer "when was this first edited?" or "who contributed?" reliably, call from the beginning (no `pagination_token`) and check `is_incomplete` is false. `pagination_token` is returned when more pages remain so you can resume. 'list' returns one page of individual revisions, oldest first. Drive can't sort newest-first, so the most recent individual revisions are on the final page.
1
Inspect a Google Sheets spreadsheet's structure or read a range of cells. Use the default 'structure' mode to understand a workbook cheaply before reading. Switch to 'read' mode to pull a range as a grid of rows, optionally with per-cell annotations and a rendered markdown/csv/tsv export. In 'read' mode the response's per-tab 'sheets' block reports only tab identity and the allocated grid; its scan-derived fields (used_range, populated_cell_count, formula_cell_count, first_row, table_regions) are placeholders (0/empty) because read mode does not scan the tab — they do NOT mean the tab is empty or that it has no tables. The data you read is in the top-level 'range' and 'rows'. Call 'structure' mode for those aggregates and for the workbook's charts, merges, protected ranges, and conditional formats. Workflow for a tab that holds multiple tables, or a table that does not start at A1: call 'structure' first and use that tab's estimated 'table_regions' to choose the a1_range to read or filter, so you target one table instead of a glued multi-table range. Always check the response's top-level 'warnings' list: read mode reports there when a result was capped or trimmed (cell budget, the per-cell annotation cap, or an empty filter scan) and tells you how to recover (page 'next_range', narrow 'a1_range', 'select_columns', or request fewer annotation kinds).
1
Searches for spreadsheets in the user's Google Drive based on the titles and content and returns the title, ID, and URL for each matching spreadsheet. Does not return the content/data of the sheets in the spreadsheets - only the metadata. Excludes spreadsheets that are in the trash.
1
Get comprehensive user profile and Google Sheets environment information. This tool provides detailed information about the authenticated user including their name, email, profile picture, Google Sheets access permissions, and other important profile details from Google services.

Selected tools

No tools selected.

Click "Show all tools" to add tools.

Requirements

Select tools to see requirements

#

GoogleSheets.CreateOrEditSpreadsheet

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
CreateUpdateDelete
Service domains
Spreadsheets
MCP behavior
No

Reads data without modifying any state in the target system.

Yes

May permanently delete or overwrite data in the target system.

No

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Create a new spreadsheet or batch-edit an existing one. Omit `spreadsheet_id` to create; provide it to edit. All writes flow through `requests[]` — typed operations like updateCells, addSheet, sortRange, addConditionalFormatRule, autoResizeDimensions, and more. For updateCells use ExtendedValue with an explicit type field (stringValue, numberValue, boolValue, formulaValue). By default, build clean, professional-looking tables with restrained, consistent formatting and plain-text tab names/headers (no emojis); only use emojis or decorative styling when the user explicitly asks for it.

Parameters

ParameterTypeReq.Description
requestsarray<json>OptionalA list of Google Sheets `spreadsheets.batchUpdate` request objects. Each object must have exactly one key naming the operation. Examples: FIELDS MASK: updateCells, repeatCell, updateSheetProperties, and updateDimensionProperties take a `fields` mask listing which sub-fields to write — anything you set but don't name is silently ignored. You can OMIT `fields` and the tool auto-derives it from the data you provide (recommended). Pass an explicit `fields` only for surgical edits, or `fields: "*"` to overwrite every sub-field (clearing ones you didn't provide). updateCells — write typed values and formatting to a range. Use `range` OR `start` to anchor the write. Values must be wrapped in `userEnteredValue` with an explicit type field (stringValue, numberValue, boolValue, formulaValue). `fields` is auto-derived when omitted: {"updateCells": {"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 1, "startColumnIndex": 0, "endColumnIndex": 3}, "rows": [{"values": [{"userEnteredValue": {"stringValue": "Name"}, "userEnteredFormat": {"textFormat": {"bold": true}}}, {"userEnteredValue": {"numberValue": 42}}, {"userEnteredValue": {"formulaValue": "=SUM(B1:B10)"}}]}], "fields": "userEnteredValue,userEnteredFormat.textFormat.bold"}} repeatCell — apply one CellData to every cell in a range. Good for painting formatting, notes, or validation without enumerating rows: {"repeatCell": {"range": {"sheetId": 0, "startRowIndex": 1, "endRowIndex": 100}, "cell": {"userEnteredFormat": {"backgroundColorStyle": {"rgbColor": {"red": 0.95, "green": 0.95, "blue": 0.95}}}}, "fields": "userEnteredFormat.backgroundColorStyle"}} updateBorders — set per-edge borders. Each side takes a Border with a style (SOLID, DASHED, DOTTED, NONE, SOLID_MEDIUM, SOLID_THICK, DOUBLE): {"updateBorders": {"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 3, "startColumnIndex": 0, "endColumnIndex": 3}, "top": {"style": "SOLID_THICK"}, "bottom": {"style": "SOLID_THICK"}, "left": {"style": "SOLID"}, "right": {"style": "SOLID"}, "innerHorizontal": {"style": "DASHED"}, "innerVertical": {"style": "DASHED"}}} addSheet — create a new tab. Omit sheetId to let Google assign one; read the new ID from created_resources in the reply: {"addSheet": {"properties": {"title": "Q2", "index": 1, "gridProperties": {"rowCount": 200, "columnCount": 26, "frozenRowCount": 1}}}} deleteSheet — remove a tab permanently by sheetId: {"deleteSheet": {"sheetId": 1234567890}} duplicateSheet — clone a tab. newSheetId is auto-assigned when omitted: {"duplicateSheet": {"sourceSheetId": 0, "insertSheetIndex": 1, "newSheetName": "Copy of Q1"}} updateSheetProperties — rename, reorder, freeze rows/columns, or recolor a tab. fields is rooted at properties: {"updateSheetProperties": {"properties": {"sheetId": 0, "gridProperties": {"frozenRowCount": 1}}, "fields": "gridProperties.frozenRowCount"}} updateSpreadsheetProperties — rename the whole spreadsheet (file) or change workbook-level properties. Use this (not updateSheetProperties) to change the spreadsheet title: {"updateSpreadsheetProperties": {"properties": {"title": "Q3 Report"}, "fields": "title"}} insertDimension — add rows or columns. Both startIndex and endIndex are REQUIRED: {"insertDimension": {"range": {"sheetId": 0, "dimension": "ROWS", "startIndex": 2, "endIndex": 4}, "inheritFromBefore": true}} deleteDimension — remove rows or columns. Apply largest-index first within a batch to avoid index shift: {"deleteDimension": {"range": {"sheetId": 0, "dimension": "COLUMNS", "startIndex": 5, "endIndex": 8}}} mergeCells — mergeType is MERGE_ALL, MERGE_COLUMNS, or MERGE_ROWS: {"mergeCells": {"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 1, "startColumnIndex": 0, "endColumnIndex": 5}, "mergeType": "MERGE_ALL"}} unmergeCells — range must not partially span an existing merge: {"unmergeCells": {"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 1, "startColumnIndex": 0, "endColumnIndex": 5}}} findReplace — scope with ONE of range, sheetId, or allSheets: {"findReplace": {"find": "TBD", "replacement": "N/A", "matchCase": false, "matchEntireCell": true, "allSheets": true}} addNamedRange — create a workbook-scoped named range. Server assigns namedRangeId: {"addNamedRange": {"namedRange": {"name": "revenue", "range": {"sheetId": 0, "startRowIndex": 1, "endRowIndex": 1000, "startColumnIndex": 1, "endColumnIndex": 2}}}} addProtectedRange — lock a range. warningOnly=true gives soft protection: {"addProtectedRange": {"protectedRange": {"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 1}, "description": "Do not edit headers", "warningOnly": true}}} setDataValidation — attach a validation rule to a range. Omit rule to clear: {"setDataValidation": {"range": {"sheetId": 0, "startRowIndex": 1, "endRowIndex": 100, "startColumnIndex": 2, "endColumnIndex": 3}, "rule": {"condition": {"type": "ONE_OF_LIST", "values": [{"userEnteredValue": "PENDING"}, {"userEnteredValue": "DONE"}]}, "strict": true, "showCustomUi": true}}} addConditionalFormatRule — insert a conditional-format rule at given index. Use booleanRule for categorical formatting: {"addConditionalFormatRule": {"index": 0, "rule": {"ranges": [{"sheetId": 0, "startRowIndex": 1, "endRowIndex": 100}], "booleanRule": {"condition": {"type": "NUMBER_LESS", "values": [{"userEnteredValue": "0"}]}, "format": {"backgroundColorStyle": {"rgbColor": {"red": 1.0, "green": 0.9, "blue": 0.9}}}}}}} addChart — embed a chart. Server assigns chartId in the reply: {"addChart": {"chart": {"spec": {"title": "Revenue by quarter", "basicChart": {"chartType": "COLUMN", "domains": [{"domain": {"sourceRange": {"sources": [{"sheetId": 0, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 1}]}}}], "series": [{"series": {"sourceRange": {"sources": [{"sheetId": 0, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 1, "endColumnIndex": 2}]}}}]}}, "position": {"newSheet": true}}}} sortRange — sort rows in a range by one or more columns. sortSpecs is ordered by priority (first = primary sort key). sortOrder is ASCENDING or DESCENDING: {"sortRange": {"range": {"sheetId": 0, "startRowIndex": 1, "endRowIndex": 100, "startColumnIndex": 0, "endColumnIndex": 5}, "sortSpecs": [{"dimensionIndex": 0, "sortOrder": "ASCENDING"}, {"dimensionIndex": 2, "sortOrder": "DESCENDING"}]}} autoResizeDimensions — resize columns or rows to fit their content. dimension is COLUMNS or ROWS: {"autoResizeDimensions": {"dimensions": {"sheetId": 0, "dimension": "COLUMNS", "startIndex": 0, "endIndex": 3}}} NOTE: the tool automatically runs all autoResizeDimensions requests in a second batchUpdate call after all other requests have been applied. This ensures the resize measures post-write cell contents, including spilling formulas (ARRAYFORMULA, SEQUENCE, MAKEARRAY, QUERY) whose spill values only exist after the first call returns. If the resize call fails (e.g. transient error), writes are unaffected and a warning is returned instead of an error. updateDimensionProperties (pixelSize) sets an explicit pixel width and does not need this treatment — it can stay in the same batch as writes. updateDimensionProperties — set explicit pixel size or hide a row/column. fields is a mask rooted at DimensionProperties: {"updateDimensionProperties": {"range": {"sheetId": 0, "dimension": "COLUMNS", "startIndex": 1, "endIndex": 2}, "properties": {"pixelSize": 200}, "fields": "pixelSize"}}
spreadsheet_idstringOptionalID of an existing spreadsheet to edit. Omit to create a new spreadsheet.
titlestringOptionalTitle for a newly created spreadsheet. Ignored when spreadsheet_id is provided. Defaults to 'Untitled spreadsheet'.

Requirements

Secrets:ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL

Output

Type:jsonSpreadsheet state after the operation.
#

GoogleSheets.GenerateGoogleFilePickerUrl

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Spreadsheets
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Generate a URL where the user can grant this app access to specific Drive files. Opens Google's first-party Drive picker. The user selects which files to share with this application — it is not a sign-in or credential prompt. Use this when a prior tool reported that a file was not found or access was denied, and the user expects the file to exist. After the user completes the picker flow, retry the prior tool.

Parameters

No parameters required.

Requirements

No secrets required

Output

Type:jsonGoogle File Picker URL for user file selection and permission granting
#

GoogleSheets.GetSpreadsheetEditHistory

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Spreadsheets
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Report who edited a spreadsheet and when, from Google Drive revisions. Reports the "who" and "when" only — not which cells changed, and it can't revert. 'summary' (default) answers "who last edited this and when" (read from the file's head, so always accurate), plus per-window aggregates (revisions read, contributors, first edit) and a preview of recent edits — computed over a bounded window of history per call. These aggregates describe the whole history only when `is_incomplete` is false; it is true when the scan was resumed from a token and/or more history remains. To answer "when was this first edited?" or "who contributed?" reliably, call from the beginning (no `pagination_token`) and check `is_incomplete` is false. `pagination_token` is returned when more pages remain so you can resume. 'list' returns one page of individual revisions, oldest first. Drive can't sort newest-first, so the most recent individual revisions are on the final page.

Parameters

ParameterTypeReq.Description
spreadsheet_idstringRequiredThe id of the spreadsheet to get the edit history for.
modestringOptional'summary' (default): the latest edit, plus per-window aggregates (revisions read, contributors, first edit) that cover the whole history only when is_incomplete is false, and a preview of recent edits. 'list': one page of individual revisions.
summarylist
limitintegerOptionalMax revisions per page in 'list' mode. Between 1 and 50. Defaults to 20. Ignored in 'summary' mode.
pagination_tokenstringOptionalToken from a previous response's pagination_token, to continue reading more history. Works in both modes.

Requirements

Secrets:ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL

Output

Type:jsonEdit history: who modified the spreadsheet and when. Always has spreadsheet_id and mode. 'summary' adds an accurate last_modified_time/last_modified_by, best-effort window_revision_count/contributors/first_modified_time, recent_edits, and is_incomplete. 'list' adds a page of revisions with revisions_count, limit, ordering, has_next_page. Both modes return a pagination_token when more history remains.
#

GoogleSheets.InspectSpreadsheet

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Spreadsheets
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Inspect a Google Sheets spreadsheet's structure or read a range of cells. Use the default 'structure' mode to understand a workbook cheaply before reading. Switch to 'read' mode to pull a range as a grid of rows, optionally with per-cell annotations and a rendered markdown/csv/tsv export. In 'read' mode the response's per-tab 'sheets' block reports only tab identity and the allocated grid; its scan-derived fields (used_range, populated_cell_count, formula_cell_count, first_row, table_regions) are placeholders (0/empty) because read mode does not scan the tab — they do NOT mean the tab is empty or that it has no tables. The data you read is in the top-level 'range' and 'rows'. Call 'structure' mode for those aggregates and for the workbook's charts, merges, protected ranges, and conditional formats. Workflow for a tab that holds multiple tables, or a table that does not start at A1: call 'structure' first and use that tab's estimated 'table_regions' to choose the a1_range to read or filter, so you target one table instead of a glued multi-table range. Always check the response's top-level 'warnings' list: read mode reports there when a result was capped or trimmed (cell budget, the per-cell annotation cap, or an empty filter scan) and tells you how to recover (page 'next_range', narrow 'a1_range', 'select_columns', or request fewer annotation kinds).

Parameters

ParameterTypeReq.Description
spreadsheet_idstringRequiredThe id of the spreadsheet to inspect.
modestringOptionalWhat to return. 'structure' (default) gives a cheap workbook overview: every tab's ids, allocated grid, frozen panes, merges, charts, protected ranges, conditional-format counts, real used range, first row, and ESTIMATED table_regions (A1 ranges of distinct data blocks per tab — a heuristic for spotting multiple tables in one tab; scope a1_range to one of these to read or filter a single table; empty for tabs too large to peek). 'read' pulls cell data from one tab.
structureread
sheet_idintegerOptionalRead mode only: select the tab by its numeric sheetId. Mutually exclusive with sheet_title. Defaults to the first tab when both are omitted.
sheet_titlestringOptionalRead mode only: select the tab by name. Mutually exclusive with sheet_id. Defaults to the first tab when both are omitted.
a1_rangestringOptionalRead mode only: the range of cells to pull, in A1 notation (e.g. 'A1:F100'), WITHIN the selected tab — the tab is chosen by sheet_id/sheet_title, and any sheet prefix here (e.g. 'Other!A1:B2') is ignored. Defaults to the tab's used range. This is also the paging knob — request the next range to page.
annotationsarray<string>OptionalRead mode only: per-cell extras to include — pass only the kinds you need (e.g. ['formulas','notes']); each extra kind adds payload. Omit or leave empty to return values only (cheaper). Returned sparsely — one entry only per cell that carries a requested extra — and capped at the first 500 entries (row-major). Over that cap a warning is returned; rows may extend past the annotated slice, so a missing annotation beyond the cap is NOT authoritative — re-read a narrower a1_range, use select_columns, or request fewer kinds to confirm.
formulasnotesnumber_formatsdata_validationconditional_formatsmergestypeshyperlinksprotectedspill
export_asstringOptionalRead mode only: also render the returned values as text. Omit to return structured values only. csv/tsv are lossless; markdown is display-oriented (in-cell newlines become <br>, pipes are escaped).
markdowncsvtsv
value_renderstringOptionalRead mode only: 'formatted' (default) returns display strings like '$1,234.50'; 'unformatted' returns raw values suitable for math.
formattedunformatted
max_lengthintegerOptionalRead mode only: cap each returned cell string at this many characters. A longer cell becomes '<first chars>…(+N chars)' (the suffix is not counted; N = hidden chars). Pass 0 for full, untruncated strings; a positive value below the floor (or negative) clamps up to the floor. Filtering still matches the full cell value. Defaults to a small cap (50).
max_rowsintegerOptionalRead mode only: maximum rows to return. Sets truncated=True when the range has more rows; pass the returned next_range as a1_range to page. When filtering, this bounds the rows SCANNED per page (matches may be fewer, even 0 — page until next_range is empty). Also capped so rows x columns stays within 4000 cells: a wide range returns fewer rows than requested (with a warning) and pages the rest. Defaults to 200.
filter_conditionsarray<json>OptionalRead mode only: keep only rows matching these conditions. Each is {column, op, value} where column is the spreadsheet column LETTER (e.g. 'C'), NOT the header name, and must be inside a1_range. Ops: eq/ne (exact string), contains/not_contains (case-insensitive substring), gt/gte/lt/lte (NUMERIC only — text columns match nothing), blank/not_blank (value is ignored — pass ''). Numeric ops parse currency like $1,234.50, but NOT percents (21%) or other formatted text — set value_render='unformatted' and compare against the underlying number (percents are stored as fractions, e.g. 0.21 for 21%). A warning is returned when a numeric filter matches nothing it scanned. Scans within a1_range only — page next_range for completeness, and scope a1_range to a single homogeneous table (use structure mode's table_regions to find each table's range; exclude header/title rows, which would otherwise be filtered as data).
filter_combinestringOptionalRead mode only: how to combine multiple filter_conditions — a single top-level 'and'/'or' applied to all conditions (no nested grouping or mixed and/or). Defaults to 'and'.
andor
select_columnsarray<string>OptionalRead mode only: return only these columns, by spreadsheet column LETTER (not header name), in this order. Defaults to all columns in a1_range.
include_headersbooleanOptionalStructure mode only: include each tab's first row in the overview. Defaults to True.

Requirements

Secrets:ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL

Output

Type:jsonThe requested structure overview or range data.
#

GoogleSheets.SearchSpreadsheets

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Spreadsheets
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Searches for spreadsheets in the user's Google Drive based on the titles and content and returns the title, ID, and URL for each matching spreadsheet. Does not return the content/data of the sheets in the spreadsheets - only the metadata. Excludes spreadsheets that are in the trash.

Parameters

ParameterTypeReq.Description
spreadsheet_containsarray<string>OptionalKeywords or phrases that must be in the spreadsheet title. Provide a list of keywords or phrases if needed.
spreadsheet_not_containsarray<string>OptionalKeywords or phrases that must NOT be in the spreadsheet title. Provide a list of keywords or phrases if needed.
search_only_in_shared_drive_idstringOptionalThe ID of the shared drive to restrict the search to. If provided, the search will only return spreadsheets from this drive. Defaults to None, which searches across all drives.
include_shared_drivesbooleanOptionalWhether to include spreadsheets from shared drives. Defaults to False (searches only in the user's 'My Drive').
include_organization_domain_spreadsheetsbooleanOptionalWhether to include spreadsheets from the organization's domain. This is applicable to admin users who have permissions to view organization-wide spreadsheets in a Google Workspace account. Defaults to False.
order_byarray<string>OptionalSort order. Defaults to listing the most recently modified spreadsheets first. If spreadsheet_contains or spreadsheet_not_contains is provided, then the order_by will be ignored.
createdTimecreatedTime descfolderfolder descmodifiedByMeTimemodifiedByMeTime descmodifiedTimemodifiedTime descnamename descname_naturalname_natural descquotaBytesUsedquotaBytesUsed descrecencyrecency descsharedWithMeTimesharedWithMeTime descstarredstarred descviewedByMeTimeviewedByMeTime desc
limitintegerOptionalThe maximum number of spreadsheets to list. Defaults to 10. Max is 50
pagination_tokenstringOptionalThe pagination token to continue a previous request

Requirements

Secrets:ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL

Output

Type:jsonA dictionary containing the title, ID, and URL for each matching spreadsheet. Also contains a pagination token if there are more spreadsheets to list.
#

GoogleSheets.WhoAmI

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Spreadsheets
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Get comprehensive user profile and Google Sheets environment information. This tool provides detailed information about the authenticated user including their name, email, profile picture, Google Sheets access permissions, and other important profile details from Google services.

Parameters

No parameters required.

Requirements

No secrets required

Output

Type:jsonGet comprehensive user profile and Google Sheets environment information.
Last updated on