← WebMCP Directory

Tool tree

googlechromelabs.github.io

Developer ToolsTools verified
Website
A spreadsheet where people and AI agents share the same tools through WebMCP.
Explore capabilities
    get_workbook_infoAnswer

    Lists every sheet with its used range, size, frozen rows and columns, charts and conditional formats. Also returns the sheet on screen, what the person has selected, and the changes undo and redo would revert.

    View tool JSON
    {
      "name": "get_workbook_info",
      "kind": "answer",
      "impl": "imperative",
      "description": "Lists every sheet with its used range, size, frozen rows and columns, charts and conditional formats. Also returns the sheet on screen, what the person has selected, and the changes undo and redo would revert.",
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    get_spreadsheet_selectionAnswer

    Returns the cells the person has selected, with their values, formulas and the count, sum and average of the numbers. Use it when the person refers to "these cells" or "the selection".

    View tool JSON
    {
      "name": "get_spreadsheet_selection",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the cells the person has selected, with their values, formulas and the count, sum and average of the numbers. Use it when the person refers to \"these cells\" or \"the selection\".",
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    read_rangeAnswer

    Reads cell values, formulas and formula errors, row by row from the top-left cell. Empty rows and columns after the sheet's data are left out. Dates read as text like 2026-10-13. Long ranges come back a page at a time; read next_range to continue.

    View tool JSON
    {
      "name": "read_range",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads cell values, formulas and formula errors, row by row from the top-left cell. Empty rows and columns after the sheet's data are left out. Dates read as text like 2026-10-13. Long ranges come back a page at a time; read next_range to continue.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Cells to read, like A1:G20, Sales!A:C or B2, or a sheet name to read all of it. Leave out to read all of the sheet on screen."
          },
          "include_formats": {
            "type": "boolean",
            "description": "Also return each cell's formatting.",
            "default": false
          }
        }
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    find_cellsAnswer

    Finds cells that contain some text, on one sheet or all of them. Returns the matches with their values and how many match in all. Many matches come back a page at a time, with next_start to continue.

    View tool JSON
    {
      "name": "find_cells",
      "kind": "answer",
      "impl": "imperative",
      "description": "Finds cells that contain some text, on one sheet or all of them. Returns the matches with their values and how many match in all. Many matches come back a page at a time, with next_start to continue.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Text to look for.",
            "minLength": 1
          },
          "sheet": {
            "type": "string",
            "description": "Sheet to search. Leave out to search every sheet."
          },
          "match_case": {
            "type": "boolean",
            "description": "Match upper and lower case exactly.",
            "default": false
          },
          "entire_cell": {
            "type": "boolean",
            "description": "Match only cells whose whole text is the query.",
            "default": false
          },
          "search_formulas": {
            "type": "boolean",
            "description": "Also look inside formulas.",
            "default": false
          },
          "start": {
            "type": "integer",
            "description": "Number of the first match to return, 1 for the first. Use next_start from the previous result.",
            "default": 1,
            "minimum": 1
          }
        },
        "required": [
          "query"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    set_valuesAction

    Types values and formulas into cells the way a person would: 42, 3.5%, $1,200, 2026-10-13, TRUE, or a formula like =SUM(B2:B9). Returns the resulting values and any formula errors.

    View tool JSON
    {
      "name": "set_values",
      "kind": "act",
      "impl": "imperative",
      "description": "Types values and formulas into cells the way a person would: 42, 3.5%, $1,200, 2026-10-13, TRUE, or a formula like =SUM(B2:B9). Returns the resulting values and any formula errors.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Where to write: the top-left cell, like B2 or Sales!B2, or a range the same size as values."
          },
          "values": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "What to type in one cell."
              },
              "description": "One row of cells.",
              "maxItems": 52
            },
            "description": "Rows of cells. One value fills a larger range, with formulas adjusted like a fill. Start text with ' to keep it as typed. \"\" clears a cell.",
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "required": [
          "range",
          "values"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    clear_rangeAction

    Clears cells: their values and formulas, their formatting, or both.

    View tool JSON
    {
      "name": "clear_range",
      "kind": "act",
      "impl": "imperative",
      "description": "Clears cells: their values and formulas, their formatting, or both.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Cells to clear, like B2:D9, Sales!A:A or 5:5."
          },
          "what": {
            "type": "string",
            "enum": [
              "contents",
              "formats",
              "all"
            ],
            "description": "What to clear.",
            "default": "contents"
          }
        },
        "required": [
          "range"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    autofillAction

    Continues a pattern into more cells, like dragging the fill handle: 1, 2 goes on 3, 4; Jan goes on Feb; Item 1 goes on Item 2; formulas adjust their references; other values repeat.

    View tool JSON
    {
      "name": "autofill",
      "kind": "act",
      "impl": "imperative",
      "description": "Continues a pattern into more cells, like dragging the fill handle: 1, 2 goes on 3, 4; Jan goes on Feb; Item 1 goes on Item 2; formulas adjust their references; other values repeat.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "Cells with the pattern, like A2:A3 or Sales!B1:C1."
          },
          "target": {
            "type": "string",
            "description": "The whole range to fill, source included, like A2:A13. It extends source up, down, left or right."
          }
        },
        "required": [
          "source",
          "target"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    copy_rangeAction

    Copies or moves cells to another place on the same sheet or another one. Copied formulas adjust their references like a paste. When moving, formulas that refer to the moved cells follow them.

    View tool JSON
    {
      "name": "copy_range",
      "kind": "act",
      "impl": "imperative",
      "description": "Copies or moves cells to another place on the same sheet or another one. Copied formulas adjust their references like a paste. When moving, formulas that refer to the moved cells follow them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "Cells to copy, like A1:D9 or Sales!A1:D9."
          },
          "destination": {
            "type": "string",
            "description": "Top-left cell to paste at, like F1 (on the source's sheet) or Summary!A1."
          },
          "paste": {
            "type": "string",
            "enum": [
              "all",
              "values",
              "formats",
              "formulas"
            ],
            "description": "What to paste. values pastes computed results without formulas; formulas pastes contents without formatting.",
            "default": "all"
          },
          "move": {
            "type": "boolean",
            "description": "Move the cells instead of copying them.",
            "default": false
          }
        },
        "required": [
          "source",
          "destination"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    replace_textAction

    Replaces text in cell values, and optionally in formulas. The changed text is read again like typing, so replacing "$" with nothing in "$1,200" leaves the number 1200.

    View tool JSON
    {
      "name": "replace_text",
      "kind": "act",
      "impl": "imperative",
      "description": "Replaces text in cell values, and optionally in formulas. The changed text is read again like typing, so replacing \"$\" with nothing in \"$1,200\" leaves the number 1200.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "find": {
            "type": "string",
            "description": "Text to find.",
            "minLength": 1
          },
          "replacement": {
            "type": "string",
            "description": "Text to put in its place. An empty string deletes it."
          },
          "range": {
            "type": "string",
            "description": "Where to replace, like A1:D20 or Sales!A:A. Leave out to replace on every sheet."
          },
          "match_case": {
            "type": "boolean",
            "description": "Match upper and lower case exactly.",
            "default": false
          },
          "entire_cell": {
            "type": "boolean",
            "description": "Replace only in cells whose whole text is the find text.",
            "default": false
          },
          "search_formulas": {
            "type": "boolean",
            "description": "Also replace inside formulas.",
            "default": false
          }
        },
        "required": [
          "find",
          "replacement"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    sort_rangeAction

    Sorts the rows of a range by one or more of its columns. Blank cells go last. Cells outside the range stay where they are.

    View tool JSON
    {
      "name": "sort_range",
      "kind": "act",
      "impl": "imperative",
      "description": "Sorts the rows of a range by one or more of its columns. Blank cells go last. Cells outside the range stay where they are.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Rows to sort, like A2:G20 or Sales!A1:G20."
          },
          "by": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "column": {
                  "type": "string",
                  "description": "Column letter inside range, like C."
                },
                "descending": {
                  "type": "boolean",
                  "description": "Sort from highest to lowest, or Z to A.",
                  "default": false
                }
              },
              "required": [
                "column"
              ]
            },
            "description": "Columns to sort by, most important first.",
            "minItems": 1,
            "maxItems": 3
          },
          "has_header": {
            "type": "boolean",
            "description": "The first row of range is a header and stays on top.",
            "default": false
          }
        },
        "required": [
          "range",
          "by"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    select_rangeAction

    Selects cells for the person and scrolls them into view, switching sheets if needed. Use it to point at the cells you are talking about.

    View tool JSON
    {
      "name": "select_range",
      "kind": "act",
      "impl": "imperative",
      "description": "Selects cells for the person and scrolls them into view, switching sheets if needed. Use it to point at the cells you are talking about.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Cells to select, like B2:D9 or Sales!A1."
          }
        },
        "required": [
          "range"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    insert_rowsAction

    Inserts empty rows. Cells below move down, and formulas, charts and conditional formats follow them.

    View tool JSON
    {
      "name": "insert_rows",
      "kind": "act",
      "impl": "imperative",
      "description": "Inserts empty rows. Cells below move down, and formulas, charts and conditional formats follow them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "description": "Row number the new rows go above. One past the last row adds them at the end.",
            "minimum": 1,
            "maximum": 1000
          },
          "count": {
            "type": "integer",
            "description": "How many rows to insert.",
            "default": 1,
            "minimum": 1,
            "maximum": 1000
          },
          "sheet": {
            "type": "string",
            "description": "Sheet name. Leave out to use the sheet on screen."
          }
        },
        "required": [
          "row"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    insert_columnsAction

    Inserts empty columns. Cells to the right move over, and formulas, charts and conditional formats follow them.

    View tool JSON
    {
      "name": "insert_columns",
      "kind": "act",
      "impl": "imperative",
      "description": "Inserts empty columns. Cells to the right move over, and formulas, charts and conditional formats follow them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "column": {
            "type": "string",
            "description": "Column letter the new columns go left of, like C. One past the last column adds them at the end."
          },
          "count": {
            "type": "integer",
            "description": "How many columns to insert.",
            "default": 1,
            "minimum": 1,
            "maximum": 52
          },
          "sheet": {
            "type": "string",
            "description": "Sheet name. Leave out to use the sheet on screen."
          }
        },
        "required": [
          "column"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    delete_rowsSensitive Action

    Deletes rows and everything in them. Cells below move up; ranges in formulas shrink, and references to deleted cells become #REF!.

    View tool JSON
    {
      "name": "delete_rows",
      "kind": "transact",
      "impl": "imperative",
      "description": "Deletes rows and everything in them. Cells below move up; ranges in formulas shrink, and references to deleted cells become #REF!.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "description": "First row number to delete.",
            "minimum": 1,
            "maximum": 1000
          },
          "count": {
            "type": "integer",
            "description": "How many rows to delete.",
            "default": 1,
            "minimum": 1,
            "maximum": 1000
          },
          "sheet": {
            "type": "string",
            "description": "Sheet name. Leave out to use the sheet on screen."
          }
        },
        "required": [
          "row"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    delete_columnsSensitive Action

    Deletes columns and everything in them. Cells to the right move over; ranges in formulas shrink, and references to deleted cells become #REF!.

    View tool JSON
    {
      "name": "delete_columns",
      "kind": "transact",
      "impl": "imperative",
      "description": "Deletes columns and everything in them. Cells to the right move over; ranges in formulas shrink, and references to deleted cells become #REF!.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "column": {
            "type": "string",
            "description": "First column letter to delete, like C."
          },
          "count": {
            "type": "integer",
            "description": "How many columns to delete.",
            "default": 1,
            "minimum": 1,
            "maximum": 52
          },
          "sheet": {
            "type": "string",
            "description": "Sheet name. Leave out to use the sheet on screen."
          }
        },
        "required": [
          "column"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    resize_columnsAction

    Sets column widths in pixels, or fits columns to their widest value. New columns are 100 pixels wide.

    View tool JSON
    {
      "name": "resize_columns",
      "kind": "act",
      "impl": "imperative",
      "description": "Sets column widths in pixels, or fits columns to their widest value. New columns are 100 pixels wide.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "columns": {
            "type": "string",
            "description": "Columns to resize, like B, B:E or Sales!A:C."
          },
          "width": {
            "type": "integer",
            "description": "Width in pixels.",
            "minimum": 24,
            "maximum": 600
          },
          "fit_to_content": {
            "type": "boolean",
            "description": "Fit each column to its widest value instead of a fixed width."
          }
        },
        "required": [
          "columns"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    format_cellsAction

    Changes how cells look: bold, italic, colors, alignment and number format. Only the formats you pass change.

    View tool JSON
    {
      "name": "format_cells",
      "kind": "act",
      "impl": "imperative",
      "description": "Changes how cells look: bold, italic, colors, alignment and number format. Only the formats you pass change.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Cells to format, like B2:E9 or Sales!A1:G1."
          },
          "bold": {
            "type": "boolean",
            "description": "Bold text."
          },
          "italic": {
            "type": "boolean",
            "description": "Italic text."
          },
          "underline": {
            "type": "boolean",
            "description": "Underlined text."
          },
          "strikethrough": {
            "type": "boolean",
            "description": "Struck-through text."
          },
          "text_color": {
            "type": "string",
            "description": "Text color: a CSS color like #4d48d8 or red, or none to remove it."
          },
          "fill_color": {
            "type": "string",
            "description": "Background color: a CSS color like #ffefc2, or none to remove it."
          },
          "align": {
            "type": "string",
            "enum": [
              "general",
              "left",
              "center",
              "right"
            ],
            "description": "Horizontal alignment. general puts numbers on the right and text on the left."
          },
          "number_format": {
            "type": "string",
            "enum": [
              "general",
              "number",
              "currency",
              "percent",
              "date",
              "time",
              "datetime",
              "text"
            ],
            "description": "How numbers show. general resets to automatic; text keeps what is typed as text."
          },
          "decimals": {
            "type": "integer",
            "description": "Decimal places to show.",
            "minimum": 0,
            "maximum": 10
          },
          "currency": {
            "type": "string",
            "description": "Currency code for the currency format, like USD, EUR or JPY. Setting it also applies the currency format."
          }
        },
        "required": [
          "range"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    add_conditional_formatAction

    Adds a rule that styles cells by their values, like red text for negative numbers, and keeps applying as values change. It can also shade numbers across a color range instead of styling the cells that match.

    View tool JSON
    {
      "name": "add_conditional_format",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds a rule that styles cells by their values, like red text for negative numbers, and keeps applying as values change. It can also shade numbers across a color range instead of styling the cells that match.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Cells the rule applies to, like G2:G20 or Sales!B2:E6."
          },
          "condition": {
            "type": "string",
            "enum": [
              "greater_than",
              "less_than",
              "between",
              "equal_to",
              "not_equal_to",
              "text_contains",
              "is_empty",
              "not_empty",
              "formula",
              "color_scale"
            ],
            "description": "When a cell gets the style."
          },
          "value": {
            "type": "string",
            "description": "What to compare with; for between, the lower bound. Numbers compare as numbers."
          },
          "value2": {
            "type": "number",
            "description": "The upper bound for between."
          },
          "formula": {
            "type": "string",
            "description": "For the formula condition: a formula that is TRUE for cells to style, written for the range's top-left cell, like =$C2>100."
          },
          "text_color": {
            "type": "string",
            "description": "Text color of matching cells, a CSS color like #b42318."
          },
          "fill_color": {
            "type": "string",
            "description": "Background of matching cells, a CSS color like #fde3df. With no style at all, matching cells get a light amber fill."
          },
          "bold": {
            "type": "boolean",
            "description": "Bold text in matching cells."
          },
          "italic": {
            "type": "boolean",
            "description": "Italic text in matching cells."
          },
          "strikethrough": {
            "type": "boolean",
            "description": "Struck-through text in matching cells."
          },
          "min_color": {
            "type": "string",
            "description": "For color_scale, the color of the lowest number.",
            "default": "#ffffff"
          },
          "max_color": {
            "type": "string",
            "description": "For color_scale, the color of the highest number.",
            "default": "#8c88f2"
          }
        },
        "required": [
          "range",
          "condition"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    delete_conditional_formatSensitive Action

    Removes conditional format rules: one by id, or every rule that overlaps a range.

    View tool JSON
    {
      "name": "delete_conditional_format",
      "kind": "transact",
      "impl": "imperative",
      "description": "Removes conditional format rules: one by id, or every rule that overlaps a range.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the rule to remove, like rule2. get_workbook_info lists the rules."
          },
          "range": {
            "type": "string",
            "description": "Remove every rule that overlaps this range instead, like G2:G20 or Sales!A:Z."
          }
        }
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    add_sheetAction

    Adds an empty sheet, at the end or at a given tab position. Write to it with references like Name!A1.

    View tool JSON
    {
      "name": "add_sheet",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds an empty sheet, at the end or at a given tab position. Write to it with references like Name!A1.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name for the sheet. Leave out for the next free name, like Sheet2."
          },
          "position": {
            "type": "integer",
            "description": "Tab position, 1 for first. Leave out to add it at the end.",
            "minimum": 1
          }
        }
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    update_sheetAction

    Renames a sheet, moves its tab, or freezes rows and columns so they stay in view while scrolling. Formulas that refer to a renamed sheet are updated.

    View tool JSON
    {
      "name": "update_sheet",
      "kind": "act",
      "impl": "imperative",
      "description": "Renames a sheet, moves its tab, or freezes rows and columns so they stay in view while scrolling. Formulas that refer to a renamed sheet are updated.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet": {
            "type": "string",
            "description": "Name of the sheet to change.",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "New name."
          },
          "position": {
            "type": "integer",
            "description": "New tab position, 1 for first.",
            "minimum": 1
          },
          "frozen_rows": {
            "type": "integer",
            "description": "How many rows to keep in view at the top; 0 for none.",
            "minimum": 0
          },
          "frozen_columns": {
            "type": "integer",
            "description": "How many columns to keep in view on the left; 0 for none.",
            "minimum": 0
          }
        },
        "required": [
          "sheet"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    delete_sheetSensitive Action

    Deletes a sheet and everything on it. Formulas on other sheets that refer to it become #REF!. Undo brings it back.

    View tool JSON
    {
      "name": "delete_sheet",
      "kind": "transact",
      "impl": "imperative",
      "description": "Deletes a sheet and everything on it. Formulas on other sheets that refer to it become #REF!. Undo brings it back.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sheet": {
            "type": "string",
            "description": "Name of the sheet to delete.",
            "minLength": 1
          }
        },
        "required": [
          "sheet"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    add_chartAction

    Adds a chart of a range: one series per column, category labels down the first column and series names across the first row. The chart redraws when the data changes.

    View tool JSON
    {
      "name": "add_chart",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds a chart of a range: one series per column, category labels down the first column and series names across the first row. The chart redraws when the data changes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "description": "Data to chart, like A1:E6 or Sales!A1:E6."
          },
          "type": {
            "type": "string",
            "enum": [
              "column",
              "bar",
              "line",
              "area",
              "pie",
              "scatter"
            ],
            "description": "Chart type.",
            "default": "column"
          },
          "title": {
            "type": "string",
            "description": "Title above the chart."
          },
          "position": {
            "type": "string",
            "description": "Cell for the chart's top-left corner, like H2. Leave out to place it to the right of the data."
          },
          "width": {
            "type": "integer",
            "description": "Width in pixels.",
            "default": 480,
            "minimum": 240,
            "maximum": 1200
          },
          "height": {
            "type": "integer",
            "description": "Height in pixels.",
            "default": 300,
            "minimum": 160,
            "maximum": 800
          },
          "header_row": {
            "type": "boolean",
            "description": "Whether the first row holds series names. Leave out to detect it."
          },
          "label_column": {
            "type": "boolean",
            "description": "Whether the first column holds category labels. Leave out to detect it."
          }
        },
        "required": [
          "range"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    update_chartAction

    Changes a chart's type, title, data, position or size.

    View tool JSON
    {
      "name": "update_chart",
      "kind": "act",
      "impl": "imperative",
      "description": "Changes a chart's type, title, data, position or size.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Chart id, like chart1, from add_chart or get_workbook_info.",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "column",
              "bar",
              "line",
              "area",
              "pie",
              "scatter"
            ],
            "description": "Chart type."
          },
          "title": {
            "type": "string",
            "description": "Title above the chart. An empty string removes it."
          },
          "range": {
            "type": "string",
            "description": "New data range on the chart's sheet, like A1:C6."
          },
          "position": {
            "type": "string",
            "description": "Cell for the chart's top-left corner, like H2."
          },
          "width": {
            "type": "integer",
            "description": "Width in pixels.",
            "minimum": 240,
            "maximum": 1200
          },
          "height": {
            "type": "integer",
            "description": "Height in pixels.",
            "minimum": 160,
            "maximum": 800
          },
          "header_row": {
            "type": "boolean",
            "description": "Whether the first row holds series names."
          },
          "label_column": {
            "type": "boolean",
            "description": "Whether the first column holds category labels."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    delete_chartSensitive Action

    Deletes a chart. Its data stays.

    View tool JSON
    {
      "name": "delete_chart",
      "kind": "transact",
      "impl": "imperative",
      "description": "Deletes a chart. Its data stays.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Chart id, like chart1, from add_chart or get_workbook_info.",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    undo_spreadsheet_actionAction

    Undoes the latest changes, whether a person or an agent made them.

    View tool JSON
    {
      "name": "undo_spreadsheet_action",
      "kind": "act",
      "impl": "imperative",
      "description": "Undoes the latest changes, whether a person or an agent made them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "integer",
            "description": "How many changes to undo.",
            "default": 1,
            "minimum": 1,
            "maximum": 20
          }
        }
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }
    redo_spreadsheet_actionAction

    Redoes changes that were just undone.

    View tool JSON
    {
      "name": "redo_spreadsheet_action",
      "kind": "act",
      "impl": "imperative",
      "description": "Redoes changes that were just undone.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "integer",
            "description": "How many changes to redo.",
            "default": 1,
            "minimum": 1,
            "maximum": 20
          }
        }
      },
      "page": "/webmcp-tools/demos/spreadsheet/"
    }