[
    {
        "type": "function",
        "function": {
            "name": "CalcTools.get_workbook_info",
            "description": "Get workbook information, including file path, file name, sheets and active sheet.",
            "parameters": {
                "type": "object",
                "properties": {},
                "required": []
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.save",
            "description": "Save the current workbook to its current location",
            "parameters": {
                "type": "object",
                "properties": {},
                "required": []
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.get_column_data",
            "description": "Get all data from the specified column.",
            "parameters": {
                "type": "object",
                "properties": {
                    "column_name": {
                        "type": "string",
                        "description": "Name of the column to read (e.g. 'A', 'B', etc.)"
                    }
                },
                "required": [
                    "column_name"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.switch_active_sheet",
            "description": "Switch to the specified sheet and make it active. Creates new sheet if it doesn't exist.",
            "parameters": {
                "type": "object",
                "properties": {
                    "sheet_name": {
                        "type": "string",
                        "description": "Name of the sheet to switch to or create"
                    }
                },
                "required": [
                    "sheet_name"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.set_column_values",
            "description": "Set values to the specified column, cannot be used to set formulas.",
            "parameters": {
                "type": "object",
                "properties": {
                    "column_name": {
                        "type": "string",
                        "description": "Name of the column (e.g. 'A', 'B', etc.) to write to"
                    },
                    "data": {
                        "type": "array",
                        "description": "List of values to write to the column"
                    },
                    "start_index": {
                        "type": "integer",
                        "description": "The index of the first row to write to, default is 2 (skip the first row)"
                    }
                },
                "required": [
                    "column_name",
                    "data"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.highlight_range",
            "description": "Highlight the specified range with the specified color.",
            "parameters": {
                "type": "object",
                "properties": {
                    "range_str": {
                        "type": "string",
                        "description": "Range to highlight, in the format of 'A1:B10'"
                    },
                    "color": {
                        "type": "integer",
                        "description": "Color to highlight with, default is 0xFF0000 (red)"
                    }
                },
                "required": [
                    "range_str"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.transpose_range",
            "description": "Transpose the specified range and paste it to the target cell.",
            "parameters": {
                "type": "object",
                "properties": {
                    "source_range": {
                        "type": "string",
                        "description": "Range to transpose, in the format of 'A1:B10'"
                    },
                    "target_cell": {
                        "type": "string",
                        "description": "Target cell to paste the transposed data, in the format of 'A1'"
                    }
                },
                "required": [
                    "source_range",
                    "target_cell"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.export_to_csv",
            "description": "Export the current document to a CSV file with the same path and name as the original file.",
            "parameters": {
                "type": "object",
                "properties": {},
                "required": []
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.sort_column",
            "description": "Sort the data in the specified column in ascending or descending order.",
            "parameters": {
                "type": "object",
                "properties": {
                    "column_name": {
                        "type": "string",
                        "description": "The name of the column to sort (e.g. 'A', 'B', etc.)"
                    },
                    "ascending": {
                        "type": "boolean",
                        "description": "Whether to sort in ascending order (default True)"
                    },
                    "start_index": {
                        "type": "integer",
                        "description": "The index of the first row to sort, default is 2 (skip the first row)"
                    }
                },
                "required": [
                    "column_name"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.set_validation_list",
            "description": "Set a validation list for the specified column.",
            "parameters": {
                "type": "object",
                "properties": {
                    "column_name": {
                        "type": "string",
                        "description": "The name of the column (e.g. 'A', 'B', etc.) to set the validation list for"
                    },
                    "values": {
                        "type": "array",
                        "description": "The list of values to use for the validation list"
                    }
                },
                "required": [
                    "column_name",
                    "values"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.hide_row_data",
            "description": "Hide rows that contain the specified value.",
            "parameters": {
                "type": "object",
                "properties": {
                    "value": {
                        "type": "string",
                        "description": "The value to hide rows for, default is 'N/A'"
                    }
                },
                "required": []
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.reorder_columns",
            "description": "Reorder the columns in the sheet according to the specified order.",
            "parameters": {
                "type": "object",
                "properties": {
                    "column_order": {
                        "type": "array",
                        "description": "A list of column names in the desired order (e.g. ['A', 'B', 'C'])"
                    }
                },
                "required": [
                    "column_order"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.create_pivot_table",
            "description": "Create a pivot table in the active worksheet based on data from the source sheet.",
            "parameters": {
                "type": "object",
                "properties": {
                    "source_sheet": {
                        "type": "string",
                        "description": "Name of the source sheet containing the data"
                    },
                    "table_name": {
                        "type": "string",
                        "description": "Name for the new pivot table"
                    },
                    "row_fields": {
                        "type": "array",
                        "description": "List of fields to use as row labels (e.g. ['A', 'B', 'C'])"
                    },
                    "col_fields": {
                        "type": "array",
                        "description": "List of fields to use as column labels (e.g. ['A', 'B', 'C'])"
                    },
                    "value_fields": {
                        "type": "array",
                        "description": "List of fields to use as values (e.g. ['A', 'B', 'C'])"
                    },
                    "aggregation_function": {
                        "type": "string",
                        "description": "Aggregation function to use (sum, count, average, min, max), default is 'sum'"
                    },
                    "target_cell": {
                        "type": "string",
                        "description": "Target cell for the pivot table, default is 'A1'"
                    }
                },
                "required": [
                    "source_sheet",
                    "table_name",
                    "value_fields"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.merge_cells",
            "description": "Merge cells in the specified range.",
            "parameters": {
                "type": "object",
                "properties": {
                    "range_str": {
                        "type": "string",
                        "description": "Range of cells to merge, in format 'A1:B10'"
                    }
                },
                "required": [
                    "range_str"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.set_cell_value",
            "description": "Set a value to a specific cell in the active worksheet.",
            "parameters": {
                "type": "object",
                "properties": {
                    "cell": {
                        "type": "string",
                        "description": "Cell reference (e.g., 'A1')"
                    },
                    "value": {
                        "type": "string",
                        "description": "Value to set in the cell"
                    }
                },
                "required": [
                    "cell",
                    "value"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.format_range",
            "description": "Apply formatting to the specified range in the active worksheet.",
            "parameters": {
                "type": "object",
                "properties": {
                    "range_str": {
                        "type": "string",
                        "description": "Range to format, in the format of 'A1:B10'"
                    },
                    "background_color": {
                        "type": "string",
                        "description": "Background color in hex format (e.g., '#0000ff')"
                    },
                    "font_color": {
                        "type": "string",
                        "description": "Font color in hex format (e.g., '#ffffff')"
                    },
                    "bold": {
                        "type": "boolean",
                        "description": "Whether to make the text bold"
                    },
                    "alignment": {
                        "type": "string",
                        "description": "Text alignment (left, center, right)"
                    }
                },
                "required": [
                    "range_str"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.create_chart",
            "description": "Create a chart in the active worksheet based on the specified data range.",
            "parameters": {
                "type": "object",
                "properties": {
                    "chart_type": {
                        "type": "string",
                        "description": "Type of chart (bar, column, line, pie, scatter, area)"
                    },
                    "data_range": {
                        "type": "string",
                        "description": "Range containing the data for the chart, in the format of 'A1:B10'"
                    },
                    "title": {
                        "type": "string",
                        "description": "Title for the chart"
                    },
                    "x_axis_title": {
                        "type": "string",
                        "description": "Title for the X axis"
                    },
                    "y_axis_title": {
                        "type": "string",
                        "description": "Title for the Y axis"
                    }
                },
                "required": [
                    "chart_type",
                    "data_range"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.freeze_panes",
            "description": "Freeze rows and/or columns in the active worksheet.",
            "parameters": {
                "type": "object",
                "properties": {
                    "rows": {
                        "type": "integer",
                        "description": "Number of rows to freeze from the top"
                    },
                    "columns": {
                        "type": "integer",
                        "description": "Number of columns to freeze from the left"
                    }
                },
                "required": []
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.rename_sheet",
            "description": "Rename a worksheet in the workbook.",
            "parameters": {
                "type": "object",
                "properties": {
                    "old_name": {
                        "type": "string",
                        "description": "Current name of the worksheet"
                    },
                    "new_name": {
                        "type": "string",
                        "description": "New name for the worksheet"
                    }
                },
                "required": [
                    "old_name",
                    "new_name"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.copy_sheet",
            "description": "Create a copy of an existing worksheet in the workbook.",
            "parameters": {
                "type": "object",
                "properties": {
                    "source_sheet": {
                        "type": "string",
                        "description": "Name of the worksheet to copy"
                    },
                    "new_sheet_name": {
                        "type": "string",
                        "description": "Name for the new worksheet copy (optional)"
                    }
                },
                "required": [
                    "source_sheet"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.reorder_sheets",
            "description": "Change the order of worksheets in the workbook.",
            "parameters": {
                "type": "object",
                "properties": {
                    "sheet_name": {
                        "type": "string",
                        "description": "Name of the worksheet to move"
                    },
                    "position": {
                        "type": "integer",
                        "description": "New position index (0-based) for the worksheet"
                    }
                },
                "required": [
                    "sheet_name",
                    "position"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.set_chart_legend_position",
            "description": "Set the position of the legend in a chart.",
            "parameters": {
                "type": "object",
                "properties": {
                    "position": {
                        "type": "string",
                        "description": "Position of the legend (top, bottom, left, right, none)"
                    }
                },
                "required": [
                    "position"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.set_number_format",
            "description": "Apply a specific number format to a range of cells.",
            "parameters": {
                "type": "object",
                "properties": {
                    "range_str": {
                        "type": "string",
                        "description": "Range to format, in the format of 'A1:B10'"
                    },
                    "format_type": {
                        "type": "string",
                        "description": "Type of number format (general, number, currency, accounting, date, time, percentage, fraction, scientific, text)"
                    },
                    "decimal_places": {
                        "type": "integer",
                        "description": "Number of decimal places to display (optional)"
                    }
                },
                "required": [
                    "range_str",
                    "format_type"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.adjust_column_width",
            "description": "Adjust the width of specified columns.",
            "parameters": {
                "type": "object",
                "properties": {
                    "columns": {
                        "type": "string",
                        "description": "Column range to adjust (e.g., 'A:C')"
                    },
                    "width": {
                        "type": "number",
                        "description": "Width to set (in characters)"
                    },
                    "autofit": {
                        "type": "boolean",
                        "description": "Whether to autofit columns to content"
                    }
                },
                "required": [
                    "columns"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.adjust_row_height",
            "description": "Adjust the height of specified rows.",
            "parameters": {
                "type": "object",
                "properties": {
                    "rows": {
                        "type": "string",
                        "description": "Row range to adjust (e.g., '1:10')"
                    },
                    "height": {
                        "type": "number",
                        "description": "Height to set (in points)"
                    },
                    "autofit": {
                        "type": "boolean",
                        "description": "Whether to autofit rows to content"
                    }
                },
                "required": [
                    "rows"
                ]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.export_to_pdf",
            "description": "Export the current document or specified sheets to PDF.",
            "parameters": {
                "type": "object",
                "properties": {
                    "file_path": {
                        "type": "string",
                        "description": "Path where to save the PDF file, default is the same path as the original file"
                    },
                    "sheets": {
                        "type": "array",
                        "description": "List of sheet names to include in PDF, default is all sheets"
                    },
                    "open_after_export": {
                        "type": "boolean",
                        "description": "Whether to open the PDF after export, default is False"
                    }
                },
                "required": []
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "CalcTools.set_zoom_level",
            "description": "Adjust the zoom level of the current worksheet.",
            "parameters": {
                "type": "object",
                "properties": {
                    "zoom_percentage": {
                        "type": "integer",
                        "description": "Zoom level as a percentage (e.g., 75 for 75%, 100 for normal size, 150 for zoomed in). Valid range is typically 10-400."
                    }
                },
                "required": [
                    "zoom_percentage"
                ]
            }
        }
    }
]