pakx
← Explore

Google Sheets

latest
Smithery

googlesheets

Read, write, and format spreadsheet data. Manage sheets, run formulas, and collaborate on structured data in real time.

Install

One line. Adds the dep to agents.yml and resolves it.

pakx add mcp googlesheets

Raw metadata

Source-specific install hints as returned by Smithery.

{
  "qualifiedName": "googlesheets",
  "displayName": "Google Sheets",
  "description": "Read, write, and format spreadsheet data. Manage sheets, run formulas, and collaborate on structured data in real time.",
  "iconUrl": "https://logos.composio.dev/api/googlesheets",
  "remote": true,
  "deploymentUrl": "https://googlesheets.run.tools",
  "connections": [
    {
      "type": "http",
      "deploymentUrl": "https://googlesheets.run.tools",
      "configSchema": {}
    }
  ],
  "security": null,
  "tools": [
    {
      "name": "GOOGLESHEETS_ADD_SHEET",
      "description": "Adds a new sheet (worksheet) to a spreadsheet. Use this tool to create a new tab within an existing Google Sheet, optionally specifying its title, index, size, and other properties. IMPORTANT: - Always provide the spreadsheetId. Use 'Search Spreadsheets' action if you need to find it by name - Sheet names must be unique within the spreadsheet - For tab colors, use EITHER rgbColor OR themeColor, never both - Index must be less than or equal to the current number of sheets - CONCURRENCY WARNING: Do not use 'index' when creating multiple sheets in parallel - this causes 'index is too high' errors. For parallel creation, omit the index field and let sheets be added at the end Common use cases: - Add a new sheet with a specific name - Insert a sheet at a specific position - Create a sheet with custom colors and formatting",
      "inputSchema": {
        "type": "object",
        "properties": {
          "properties": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "index": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The zero-based index where the sheet should be inserted. Must be less than or equal to the current number of sheets. If not set, the sheet will be added at the end. Example: 0 for the first position. CONCURRENCY WARNING: Do not use 'index' when creating multiple sheets in parallel - this causes 'index is too high' errors. For parallel creation, omit this field and let sheets be added at the end."
                  },
                  "title": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "default": null,
                    "description": "The name of the sheet. Must be unique within the spreadsheet. Example: \"Q3 Report\", \"Sales Data 2025\""
                  },
                  "hidden": {
                    "type": [
                      "boolean",
                      "null"
                    ],
                    "default": null,
                    "description": "True if the sheet is hidden in the UI, false if it's visible."
                  },
                  "sheetId": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The ID of the sheet. If not set, an ID will be randomly generated. Must be non-negative and unique within the spreadsheet. WARNING: Avoid setting this unless you need a specific ID."
                  },
                  "sheetType": {
                    "anyOf": [
                      {
                        "enum": [
                          "GRID",
                          "OBJECT",
                          "DATA_SOURCE"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": "GRID",
                    "description": "The type of sheet."
                  },
                  "rightToLeft": {
                    "type": [
                      "boolean",
                      "null"
                    ],
                    "default": null,
                    "description": "True if the sheet is an RTL sheet, false if it's LTR."
                  },
                  "tabColorStyle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "rgbColor": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "red": {
                                    "anyOf": [
                                      {
                                        "type": "number",
                                        "maximum": 1,
                                        "minimum": 0
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null,
                                    "description": "The amount of red in the color as a value in the interval [0, 1]."
                                  },
                                  "blue": {
                                    "anyOf": [
                                      {
                                        "type": "number",
                                        "maximum": 1,
                                        "minimum": 0
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null,
                                    "description": "The amount of blue in the color as a value in the interval [0, 1]."
                                  },
                                  "alpha": {
                                    "anyOf": [
                                      {
                                        "type": "number",
                                        "maximum": 1,
                                        "minimum": 0
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null,
                                    "description": "The fraction of this color that should be applied to the pixel. E.g. 0.5 for 50% transparent."
                                  },
                                  "green": {
                                    "anyOf": [
                                      {
                                        "type": "number",
                                        "maximum": 1,
                                        "minimum": 0
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null,
                                    "description": "The amount of green in the color as a value in the interval [0, 1]."
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "RGB color. Specify EITHER rgbColor OR themeColor, but not both. If using rgbColor, provide values for red, green, blue (0.0-1.0)."
                          },
                          "themeColor": {
                            "anyOf": [
                              {
                                "enum": [
                                  "THEME_COLOR_TYPE_UNSPECIFIED",
                                  "TEXT",
                                  "BACKGROUND",
                                  "ACCENT1",
                                  "ACCENT2",
                                  "ACCENT3",
                                  "ACCENT4",
                                  "ACCENT5",
                                  "ACCENT6",
                                  "LINK"
                                ],
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "Theme color. Specify EITHER themeColor OR rgbColor, but not both. Use predefined theme colors like ACCENT1, TEXT, BACKGROUND, etc."
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The color of the sheet tab."
                  },
                  "gridProperties": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "rowCount": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of rows in the sheet."
                          },
                          "columnCount": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of columns in the sheet."
                          },
                          "hideGridlines": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "default": null,
                            "description": "True if the gridlines are hidden, false if they are shown."
                          },
                          "frozenRowCount": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of rows that are frozen in the sheet."
                          },
                          "frozenColumnCount": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of columns that are frozen in the sheet."
                          },
                          "rowGroupControlAfter": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "default": null,
                            "description": "True if the row group control toggle is shown after the group, false if before."
                          },
                          "columnGroupControlAfter": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "default": null,
                            "description": "True if the column group control toggle is shown after the group, false if before."
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Additional properties of the sheet if it's a grid sheet."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The properties the new sheet should have. All properties are optional. If none are specified, a default sheet will be created."
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to add the sheet to. This is the long string of characters in the URL of your Google Sheet. Use the 'Search Spreadsheets' action first to find the spreadsheet ID by name if you don't have it.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_AGGREGATE_COLUMN_DATA",
      "description": "Searches for rows where a specific column matches a value and performs mathematical operations on data from another column.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "enum": [
              "sum",
              "average",
              "count",
              "min",
              "max",
              "percentage"
            ],
            "type": "string",
            "description": "The mathematical operation to perform on the target column values.\nExamples:\n  \"sum\"\n  \"average\"\n  \"count\"\n  \"min\"\n  \"max\"\n  \"percentage\""
          },
          "sheet_name": {
            "type": "string",
            "description": "The name of the specific sheet within the spreadsheet.\nExamples:\n  \"Sheet1\"\n  \"Sales Data\""
          },
          "search_value": {
            "type": "string",
            "description": "The exact value to search for in the search column. Case-sensitive by default.\nExamples:\n  \"HSR\"\n  \"Sales\"\n  \"North Region\""
          },
          "search_column": {
            "type": "string",
            "description": "The column to search in. Can be a letter (e.g., 'A', 'B') or column name from header row (e.g., 'Region', 'Department').\nExamples:\n  \"A\"\n  \"Region\"\n  \"Department\""
          },
          "target_column": {
            "type": "string",
            "description": "The column to aggregate data from. Can be a letter (e.g., 'C', 'D') or column name from header row (e.g., 'Sales', 'Revenue').\nExamples:\n  \"D\"\n  \"Sales\"\n  \"Revenue\""
          },
          "case_sensitive": {
            "type": "boolean",
            "default": true,
            "description": "Whether the search should be case-sensitive.\nExamples:\n  true\n  false"
          },
          "has_header_row": {
            "type": "boolean",
            "default": true,
            "description": "Whether the first row contains column headers. If True, column names can be used for search_column and target_column.\nExamples:\n  true\n  false"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Sheets spreadsheet.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "percentage_total": {
            "type": [
              "number",
              "null"
            ],
            "default": null,
            "description": "For percentage operation, the total value to calculate percentage against. If not provided, uses sum of all values in target column.\nExamples:\n  10000\n  50000.5"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_APPEND_DIMENSION",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "length": {
            "type": "integer",
            "description": "The number of rows or columns to append.\nExample: 10"
          },
          "sheet_id": {
            "type": "integer",
            "description": "The ID of the sheet to append rows or columns to.\nExample: 0"
          },
          "dimension": {
            "enum": [
              "ROWS",
              "COLUMNS"
            ],
            "type": "string",
            "description": "Specifies whether to append rows or columns.\nExample: \"ROWS\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet.\nExample: \"1q2w3e4r5t6y7u8i9o0p\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_BATCH_GET",
      "description": "Retrieves data from specified cell ranges in a Google Spreadsheet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ranges": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of cell ranges in A1 notation (e.g., 'Sheet1!A1:B2', 'A1:C5') from which to retrieve data. If this list is omitted or empty, all data from the first sheet of the spreadsheet will be fetched. A range can specify a sheet name (e.g., 'Sheet2!A:A'); if no sheet name is provided in a range string (e.g., 'A1:B2'), it defaults to the first sheet. For sheet names with spaces or special characters, enclose in single quotes (e.g., \"'My Sheet'!A1:B2\").\nExamples:\n  \"Sheet1!A1:B2\"\n  \"Sheet1!A:A\"\n  \"Sheet1!1:2\"\n  \"'My Sheet'!A5:A\"\n  \"A1:B2\""
          },
          "spreadsheet_id": {
            "type": "string",
            "maxLength": 100,
            "description": "The unique identifier of the Google Spreadsheet from which data will be retrieved. This is the ID found in the spreadsheet URL after /d/.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "valueRenderOption": {
            "enum": [
              "FORMATTED_VALUE",
              "UNFORMATTED_VALUE",
              "FORMULA"
            ],
            "type": "string",
            "default": "FORMATTED_VALUE",
            "description": "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": {
            "enum": [
              "SERIAL_NUMBER",
              "FORMATTED_STRING"
            ],
            "type": "string",
            "default": "SERIAL_NUMBER",
            "description": "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."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_BATCH_UPDATE",
      "description": "Updates a specified range in a Google Sheet with given values, or appends them as new rows if `first_cell_location` is omitted. Auto-expands grid for large datasets, preventing range errors. Requirements: Target sheet must exist and spreadsheet must contain at least one worksheet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "description": "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.\nExample: [[\"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\"]]"
          },
          "sheet_name": {
            "type": "string",
            "description": "The name of the specific sheet (tab) within the spreadsheet to update. Case-sensitive.\nExamples:\n  \"Sheet1\"\n  \"Sales Data\"\n  \"Budget\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Sheets spreadsheet to be updated. Can be found in the spreadsheet URL.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "valueInputOption": {
            "enum": [
              "RAW",
              "USER_ENTERED"
            ],
            "type": "string",
            "default": "USER_ENTERED",
            "description": "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).\nExamples:\n  \"USER_ENTERED\"\n  \"RAW\""
          },
          "first_cell_location": {
            "type": "string",
            "description": "The starting cell for the update range, specified in A1 notation (e.g., 'A1', 'B2'). The update will extend from this cell to the right and down, based on the provided values. If omitted, values are appended to the sheet.\nExamples:\n  \"A1\"\n  \"D3\""
          },
          "includeValuesInResponse": {
            "type": "boolean",
            "default": false,
            "description": "If set to True, the response will include the updated values from the spreadsheet after the update is applied.\nExamples:\n  true\n  false"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_BATCH_UPDATE_VALUES_BY_DATA_FILTER",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "dataFilter",
                "values"
              ],
              "properties": {
                "values": {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "integer"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  "description": "The data to be written. A two-dimensional array of values that will be written to the range. Values can be strings, numbers, or booleans. If the range is larger than the values array, the excess cells will not be changed. If the values array is larger than the range, the excess values will be ignored."
                },
                "dataFilter": {
                  "type": "object",
                  "properties": {
                    "a1Range": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "default": null,
                      "description": "The A1 notation of the range to update."
                    },
                    "gridRange": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "sheetId": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The sheet this range is on."
                            },
                            "endRowIndex": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The end row (exclusive) of the range, or not set if unbounded."
                            },
                            "startRowIndex": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The start row (inclusive) of the range, or not set if unbounded."
                            },
                            "endColumnIndex": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The end column (exclusive) of the range, or not set if unbounded."
                            },
                            "startColumnIndex": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The start column (inclusive) of the range, or not set if unbounded."
                            }
                          },
                          "additionalProperties": false
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "description": "Selects data within the range described by a GridRange. This field is optional. If specified, the dataFilter selects data within the specified grid range."
                    },
                    "developerMetadataLookup": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "metadataId": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The ID of the developer metadata to match. This field is optional. If specified, the lookup matches only the developer metadata with the specified ID."
                            },
                            "visibility": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "default": null,
                              "description": "The visibility of the developer metadata to match. This field is optional. If specified, the lookup matches only the developer metadata with the specified visibility."
                            },
                            "metadataKey": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "default": null,
                              "description": "The key of the developer metadata to match. This field is optional. If specified, the lookup matches only the developer metadata with the specified key."
                            },
                            "locationType": {
                              "anyOf": [
                                {
                                  "enum": [
                                    "ROW",
                                    "COLUMN",
                                    "SHEET"
                                  ],
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The type of location this object is looking for. Valid values are ROW, COLUMN, and SHEET."
                            },
                            "metadataValue": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "default": null,
                              "description": "The value of the developer metadata to match. This field is optional. If specified, the lookup matches only the developer metadata with the specified value."
                            },
                            "metadataLocation": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "sheetId": {
                                      "anyOf": [
                                        {
                                          "type": "integer"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "default": null,
                                      "description": "The ID of the sheet the location is on."
                                    },
                                    "spreadsheet": {
                                      "type": [
                                        "boolean",
                                        "null"
                                      ],
                                      "default": null,
                                      "description": "True if the metadata location is the spreadsheet itself."
                                    },
                                    "locationType": {
                                      "type": [
                                        "string",
                                        "null"
                                      ],
                                      "default": null,
                                      "description": "The type of location this object represents. This field is read-only."
                                    },
                                    "dimensionRange": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "properties": {},
                                          "additionalProperties": true
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "default": null,
                                      "description": "A range along a single dimension on a sheet. All indexes are 0-based. Indexes are half open: the start index is inclusive and the end index is exclusive. Missing indexes indicate the range is unbounded on that side."
                                    }
                                  },
                                  "additionalProperties": false
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "The location of the developer metadata to match. This field is optional. If specified, the lookup matches only the developer metadata in the specified location."
                            },
                            "locationMatchingStrategy": {
                              "anyOf": [
                                {
                                  "enum": [
                                    "EXACT",
                                    "INTERSECTING"
                                  ],
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "default": null,
                              "description": "Determines how this lookup matches the location. If this field is specified as EXACT, then the lookup requires an exact match of the specified locationType, metadataKey, and metadataValue. If this field is specified as INTERSECTING, then the lookup considers all metadata that intersects the specified locationType, and then filters that metadata by the specified key and value. If this field is unspecified, it is treated as EXACT."
                            }
                          },
                          "additionalProperties": false
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "description": "Matches the data against the developer metadata that's associated with the dimensions. The developer metadata should be created with the location type set to either ROW or COLUMN and the visibility set to DOCUMENT."
                    }
                  },
                  "description": "The data filter describing the criteria to select cells for update.",
                  "additionalProperties": false
                },
                "majorDimension": {
                  "anyOf": [
                    {
                      "enum": [
                        "ROWS",
                        "COLUMNS",
                        "DIMENSION_UNSPECIFIED"
                      ],
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": "ROWS",
                  "description": "The major dimension of the values. The default value is ROWS."
                }
              },
              "description": "DataFilterValueRange",
              "additionalProperties": false
            },
            "description": "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."
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to update."
          },
          "valueInputOption": {
            "enum": [
              "RAW",
              "USER_ENTERED"
            ],
            "type": "string",
            "description": "How the input data should be interpreted."
          },
          "includeValuesInResponse": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "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": {
            "anyOf": [
              {
                "enum": [
                  "FORMATTED_VALUE",
                  "UNFORMATTED_VALUE",
                  "FORMULA"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "FORMATTED_VALUE",
            "description": "Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE."
          },
          "responseDateTimeRenderOption": {
            "anyOf": [
              {
                "enum": [
                  "SERIAL_NUMBER",
                  "FORMATTED_STRING"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "SERIAL_NUMBER",
            "description": "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."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_CLEAR_BASIC_FILTER",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet_id": {
            "type": "integer",
            "description": "The ID of the sheet on which the basic filter should be cleared.\nExamples:\n  0\n  123456789"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet.\nExample: \"abc123xyz789\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_CLEAR_VALUES",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "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.\nExamples:\n  \"Sheet1!A1:B10\"\n  \"Sheet2!C:D\"\n  \"A1:Z100\"\n  \"My Custom Sheet!B3:F10\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Spreadsheet from which to clear values. This ID can be found in the URL of the spreadsheet.\nExamples:\n  \"1qZ_g6N0g3Z0s5hJ2xQ8vP9r7T_u6X3iY2o0kE_l5N7M\"\n  \"spreαdsheetId_from_url\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_CREATE_CHART",
      "description": "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 full chart_spec supporting 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).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Optional title for the chart.\nExamples:\n  \"Sales Data\"\n  \"Monthly Revenue\""
          },
          "sheet_id": {
            "type": "integer",
            "description": "The sheetId of the worksheet where the chart will be created. This is a unique non-zero integer identifier. Use 'Get Sheet Names' or 'Get Spreadsheet Info' actions to retrieve the sheetId for your target worksheet.\nExamples:\n  123456789\n  987654321"
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Optional subtitle for the chart.\nExamples:\n  \"Q1 2024\"\n  \"Year over Year\""
          },
          "chart_spec": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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.\nExample: {\"pieChart\":{\"domain\":{\"sourceRange\":{\"sources\":[{\"endColumnIndex\":1,\"endRowIndex\":5,\"sheetId\":0,\"startColumnIndex\":0,\"startRowIndex\":0}]}},\"legendPosition\":\"RIGHT_LEGEND\",\"series\":{\"sourceRange\":{\"sources\":[{\"endColumnIndex\":2,\"endRowIndex\":5,\"sheetId\":0,\"startColumnIndex\":1,\"startRowIndex\":0}]}}}}"
          },
          "chart_type": {
            "type": "string",
            "description": "The type of chart to create. Supported types: BAR, LINE, AREA, COLUMN, SCATTER, COMBO, STEPPED_AREA (basic charts), PIE, BUBBLE, CANDLESTICK, HISTOGRAM, TREEMAP, WATERFALL, ORG, SCORECARD. If you need full control over the chart specification (including fields not covered by simple inputs), provide chart_spec instead.\nExamples:\n  \"COLUMN\"\n  \"LINE\"\n  \"BAR\"\n  \"AREA\"\n  \"PIE\"\n  \"HISTOGRAM\"\n  \"WATERFALL\""
          },
          "data_range": {
            "type": "string",
            "description": "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.\nExamples:\n  \"A1:C10\"\n  \"Sheet1!B2:D20\"\n  \"Data!A1:E50\""
          },
          "x_axis_title": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Optional title for the X-axis.\nExamples:\n  \"Time Period\"\n  \"Categories\""
          },
          "y_axis_title": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Optional title for the Y-axis.\nExamples:\n  \"Revenue ($)\"\n  \"Count\""
          },
          "background_red": {
            "type": [
              "number",
              "null"
            ],
            "default": null,
            "description": "Red component of chart background color (0.0-1.0). If not specified, uses default.\nExamples:\n  0\n  0.5\n  1"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Sheets spreadsheet where the chart will be created.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "background_blue": {
            "type": [
              "number",
              "null"
            ],
            "default": null,
            "description": "Blue component of chart background color (0.0-1.0). If not specified, uses default.\nExamples:\n  0\n  0.5\n  1"
          },
          "legend_position": {
            "type": "string",
            "default": "BOTTOM_LEGEND",
            "description": "Position of the chart legend. Options: BOTTOM_LEGEND, TOP_LEGEND, LEFT_LEGEND, RIGHT_LEGEND, NO_LEGEND.\nExamples:\n  \"BOTTOM_LEGEND\"\n  \"RIGHT_LEGEND\"\n  \"NO_LEGEND\""
          },
          "background_green": {
            "type": [
              "number",
              "null"
            ],
            "default": null,
            "description": "Green component of chart background color (0.0-1.0). If not specified, uses default.\nExamples:\n  0\n  0.5\n  1"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_CREATE_GOOGLE_SHEET1",
      "description": "Creates a new Google Spreadsheet in Google Drive using the provided title.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title for the new Google Sheet. This will be the name of the file in Google Drive.\nExamples:\n  \"Q4 Financial Report\"\n  \"Project Plan Ideas\"\n  \"Meeting Notes\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_CREATE_SPREADSHEET_COLUMN",
      "description": "Creates a new column in a Google Spreadsheet, requiring a valid `spreadsheet_id` and an existing `sheet_id`; an out-of-bounds `insert_index` may append/prepend the column.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet_id": {
            "type": "integer",
            "description": "The numeric identifier of the specific sheet (tab) within the spreadsheet where the column will be added.\nExamples:\n  \"0\"\n  \"123456789\""
          },
          "insert_index": {
            "type": "integer",
            "default": 0,
            "description": "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.\nExamples:\n  \"0\"\n  \"1\"\n  \"5\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Spreadsheet where the column will be created.\nExample: \"1qZysYd_N2cZ9gkZ8sR7M0rP8sX5vW2bA9gV3rF1cE0\""
          },
          "inherit_from_before": {
            "type": "boolean",
            "default": false,
            "description": "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.\nExamples:\n  true\n  false"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_CREATE_SPREADSHEET_ROW",
      "description": "Inserts a new, empty row into a specified sheet of a Google Spreadsheet at a given index, optionally inheriting formatting from the row above.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet_id": {
            "type": "integer",
            "description": "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).\nExamples:\n  0\n  123456789"
          },
          "insert_index": {
            "type": "integer",
            "default": 0,
            "description": "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.\nExamples:\n  0\n  5\n  100"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Spreadsheet. This ID is found in the URL of the spreadsheet (e.g., '1qpyC0XzHc_-_d824s2VfopkHh7D0jW4aXCS1D_AlGA').\nExample: \"1qpyC0XzHc_-_d824s2VfopkHh7D0jW4aXCS1D_AlGA\""
          },
          "inherit_from_before": {
            "type": "boolean",
            "default": false,
            "description": "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.\nExamples:\n  true\n  false"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_DELETE_DIMENSION",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet.\nExample: \"abc123xyz789\""
          },
          "response_ranges": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Limits the ranges of cells included in the response spreadsheet.\nExample: [\"Sheet1!A1:B2\",\"Sheet2!C:C\"]"
          },
          "delete_dimension_request": {
            "type": "object",
            "required": [
              "range"
            ],
            "properties": {
              "range": {
                "type": "object",
                "required": [
                  "dimension",
                  "end_index",
                  "sheet_id",
                  "start_index"
                ],
                "properties": {
                  "sheet_id": {
                    "type": "integer",
                    "description": "The ID of the sheet from which to delete the dimension.\nExamples:\n  0\n  123456789"
                  },
                  "dimension": {
                    "enum": [
                      "ROWS",
                      "COLUMNS"
                    ],
                    "type": "string",
                    "description": "The dimension to delete.\nExamples:\n  \"ROWS\"\n  \"COLUMNS\""
                  },
                  "end_index": {
                    "type": "integer",
                    "description": "The zero-based end index of the range to delete, exclusive. The end index must be greater than the start index.\nExamples:\n  1\n  10",
                    "exclusiveMinimum": 0
                  },
                  "start_index": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "The zero-based start index of the range to delete, inclusive. The start index must be less than the end index.\nExamples:\n  0\n  5"
                  }
                },
                "description": "The range of the dimension to delete.",
                "additionalProperties": false
              }
            },
            "description": "The details for the delete dimension request object.",
            "additionalProperties": false
          },
          "response_include_grid_data": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "True if grid data should be returned. This parameter is ignored if a field mask was set in the request.\nExamples:\n  true\n  false"
          },
          "include_spreadsheet_in_response": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "Determines if the update response should include the spreadsheet resource.\nExamples:\n  true\n  false"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_DELETE_SHEET",
      "description": "Tool to delete a sheet (worksheet) from a spreadsheet. Use when you need to remove a specific sheet from a Google Sheet document.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet_id": {
            "type": "integer",
            "description": "The ID of the sheet to delete. If the sheet is of DATA_SOURCE type, the associated DataSource is also deleted.\nExample: 123456789"
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet from which to delete the sheet.\nExample: \"abc123xyz789\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_EXECUTE_SQL",
      "description": "Execute SQL queries against Google Sheets tables. Supports SELECT, INSERT, UPDATE, and DELETE operations with familiar SQL syntax. Tables are automatically detected and mapped from the spreadsheet structure.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sql": {
            "type": "string",
            "description": "SQL query to execute. Supports SELECT, INSERT, UPDATE, DELETE operations.\nExamples:\n  \"SELECT * FROM \\\"Sales_Data\\\" LIMIT 10\"\n  \"INSERT INTO \\\"Customers\\\" (name, email) VALUES ('John Doe', 'john@example.com')\"\n  \"UPDATE \\\"Inventory\\\" SET quantity = quantity - 10 WHERE sku = 'ABC123'\"\n  \"DELETE FROM \\\"Old_Data\\\" WHERE date < '2023-01-01'\""
          },
          "dry_run": {
            "type": "boolean",
            "default": false,
            "description": "Preview changes without applying them (for write operations)"
          },
          "delete_method": {
            "enum": [
              "clear",
              "remove_rows"
            ],
            "type": "string",
            "default": "clear",
            "description": "For DELETE operations: 'clear' preserves row structure, 'remove_rows' shifts data up"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "Google Sheets ID\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_FIND_REPLACE",
      "description": "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 formula - Update old values with new ones across multiple cells - Fix formula references or patterns - Clean up data formatting issues",
      "inputSchema": {
        "type": "object",
        "properties": {
          "find": {
            "type": "string",
            "description": "The text to find. Can be a literal string or a regular expression pattern.\nExamples:\n  \"#ERROR!\"\n  \"=SUM(A1:A10)\"\n  \"old_value\""
          },
          "range": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "The A1 notation range to search in. If not specified, searches the entire sheet(s).\nExamples:\n  \"A1:Z100\"\n  \"Sheet1!A:C\"\n  \"B2:D10\""
          },
          "sheetId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The ID of the sheet to search in. If not specified, searches all sheets.\nExamples:\n  0\n  123456789"
          },
          "allSheets": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether to search across all sheets in the spreadsheet.\nExamples:\n  true\n  false"
          },
          "matchCase": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether the search should be case-sensitive.\nExamples:\n  true\n  false"
          },
          "replacement": {
            "type": "string",
            "description": "The text to replace the found instances with.\nExamples:\n  \"\"\n  \"=SUM(A1:A5)\"\n  \"new_value\""
          },
          "searchByRegex": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether to treat the find text as a regular expression.\nExamples:\n  true\n  false"
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to update.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "matchEntireCell": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether to match only cells that contain the entire search term.\nExamples:\n  true\n  false"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE",
      "description": "Finds a worksheet by its exact, case-sensitive title within a Google Spreadsheet; returns a boolean indicating if found and the complete metadata of the entire spreadsheet, regardless of whether the target worksheet is found.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The exact, case-sensitive title of the worksheet (tab name) to find.\nExamples:\n  \"Sheet1\"\n  \"Q3 Report\"\n  \"Customer Data\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Spreadsheet. This ID is part of the spreadsheet's URL.\nExamples:\n  \"1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789_drivE\"\n  \"your_actual_spreadsheet_id\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_FORMAT_CELL",
      "description": "Applies text and background cell formatting to a specified range in a Google Sheets worksheet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "red": {
            "type": "number",
            "default": 0.9,
            "description": "Red component of the background color (0.0-1.0).\nExamples:\n  \"0.0\"\n  \"0.5\"\n  \"1.0\""
          },
          "blue": {
            "type": "number",
            "default": 0.9,
            "description": "Blue component of the background color (0.0-1.0).\nExamples:\n  \"0.0\"\n  \"0.5\"\n  \"1.0\""
          },
          "bold": {
            "type": "boolean",
            "default": false,
            "description": "Apply bold formatting.\nExamples:\n  \"true\"\n  \"false\""
          },
          "green": {
            "type": "number",
            "default": 0.9,
            "description": "Green component of the background color (0.0-1.0).\nExamples:\n  \"0.0\"\n  \"0.5\"\n  \"1.0\""
          },
          "range": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "OPTION 1: Cell range in A1 notation (RECOMMENDED). Examples: 'A1' (single cell), 'F9' (cell F9), 'A1:B5' (range). Provide EITHER this field OR all four index fields below, not both.\nExamples:\n  \"A1\"\n  \"F9\"\n  \"B2:D4\"\n  \"C1:C10\""
          },
          "italic": {
            "type": "boolean",
            "default": false,
            "description": "Apply italic formatting.\nExamples:\n  \"true\"\n  \"false\""
          },
          "fontSize": {
            "type": "integer",
            "default": 10,
            "description": "Font size in points.\nExamples:\n  \"10\"\n  \"12\"\n  \"14\""
          },
          "underline": {
            "type": "boolean",
            "default": false,
            "description": "Apply underline formatting.\nExamples:\n  \"true\"\n  \"false\""
          },
          "worksheet_id": {
            "type": "integer",
            "description": "ID (sheetId) of the worksheet. Use `GOOGLESHEETS_GET_SPREADSHEET_INFO` to find this ID.\nExample: \"123456789\""
          },
          "end_row_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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.\nExamples:\n  1\n  9"
          },
          "strikethrough": {
            "type": "boolean",
            "default": false,
            "description": "Apply strikethrough formatting.\nExamples:\n  \"true\"\n  \"false\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "Identifier of the Google Sheets spreadsheet.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "start_row_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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.\nExamples:\n  0\n  8"
          },
          "end_column_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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.\nExamples:\n  1\n  2\n  6"
          },
          "start_column_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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.\nExamples:\n  0\n  1\n  5"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_GET_SHEET_NAMES",
      "description": "Lists all worksheet names from a specified Google Spreadsheet (which must exist), useful for discovering sheets before further operations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "spreadsheet_id": {
            "type": "string",
            "description": "The unique identifier of the Google Spreadsheet. This ID is typically found in the spreadsheet's URL.\nExample: \"1qpyC0XzvTcKT6EISywY_7H7D7No1tpxEXAMPLE_ID\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_GET_SPREADSHEET_BY_DATA_FILTER",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataFilters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "a1Range": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "default": null,
                  "description": "Selects data that matches the specified A1 range.\nExample: \"Sheet1!A1:B2\""
                },
                "gridRange": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "sheetId": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The ID of the sheet this range is on.\nExample: 0"
                        },
                        "endRowIndex": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "exclusiveMinimum": 0
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The end row (0-based, exclusive) of the range.\nExample: 10"
                        },
                        "startRowIndex": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The start row (0-based, inclusive) of the range.\nExample: 0"
                        },
                        "endColumnIndex": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "exclusiveMinimum": 0
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The end column (0-based, exclusive) of the range.\nExample: 5"
                        },
                        "startColumnIndex": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The start column (0-based, inclusive) of the range.\nExample: 0"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects data that matches the range described by the GridRange."
                },
                "developerMetadataLookup": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "metadataId": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Filter by metadata ID.\nExample: 123"
                        },
                        "visibility": {
                          "anyOf": [
                            {
                              "enum": [
                                "DOCUMENT",
                                "PROJECT"
                              ],
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Metadata visibility."
                        },
                        "metadataKey": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Filter by metadata key.\nExample: \"project_id\""
                        },
                        "locationType": {
                          "anyOf": [
                            {
                              "enum": [
                                "ROW",
                                "COLUMN",
                                "SHEET",
                                "SPREADSHEET",
                                "OBJECT"
                              ],
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Location type of metadata."
                        },
                        "metadataValue": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Filter by metadata value.\nExample: \"alpha\""
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects data associated with developer metadata."
                }
              },
              "description": "DataFilter",
              "additionalProperties": false
            },
            "description": "The DataFilters used to select which ranges to retrieve."
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to request.\nExample: \"abc123xyz789\""
          },
          "includeGridData": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "True if grid data should be returned. Ignored if a field mask is set.\nExample: true"
          },
          "excludeTablesInBandedRanges": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "True if tables should be excluded in the banded ranges. False if not set.\nExample: false"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_GET_SPREADSHEET_INFO",
      "description": "Retrieves comprehensive metadata for a Google Spreadsheet using its ID, excluding cell data.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "spreadsheet_id": {
            "type": "string",
            "description": "Unique identifier of the Google Spreadsheet, typically found in its URL.\nExample: \"12345abcdefGHIJKLMNOPqrstuvwxyz67890UVWXYZ\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_GET_TABLE_SCHEMA",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet_name": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Sheet/tab name if table_name is ambiguous across multiple sheets"
          },
          "table_name": {
            "type": "string",
            "description": "Specific table name from LIST_TABLES response (e.g., 'Sales_Data', 'Employee_List'). Use 'auto' to analyze the largest/most prominent table.\nExamples:\n  \"Sales_Data\"\n  \"Employee_List\"\n  \"auto\""
          },
          "sample_size": {
            "type": "integer",
            "default": 50,
            "maximum": 1000,
            "minimum": 1,
            "description": "Number of rows to sample for type inference"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "Google Sheets ID\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_INSERT_DIMENSION",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet to update.\nExample: \"abc123spreadsheetId\""
          },
          "response_ranges": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Limits the ranges of the spreadsheet to include in the response."
          },
          "insert_dimension": {
            "type": "object",
            "required": [
              "range"
            ],
            "properties": {
              "range": {
                "type": "object",
                "required": [
                  "dimension",
                  "end_index",
                  "sheet_id",
                  "start_index"
                ],
                "properties": {
                  "sheet_id": {
                    "type": "integer",
                    "description": "The ID of the sheet where the dimensions will be inserted.\nExample: 0"
                  },
                  "dimension": {
                    "enum": [
                      "ROWS",
                      "COLUMNS"
                    ],
                    "type": "string",
                    "description": "The dimension to insert. Valid values are \"ROWS\" or \"COLUMNS\".\nExample: \"ROWS\""
                  },
                  "end_index": {
                    "type": "integer",
                    "description": "The end index (0-based, exclusive) of the dimension range to insert. The number of rows/columns to insert is `endIndex - startIndex`.\nExample: 3"
                  },
                  "start_index": {
                    "type": "integer",
                    "description": "The start index (0-based) of the dimension range to insert. The inserted dimensions will be placed before this index.\nExample: 1"
                  }
                },
                "description": "Specifies the dimensions to insert.",
                "additionalProperties": false
              },
              "inherit_from_before": {
                "type": [
                  "boolean",
                  "null"
                ],
                "default": null,
                "description": "If true, the new dimensions will inherit properties from the dimension before the startIndex. If false (default), they will inherit from the dimension at the startIndex. startIndex must be greater than 0 if inheritFromBefore is true.\nExample: true"
              }
            },
            "description": "The details for the insert dimension request.",
            "additionalProperties": false
          },
          "response_include_grid_data": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "True if grid data should be included in the response (if includeSpreadsheetInResponse is true)."
          },
          "include_spreadsheet_in_response": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "True if the updated spreadsheet should be included in the response."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_LIST_TABLES",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "min_rows": {
            "type": "integer",
            "default": 2,
            "minimum": 1,
            "description": "Minimum number of data rows to consider a valid table"
          },
          "min_columns": {
            "type": "integer",
            "default": 1,
            "minimum": 1,
            "description": "Minimum number of columns to consider a valid table"
          },
          "min_confidence": {
            "type": "number",
            "default": 0.5,
            "maximum": 1,
            "minimum": 0,
            "description": "Minimum confidence score (0.0-1.0) to consider a valid table"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "Google Sheets ID from the URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms')\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Exact text value to find; matches the entire content of a cell in a row.\nExamples:\n  \"John\"\n  \"Completed\"\n  \"ID-12345\""
          },
          "range": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "A1 notation range with explicit subrange (e.g., 'Sheet1!A1:D5', 'MySheet!A:Z'). 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.\nExamples:\n  \"Sheet1!A1:D5\"\n  \"Sheet1!A:Z\"\n  \"'Admin tickets'!A:A\"\n  \"MySheetName!C1:G10\""
          },
          "case_sensitive": {
            "type": "boolean",
            "default": false,
            "description": "If `True`, the query string search is case-sensitive."
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "Identifier of the Google Spreadsheet to search.\nExample: \"1BiexwqQYjfC_BXy6zDQYJqb6zxzRyP9\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_QUERY_TABLE",
      "description": "This action is used to query a table in a Google Spreadsheet, call this action to query a table in a spreadsheet. Execute SQL-like SELECT queries against spreadsheet tables. Supports WHERE conditions, ORDER BY, LIMIT clauses. Call this action after calling the GET_TABLE_SCHEMA action to query a table in a spreadsheet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sql": {
            "type": "string",
            "description": "SQL SELECT query. Supported: SELECT cols FROM table WHERE conditions ORDER BY col LIMIT n. Table names must be quoted if they contain spaces.\nExamples:\n  \"SELECT * FROM \\\"Sales_Data\\\" LIMIT 10\"\n  \"SELECT project, totals FROM \\\"Sales_Data\\\" WHERE totals > 10.0 ORDER BY totals DESC\"\n  \"SELECT name, email FROM \\\"Customers\\\" WHERE status = 'ACTIVE'\""
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "Google Sheets ID\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          },
          "include_formulas": {
            "type": "boolean",
            "default": false,
            "description": "Whether to return formula text instead of calculated values for formula columns"
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SEARCH_DEVELOPER_METADATA",
      "description": "Tool to search for developer metadata in a spreadsheet. Use when you need to find specific metadata entries based on filters.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataFilters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "a1Range": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "default": null,
                  "description": "Selects DeveloperMetadata associated with the given A1 range. Must represent a single row or single column only. Valid examples: 'A:A' (entire column A), 'Sheet1!B:B' (column B in Sheet1), '1:1' (entire row 1), 'Sheet1!5:5' (row 5 in Sheet1). Invalid examples: 'A1:D7' (multi-row/multi-column range), 'A1' (single cell)."
                },
                "gridRange": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects DeveloperMetadata associated with the given grid range. The developer metadata must be associated with a location that overlaps the range."
                },
                "developerMetadataLookup": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects DeveloperMetadata by its ID."
                }
              },
              "description": "DataFilter",
              "additionalProperties": false
            },
            "description": "The data filters describing the criteria used to determine which DeveloperMetadata entries to return."
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to retrieve metadata from.\nExample: \"1q2w3e4r5t6y7u8i9o0p\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SEARCH_SPREADSHEETS",
      "description": "Search for Google Spreadsheets using various filters including name, content, date ranges, and more.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Search query to filter spreadsheets using Google Drive query syntax. ALWAYS use field names like 'name contains', 'fullText contains'. DO NOT use plain keywords without field names (wrong: 'finance', correct: 'name contains \"finance\"'). DO NOT use spreadsheet IDs as search terms. For non-ASCII characters, use proper field syntax. Invalid operators like 'related to' or 'shared with' won't work - use 'sharedWithMe = true' instead. Leave empty to get all spreadsheets. IMPORTANT: This action requires Google Drive API scope.\nExamples:\n  \"name contains 'budget'\"\n  \"fullText contains 'sales'\"\n  \"name contains 'report' and fullText contains 'quarterly'\"\n  \"name contains 'finance' or name contains 'accounting'\"\n  \"name contains 'データ'\"\n  \"sharedWithMe = true\""
          },
          "order_by": {
            "type": [
              "string",
              "null"
            ],
            "default": "modifiedTime desc",
            "description": "Order results by field. Common options: 'modifiedTime desc', 'modifiedTime asc', 'name', 'createdTime desc'\nExamples:\n  \"modifiedTime desc\"\n  \"name\"\n  \"createdTime desc\"\n  \"viewedByMeTime desc\""
          },
          "max_results": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1000,
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "default": 10,
            "description": "Maximum number of spreadsheets to return (1-1000). Defaults to 10."
          },
          "starred_only": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether to return only starred spreadsheets. Defaults to False."
          },
          "created_after": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Return spreadsheets created after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.\nExamples:\n  \"2024-01-01T00:00:00Z\"\n  \"2024-12-01T12:00:00-08:00\""
          },
          "modified_after": {
            "type": [
              "string",
              "null"
            ],
            "default": null,
            "description": "Return spreadsheets modified after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.\nExamples:\n  \"2024-01-01T00:00:00Z\"\n  \"2024-12-01T12:00:00-08:00\""
          },
          "shared_with_me": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether to return only spreadsheets shared with the current user. Defaults to False."
          },
          "include_trashed": {
            "type": [
              "boolean",
              "null"
            ],
            "default": false,
            "description": "Whether to include spreadsheets in trash. Defaults to False."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SET_BASIC_FILTER",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "object",
            "required": [
              "range"
            ],
            "properties": {
              "range": {
                "type": "object",
                "required": [
                  "sheet_id"
                ],
                "properties": {
                  "sheet_id": {
                    "type": "integer",
                    "description": "The sheet this range is on."
                  },
                  "end_row_index": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The end row (exclusive) of the range, or not set if unbounded."
                  },
                  "start_row_index": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The start row (inclusive) of the range, or not set if unbounded."
                  },
                  "end_column_index": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The end column (exclusive) of the range, or not set if unbounded."
                  },
                  "start_column_index": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The start column (inclusive) of the range, or not set if unbounded."
                  }
                },
                "description": "The range the filter covers.",
                "additionalProperties": false
              },
              "criteria": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": {
                      "type": "object",
                      "properties": {
                        "condition": {
                          "anyOf": [
                            {
                              "type": "object",
                              "required": [
                                "type"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "description": "The type of condition."
                                },
                                "values": {
                                  "anyOf": [
                                    {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "relative_date": {
                                            "type": [
                                              "string",
                                              "null"
                                            ],
                                            "default": null,
                                            "description": "A relative date."
                                          },
                                          "user_entered_value": {
                                            "type": [
                                              "string",
                                              "null"
                                            ],
                                            "default": null,
                                            "description": "A value the condition is based on."
                                          }
                                        },
                                        "description": "ConditionValue",
                                        "additionalProperties": false
                                      }
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null,
                                  "description": "The values of the condition."
                                }
                              },
                              "description": "BooleanCondition",
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "A condition that must be true for values to be shown."
                        },
                        "hiddenValues": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Values that should be hidden."
                        },
                        "visibleBackgroundColorStyle": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "rgbColor": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "red": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of red in the color as a value in the interval [0, 1]."
                                        },
                                        "blue": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of blue in the color as a value in the interval [0, 1]."
                                        },
                                        "alpha": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The fraction of this color that should be applied to the pixel."
                                        },
                                        "green": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of green in the color as a value in the interval [0, 1]."
                                        }
                                      },
                                      "description": "Color",
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null
                                },
                                "themeColor": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "default": null,
                                  "description": "Themecolor"
                                }
                              },
                              "description": "ColorStyle",
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The background fill color to filter by."
                        },
                        "visibleForegroundColorStyle": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "rgbColor": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "red": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of red in the color as a value in the interval [0, 1]."
                                        },
                                        "blue": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of blue in the color as a value in the interval [0, 1]."
                                        },
                                        "alpha": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The fraction of this color that should be applied to the pixel."
                                        },
                                        "green": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of green in the color as a value in the interval [0, 1]."
                                        }
                                      },
                                      "description": "Color",
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null
                                },
                                "themeColor": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "default": null,
                                  "description": "Themecolor"
                                }
                              },
                              "description": "ColorStyle",
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The foreground color to filter by."
                        }
                      },
                      "description": "FilterCriteria",
                      "additionalProperties": false
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "The criteria for showing/hiding values per column. The key is the column index."
              },
              "sortSpecs": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortOrder": {
                          "anyOf": [
                            {
                              "enum": [
                                "ASCENDING",
                                "DESCENDING",
                                "SORT_ORDER_UNSPECIFIED"
                              ],
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The order data should be sorted."
                        },
                        "dimensionIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The dimension the sort should be applied to."
                        },
                        "backgroundColorStyle": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "rgbColor": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "red": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of red in the color as a value in the interval [0, 1]."
                                        },
                                        "blue": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of blue in the color as a value in the interval [0, 1]."
                                        },
                                        "alpha": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The fraction of this color that should be applied to the pixel."
                                        },
                                        "green": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of green in the color as a value in the interval [0, 1]."
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null,
                                  "description": "Color"
                                },
                                "themeColor": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "default": null,
                                  "description": "Theme Color"
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The background fill color to sort by."
                        },
                        "foregroundColorStyle": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "rgbColor": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "red": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of red in the color as a value in the interval [0, 1]."
                                        },
                                        "blue": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of blue in the color as a value in the interval [0, 1]."
                                        },
                                        "alpha": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The fraction of this color that should be applied to the pixel."
                                        },
                                        "green": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The amount of green in the color as a value in the interval [0, 1]."
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null,
                                  "description": "Color"
                                },
                                "themeColor": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "default": null,
                                  "description": "Theme Color"
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The foreground color to sort by."
                        },
                        "dataSourceColumnReference": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "default": null,
                                  "description": "The display name of the column."
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Reference to a data source column."
                        }
                      },
                      "description": "SortSpec",
                      "additionalProperties": false
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "The sort specifications for the filter."
              }
            },
            "description": "The filter to set.",
            "additionalProperties": false
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SHEET_FROM_JSON",
      "description": "Creates a new Google Spreadsheet and populates its first worksheet from `sheet_json`, which must be non-empty as its first item's keys establish the headers.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The desired title for the new Google Spreadsheet.\nExamples:\n  \"Q3 Sales Report\"\n  \"Project Plan Alpha\""
          },
          "sheet_json": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true
            },
            "description": "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).\nExamples:\n  \"[{\\\"Name\\\": \\\"Alice\\\", \\\"Age\\\": 30, \\\"City\\\": \\\"New York\\\"}, {\\\"Name\\\": \\\"Bob\\\", \\\"Age\\\": 24, \\\"City\\\": \\\"London\\\"}]\"\n  \"[{\\\"Product ID\\\": \\\"A123\\\", \\\"Quantity\\\": 10, \\\"Price\\\": 25.50}, {\\\"Product ID\\\": \\\"B456\\\", \\\"Quantity\\\": 5, \\\"Price\\\": 100.00}]\""
          },
          "sheet_name": {
            "type": "string",
            "description": "The name for the first worksheet within the newly created spreadsheet. This name will appear as a tab at the bottom of the sheet.\nExamples:\n  \"Sheet1\"\n  \"Data Summary\"\n  \"October Metrics\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SPREADSHEETS_SHEETS_COPY_TO",
      "description": "Tool to copy a single sheet from a spreadsheet to another spreadsheet. Use when you need to duplicate a sheet into a different spreadsheet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet_id": {
            "type": "integer",
            "description": "The ID of the sheet to copy.\nExample: 0"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet containing the sheet to copy.\nExample: \"1qZ_...\""
          },
          "destination_spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet to copy the sheet to.\nExample: \"2rY_...\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "The A1 notation of a range to search for a logical table of data. Values are appended after the last row of the table.\nExample: \"Sheet1!A1:B2\""
          },
          "values": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              }
            },
            "description": "The data to be written. 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.\nExample: [[\"A1_val1\",\"A1_val2\"],[\"A2_val1\",\"A2_val2\"]]"
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to update.\nExample: \"1q0gLhLdGXYZblahblahblah\""
          },
          "majorDimension": {
            "anyOf": [
              {
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The major dimension of the values. For output, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4, then requesting range=A1:B2,majorDimension=ROWS will return [[1,2],[3,4]], whereas requesting range=A1:B2,majorDimension=COLUMNS will return [[1,3],[2,4]].\nExample: \"ROWS\""
          },
          "insertDataOption": {
            "anyOf": [
              {
                "enum": [
                  "OVERWRITE",
                  "INSERT_ROWS"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "How the input data should be inserted.\nExample: \"INSERT_ROWS\""
          },
          "valueInputOption": {
            "enum": [
              "RAW",
              "USER_ENTERED"
            ],
            "type": "string",
            "description": "How the input data should be interpreted.\nExample: \"USER_ENTERED\""
          },
          "includeValuesInResponse": {
            "type": [
              "boolean",
              "null"
            ],
            "default": null,
            "description": "Determines if the update response should include the values of the cells that were appended. By default, responses do not include the updated values.\nExample: true"
          },
          "responseValueRenderOption": {
            "anyOf": [
              {
                "enum": [
                  "FORMATTED_VALUE",
                  "UNFORMATTED_VALUE",
                  "FORMULA"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.\nExample: \"FORMATTED_VALUE\""
          },
          "responseDateTimeRenderOption": {
            "anyOf": [
              {
                "enum": [
                  "SERIAL_NUMBER",
                  "FORMATTED_STRING"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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.\nExample: \"SERIAL_NUMBER\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEAR",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ranges": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The ranges to clear, in A1 notation or R1C1 notation.\nExample: [\"Sheet1!A1:B2\",\"Sheet1!C3:D4\"]"
          },
          "spreadsheet_id": {
            "type": "string",
            "description": "The ID of the spreadsheet to update.\nExample: \"1q2w3e4r5t6y7u8i9o0p\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEAR_BY_DATA_FILTER",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataFilters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "a1Range": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "default": null,
                  "description": "Selects data that matches the specified A1 range."
                },
                "gridRange": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "sheetId": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The sheet this range is on."
                        },
                        "endRowIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The end row (exclusive) of the range, or not set if unbounded."
                        },
                        "startRowIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The start row (inclusive) of the range, or not set if unbounded."
                        },
                        "endColumnIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The end column (exclusive) of the range, or not set if unbounded."
                        },
                        "startColumnIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The start column (inclusive) of the range, or not set if unbounded."
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects data that matches the range described by the GridRange."
                },
                "developerMetadataLookup": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "metadataId": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Limits the selected developer metadata to that which has a matching DeveloperMetadata.metadata_id."
                        },
                        "visibility": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Limits the selected developer metadata to that which has a matching DeveloperMetadata.visibility. Valid values: DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED, DOCUMENT, PROJECT."
                        },
                        "metadataKey": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Limits the selected developer metadata to that which has a matching DeveloperMetadata.metadata_key."
                        },
                        "locationType": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Limits the selected developer metadata to those entries which are associated with locations of the specified type. Valid values: DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED, ROW, COLUMN, SHEET, SPREADSHEET, ALL_METADATA_LOCATION."
                        },
                        "metadataValue": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Limits the selected developer metadata to that which has a matching DeveloperMetadata.metadata_value."
                        },
                        "metadataLocation": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "sheetId": {
                                  "anyOf": [
                                    {
                                      "type": "integer"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null,
                                  "description": "The ID of the sheet the metadata is associated with."
                                },
                                "spreadsheet": {
                                  "type": [
                                    "boolean",
                                    "null"
                                  ],
                                  "default": null,
                                  "description": "True if the metadata is associated with the entire spreadsheet."
                                },
                                "unionedRange": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "sheetId": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The sheet this range is on."
                                        },
                                        "endRowIndex": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The end row (exclusive) of the range, or not set if unbounded."
                                        },
                                        "startRowIndex": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The start row (inclusive) of the range, or not set if unbounded."
                                        },
                                        "endColumnIndex": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The end column (exclusive) of the range, or not set if unbounded."
                                        },
                                        "startColumnIndex": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The start column (inclusive) of the range, or not set if unbounded."
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null,
                                  "description": "A grid range covering all spreadsheet, sheet, row, and column metadata that belong to the same unioned group."
                                },
                                "dimensionRange": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "sheetId": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The sheet this span is on."
                                        },
                                        "endIndex": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The end (exclusive) of the span, or not set if unbounded."
                                        },
                                        "dimension": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "default": null,
                                          "description": "The dimension of the span. Valid values are ROWS or COLUMNS."
                                        },
                                        "startIndex": {
                                          "anyOf": [
                                            {
                                              "type": "integer"
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ],
                                          "default": null,
                                          "description": "The start (inclusive) of the span, or not set if unbounded."
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "default": null,
                                  "description": "The dimension range the metadata is associated with."
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "Limits the selected developer metadata to those entries associated with the specified location."
                        },
                        "locationMatchingStrategy": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "default": null,
                          "description": "Determines how this lookup matches the location. Valid values: DEVELOPER_METADATA_LOCATION_MATCHING_STRATEGY_UNSPECIFIED, EXACT_LOCATION, INTERSECTING_LOCATION."
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects data associated with the developer metadata matching the criteria described by this DeveloperMetadataLookup."
                }
              },
              "description": "DataFilter",
              "additionalProperties": false
            },
            "description": "The DataFilters used to determine which ranges to clear."
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to update."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_GET_BY_DATA_FILTER",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataFilters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "a1Range": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "default": null,
                  "description": "Selects data that matches the specified A1 range."
                },
                "gridRange": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "sheetId": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The sheet ID of the range."
                        },
                        "endRowIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The end row (0-indexed) of the range, exclusive."
                        },
                        "startRowIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The start row (0-indexed) of the range, inclusive."
                        },
                        "endColumnIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The end column (0-indexed) of the range, exclusive."
                        },
                        "startColumnIndex": {
                          "anyOf": [
                            {
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null,
                          "description": "The start column (0-indexed) of the range, inclusive."
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Selects data that matches the specified grid range."
                }
              },
              "description": "DataFilter",
              "additionalProperties": false
            },
            "description": "The data filters used to match the ranges of values to retrieve. Ranges that match any of the specified data filters are included in the response.\nExample: [{\"a1Range\":\"Sheet1!A1:B5\"}]"
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to retrieve data from.\nExample: \"1q2w3e4r5t6y7u8i9o0p\""
          },
          "majorDimension": {
            "anyOf": [
              {
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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": {
            "anyOf": [
              {
                "enum": [
                  "FORMATTED_VALUE",
                  "UNFORMATTED_VALUE",
                  "FORMULA"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "How values should be represented in the output. The default render option is FORMATTED_VALUE."
          },
          "dateTimeRenderOption": {
            "anyOf": [
              {
                "enum": [
                  "SERIAL_NUMBER",
                  "FORMATTED_STRING"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "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."
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_UPDATE_SHEET_PROPERTIES",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet containing the sheet to update."
          },
          "updateSheetProperties": {
            "type": "object",
            "required": [
              "fields",
              "properties"
            ],
            "properties": {
              "fields": {
                "type": "string",
                "description": "A comma-separated string specifying which properties to update. Uses FieldMask format. For example, to update the title and index, use \"title,index\". To update all mutable sheet properties, use \"*\"."
              },
              "properties": {
                "type": "object",
                "required": [
                  "sheetId"
                ],
                "properties": {
                  "index": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The new zero-based index of the sheet."
                  },
                  "title": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "default": null,
                    "description": "The new title of the sheet."
                  },
                  "hidden": {
                    "type": [
                      "boolean",
                      "null"
                    ],
                    "default": null,
                    "description": "Whether the sheet should be hidden (true) or visible (false)."
                  },
                  "sheetId": {
                    "type": "integer",
                    "description": "The ID of the sheet to update."
                  },
                  "tabColorStyle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "rgbColor": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "red": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "default": null,
                                    "description": "The red component of the color, between 0.0 and 1.0."
                                  },
                                  "blue": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "default": null,
                                    "description": "The blue component of the color, between 0.0 and 1.0."
                                  },
                                  "alpha": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "default": null,
                                    "description": "The alpha component of the color, between 0.0 and 1.0."
                                  },
                                  "green": {
                                    "type": [
                                      "number",
                                      "null"
                                    ],
                                    "default": null,
                                    "description": "The green component of the color, between 0.0 and 1.0."
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "Represents a color using RGB values."
                          },
                          "themeColor": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "default": null,
                            "description": "Represents a theme color type."
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The new tab color for the sheet."
                  },
                  "gridProperties": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "rowCount": {
                            "anyOf": [
                              {
                                "type": "integer"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of rows in the sheet."
                          },
                          "columnCount": {
                            "anyOf": [
                              {
                                "type": "integer"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of columns in the sheet."
                          },
                          "rightToLeft": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "default": null,
                            "description": "True if the sheet is an RTL sheet."
                          },
                          "hideGridlines": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "default": null,
                            "description": "True if gridlines are hidden."
                          },
                          "frozenRowCount": {
                            "anyOf": [
                              {
                                "type": "integer"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of frozen rows."
                          },
                          "frozenColumnCount": {
                            "anyOf": [
                              {
                                "type": "integer"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null,
                            "description": "The number of frozen columns."
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Properties of a grid sheet."
                  }
                },
                "description": "The properties to update.",
                "additionalProperties": false
              }
            },
            "description": "The details of the sheet properties to update.",
            "additionalProperties": false
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_UPDATE_SPREADSHEET_PROPERTIES",
      "description": "Tool to update properties of a spreadsheet, such as its title, locale, or auto-recalculation settings. Use when you need to modify the overall configuration of a Google Sheet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "string",
            "description": "The fields that should be updated. Use '*' for all fields in 'properties' or a comma-separated list (e.g., 'title,locale,iterativeCalculationSettings.maxIterations'). The root 'properties' is implied.\nExamples:\n  \"title,locale\"\n  \"iterativeCalculationSettings.maxIterations\"\n  \"*\""
          },
          "properties": {
            "type": "object",
            "properties": {
              "title": {
                "type": [
                  "string",
                  "null"
                ],
                "default": null,
                "description": "The title of the spreadsheet.\nExample: \"My Awesome Spreadsheet\""
              },
              "locale": {
                "type": [
                  "string",
                  "null"
                ],
                "default": null,
                "description": "The locale of the spreadsheet in BCP 47 format.\nExamples:\n  \"en-US\"\n  \"fr-FR\""
              },
              "timeZone": {
                "type": [
                  "string",
                  "null"
                ],
                "default": null,
                "description": "The time zone of the spreadsheet in CLDR format (e.g., 'America/New_York').\nExample: \"America/Los_Angeles\""
              },
              "autoRecalc": {
                "anyOf": [
                  {
                    "enum": [
                      "ON_CHANGE",
                      "MINUTE",
                      "HOUR"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "The recalculation interval for the spreadsheet.\nExample: \"ON_CHANGE\""
              },
              "defaultFormat": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "textFormat": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {},
                            "additionalProperties": true
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "The text format of the cell. Represents a TextFormat object."
                      },
                      "wrapStrategy": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "default": null,
                        "description": "The wrap strategy of the cell content. E.g., 'OVERFLOW_CELL', 'LEGACY_WRAP', 'CLIP', 'WRAP'."
                      },
                      "verticalAlignment": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "default": null,
                        "description": "The vertical alignment of the cell content. E.g., 'TOP', 'MIDDLE', 'BOTTOM'."
                      },
                      "horizontalAlignment": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "default": null,
                        "description": "The horizontal alignment of the cell content. E.g., 'LEFT', 'CENTER', 'RIGHT'."
                      },
                      "backgroundColorStyle": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {},
                            "additionalProperties": true
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "The background color style of the cell. Represents a ColorStyle object."
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "The default cell format for the entire spreadsheet."
              },
              "spreadsheetTheme": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "themeColors": {
                        "anyOf": [
                          {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": true
                            }
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "The theme colors of the spreadsheet. This is a list of ThemeColorPair."
                      },
                      "primaryFontFamily": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "default": null,
                        "description": "The primary font family of the spreadsheet theme."
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "The theme of the spreadsheet."
              },
              "iterativeCalculationSettings": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "maxIterations": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "The maximum number of iterations for iterative calculation.\nExample: 100"
                      },
                      "convergenceThreshold": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "default": null,
                        "description": "The threshold for convergence in iterative calculation.\nExample: 0.001"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Settings for iterative calculation."
              }
            },
            "description": "The properties to update. At least one field within properties must be set.",
            "additionalProperties": false
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet to update.\nExample: \"abc123spreadsheetId\""
          }
        }
      }
    },
    {
      "name": "GOOGLESHEETS_UPSERT_ROWS",
      "description": "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)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "description": "2D array of data rows to upsert (no header row). Each row should have values matching the headers list. Cell values can be strings, numbers, booleans, or null. You can provide a subset of columns - other columns in the sheet will be preserved during updates. Example inputs: [['john@example.com', '555-0101', 'Active'], ['jane@example.com', '555-0102', 'Pending']] for contacts, [['WIDGET-001', 50, 9.99], ['GADGET-002', 30, 19.99]] for inventory, [['L-12345', 'John Doe', 85]] for single CRM lead update.\nExamples:\n  [[\"john@example.com\",\"555-0101\",\"Active\"],[\"jane@example.com\",\"555-0102\",\"Pending\"]]\n  [[\"WIDGET-001\",50,9.99],[\"GADGET-002\",30,19.99]]\n  [[\"L-12345\",\"John Doe\",85]]"
          },
          "headers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "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. Example inputs: ['Email', 'Phone', 'Status'] for contact updates, ['Lead ID', 'Name', 'Score'] for CRM, ['SKU', 'Stock', 'Price'] for inventory.\nExamples:\n  [\"Email\",\"Phone\",\"Status\"]\n  [\"Lead ID\",\"Name\",\"Score\"]\n  [\"SKU\",\"Stock\",\"Price\"]"
          },
          "keyColumn": {
            "type": "string",
            "description": "The column NAME to use as unique identifier for matching rows. Must match a header name exactly. Example inputs: 'Email' (for contact lists), 'ID' (for records), 'SKU' (for inventory), 'Transaction Number' (for financial data), 'Lead ID' (for CRM).\nExamples:\n  \"Email\"\n  \"ID\"\n  \"SKU\"\n  \"Lead ID\"\n  \"Transaction Number\""
          },
          "sheetName": {
            "type": "string",
            "description": "The name of the sheet/tab within the spreadsheet.\nExamples:\n  \"Leads\"\n  \"Transactions\"\n  \"Inventory\""
          },
          "tableStart": {
            "type": [
              "string",
              "null"
            ],
            "default": "A1",
            "description": "Cell where the table starts (where headers are located). Defaults to 'A1'. Use this if your table is offset (e.g., 'C5', 'D10').\nExamples:\n  \"A1\"\n  \"C5\"\n  \"D10\""
          },
          "spreadsheetId": {
            "type": "string",
            "description": "The ID of the spreadsheet.\nExample: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\""
          }
        }
      }
    }
  ],
  "resources": null,
  "prompts": null
}