Google Sheets
Your Toolhouse AI Worker can connect to Googlesheets using 50 specialized tools.
Auth Connection
This service requires an auth connection to use its tools. You can set this up in your Toolhouse dashboard under Auth Connections.
Tools (50)
Googlesheets Add Sheet
Googlesheets Add SheetIntegration name: GOOGLESHEETS_ADD_SHEET
Adds a new sheet to a spreadsheet. Supports three sheet types: GRID, OBJECT, and DATA_SOURCE.
SHEET TYPES:
GRID (default): Standard spreadsheet with rows/columns. Use properties to set dimensions, tab color, etc.
OBJECT: Sheet containing a chart. Requires
objectSheetConfigwithchartSpec(basicChart or pieChart).DATA_SOURCE: Sheet connected to BigQuery. Requires
dataSourceConfigwith bigQuery spec andbigquery.readonlyOAuth scope.
OTHER NOTES:
Sheet names must be unique; use
forceUnique=trueto auto-append suffix (_2,_3) if name existsFor tab colors, use EITHER
rgbColorORthemeColor, not bothAvoid
indexwhen creating sheets in parallel (causes errors)OBJECT sheets are created via
addChartwithposition.newSheet=trueDATA_SOURCE sheets require
bigquery.readonlyOAuth scope
Use cases: Add standard grid sheet, create chart on dedicated sheet, connect to BigQuery data source.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
title
string
—
The name for the new sheet tab. Must be unique within the spreadsheet. Example: "Q3 Report", "Sales Data 2025". This is a convenience parameter - alternatively, you can set this via properties.title. Note: sheet_name is also accepted as an alias for title.
properties
object
—
Advanced sheet properties (grid dimensions, tab color, position, etc.). For simple cases, just use the 'title' parameter directly. Use this for additional customization.
force_unique
boolean
—
When True (default), automatically ensures the sheet name is unique by appending a numeric suffix (e.g., '_2', '_3') if the requested name already exists. This makes the action resilient to retries and parallel workflows. When False, the action fails with an error if a sheet with the same name already exists.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
REQUIRED. Cannot be empty. The ID of the target spreadsheet where the new sheet will be added. This is the long alphanumeric string in the Google Sheet URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). Use 'Search Spreadsheets' action to find the spreadsheet ID by name if you don't have it.
data_source_config
object
—
Configuration for creating a DATA_SOURCE sheet. DATA_SOURCE sheets connect to external data sources like BigQuery. The API uses addDataSource request which automatically creates the associated sheet. IMPORTANT: Requires additional OAuth scope: bigquery.readonly
object_sheet_config
object
—
Configuration for creating an OBJECT sheet (a sheet containing a chart). To create an OBJECT sheet, you must provide chart configuration. The API uses addChart with position.newSheet=true to create the chart on its own sheet.
Googlesheets Aggregate Column Data
Googlesheets Aggregate Column DataIntegration name: GOOGLESHEETS_AGGREGATE_COLUMN_DATA
Searches for rows where a specific column matches a value and performs mathematical operations on data from another column.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
operation
string
✅
"sum"
The mathematical operation to perform on the target column values.
sheet_name
string
✅
"Sheet1"
The name of the specific sheet within the spreadsheet. Matching is case-insensitive. If no exact match is found, partial matches will be attempted (e.g., 'overview' will match 'Overview 2025').
search_value
string
"HSR"
The exact value to search for in the search column. Case-sensitive by default. If not provided (or if search_column is not provided), all rows in the target column will be aggregated without filtering.
search_column
string
"A"
The column to search in for filtering rows. Can be a letter (e.g., 'A', 'B') or column name from header row (e.g., 'Region', 'Department'). If not provided, all rows in the target column will be aggregated without filtering.
target_column
string
✅
"D"
The column to aggregate data from. Can be a letter (e.g., 'C', 'D') or column name from header row (e.g., 'Sales', 'Revenue').
case_sensitive
boolean
true
Whether the search should be case-sensitive.
has_header_row
boolean
true
Whether the first row contains column headers. If True, column names can be used for search_column and target_column.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Sheets spreadsheet.
percentage_total
number
10000
For percentage operation, the total value to calculate percentage against. If not provided, uses sum of all values in target column.
additional_filters
array
—
Extra column=value conditions applied with AND logic on top of search_column/search_value. Use this to filter on multiple columns simultaneously. Example: [{"column": "Region", "value": "APAC"}] combined with search_column=Product/search_value=Beacon returns only rows where Product=Beacon AND Region=APAC.
Googlesheets Append Dimension
Googlesheets Append DimensionIntegration name: GOOGLESHEETS_APPEND_DIMENSION
Tool to append new rows or columns to a sheet, increasing its size. Use when you need to add empty rows or columns to an existing sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
length
integer
✅
10
The number of rows or columns to append.
sheet_id
integer
✅
0
The numeric ID of the sheet (not the sheet name). This is a non-negative integer found in the sheet's URL as the gid parameter (e.g., gid=0) or in the sheet properties. The first sheet in a spreadsheet typically has sheet_id=0.
dimension
string
✅
"ROWS"
Specifies whether to append rows or columns.
spreadsheet_id
string
✅
"1q2w3e4r5t6y7u8i9o0p"
The ID of the spreadsheet.
response_ranges
array
—
Limits the ranges of the spreadsheet to include in the response.
response_include_grid_data
boolean
—
True if grid data should be included in the response (if includeSpreadsheetInResponse is true).
include_spreadsheet_in_response
boolean
—
True if the updated spreadsheet should be included in the response.
Googlesheets Auto Resize Dimensions
Googlesheets Auto Resize DimensionsIntegration name: GOOGLESHEETS_AUTO_RESIZE_DIMENSIONS
Auto-fit column widths or row heights for a dimension range using batchUpdate.autoResizeDimensions. Use when you need to automatically adjust row heights or column widths to fit content after writing data.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
0
The numeric ID of the sheet to resize. Either sheet_id or sheet_name must be provided. If both are provided, sheet_name takes precedence and will be resolved to sheet_id.
dimension
string
✅
"COLUMNS"
The dimension to auto-resize. Use ROWS to auto-fit row heights or COLUMNS to auto-fit column widths.
end_index
integer
✅
3
The zero-based end index of the dimension range to resize (exclusive). Must be greater than start_index. For example, to resize columns A-C, use start_index=0 and end_index=3.
sheet_name
string
"Sheet1"
The name of the sheet to resize. Either sheet_id or sheet_name must be provided. Using sheet_name is recommended as it's more intuitive. If both sheet_id and sheet_name are provided, sheet_name takes precedence.
start_index
integer
✅
0
The zero-based start index of the dimension range to resize (inclusive). For columns, 0 = column A. For rows, 0 = row 1.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet containing the sheet to resize.
Googlesheets Batch Clear Values By Data Filter
Googlesheets Batch Clear Values By Data FilterIntegration name: GOOGLESHEETS_BATCH_CLEAR_VALUES_BY_DATA_FILTER
Clears one or more ranges of values from a spreadsheet using data filters. The caller must specify the spreadsheet ID and one or more DataFilters. Ranges matching any of the specified data filters will be cleared. Only values are cleared -- all other properties of the cell (such as formatting, data validation, etc..) are kept.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
dataFilters
array
✅
—
The DataFilters used to determine which ranges to clear.
spreadsheetId
string
✅
—
The ID of the spreadsheet to update.
Googlesheets Batch Get
Googlesheets Batch GetIntegration name: GOOGLESHEETS_BATCH_GET
Retrieves data from specified cell ranges in a Google Spreadsheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
ranges
array
"Sheet1"
A list of cell ranges in A1 notation from which to retrieve data. If this list is omitted, empty, or contains only empty strings, all data from the first sheet of the spreadsheet will be fetched. Empty strings in the list are automatically filtered out. Supported formats: (1) Bare sheet name like Sheet1 to get all data from that sheet, (2) Sheet with range like Sheet1!A1:B2, (3) Just cell reference like A1:B2 (uses first sheet). For sheet names with spaces or special characters, enclose in single quotes (e.g., "'My Sheet'" or "'My Sheet'!A1:B2"). IMPORTANT: For large sheets, always use bounded ranges with explicit row limits (e.g., Sheet1!A1:Z10000 instead of Sheet1!A:Z). Unbounded column ranges like A:Z on sheets with >10,000 rows may cause timeouts or errors. If you need all data from a large sheet, fetch in chunks of 10,000 rows at a time.
majorDimension
string
—
The major dimension for organizing data in results.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Spreadsheet from which data will be retrieved. This is the ID found in the spreadsheet URL after /d/. You can provide either the spreadsheet ID directly or a full Google Sheets URL (the ID will be extracted automatically).
valueRenderOption
string
—
How values should be rendered in the output. FORMATTED_VALUE: Values are calculated and formatted (default). UNFORMATTED_VALUE: Values are calculated but not formatted. FORMULA: Values are not calculated; the formula is returned instead.
dateTimeRenderOption
string
—
How dates and times should be rendered in the output. SERIAL_NUMBER: Dates are returned as serial numbers (default). FORMATTED_STRING: Dates returned as formatted strings.
empty_strings_filtered
boolean
—
Indicates whether empty strings were filtered from the response.
Googlesheets Batch Update
Googlesheets Batch UpdateIntegration name: GOOGLESHEETS_BATCH_UPDATE
DEPRECATED: Use GOOGLESHEETS_VALUES_UPDATE instead.
Write values to ONE range in a Google Sheet, or append as new rows if no start cell is given.
IMPORTANT: This tool does NOT accept the Google Sheets API's native batch format:
WRONG:
{"data": [{"range": "...", "values": [[...]]}], ...}CORRECT:
{"sheet_name": "...", "values": [[...]], "first_cell_location": "...", ...}
To update MULTIPLE ranges, make SEPARATE CALLS to this tool for each range.
Features:
Auto-expands grid for large datasets (prevents range errors)
Set
first_cell_locationto write at a specific position (e.g.,"A1","B5")Omit
first_cell_locationto append values as new rows at the end
Requirements: Target sheet must exist and spreadsheet must contain at least one worksheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
values
array
✅
[["Item","Cost","Stocked","Ship Date"],["Wheel",20.5,true,"2020-06-01"],["Screw",0.5,true,"2020-06-03"],["Nut",0.25,false,"2020-06-02"]]
A 2D array of cell values where each inner array represents a row. Values can be strings, numbers, booleans, or None/null for empty cells. Ensure columns are properly aligned across rows.
sheet_name
string
✅
"Sheet1"
The name of the specific sheet (tab) within the spreadsheet to update (required, separate from cell reference). Case-insensitive matching is supported (e.g., 'sheet1' will match 'Sheet1'). Note: Default sheet names are locale-dependent (e.g., 'Sheet1' in English, 'Foglio1' in Italian, 'Hoja 1' in Spanish, '시트1' in Korean, 'Feuille 1' in French). If you specify a common default name like 'Sheet1' and it doesn't exist, the action will automatically use the first sheet in the spreadsheet.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Sheets spreadsheet to be updated. Must be an alphanumeric string (with hyphens and underscores allowed) typically 44 characters long. Can be found in the spreadsheet URL between /d/ and /edit. Example: https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit has ID 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms.
value_input_option
string
"USER_ENTERED"
How input data should be interpreted. USER_ENTERED: Values are parsed as if typed by a user (e.g., strings may become numbers/dates, formulas are calculated). RAW: Values are stored exactly as provided without parsing (e.g., '123' stays as string, ' =SUM(A1:B1)' is not calculated).
first_cell_location
string
"A1"
The starting cell for the update range, specified as a single cell in A1 notation WITHOUT sheet prefix (e.g., 'A1', 'B2', 'AA931'). The update will extend from this cell to the right and down based on the provided values. Sheet name must be provided separately in the sheet_name field. If omitted or set to null, values are appended as new rows to the sheet. Note: Use only a single cell reference (e.g., 'AA931'), NOT a range (e.g., 'AA931:AF931') or sheet-prefixed notation (e.g., 'Sheet1!A1').
include_values_in_response
boolean
true
If set to True, the response will include the updated values in the spreadsheet.responses[].updatedData field. The updatedData object contains range (A1 notation), majorDimension (ROWS), and values (2D array of the actual cell values after the update).
Googlesheets Batch Update Values By Data Filter
Googlesheets Batch Update Values By Data FilterIntegration name: GOOGLESHEETS_BATCH_UPDATE_VALUES_BY_DATA_FILTER
Tool to update values in ranges matching data filters. Use when you need to update specific data in a Google Sheet based on criteria rather than fixed cell ranges.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
data
array
✅
—
The new values to apply to the spreadsheet. If more than one range is matched by the specified DataFilter the specified values are applied to all of those ranges. Can be provided as a JSON string or as a list of DataFilterValueRange objects.
spreadsheetId
string
✅
—
The ID of the spreadsheet to update.
valueInputOption
string
✅
—
How the input data should be interpreted. RAW: Values are stored exactly as entered, without parsing. USER_ENTERED: Values are parsed as if typed by a user (numbers stay numbers, strings prefixed with = become formulas, etc.). INPUT_VALUE_OPTION_UNSPECIFIED: Default input value option is not specified.
includeValuesInResponse
boolean
—
Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values.
responseValueRenderOption
string
—
Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
responseDateTimeRenderOption
string
—
Determines how dates, times, and durations in the response should be rendered. This is ignored if responseValueRenderOption is FORMATTED_VALUE. The default dateTime render option is SERIAL_NUMBER.
Googlesheets Clear Basic Filter
Googlesheets Clear Basic FilterIntegration name: GOOGLESHEETS_CLEAR_BASIC_FILTER
Tool to clear the basic filter from a sheet. Use when you need to remove an existing basic filter from a specific sheet within a Google Spreadsheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
✅
0
The ID of the sheet on which the basic filter should be cleared.
spreadsheet_id
string
✅
"abc123xyz789"
The ID of the spreadsheet.
response_ranges
array
—
Limits the ranges included in the response spreadsheet. Only applicable when include_spreadsheet_in_response is true.
response_include_grid_data
boolean
—
True if grid data should be returned in the response. Only applicable when include_spreadsheet_in_response is true.
include_spreadsheet_in_response
boolean
—
Determines if the update response should include the spreadsheet resource.
Googlesheets Clear Values
Googlesheets Clear ValuesIntegration name: GOOGLESHEETS_CLEAR_VALUES
Clears cell content (preserving formatting and notes) from a specified A1 notation range in a Google Spreadsheet; the range must correspond to an existing sheet and cells.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
range
string
✅
"Sheet1!A1:B10"
The A1 notation of the range to clear values from (e.g., 'Sheet1!A1:B2', 'MySheet!C:C', or 'A1:D5'). If the sheet name is omitted (e.g., 'A1:B2'), the operation applies to the first visible sheet.
spreadsheet_id
string
✅
"1qZ_g6N0g3Z0s5hJ2xQ8vP9r7T_u6X3iY2o0kE_l5N7M"
The unique identifier of the Google Spreadsheet from which to clear values. This ID can be found in the URL of the spreadsheet.
Googlesheets Create Chart
Googlesheets Create ChartIntegration name: GOOGLESHEETS_CREATE_CHART
Create a chart in a Google Sheets spreadsheet using the specified data range and chart type.
Conditional requirements:
Provide either a simple chart via
chart_type+data_range(basicChart), OR supply a fullchart_specsupporting all chart types. Exactly one approach should be used.When using
chart_spec, set exactly one of the union fields (basicChart | pieChart | bubbleChart | candlestickChart | histogramChart | waterfallChart | treemapChart | orgChart | scorecardChart).
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
title
string
"Sales Data"
Optional title for the chart.
sheet_id
integer
✅
0
The numeric sheetId (not the sheet name/title) of the worksheet where the chart will be created. This is a unique integer identifier for the sheet within the spreadsheet. The first/default sheet typically has sheetId=0. IMPORTANT: Use 'Get Spreadsheet Info' action to retrieve valid sheetIds - look for sheets[].properties.sheetId in the response. The sheetId must exist in the target spreadsheet; using an ID from a different spreadsheet will fail.
subtitle
string
"Q1 2024"
Optional subtitle for the chart.
chart_spec
object
{"pieChart":{"domain":{"sourceRange":{"sources":[{"sheetId":0,"endRowIndex":5,"startRowIndex":0,"endColumnIndex":1,"startColumnIndex":0}]}},"series":{"sourceRange":{"sources":[{"sheetId":0,"endRowIndex":5,"startRowIndex":0,"endColumnIndex":2,"startColumnIndex":1}]}},"legendPosition":"RIGHT_LEGEND"}}
Optional full ChartSpec object to send to the Google Sheets API. Use this to support ALL chart types and advanced options. Must set exactly one of: basicChart, pieChart, bubbleChart, candlestickChart, histogramChart, treemapChart, waterfallChart, orgChart, scorecardChart. See https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/charts#ChartSpec.
chart_type
string
✅
"COLUMN"
The type of chart to create. Case-insensitive. Supported types: BAR, LINE, AREA, COLUMN, SCATTER, COMBO, STEPPED_AREA (basic charts with axes), PIE (pie/donut charts), HISTOGRAM, BUBBLE, CANDLESTICK (requires 4+ data columns for low/open/close/high), TREEMAP, WATERFALL, ORG (organizational charts), SCORECARD. Each chart type uses its appropriate Google Sheets API spec structure. For advanced customization, provide chart_spec instead.
data_range
string
✅
"A1:C10"
A single contiguous range of data for the chart in A1 notation (e.g., 'A1:C10' or 'Sheet1!B2:D20'). Must be a single continuous range - comma-separated multi-ranges (e.g., 'A1:A10,C1:C10') are not supported. When chart_spec is not provided, the first column is used as the domain/labels and the remaining columns as series. IMPORTANT: PIE charts require at least 2 columns - the first column for category labels (domain) and the second column for numeric values (series). Single-column ranges are not supported for PIE charts.
x_axis_title
string
"Time Period"
Optional title for the X-axis.
y_axis_title
string
"Revenue ($)"
Optional title for the Y-axis.
background_red
number
0
Red component of chart background color (0.0-1.0). If not specified, uses default.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Sheets spreadsheet where the chart will be created. Must be the actual spreadsheet ID from the URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'), NOT the spreadsheet name or title. Find it in the URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit
background_blue
number
0
Blue component of chart background color (0.0-1.0). If not specified, uses default.
legend_position
string
"BOTTOM_LEGEND"
Position of the chart legend. Options: BOTTOM_LEGEND, TOP_LEGEND, LEFT_LEGEND, RIGHT_LEGEND, NO_LEGEND.
background_green
number
0
Green component of chart background color (0.0-1.0). If not specified, uses default.
Googlesheets Create Google Sheet1
Googlesheets Create Google Sheet1Integration name: GOOGLESHEETS_CREATE_GOOGLE_SHEET1
Creates a new Google Spreadsheet in Google Drive. If a title is provided, the spreadsheet will be created with that name. If no title is provided, Google will create a spreadsheet with a default name like 'Untitled spreadsheet'.
Optionally create the spreadsheet in a specific folder by providing either:
folder_id: The Google Drive folder ID (preferred, unambiguous)folder_name: The folder name (searches for exact match; if multiple folders match, returns choices)
If neither folder_id nor folder_name is provided, the spreadsheet is created in the root Drive folder.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
title
string
"Q4 Financial Report"
The title for the new Google Sheet. If omitted, Google will create a spreadsheet with a default name like 'Untitled spreadsheet'.
folder_id
string
"1a2b3c4d5e6f7g8h9i0j"
Google Drive folder ID where the spreadsheet should be created. If provided, the spreadsheet will be moved to this folder after creation. Takes precedence over folder_name.
folder_name
string
"Marketing Materials"
Google Drive folder name where the spreadsheet should be created. If provided and folder_id is not provided, the action will search for a folder with this exact name. If multiple folders match, you'll receive a list to choose from. If no folder matches, an error is returned.
Googlesheets Create Spreadsheet Column
Googlesheets Create Spreadsheet ColumnIntegration name: GOOGLESHEETS_CREATE_SPREADSHEET_COLUMN
Creates a new column in a Google Spreadsheet. Specify the target sheet using sheet_id (numeric) or sheet_name (text). If neither is provided, defaults to the first sheet (sheet_id=0).
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
0
The numeric identifier of the specific sheet (tab) within the spreadsheet. Defaults to 0 (the first sheet) if neither sheet_id nor sheet_name is provided. Use GOOGLESHEETS_GET_SHEET_NAMES or GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE to obtain the sheet_id from a sheet name.
sheet_name
string
"Sheet1"
The name (title) of the sheet/tab where the column will be added. If provided, the action will look up the sheet_id automatically. If both sheet_id and sheet_name are provided, sheet_id takes precedence.
insert_index
integer
0
The 0-based index at which the new column will be inserted. For example, an index of 0 inserts the column before the current first column (A), and an index of 1 inserts it between the current columns A and B.
spreadsheet_id
string
✅
"1qZysYd_N2cZ9gkZ8sR7M0rP8sX5vW2bA9gV3rF1cE0"
The unique identifier of the Google Spreadsheet where the column will be created.
response_ranges
array
["Sheet1!A1:D10"]
Limits the ranges of the spreadsheet to include in the response. Only used if includeSpreadsheetInResponse is true.
inherit_from_before
boolean
true
If true, the new column inherits properties (e.g., formatting, width) from the column immediately to its left (the preceding column). If false (default), it inherits from the column immediately to its right (the succeeding column). This is ignored if there is no respective preceding or succeeding column.
response_include_grid_data
boolean
true
If true, grid data will be included in the response (only used if includeSpreadsheetInResponse is true).
include_spreadsheet_in_response
boolean
true
If true, the updated spreadsheet will be included in the response. Defaults to true if not specified.
Googlesheets Create Spreadsheet Row
Googlesheets Create Spreadsheet RowIntegration name: GOOGLESHEETS_CREATE_SPREADSHEET_ROW
Inserts a new, empty row into a specified sheet of a Google Spreadsheet at a given index, optionally inheriting formatting from the row above.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
0
The numeric identifier of the sheet (tab) within the spreadsheet where the row will be inserted. This ID (gid) is found in the URL of the spreadsheet (e.g., '0' for the first sheet). Either sheet_id or sheet_name must be provided.
sheet_name
string
"Sheet1"
The human-readable name of the sheet (tab) within the spreadsheet where the row will be inserted (e.g., 'Sheet1'). Either sheet_id or sheet_name must be provided. If both are provided, sheet_id takes precedence.
insert_index
integer
0
The 0-based index at which the new row should be inserted. For example, an index of 0 inserts the row at the beginning of the sheet. If the index is greater than the current number of rows, the row is appended.
spreadsheet_id
string
✅
"1qpyC0XzHc_-_d824s2VfopkHh7D0jW4aXCS1D_AlGA"
The unique identifier of the Google Spreadsheet. Can be provided as the ID (e.g., '1qpyC0XzHc_-_d824s2VfopkHh7D0jW4aXCS1D_AlGA') or as a full URL (the ID will be extracted automatically).
response_ranges
array
["Sheet1!A1:D10"]
Limits the ranges included in the response spreadsheet. Only meaningful when include_spreadsheet_in_response is True. Use A1 notation (e.g., ['Sheet1!A1:D10']).
inherit_from_before
boolean
true
If True, the newly inserted row will inherit formatting and properties from the row immediately preceding its insertion point. If False, it will have default formatting.
response_include_grid_data
boolean
true
If True, grid data will be included in the response spreadsheet. Only meaningful when include_spreadsheet_in_response is True. Default is False.
include_spreadsheet_in_response
boolean
true
If True, the response will include the full updated Spreadsheet resource. Default behavior includes the spreadsheet when this parameter is not specified.
Googlesheets Delete Chart
Googlesheets Delete ChartIntegration name: GOOGLESHEETS_DELETE_CHART
Delete an existing chart from a Google Sheets spreadsheet. Use this action when you need to remove a chart that is no longer needed or needs to be replaced. This action is irreversible — once a chart is deleted, it cannot be recovered. The chart data source (the cells containing the data) remains unchanged; only the chart visualization is removed.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
chart_id
integer
✅
707876808
The unique numeric identifier of the chart to delete (also known as objectId or chartId). This is the chart's ID within the spreadsheet, not the sheet ID. You can retrieve chart IDs using the 'Get Spreadsheet Info' action - look for sheets[].charts[].chartId in the response. Each chart has a unique ID that persists until the chart is deleted.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Sheets spreadsheet containing the chart to delete. Must be the actual spreadsheet ID from the URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'), NOT the spreadsheet name or title. Find it in the URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit
Googlesheets Delete Dimension
Googlesheets Delete DimensionIntegration name: GOOGLESHEETS_DELETE_DIMENSION
Tool to delete specified rows or columns from a sheet in a Google Spreadsheet. Use when you need to remove a range of rows or columns.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
0
The unique numeric ID of the sheet (not the index/position). This ID is assigned by Google Sheets and does not change when sheets are reordered. Use GOOGLESHEETS_GET_SPREADSHEET_INFO to find the sheet ID, or use sheet_name instead. Either sheet_id or sheet_name must be provided.
dimension
string
"ROWS"
The dimension to delete (ROWS or COLUMNS).
end_index
integer
1
The zero-based end index of the range to delete, exclusive. Must be greater than start_index and at most equal to the sheet's current row/column count. Note: Cannot delete all rows or columns from a sheet - at least one row and one column must remain.
sheet_name
string
"Sheet1"
The name/title of the sheet from which to delete the dimension. Using sheet_name is recommended as it's more intuitive than sheet_id. Either sheet_id or sheet_name must be provided.
start_index
integer
0
The zero-based start index of the range to delete, inclusive. Must be less than end_index and within the sheet's current row/column count. Note: Cannot delete all rows or columns from a sheet - at least one row and one column must remain.
spreadsheet_id
string
✅
"abc123xyz789"
The ID of the spreadsheet.
response_ranges
array
["Sheet1!A1:B2","Sheet2!C:C"]
Limits the ranges of cells included in the response spreadsheet.
delete_dimension_request
object
—
The details for the delete dimension request object.
response_include_grid_data
boolean
true
True if grid data should be returned. This parameter is ignored if a field mask was set in the request.
include_spreadsheet_in_response
boolean
true
Determines if the update response should include the spreadsheet resource.
Googlesheets Delete Sheet
Googlesheets Delete SheetIntegration name: GOOGLESHEETS_DELETE_SHEET
Tool to delete a sheet (worksheet) from a spreadsheet. Use when you need to remove a specific sheet from a Google Sheet document.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheetId
integer
✅
123456789
The ID of the sheet to delete. Note: A spreadsheet must contain at least one sheet, so you cannot delete the last remaining sheet. If the sheet is of DATA_SOURCE type, the associated DataSource is also deleted.
spreadsheetId
string
✅
"abc123xyz789"
The ID of the spreadsheet from which to delete the sheet.
responseRanges
array
["Sheet1!A1:B10","Sheet2!C1:D20"]
Limits which ranges are returned when includeSpreadsheetInResponse is true. Only meaningful if includeSpreadsheetInResponse is set to true. Ranges should be in A1 notation (e.g., 'Sheet1!A1:B10').
responseIncludeGridData
boolean
—
True if grid data should be returned in the response spreadsheet. Only meaningful when includeSpreadsheetInResponse is true and no field mask is set on the request.
includeSpreadsheetInResponse
boolean
—
Determines if the spreadsheet resource should be returned in the response. If true, the response includes the updated spreadsheet resource with all its sheets, properties, and metadata.
Googlesheets Execute Sql
Googlesheets Execute SqlIntegration name: GOOGLESHEETS_EXECUTE_SQL
DEPRECATED: Use direct Google Sheets actions instead:
GOOGLESHEETS_VALUES_GET/GOOGLESHEETS_BATCH_GETfor readsGOOGLESHEETS_VALUES_UPDATE/GOOGLESHEETS_UPDATE_VALUES_BATCH/GOOGLESHEETS_SPREADSHEETS_VALUES_APPENDfor writes
Execute SQL queries against Google Sheets tables. Supports SELECT, INSERT, UPDATE, DELETE operations and WITH clauses (CTEs) with familiar SQL syntax. Tables are automatically detected and mapped from the spreadsheet structure.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sql
string
✅
"SELECT * FROM \"Sales_Data\" LIMIT 10"
Complete SQL query to execute. Must begin with SELECT, INSERT, UPDATE, DELETE, or WITH. Supports Common Table Expressions (CTEs) using WITH clause for complex queries. Note: WITH clauses require the sqlglot library for full support; simple SELECT/INSERT/UPDATE/DELETE operations work without it. Use table names (sheet names) in FROM/INTO clauses, not A1 range notation. The query must include proper SQL clauses (e.g., SELECT columns FROM table, not just a column name or condition). Example: SELECT * FROM "Sheet1" WHERE A = 'value' (correct) instead of just A = 'value' (incorrect).
dry_run
boolean
—
Preview changes without applying them (for write operations)
delete_method
string
—
For DELETE operations: 'clear' preserves row structure, 'remove_rows' shifts data up
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique alphanumeric ID of the Google Spreadsheet extracted from the URL. Format: A long string of letters, numbers, hyphens, and underscores (typically 44 characters). Find it in the URL: https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit. Must be a valid ID - values like 'auto' are NOT valid and will fail.
Googlesheets Find Replace
Googlesheets Find ReplaceIntegration name: GOOGLESHEETS_FIND_REPLACE
Tool to find and replace text in a Google Spreadsheet. Use when you need to fix formula errors, update values, or perform bulk text replacements across cells.
Common use cases:
Fix
#ERROR!cells by replacing with empty string or correct formulaUpdate old values with new ones across multiple cells
Fix formula references or patterns
Clean up data formatting issues
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
find
string
✅
"#ERROR!"
The text to find. Can be a literal string or a regular expression pattern.
range
string
"A1:B10"
A1 notation range string to search within (e.g., 'A1:B10', 'Sheet1!A1:B10'). When using A1 notation with a sheet name, you must also provide range_sheet_id to specify the numeric sheet ID (the API requires numeric IDs). Alternatively, use the GridRange parameters (range_sheet_id with optional row/column indices) for explicit numeric control. Mutually exclusive with sheet_id and all_sheets.
replace
string
✅
""
The text to replace the found instances with.
sheetId
integer
0
The numeric ID of the sheet to search the entire sheet (e.g., 0 for the first sheet). Mutually exclusive with sheet_name, range/range_sheet_id parameters, and all_sheets. You must specify exactly one scope: either sheet_id (entire sheet), sheet_name, range/range_sheet_id (specific range), or all_sheets.
allSheets
boolean
true
Whether to search across all sheets in the spreadsheet. Mutually exclusive with sheet_id and range parameters.
matchCase
boolean
true
Whether the search should be case-sensitive.
sheetName
string
"Sheet1"
The name/title of the sheet (tab) to search within (e.g., 'Sheet1', 'Sales Data'). The sheet name will be resolved to its numeric sheet ID. Mutually exclusive with sheet_id, range/range_sheet_id parameters, and all_sheets.
endRowIndex
integer
10
The end row (0-indexed, exclusive) of the range. Only used when range_sheet_id is provided without a range parameter.
rangeSheetId
integer
0
The numeric sheet ID for a GridRange-based search. Required when using the range parameter with A1 notation. Can also be used alone or with row/column index parameters to define a specific range. Mutually exclusive with sheet_id and all_sheets.
searchByRegex
boolean
true
Whether to treat the find text as a regular expression.
spreadsheetId
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet to update.
startRowIndex
integer
0
The start row (0-indexed, inclusive) of the range. Only used when range_sheet_id is provided without a range parameter.
endColumnIndex
integer
3
The end column (0-indexed, exclusive) of the range. Column A = 0, B = 1, etc. Only used when range_sheet_id is provided without a range parameter.
includeFormulas
boolean
true
Whether to include cells with formulas in the search. If true, formulas are searched and can be replaced. If false, only cell values (not formulas) are searched. If not specified, the default API behavior applies (both formulas and values are searched).
matchEntireCell
boolean
true
Whether to match only cells that contain the entire search term.
startColumnIndex
integer
0
The start column (0-indexed, inclusive) of the range. Column A = 0, B = 1, etc. Only used when range_sheet_id is provided without a range parameter.
Googlesheets Find Worksheet By Title
Googlesheets Find Worksheet By TitleIntegration name: GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE
DEPRECATED: Use GetSpreadsheetInfo instead.
Finds a worksheet by its exact, case-sensitive title within a Google Spreadsheet; returns a boolean indicating if found and the matched worksheet's metadata when found, or None when not found.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
spreadsheet_id
string
✅
"1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789_drivE"
The unique identifier of the Google Spreadsheet from the URL (e.g., https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit). Important: This is NOT the spreadsheet's display name/title. It is the long alphanumeric string (typically 40-45 characters) from the URL containing only letters, numbers, hyphens, and underscores.
worksheet_title
string
✅
"Sheet1"
The exact, case-sensitive title of the worksheet (tab name) to find.
Googlesheets Format Cell
Googlesheets Format CellIntegration name: GOOGLESHEETS_FORMAT_CELL
Applies text and background cell formatting to a specified range in a Google Sheets worksheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
red
number
"0.0"
Red component of the background color (0.0-1.0).
blue
number
"0.0"
Blue component of the background color (0.0-1.0).
bold
boolean
"true"
Apply bold formatting.
green
number
"0.0"
Green component of the background color (0.0-1.0).
range
string
"A1"
OPTION 1: Cell range in A1 notation (RECOMMENDED). Supports: single cells ('A1', 'F9'), cell ranges ('A1:B5'), entire columns ('A', 'I:J'), entire rows ('1', '1:5'). Also accepts sheet-prefixed ranges ('Sheet1!A1', 'Instagram Calendar!A1:E1') for convenience - if provided, the sheet prefix is stripped and ignored. The actual sheet used is determined by the sheet_name or worksheet_id parameter. Provide EITHER this field OR all four index fields below, not both.
italic
boolean
"true"
Apply italic formatting.
fontSize
integer
"10"
Font size in points.
underline
boolean
"true"
Apply underline formatting.
sheet_name
string
"Sheet1"
The worksheet name/title (e.g., 'Sheet1', 'Q3 Report'). Provide either this field OR worksheet_id, not both. If both are provided, sheet_name takes precedence and will be resolved to worksheet_id.
worksheet_id
integer
0
The worksheet identifier. Accepts EITHER: (1) The sheetId from the Google Sheets API (a large number like 1534097477, obtainable via GOOGLESHEETS_GET_SPREADSHEET_INFO), OR (2) The 0-based positional index of the worksheet (0 for first sheet, 1 for second, etc.). The action will first try to match by sheetId, then fall back to matching by index. Defaults to 0 (first sheet). Provide either this field OR sheet_name, not both.
end_row_index
integer
1
OPTION 2: 0-based index of the row AFTER the last row (exclusive). Required if range is not provided. Must provide ALL four index fields together.
strikethrough
boolean
"true"
Apply strikethrough formatting.
wrap_strategy
string
"WRAP"
How text wraps within cells.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
Identifier of the Google Sheets spreadsheet.
start_row_index
integer
0
OPTION 2: 0-based row index (row 1 = index 0, row 9 = index 8). Required if range is not provided. Must provide ALL four index fields together.
end_column_index
integer
1
OPTION 2: 0-based index of the column AFTER the last column (exclusive). Required if range is not provided. Must provide ALL four index fields together.
start_column_index
integer
0
OPTION 2: 0-based column index (A = 0, B = 1, F = 5). Required if range is not provided. Must provide ALL four index fields together.
Googlesheets Get Batch Values
Googlesheets Get Batch ValuesIntegration name: GOOGLESHEETS_GET_BATCH_VALUES
DEPRECATED: Use GOOGLESHEETS_BATCH_GET instead.
Tool to return one or more ranges of values from a spreadsheet. Use when you need to retrieve data from multiple ranges in a single request.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
ranges
array
✅
["Sheet1!A1:B10"]
The A1 notation or R1C1 notation of the ranges to retrieve values from. Specify one or more ranges (e.g., ['Sheet1!A1:B10', 'Sheet2!C1:D5']). For sheet names with spaces or special characters, wrap in single quotes (e.g., "'My Sheet'!A1:B10").
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet to retrieve data from. This is the unique identifier found in the spreadsheet URL between /d/ and /edit (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms').
major_dimension
string
—
The major dimension for results.
value_render_option
string
—
How values should be rendered in the output.
date_time_render_option
string
—
How dates, times, and durations should be represented in the output.
Googlesheets Get Conditional Format Rules
Googlesheets Get Conditional Format RulesIntegration name: GOOGLESHEETS_GET_CONDITIONAL_FORMAT_RULES
List conditional formatting rules for each sheet (or a selected sheet) in a normalized, easy-to-edit form. Use when you need to view, audit, or prepare to modify conditional format rules.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
0
Optional filter: return rules only for the sheet with this exact numeric sheetId. If not provided, returns rules for all sheets. If both sheet_title and sheet_id are provided, sheet_id takes precedence.
sheet_title
string
"Sheet1"
Optional filter: return rules only for the sheet with this exact title. If not provided, returns rules for all sheets.
spreadsheet_id
string
✅
"12345abcdefGHIJKLMNOPqrstuvwxyz67890UVWXYZ"
Unique identifier of the Google Spreadsheet, typically found in its URL.
exclude_tables_in_banded_ranges
boolean
—
True if tables should be excluded in the banded ranges. False if not set.
Googlesheets Get Data Validation Rules
Googlesheets Get Data Validation RulesIntegration name: GOOGLESHEETS_GET_DATA_VALIDATION_RULES
Tool to extract data validation rules from a Google Sheets spreadsheet. Use when you need to understand dropdown lists, allowed values, custom formulas, or other validation constraints for cells.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
ranges
array
["A1:A100","B1:B100"]
Optional list of A1 ranges to scan. If omitted, the entire sheet(s) will be scanned. WARNING: Scanning entire large sheets may be slow.
sheetId
integer
0
Optional sheet ID to filter by. If omitted, all sheets will be scanned.
sheetTitle
string
"Sheet1"
Optional sheet title to filter by. If omitted, all sheets will be scanned.
includeEmpty
boolean
—
If true, include cells without validation rules in the output. Default is false.
spreadsheetId
string
✅
"abc123xyz789"
The ID of the spreadsheet to request.
Googlesheets Get Sheet Names
Googlesheets Get Sheet NamesIntegration name: GOOGLESHEETS_GET_SHEET_NAMES
Lists all worksheet names from a specified Google Spreadsheet (which must exist), useful for discovering sheets before further operations.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
exclude_hidden
boolean
—
When True, hidden sheets will be excluded from the results. When False (default), all sheets including hidden ones are returned. Hidden sheets are sheets that have been hidden via the 'Hide sheet' option in Google Sheets UI.
spreadsheet_id
string
✅
"1qpyC0XzvTcKT6EISywY_7H7D7No1tpxEXAMPLE_ID"
The unique identifier of the Google Spreadsheet (alphanumeric string, typically 44 characters). Extract only the ID portion from URLs - do not include leading/trailing slashes, /edit suffixes, query parameters, or URL fragments. From https://docs.google.com/spreadsheets/d/1qpyC0XzvTcKT6EISywY_7H7D7No1tpxEXAMPLE_ID/edit#gid=0, use only 1qpyC0XzvTcKT6EISywY_7H7D7No1tpxEXAMPLE_ID.
Googlesheets Get Spreadsheet By Data Filter
Googlesheets Get Spreadsheet By Data FilterIntegration name: GOOGLESHEETS_GET_SPREADSHEET_BY_DATA_FILTER
Returns the spreadsheet at the given ID, filtered by the specified data filters. Use this tool when you need to retrieve specific subsets of data from a Google Sheet based on criteria like A1 notation, developer metadata, or grid ranges. Important: This action is designed for filtered data retrieval. While it accepts empty filters and returns full metadata in that case, GOOGLESHEETS_GET_SPREADSHEET_INFO is the recommended action for unfiltered spreadsheet retrieval.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
dataFilters
array
—
The DataFilters used to select which ranges to retrieve. Supports A1 notation (e.g., 'Sheet1!A1:B2'), developer metadata lookup, or grid range filters. If empty or omitted, returns full spreadsheet metadata. Recommended: Use GOOGLESHEETS_GET_SPREADSHEET_INFO for unfiltered retrieval as it is the dedicated action for that purpose.
spreadsheetId
string
✅
"abc123xyz789"
The ID of the spreadsheet to request.
includeGridData
boolean
true
True if grid data should be returned. Ignored if a field mask is set.
excludeTablesInBandedRanges
boolean
false
True if tables should be excluded in the banded ranges. False if not set.
Googlesheets Get Spreadsheet Info
Googlesheets Get Spreadsheet InfoIntegration name: GOOGLESHEETS_GET_SPREADSHEET_INFO
Retrieves metadata for a Google Spreadsheet using its ID. By default, returns essential information (ID, title, sheet properties) to avoid payload size issues. Use the fields parameter for comprehensive metadata or specific fields.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
fields
string
"sheets.properties(sheetId,title)"
Optional. Field mask specifying which fields to return. Uses Google's field mask syntax (comma-separated, dot-notation for nested fields). If not specified, a default mask returning common fields (spreadsheet ID, title, sheet properties) is applied to avoid payload size issues. For full metadata, use * (not recommended for large spreadsheets). When set, includeGridData is ignored. Examples: 'sheets.properties(sheetId,title)', 'properties.title,sheets.properties.sheetId'.
ranges
array
["Sheet1!A1:D5"]
Optional. The ranges to retrieve from the spreadsheet, specified using A1 notation (e.g., 'Sheet1!A1:D5', 'Sheet2!A1:C4'). Multiple ranges can be requested simultaneously. If not specified, metadata for the entire spreadsheet is returned without grid data.
spreadsheet_id
string
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
Required. The Google Sheets spreadsheet ID or full URL. Accepts either the ID alone (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms') or a full Google Sheets URL (e.g., 'https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit'). The ID will be automatically extracted from URLs. Note: Published/embedded URLs (containing /d/e/2PACX-...) are not supported.
include_grid_data
boolean
true
Optional. If true, grid data will be returned. This parameter is ignored if a field mask was set in the request. When false or not specified, only metadata is returned without cell values.
exclude_tables_in_banded_ranges
boolean
true
Optional. If true, tables within banded ranges will be omitted from the response. Default is false when not specified.
Googlesheets Get Table Schema
Googlesheets Get Table SchemaIntegration name: GOOGLESHEETS_GET_TABLE_SCHEMA
DEPRECATED: Use GOOGLESHEETS_GET_SHEET_NAMES and GOOGLESHEETS_GET_SPREADSHEET_INFO for sheet structure metadata, and GOOGLESHEETS_VALUES_GET for direct range inspection.
This action is used to get the schema of a table in a Google Spreadsheet. Call this action to get the schema of a table in a spreadsheet BEFORE YOU QUERY THE TABLE. Analyze table structure and infer column names, types, and constraints. Uses statistical analysis of sample data to determine the most likely data type for each column. Call this action after calling the LIST_TABLES action to get the schema of a table in a spreadsheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_name
string
—
Sheet/tab name if table_name is ambiguous across multiple sheets
table_name
string
✅
"Sales Data"
Table name from LIST_TABLES response OR the visible Google Sheets tab name (e.g., 'Sales Data', 'Projections'). Use 'auto' to analyze the largest/most prominent table.
sample_size
integer
—
Number of rows to sample for type inference
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Spreadsheet. Must be a valid Google Sheets ID (typically a 44-character alphanumeric string). Do NOT use 'auto' - only table_name supports auto-detection. You can get this ID from the spreadsheet URL or from SEARCH_SPREADSHEETS action.
Googlesheets Insert Dimension
Googlesheets Insert DimensionIntegration name: GOOGLESHEETS_INSERT_DIMENSION
Tool to insert new rows or columns into a sheet at a specified location. Use when you need to add empty rows or columns within an existing Google Sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
spreadsheet_id
string
✅
"abc123spreadsheetId"
The ID of the spreadsheet to update.
response_ranges
array
—
Limits the ranges of the spreadsheet to include in the response.
insert_dimension
object
✅
—
The details for the insert dimension request.
response_include_grid_data
boolean
—
True if grid data should be included in the response (if includeSpreadsheetInResponse is true).
include_spreadsheet_in_response
boolean
—
True if the updated spreadsheet should be included in the response.
Googlesheets List Tables
Googlesheets List TablesIntegration name: GOOGLESHEETS_LIST_TABLES
DEPRECATED: Use GOOGLESHEETS_GET_SHEET_NAMES for tab discovery and GOOGLESHEETS_GET_SPREADSHEET_INFO for full sheet metadata.
This action is used to list all tables in a Google Spreadsheet. Call this action to get the list of tables in a spreadsheet. Discover all tables in a Google Spreadsheet by analyzing sheet structure and detecting data patterns. Uses heuristic analysis to find header rows, data boundaries, and table structures.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
min_rows
integer
—
Minimum number of data rows to consider a valid table
min_columns
integer
—
Minimum number of columns to consider a valid table
min_confidence
number
—
Minimum confidence score (0.0-1.0) to consider a valid table
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The actual Google Spreadsheet ID (not a placeholder or spreadsheet name). Find it in the spreadsheet URL: https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit. It is the alphanumeric string between /d/ and /edit (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). IMPORTANT: Do NOT pass the spreadsheet name - only pass the alphanumeric ID from the URL. Do NOT pass template placeholders like '{{spreadsheet_id}}', '<spreadsheet_id>', or 'your-spreadsheet-id-here'.
Googlesheets Lookup Spreadsheet Row
Googlesheets Lookup Spreadsheet RowIntegration name: GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW
Finds the first row in a Google Spreadsheet where a cell's entire content exactly matches the query string, searching within a specified A1 notation range or the first sheet by default.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
query
string
✅
"John"
Exact text value to find; matches the entire content of a cell in a row.
range
string
"Sheet1!A1:D5"
A1 notation range to search within. Supports cell ranges (e.g., 'Sheet1!A1:D5'), column-only ranges (e.g., 'Sheet1!A:Z'), and row-only ranges (e.g., 'Sheet1!1:1'). Defaults to the first sheet if omitted. IMPORTANT: Sheet names with spaces must be single-quoted (e.g., "'My Sheet'!A1:Z"). Bare sheet names without ranges (e.g., 'Sheet1') are not supported - always specify a range.
case_sensitive
boolean
—
If True, the query string search is case-sensitive.
spreadsheet_id
string
✅
"1BiexwqQYjfC_BXy6zDQYJqb6zxzRyP9"
Identifier of the Google Spreadsheet to search.
value_render_option
string
—
How cell values are rendered in the returned row data. unformatted: raw values without display formatting — dates appear as serial numbers, e.g. 46009.47 (default, keeps consistency with UPSERT). formatted: display-formatted values — dates appear as strings, e.g. '2025-12-18'. formula: raw formulas instead of computed values.
normalize_whitespace
boolean
—
If True, strips leading and trailing whitespace from cell values before matching. This helps match cells like ' TOTAL ' or 'TOTAL ' when searching for 'TOTAL'.
date_time_render_option
string
—
How dates and times are represented. FORMATTED_STRING: human-readable strings (e.g. '2025-12-18 11:17'). SERIAL_NUMBER: Excel-style serial numbers. Works with all value_render_option settings.
Googlesheets Mutate Conditional Format Rules
Googlesheets Mutate Conditional Format RulesIntegration name: GOOGLESHEETS_MUTATE_CONDITIONAL_FORMAT_RULES
Add, update, delete, or reorder conditional format rules on a Google Sheet. Use when you need to create, modify, or remove conditional formatting without manually building batchUpdate requests. Supports four operations: ADD (create new rule), UPDATE (replace existing rule), DELETE (remove rule), MOVE (reorder rules by changing index).
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
rule
object
—
Conditional format rule specification.
index
integer
0
Zero-based index for the operation. Required for UPDATE, DELETE, MOVE. Optional for ADD (defaults to end of list).
sheet_id
integer
✅
1534097477
The unique numeric identifier of the sheet/tab to modify (NOT a zero-based index). This is a specific ID assigned by Google Sheets when the sheet is created, not the position of the sheet. You MUST first call GOOGLESHEETS_GET_SPREADSHEET_INFO to retrieve the actual sheetId values from the sheets array in the response. Common mistake: Do not assume sheet_id=0 exists - while some spreadsheets may have a sheet with ID 0, many do not.
new_index
integer
0
Destination index for MOVE operation. Required when operation is MOVE.
operation
string
✅
"ADD"
Operation type: ADD (add new rule), UPDATE (replace rule), DELETE (remove rule), MOVE (change rule order/index).
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet containing the sheet to modify. Found in the Google Sheets URL between /d/ and /edit.
Googlesheets Query Table
Googlesheets Query TableIntegration name: GOOGLESHEETS_QUERY_TABLE
DEPRECATED: Use GOOGLESHEETS_VALUES_GET / GOOGLESHEETS_BATCH_GET for table reads and GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW for row lookup/filter workflows.
Execute SQL-like SELECT queries against Google Spreadsheet tables. Table names correspond to sheet/tab names visible at the bottom of the spreadsheet. Use GOOGLESHEETS_LIST_TABLES first to discover available table names if unknown. Supports WHERE conditions, ORDER BY, LIMIT clauses.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sql
string
✅
"SELECT * FROM \"Sheet1\" LIMIT 10"
SQL SELECT query. The table name is the Google Sheets tab/sheet name (visible at the bottom of the spreadsheet). Use GOOGLESHEETS_LIST_TABLES to discover available table names if unknown. Supported: SELECT cols FROM table WHERE conditions ORDER BY col LIMIT n. Table names must be quoted with double quotes if they contain spaces or are numeric-only (e.g., SELECT * FROM "My Sheet" or SELECT * FROM "415").
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of a native Google Sheets file. Found in the spreadsheet URL after /d/ (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). Only native Google Sheets files (MIME type: application/vnd.google-apps.spreadsheet) are supported. Files uploaded to Google Drive that are not native Google Sheets (such as Excel .xlsx files, PDFs, or Google Docs) will not work even if they can be viewed in Google Sheets.
include_formulas
boolean
—
Whether to return formula text instead of calculated values for formula columns
Googlesheets Search Developer Metadata
Googlesheets Search Developer MetadataIntegration name: GOOGLESHEETS_SEARCH_DEVELOPER_METADATA
Tool to search for developer metadata in a spreadsheet. Use when you need to find specific metadata entries based on filters.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
dataFilters
array
✅
—
The data filters describing the criteria used to determine which DeveloperMetadata entries to return.
spreadsheetId
string
✅
"1q2w3e4r5t6y7u8i9o0p"
The ID of the spreadsheet to retrieve metadata from.
Googlesheets Search Spreadsheets
Googlesheets Search SpreadsheetsIntegration name: GOOGLESHEETS_SEARCH_SPREADSHEETS
Search for Google Spreadsheets using various filters including name, content, date ranges, and more.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
query
string
"Budget Report"
Search query to filter spreadsheets. Behavior depends on the search_type parameter. For advanced searches, use Google Drive query syntax with fields like name contains, fullText contains, or boolean filters like sharedWithMe = true. DO NOT use spreadsheet IDs as search terms. Leave empty to get all spreadsheets.
order_by
string
—
Sort order (comma-separated list for multi-field sorting). Valid fields: createdTime, folder, modifiedByMeTime, modifiedTime, name, name_natural, quotaBytesUsed, recency, sharedWithMeTime, starred, viewedByMeTime. Append desc for descending order (default is ascending). Examples: modifiedTime desc, folder,name, starred,modifiedTime desc.
page_token
string
—
Token for retrieving the next page of results. Use the next_page_token value from a previous response to get subsequent pages. Leave empty to get the first page.
max_results
integer
—
Maximum number of spreadsheets to return (1-1000). Defaults to 10.
search_type
string
—
How to search: name searches filenames only (prefix matching from the START of filenames), content uses fullText search which searches file content, name, description, and metadata (Google Drive API limitation: cannot search content exclusively without also matching filenames), both explicitly searches both name OR content with an OR condition. Note: name search only matches from the START of filenames (e.g., 'Budget' finds 'Budget 2024' but NOT 'Q1 Budget').
starred_only
boolean
—
Whether to return only starred spreadsheets. Defaults to False.
created_after
string
"2024-01-01T00:00:00Z"
Return spreadsheets created after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.
modified_after
string
"2024-01-01T00:00:00Z"
Return spreadsheets modified after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.
shared_with_me
boolean
—
Whether to return only spreadsheets shared with the current user. Defaults to False.
include_trashed
boolean
—
Whether to include spreadsheets in trash. Defaults to False.
include_shared_drives
boolean
—
Whether to include spreadsheets from shared drives you have access to. Defaults to True.
Googlesheets Set Basic Filter
Googlesheets Set Basic FilterIntegration name: GOOGLESHEETS_SET_BASIC_FILTER
Tool to set a basic filter on a sheet in a Google Spreadsheet. Use when you need to filter or sort data within a specific range on a sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
filter
object
✅
—
The filter to set.
spreadsheetId
string
✅
—
The ID of the spreadsheet.
responseRanges
array
—
Limits the ranges included in the response spreadsheet. Meaningful only if includeSpreadsheetInResponse is true.
responseIncludeGridData
boolean
—
True if grid data should be returned. Meaningful only if includeSpreadsheetInResponse is true. Ignored if a field mask was set in the request.
includeSpreadsheetInResponse
boolean
—
Determines if the updated spreadsheet resource appears in the response. Default is false.
Googlesheets Set Data Validation Rule
Googlesheets Set Data Validation RuleIntegration name: GOOGLESHEETS_SET_DATA_VALIDATION_RULE
Tool to set or clear data validation rules (including dropdowns) on a range in Google Sheets. Use when you need to apply dropdown lists, range-based dropdowns, or custom formula validation to cells.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
mode
string
✅
"SET"
Operation mode: 'SET' applies a validation rule to the range, 'CLEAR' removes any existing validation from the range.
strict
boolean
true
Whether to reject invalid data (true) or show a warning (false). Default is true.
values
array
["Option 1","Option 2","Option 3"]
List of allowed values for dropdown. Required when validation_type='ONE_OF_LIST'. Each item becomes a dropdown option.
formula
string
"=A1>10"
Custom formula for validation. Required when validation_type='CUSTOM_FORMULA'. Formula should evaluate to TRUE/FALSE. Example: =A1>10.
sheet_id
integer
✅
0
The unique sheet ID (numeric identifier) where the validation rule will be applied. The first sheet created in a spreadsheet typically has ID 0, while additional sheets get unique IDs (e.g., 1534097477). If a sheet is deleted, its ID is never reused - so if the original first sheet (ID 0) was deleted, attempting to use 0 will fail. Always verify the actual sheet ID exists using GOOGLESHEETS_GET_SPREADSHEET_INFO action (check sheets[].properties.sheetId field).
end_row_index
integer
✅
1
Ending row index (0-based, exclusive) for the validation range. To apply to row 1 only, use start_row_index=0 and end_row_index=1.
input_message
string
"Please select a valid option"
Optional message shown to the user when they select the cell. Helpful hint about what values are expected.
show_custom_ui
boolean
true
Whether to show a dropdown UI for list-based validation. Default is true. Set to true for dropdown lists.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Sheets spreadsheet. Can be found in the spreadsheet URL between /d/ and /edit.
source_range_a1
string
"Sheet1!A1:A10"
Source range in A1 notation for dropdown values. Required when validation_type='ONE_OF_RANGE'. Example: 'Sheet1!A1:A10' or 'A1:A10'.
start_row_index
integer
✅
0
Starting row index (0-based, inclusive) for the validation range. Row 1 is index 0.
validation_type
string
"ONE_OF_LIST"
Type of validation rule to apply. Required when mode='SET'. Dropdown types: 'ONE_OF_LIST' (dropdown from list), 'ONE_OF_RANGE' (dropdown from range). Number validations: 'NUMBER_GREATER', 'NUMBER_GREATER_THAN_EQ', 'NUMBER_LESS', 'NUMBER_LESS_THAN_EQ', 'NUMBER_EQ', 'NUMBER_NOT_EQ', 'NUMBER_BETWEEN', 'NUMBER_NOT_BETWEEN'. Text validations: 'TEXT_CONTAINS', 'TEXT_NOT_CONTAINS', 'TEXT_EQ', 'TEXT_NOT_EQ', 'TEXT_IS_EMAIL', 'TEXT_IS_URL' (Note: TEXT_STARTS_WITH and TEXT_ENDS_WITH are only for conditional formatting, not data validation). Date validations: 'DATE_EQ', 'DATE_BEFORE', 'DATE_AFTER', 'DATE_ON_OR_BEFORE', 'DATE_ON_OR_AFTER', 'DATE_BETWEEN', 'DATE_NOT_BETWEEN', 'DATE_NOT_EQ', 'DATE_IS_VALID'. Other: 'BLANK', 'NOT_BLANK', 'BOOLEAN', 'CUSTOM_FORMULA'.
condition_values
array
["100"]
Generic list of condition values for validation types that require specific values (e.g., NUMBER_GREATER requires one value, NUMBER_BETWEEN requires two values, TEXT_CONTAINS requires one value). For simple validations like TEXT_IS_EMAIL, BLANK, NOT_BLANK, BOOLEAN, DATE_IS_VALID, this can be omitted. Each value should be a string that will be parsed by Google Sheets.
end_column_index
integer
✅
1
Ending column index (0-based, exclusive) for the validation range. To apply to column A only, use start_column_index=0 and end_column_index=1.
start_column_index
integer
✅
0
Starting column index (0-based, inclusive) for the validation range. Column A is index 0.
filtered_rows_included
boolean
true
Whether to apply validation to rows hidden by filters. Default is false. Set to true to ensure validation applies to both visible and filtered rows.
Googlesheets Sheet From Json
Googlesheets Sheet From JsonIntegration name: GOOGLESHEETS_SHEET_FROM_JSON
DEPRECATED: Use GOOGLESHEETS_CREATE_GOOGLE_SHEET1 + GOOGLESHEETS_UPDATE_VALUES_BATCH (or GOOGLESHEETS_VALUES_UPDATE / GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND) instead.
Creates a new Google Spreadsheet and populates its first worksheet from sheet_json. When data is provided, the first item's keys establish the headers. An empty list creates an empty worksheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
title
string
✅
"Q3 Sales Report"
The desired title for the new Google Spreadsheet.
sheet_json
array
✅
"[{\"Name\": \"Alice\", \"Age\": 30, \"City\": \"New York\"}, {\"Name\": \"Bob\", \"Age\": 24, \"City\": \"London\"}]"
A list of dictionaries representing the rows of the sheet. Each dictionary must have the same set of keys, which will form the header row. Values can be strings, numbers, booleans, or null (represented as empty cells). An empty list [] is allowed and will create a spreadsheet with an empty worksheet.
sheet_name
string
✅
"Sheet1"
The name for the first worksheet within the newly created spreadsheet. This name will appear as a tab at the bottom of the sheet.
Googlesheets Spreadsheets Sheets Copy To
Googlesheets Spreadsheets Sheets Copy ToIntegration name: GOOGLESHEETS_SPREADSHEETS_SHEETS_COPY_TO
Tool to copy a single sheet from a spreadsheet to another spreadsheet. Use when you need to duplicate a sheet into a different spreadsheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
✅
0
The ID of the sheet to copy.
spreadsheet_id
string
✅
"1qZ_..."
The ID of the spreadsheet containing the sheet to copy.
destination_spreadsheet_id
string
✅
"2rY_..."
The ID of the spreadsheet to copy the sheet to.
Googlesheets Spreadsheets Values Append
Googlesheets Spreadsheets Values AppendIntegration name: GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND
Tool to append values to a spreadsheet. Use when you need to add new data to the end of an existing table in a Google Sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
range
string
✅
"Sheet1"
A1 notation range used to locate a logical table. New rows are appended after the last row of that table within this range. Valid formats: sheet name only (e.g., 'Sheet1'), column range (e.g., 'Sheet1!A:D'), or cell range (e.g., 'Sheet1!A1:D100'). Sheet names with spaces need single quotes (auto-added). The sheet name must exist in the spreadsheet; a non-existent sheet will cause an 'Unable to parse range' error. IMPORTANT: The append may land in different columns than specified due to API table detection. For strict column placement, use GOOGLESHEETS_SPREADSHEETS_VALUES_UPDATE instead. Always check updates.updatedRange in the response to verify where data was actually written.
values
array
✅
[["A1_val1","A1_val2"],["A2_val1","A2_val2"]]
2D array of values to append. Typically, each inner list is a ROW (majorDimension=ROWS). Use null/None for empty cells.
spreadsheetId
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The spreadsheet ID (typically 44 characters containing letters, numbers, hyphens, and underscores). Found in the URL between /d/ and /edit. NOT the sheet name (tab name) - that belongs in the range parameter.
majorDimension
string
"ROWS"
How to interpret the 2D values array. Use ROWS for row-wise data (most common for appends). Use COLUMNS for column-wise data. Example: if A1=1,B1=2,A2=3,B2=4 then majorDimension=ROWS yields [[1,2],[3,4]] and majorDimension=COLUMNS yields [[1,3],[2,4]].
insertDataOption
string
"INSERT_ROWS"
How the input data should be inserted.
valueInputOption
string
✅
"USER_ENTERED"
How the input data should be interpreted.
includeValuesInResponse
boolean
true
Determines if the update response should include the values of the cells that were appended. By default, responses do not include the updated values.
responseValueRenderOption
string
"FORMATTED_VALUE"
Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
responseDateTimeRenderOption
string
"SERIAL_NUMBER"
Determines how dates, times, and durations in the response should be rendered. This is ignored if responseValueRenderOption is FORMATTED_VALUE. The default dateTime render option is SERIAL_NUMBER.
Googlesheets Spreadsheets Values Batch Clear
Googlesheets Spreadsheets Values Batch ClearIntegration name: GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEAR
Tool to clear one or more ranges of values from a spreadsheet. Use when you need to remove data from specific cells or ranges while keeping formatting and other properties intact.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
ranges
array
✅
["Sheet1!A1:B2","Sheet1!C3:D4"]
The ranges to clear, in A1 notation (e.g., 'Sheet1!A1:B2') or R1C1 notation. Each range should be a clean string without surrounding brackets or extra quotes. Valid examples: 'Sheet1!A1:B2', 'A1:Z100', 'Sheet1'. Invalid examples: "['Sheet1!A1:B2']", '[Sheet1!A1]'.
spreadsheet_id
string
✅
"1q2w3e4r5t6y7u8i9o0p"
The ID of the spreadsheet to update. Can be either a spreadsheet ID or a full Google Sheets URL (the ID will be extracted automatically).
Googlesheets Spreadsheets Values Batch Get By Data Filter
Googlesheets Spreadsheets Values Batch Get By Data FilterIntegration name: GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_GET_BY_DATA_FILTER
Tool to return one or more ranges of values from a spreadsheet that match the specified data filters. Use when you need to retrieve specific data sets based on filtering criteria rather than entire sheets or fixed ranges.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
dataFilters
array
✅
[{"a1Range":"Sheet1!A1:B5"}]
Required. An array of data filter objects used to match ranges of values to retrieve. Each filter can specify either a1Range (e.g., 'Sheet1!A1:B5') or gridRange. Must be provided as a list, e.g., [{'a1Range': 'Sheet1!A1:B5'}]. A single filter object will be automatically wrapped in a list.
spreadsheetId
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet to retrieve data from. This is the unique identifier found in the spreadsheet URL (e.g., in 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit', the ID is the SPREADSHEET_ID part). Typical Google Sheets IDs are approximately 44 characters long and contain alphanumeric characters, hyphens, and underscores.
majorDimension
string
—
The major dimension that results should use. For example, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4, then a request that selects that range and sets majorDimension=ROWS returns [[1,2],[3,4]], whereas a request that sets majorDimension=COLUMNS returns [[1,3],[2,4]].
valueRenderOption
string
—
How values should be represented in the output. The default render option is FORMATTED_VALUE.
dateTimeRenderOption
string
—
How dates, times, and durations should be represented in the output. This is ignored if valueRenderOption is FORMATTED_VALUE. The default dateTime render option is SERIAL_NUMBER.
Googlesheets Update Chart
Googlesheets Update ChartIntegration name: GOOGLESHEETS_UPDATE_CHART
Update the specification of an existing chart in a Google Sheets spreadsheet. Use this action when you need to modify an existing chart's properties such as its title, chart type, data ranges, colors, axes, or other visual settings. This action updates the chart's specification but does not change its position or size on the sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
chart_id
integer
✅
707876808
The unique numeric identifier of the chart to update within the spreadsheet. This is the chartId value returned when the chart was created or can be retrieved using the 'Get Spreadsheet Info' action (look for sheets[].charts[].chartId in the response). The chart must already exist in the specified spreadsheet.
chart_spec
object
✅
{"title":"Updated Sales Chart","basicChart":{"series":[{"series":{"sourceRange":{"sources":[{"sheetId":0,"endRowIndex":10,"startRowIndex":0,"endColumnIndex":2,"startColumnIndex":1}]}}}],"domains":[{"domain":{"sourceRange":{"sources":[{"sheetId":0,"endRowIndex":10,"startRowIndex":0,"endColumnIndex":1,"startColumnIndex":0}]}}}],"chartType":"COLUMN","legendPosition":"RIGHT_LEGEND"}}
The complete ChartSpec object defining the updated chart specification. This replaces the chart's existing specification but does not move or resize the chart. Must set exactly one chart type field: basicChart, pieChart, bubbleChart, candlestickChart, histogramChart, treemapChart, waterfallChart, orgChart, or scorecardChart. To change chart position or size, use a separate UpdateEmbeddedObjectPosition request. See https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/charts#ChartSpec
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Sheets spreadsheet containing the chart to update. Must be the actual spreadsheet ID from the URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'), NOT the spreadsheet name or title. Find it in the URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit
Googlesheets Update Dimension Properties
Googlesheets Update Dimension PropertiesIntegration name: GOOGLESHEETS_UPDATE_DIMENSION_PROPERTIES
Tool to hide/unhide rows or columns and set row heights or column widths. Use when you need to change visibility or pixel sizing of dimensions in a Google Sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sheet_id
integer
0
The numeric ID of the sheet (tab). Either sheet_id or sheet_name must be provided. If both are provided, sheet_name will be resolved to sheet_id and override this value.
dimension
string
✅
"ROWS"
Whether to update rows or columns.
end_index
integer
✅
1
The zero-based end index (exclusive) of the dimension range to update. For example, to update rows 5-9, use start_index=5 and end_index=10.
pixel_size
integer
100
The height (for rows) or width (for columns) in pixels. Must be a positive integer. At least one of hidden_by_user or pixel_size must be provided.
sheet_name
string
"Sheet1"
The name of the sheet (tab). If provided, this will be resolved to the numeric sheet_id using GOOGLESHEETS_GET_SPREADSHEET_INFO. Either sheet_id or sheet_name must be provided.
start_index
integer
✅
0
The zero-based start index (inclusive) of the dimension range to update. For rows, 0 is the first row; for columns, 0 is column A.
hidden_by_user
boolean
true
Whether to hide (true) or unhide (false) the specified rows/columns. At least one of hidden_by_user or pixel_size must be provided.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet to update.
response_ranges
array
["Sheet1!A1:B10"]
Limits the ranges included in the response spreadsheet (only if includeSpreadsheetInResponse is true).
response_include_grid_data
boolean
false
Whether to include grid data in the response (only if includeSpreadsheetInResponse is true).
include_spreadsheet_in_response
boolean
false
Whether to include the updated spreadsheet in the response.
Googlesheets Update Sheet Properties
Googlesheets Update Sheet PropertiesIntegration name: GOOGLESHEETS_UPDATE_SHEET_PROPERTIES
Tool to update properties of a sheet (worksheet) within a Google Spreadsheet, such as its title, index, visibility, tab color, or grid properties. Use this when you need to modify the metadata or appearance of a specific sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
spreadsheetId
string
✅
—
The ID of the spreadsheet containing the sheet to update.
responseRanges
array
—
Limits the ranges included in the response spreadsheet. Meaningful only if includeSpreadsheetInResponse is true. Ranges should be in A1 notation (e.g., 'Sheet1!A1:B2').
updateSheetProperties
object
✅
—
The details of the sheet properties to update.
responseIncludeGridData
boolean
—
True if grid data should be returned. Meaningful only if includeSpreadsheetInResponse is true. When true, the response will include cell data for the specified ranges.
includeSpreadsheetInResponse
boolean
—
Determines if the update response should include the spreadsheet resource. When true, the response will include the full updated spreadsheet.
Googlesheets Update Spreadsheet Properties
Googlesheets Update Spreadsheet PropertiesIntegration name: GOOGLESHEETS_UPDATE_SPREADSHEET_PROPERTIES
Tool to update SPREADSHEET-LEVEL properties such as the spreadsheet's title, locale, time zone, or auto-recalculation settings. Use when you need to modify the overall configuration of a Google Spreadsheet. NOTE: To update individual SHEET properties (like renaming a specific sheet/tab), use GOOGLESHEETS_UPDATE_SHEET_PROPERTIES instead.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
fields
string
✅
"title"
Field mask specifying which properties to update (comma-separated for multiple fields). Supports nested paths using dot notation (e.g., 'iterativeCalculationSettings.maxIterations') per Protocol Buffers FieldMask specification. The root 'properties' is implied and must not be included. Special case: When updating 'spreadsheetTheme', use the field mask 'spreadsheetTheme' (not nested paths like 'spreadsheetTheme.primaryFontFamily') and provide the complete theme object with all required fields. Wildcard '*' updates all properties.
properties
object
✅
—
The spreadsheet-level properties to update (e.g., title, locale, timeZone, autoRecalc). At least one field within properties must be set. NOTE: To update individual sheet/tab properties (like renaming a specific sheet), use GOOGLESHEETS_UPDATE_SHEET_PROPERTIES instead.
spreadsheetId
string
✅
"abc123spreadsheetId"
The ID of the spreadsheet to update.
responseRanges
array
["Sheet1!A1:B10","Sheet2!C1:D20"]
Limits the ranges included in the response spreadsheet. Only meaningful if includeSpreadsheetInResponse is true. Ranges should be in A1 notation (e.g., 'Sheet1!A1:B2').
responseIncludeGridData
boolean
—
Determines if grid data (cell values) should be included in the response. Only meaningful if includeSpreadsheetInResponse is true. When true, the response will include cell data for the specified ranges or entire spreadsheet.
includeSpreadsheetInResponse
boolean
—
Determines if the update response should include the full spreadsheet resource. When true, the response will include the entire updated spreadsheet with all sheets, properties, and metadata.
Googlesheets Update Values Batch
Googlesheets Update Values BatchIntegration name: GOOGLESHEETS_UPDATE_VALUES_BATCH
Tool to set values in one or more ranges of a spreadsheet. Use when you need to update multiple ranges in a single operation for better performance.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
data
array
✅
—
The new values to apply to the spreadsheet. Each ValueRange specifies a range and the values to write to that range. Multiple ranges can be updated in a single request.
spreadsheet_id
string
✅
"16k0mZLTGKySpihrjTycQalUVQQwq4SuLSdD3r_T164A"
The ID of the spreadsheet to update. This ID can be found in the URL of the spreadsheet (e.g., https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit). Must be a valid Google Sheets spreadsheet ID.
valueInputOption
string
✅
"USER_ENTERED"
How the input data should be interpreted. RAW: Values are stored exactly as entered, without parsing. USER_ENTERED: Values are parsed as if typed by a user (numbers stay numbers, strings prefixed with = become formulas, etc.). INPUT_VALUE_OPTION_UNSPECIFIED: Default input value option is not specified.
includeValuesInResponse
boolean
false
Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values.
responseValueRenderOption
string
"FORMATTED_VALUE"
Determines how values in the response should be rendered. Only used if includeValuesInResponse is true. FORMATTED_VALUE (default): Values are formatted as displayed in the UI. UNFORMATTED_VALUE: Values are unformatted. FORMULA: Formulas are not evaluated.
responseDateTimeRenderOption
string
"SERIAL_NUMBER"
Determines how dates, times, and durations in the response should be rendered. Only used if includeValuesInResponse is true. SERIAL_NUMBER (default): Dates are returned as numbers. FORMATTED_STRING: Dates are returned as formatted strings.
Googlesheets Upsert Rows
Googlesheets Upsert RowsIntegration name: GOOGLESHEETS_UPSERT_ROWS
Upsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID).
Features:
Auto-adds missing columns to sheet
Partial column updates (only update Phone + Status, preserve other columns)
Column order doesn't matter (auto-maps by header name)
Prevents duplicates by matching key column
Example inputs:
Contact update:
keyColumn='Email',headers=['Email','Phone','Status'],data=[['john@ex.com','555-0101','Active']]Inventory sync:
keyColumn='SKU',headers=['SKU','Stock','Price'],data=[['WIDGET-001',50,9.99],['GADGET-002',30,19.99]]CRM lead update:
keyColumn='Lead ID',headers=['Lead ID','Score','Status'],data=[['L-12345',85,'Hot']]Partial update:
keyColumn='Email',headers=['Email','Phone'](only updates Phone, preserves Name/Address/etc)
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
rows
array
✅
[["john@example.com","555-0101","Active"],["jane@example.com","555-0102","Pending"]]
2D array of data rows to upsert. IMPORTANT: If headers is NOT provided, the FIRST row is treated as column headers and remaining rows are data - so you need at least 2 rows (1 header + 1 data). If headers IS provided separately, then ALL rows in this array are treated as data rows. Each row should have the same number of values as headers. If a row has MORE values than headers: with strict_mode=true (default), an error is returned showing which rows are affected; with strict_mode=false, extra values are silently truncated. If a row has FEWER values than headers, an error is returned during execution. Cell values can be strings, numbers, booleans, or null. Example with headers provided: headers=['Email','Status'], rows=[['john@ex.com','Active']] (1 data row). Example without headers: rows=[['Email','Status'],['john@ex.com','Active']] (row 1 = headers, row 2 = data).
headers
array
["Email","Phone","Status"]
List of column names for the data. These will be matched against sheet headers. If a column doesn't exist in the sheet, it will be added automatically. Order doesn't need to match sheet order. Can be auto-derived from the first row in rows if not provided. Example inputs: ['Email', 'Phone', 'Status'] for contact updates, ['Lead ID', 'Name', 'Score'] for CRM, ['SKU', 'Stock', 'Price'] for inventory.
keyColumn
string
"Email"
The column NAME (header text) to use as unique identifier for matching rows. Must be an actual header name from the sheet (e.g., 'Email', 'Lead ID', 'SKU'), NOT a column letter (e.g., 'A', 'B', 'C'). If you provide a column letter like 'A', it will be automatically converted to the header name at that column position. If neither key_column nor key_column_index is provided, defaults to the first column (index 0).
sheetName
string
✅
"Leads"
The name of the sheet/tab within the spreadsheet. Note: Google Sheets creates default sheets with localized names based on account language (e.g., 'Sheet1' for English, '工作表1' for Chinese, 'Hoja1' for Spanish, 'Feuille1' for French, 'Planilha1' for Portuguese, 'Лист1' for Russian). If you specify a common default name and the sheet is not found, the action will automatically use the first sheet if only one exists.
strictMode
boolean
—
Controls how rows with mismatched column counts are handled. When True (default), an error is returned if any row has more values than headers - the error message shows exactly which rows are affected and what values would need to be removed. When False, extra values are silently truncated to match the header count. Set to False only if you explicitly want automatic truncation of extra values.
tableStart
string
"A1"
Cell where the table starts (where headers are located). Defaults to 'A1'. Use this if your table is offset (e.g., 'C5', 'D10').
spreadsheetId
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The ID of the spreadsheet. Must be a non-empty string, typically a 44-character alphanumeric string found in the spreadsheet URL.
key_column_index
—
0
The 0-based column index to use as unique identifier for matching rows. Alternative to key_column - will be converted to column name using headers. If neither key_column nor key_column_index is provided, defaults to 0 (first column). Example: 0 for first column, 1 for second column.
normalization_message
string
—
Internal field to track input normalization (e.g., row truncation). Not part of API.
Googlesheets Values Get
Googlesheets Values GetIntegration name: GOOGLESHEETS_VALUES_GET
Returns a range of values from a spreadsheet. Use when you need to read data from specific cells or ranges in a Google Sheet.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
range
string
✅
"Sheet1!A1:B3"
The A1 notation or R1C1 notation of the range to retrieve values from. If the sheet name contains spaces or special characters, wrap the sheet name in single quotes (e.g., "'My Sheet'!A1:B2"). Without single quotes, the API will return a 400 error for sheet names with spaces. Examples: 'Sheet1!A1:B3', "'Sheet With Spaces'!A1:D5", 'A1:D5' (no sheet name uses first visible sheet), 'Sheet1!A:A' (entire column), 'SheetName' (entire sheet).
end_row
integer
—
1-based row number to stop reading at (inclusive). Use with start_row for pagination to avoid large response errors. Example: start_row=501, end_row=1000 fetches rows 501-1000.
start_row
integer
—
1-based row number to start reading from (inclusive). Use with end_row for pagination to avoid large response errors. Example: start_row=1, end_row=500 fetches the first 500 rows.
spreadsheet_id
string
✅
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
The unique identifier of the Google Spreadsheet from which to retrieve values. This is the long alphanumeric string found in the spreadsheet URL between /d/ and /edit (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). WARNING: Do NOT use the spreadsheet name or title (e.g., 'My Sales Report'); you must use the actual ID from the URL.
major_dimension
string
—
The major dimension for results.
value_render_option
string
—
How values should be rendered in the output. FORMATTED_VALUE: Values are calculated and formatted (default). UNFORMATTED_VALUE: Values are calculated but not formatted. FORMULA: Values are not calculated; the formula is returned instead.
date_time_render_option
string
—
How dates, times, and durations should be represented in the output. SERIAL_NUMBER: Dates are returned as serial numbers (default). FORMATTED_STRING: Dates returned as formatted strings.
Googlesheets Values Update
Googlesheets Values UpdateIntegration name: GOOGLESHEETS_VALUES_UPDATE
Tool to set values in a range of a Google Spreadsheet. Use when you need to update or overwrite existing cell values in a specific range.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
range
string
✅
"Sheet1!A1:C2"
The A1 notation of the range to update values in (e.g., 'Sheet1!A1:C2', 'MySheet!C:C', or 'A1:D5'). Must be actual cell references, not placeholder values. If the sheet name is omitted (e.g., 'A1:B2'), the operation applies to the first visible sheet. IMPORTANT: The range must not exceed the sheet's grid dimensions. By default, new sheets have 1000 rows and 26 columns (A-Z). If you need to write to columns beyond Z (e.g., AA, AB), first expand the sheet using GOOGLESHEETS_APPEND_DIMENSION or check the current dimensions using GOOGLESHEETS_GET_SPREADSHEET_INFO.
values
array
✅
[["Name","Age","City"],["Test User","25","San Francisco"]]
The data to write. This is an array of arrays, the outer array representing all the data and each inner array representing a major dimension. Each item in the inner array corresponds with one cell.
spreadsheet_id
string
✅
"13I9BjRCKl1iy7VZ-_Ir29qr5Yu79iIyIkooVqApymS8"
The unique identifier of the Google Spreadsheet to update. This ID can be found in the URL of the spreadsheet (e.g., https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit). Must be a non-empty string.
major_dimension
string
"ROWS"
The major dimension of the values. ROWS (default) means each inner array is a row of values. COLUMNS means each inner array is a column of values. Defaults to ROWS if unspecified.
auto_expand_sheet
boolean
true
If True (default), automatically expands the sheet's dimensions (adds columns/rows) when the target range exceeds the current grid limits. If False, the operation will fail with an error if the range exceeds grid limits.
value_input_option
string
✅
"USER_ENTERED"
How the input data should be interpreted. RAW: Values are stored exactly as entered, without parsing (dates, formulas, etc. remain as strings). USER_ENTERED: Values are parsed as if typed by a user (numbers stay numbers, strings prefixed with = become formulas, etc.).
include_values_in_response
boolean
false
Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values.
response_value_render_option
string
"FORMATTED_VALUE"
Determines how values in the response should be rendered. Only used if includeValuesInResponse is true. FORMATTED_VALUE (default): Values are formatted as displayed in the UI. UNFORMATTED_VALUE: Values are unformatted (numbers, booleans, formulas). FORMULA: Formulas are not evaluated and remain as text.
response_datetime_render_option
string
"SERIAL_NUMBER"
Determines how dates, times, and durations in the response should be rendered. Only used if includeValuesInResponse is true. SERIAL_NUMBER (default): Dates are returned as numbers. FORMATTED_STRING: Dates are returned as strings formatted per the cell's locale.