Skip to main content
Glama

Describe sheet

describe_sheet
Read-onlyIdempotent

Describes an Excel sheet's used range, panes, merges, tables, charts, PivotTables, slicers, images, notes, hyperlinks, validation, conditional formats, and sparklines by name and cell.

Instructions

Describe a sheet: used range, panes, merges and everything on it (tables, charts, PivotTables, slicers, images, notes, hyperlinks, validation, conditional formats, sparklines...) with names and cells. Lists stop at 200 entries (more: the rest). Slow on very large files.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "path": "<path>",
      "sheet": "<sheet>"
    },
    "name": "describe_sheet"
  }
}

Input Schema

NameRequiredDescriptionDefault
pathYes
sheetYes

Output Schema

NameRequiredDescriptionDefault
moreNo
viewNo
notesNo
chartsNo
imagesNo
tablesNo
slicersNo
protectedNo
hyperlinksNo
print_areaNo
sparklinesNo
used_rangeYes
auto_filterNo
hidden_rowsNo
freeze_panesNo
pivot_tablesNo
merged_rangesNo
hidden_columnsNo
data_validationsNo
column_widths_charsNo
conditional_formatsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.3.0
    • addedOutput schema / properties / more
      Added value: +{
      +  "additionalProperties": {
      +    "type": "integer"
      +  },
      +  "default": {},
      +  "type": "object"
      +}
  2. Changed65 schema fields changedv2.0.0
    • removedInput schema / properties / path / description
      Removed value: -"Path to an .xlsx, .xlsm, .xltx or .xltm file. Relative paths are resolved in the server's workbook directory when one is configured; otherwise use an absolute path."
    • removedInput schema / properties / path / title
      Removed value: -"Path"
    • removedInput schema / properties / sheet / description
      Removed value: -"Worksheet name, e.g. 'Sheet1'."
    • removedInput schema / properties / sheet / title
      Removed value: -"Sheet"
    • removedInput schema / title
      Removed value: -"describe_sheetArguments"
    • addedOutput schema / $defs / ChartInfo
      Added value: +{
      +  "properties": {
      +    "name": {
      +      "type": "string"
      +    },
      +    "range": {
      +      "type": "string"
      +    },
      +    "series": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "type": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "type"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ColumnWidth
      Added value: +{
      +  "properties": {
      +    "column": {
      +      "type": "string"
      +    },
      +    "width": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "column",
      +    "width"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / $defs / ConditionalFormatInfo / properties / range / title
      Removed value: -"Range"
    • removedOutput schema / $defs / ConditionalFormatInfo / properties / type / title
      Removed value: -"Type"
    • removedOutput schema / $defs / ConditionalFormatInfo / title
      Removed value: -"ConditionalFormatInfo"
    • removedOutput schema / $defs / DataValidationInfo / properties / formula1 / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / DataValidationInfo / properties / formula1 / title
      Removed value: -"Formula1"
    • addedOutput schema / $defs / DataValidationInfo / properties / formula1 / type
      Added value: +"string"
    • removedOutput schema / $defs / DataValidationInfo / properties / formula2 / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / DataValidationInfo / properties / formula2 / title
      Removed value: -"Formula2"
    • addedOutput schema / $defs / DataValidationInfo / properties / formula2 / type
      Added value: +"string"
    • removedOutput schema / $defs / DataValidationInfo / properties / operator / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / DataValidationInfo / properties / operator / title
      Removed value: -"Operator"
    • addedOutput schema / $defs / DataValidationInfo / properties / operator / type
      Added value: +"string"
    • removedOutput schema / $defs / DataValidationInfo / properties / range / title
      Removed value: -"Range"
    • removedOutput schema / $defs / DataValidationInfo / properties / type / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / DataValidationInfo / properties / type / title
      Removed value: -"Type"
    • addedOutput schema / $defs / DataValidationInfo / properties / type / type
      Added value: +"string"
    • changedOutput schema / $defs / DataValidationInfo / required
      Previous value: -[
      -  "range",
      -  "type",
      -  "operator",
      -  "formula1",
      -  "formula2"
      -]New value: +[
      +  "range"
      +]
    • removedOutput schema / $defs / DataValidationInfo / title
      Removed value: -"DataValidationInfo"
    • addedOutput schema / $defs / ImageInfo
      Added value: +{
      +  "properties": {
      +    "height_cm": {
      +      "type": "number"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "range": {
      +      "type": "string"
      +    },
      +    "width_cm": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "name"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / LinkInfo
      Added value: +{
      +  "properties": {
      +    "cell": {
      +      "type": "string"
      +    },
      +    "target": {
      +      "type": "string"
      +    },
      +    "tooltip": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "cell",
      +    "target"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / $defs / NamedRange
      Removed value: -{
      -  "properties": {
      -    "name": {
      -      "title": "Name",
      -      "type": "string"
      -    },
      -    "range": {
      -      "title": "Range",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "name",
      -    "range"
      -  ],
      -  "title": "NamedRange",
      -  "type": "object"
      -}
    • addedOutput schema / $defs / NoteInfo
      Added value: +{
      +  "properties": {
      +    "author": {
      +      "type": "string"
      +    },
      +    "cell": {
      +      "type": "string"
      +    },
      +    "text": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "cell",
      +    "text",
      +    "author"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / PivotInfo
      Added value: +{
      +  "properties": {
      +    "date_groups": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "range": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "range"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / SlicerInfo
      Added value: +{
      +  "properties": {
      +    "caption": {
      +      "type": "string"
      +    },
      +    "end": {
      +      "type": "string"
      +    },
      +    "field": {
      +      "type": "string"
      +    },
      +    "kind": {
      +      "type": "string"
      +    },
      +    "level": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "range": {
      +      "type": "string"
      +    },
      +    "selected_items": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "start": {
      +      "type": "string"
      +    },
      +    "style": {
      +      "type": "string"
      +    },
      +    "target": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "kind",
      +    "caption",
      +    "target",
      +    "field"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / SparklineColors
      Added value: +{
      +  "description": "Hex RGB, e.g. '376092'.",
      +  "properties": {
      +    "axis": {
      +      "default": "000000",
      +      "type": "string"
      +    },
      +    "first": {
      +      "default": "D00000",
      +      "type": "string"
      +    },
      +    "high": {
      +      "default": "D00000",
      +      "type": "string"
      +    },
      +    "last": {
      +      "default": "D00000",
      +      "type": "string"
      +    },
      +    "low": {
      +      "default": "D00000",
      +      "type": "string"
      +    },
      +    "markers": {
      +      "default": "D00000",
      +      "type": "string"
      +    },
      +    "negative": {
      +      "default": "D00000",
      +      "type": "string"
      +    },
      +    "series": {
      +      "default": "376092",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / $defs / SparklineInfo
      Added value: +{
      +  "properties": {
      +    "axis_max": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "individual",
      +            "same"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "number"
      +        }
      +      ],
      +      "default": "individual",
      +      "description": "Like axis_min."
      +    },
      +    "axis_min": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "individual",
      +            "same"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "number"
      +        }
      +      ],
      +      "default": "individual",
      +      "description": "Vertical axis: each sparkline's own, shared by the group, or a number."
      +    },
      +    "colors": {
      +      "$ref": "#/$defs/SparklineColors"
      +    },
      +    "dates": {
      +      "description": "One date per data point, e.g. 'Data!B1:F1'.",
      +      "type": "string"
      +    },
      +    "empty_cells": {
      +      "default": "gap",
      +      "enum": [
      +        "gap",
      +        "zero",
      +        "connect"
      +      ],
      +      "type": "string"
      +    },
      +    "hidden": {
      +      "description": "Plot hidden rows and columns.",
      +      "type": "boolean"
      +    },
      +    "line_width_pt": {
      +      "default": 0.75,
      +      "description": "Line only.",
      +      "maximum": 100,
      +      "type": "number"
      +    },
      +    "right_to_left": {
      +      "type": "boolean"
      +    },
      +    "show": {
      +      "description": "Points to color. markers: line only; win_loss: losses are negative.",
      +      "items": {
      +        "enum": [
      +          "markers",
      +          "high",
      +          "low",
      +          "first",
      +          "last",
      +          "negative"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "show_axis": {
      +      "type": "boolean"
      +    },
      +    "sparklines": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "description": "Cell to the data it plots.",
      +      "type": "object"
      +    },
      +    "type": {
      +      "default": "line",
      +      "enum": [
      +        "line",
      +        "column",
      +        "win_loss"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "sparklines"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / TableInfo
      Added value: +{
      +  "properties": {
      +    "name": {
      +      "type": "string"
      +    },
      +    "range": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "range"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ViewInfo
      Added value: +{
      +  "properties": {
      +    "active": {
      +      "type": "boolean"
      +    },
      +    "gridlines": {
      +      "default": true,
      +      "type": "boolean"
      +    },
      +    "headings": {
      +      "default": true,
      +      "type": "boolean"
      +    },
      +    "right_to_left": {
      +      "type": "boolean"
      +    },
      +    "selected_cell": {
      +      "default": "A1",
      +      "type": "string"
      +    },
      +    "show_formulas": {
      +      "type": "boolean"
      +    },
      +    "zoom": {
      +      "default": 100,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / auto_filter / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / auto_filter / title
      Removed value: -"Auto Filter"
    • addedOutput schema / properties / auto_filter / type
      Added value: +"string"
    • removedOutput schema / properties / chart_count
      Removed value: -{
      -  "title": "Chart Count",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / charts
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/ChartInfo"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / column_widths
      Removed value: -{
      -  "additionalProperties": {
      -    "type": "number"
      -  },
      -  "title": "Column Widths",
      -  "type": "object"
      -}
    • addedOutput schema / properties / column_widths_chars
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/ColumnWidth"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / conditional_formats / title
      Removed value: -"Conditional Formats"
    • removedOutput schema / properties / data_validations / title
      Removed value: -"Data Validations"
    • removedOutput schema / properties / freeze_panes / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / freeze_panes / title
      Removed value: -"Freeze Panes"
    • addedOutput schema / properties / freeze_panes / type
      Added value: +"string"
    • addedOutput schema / properties / hidden_columns
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / hidden_rows
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / hyperlinks
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/LinkInfo"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / images
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/ImageInfo"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / merged_ranges / title
      Removed value: -"Merged Ranges"
    • removedOutput schema / properties / name
      Removed value: -{
      -  "title": "Name",
      -  "type": "string"
      -}
    • addedOutput schema / properties / notes
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/NoteInfo"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / pivot_tables
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/PivotInfo"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / print_area
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / protected
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / slicers
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/SlicerInfo"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / sparklines
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/SparklineInfo"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / tables / items / $ref
      Previous value: -"#/$defs/NamedRange"New value: +"#/$defs/TableInfo"
    • removedOutput schema / properties / tables / title
      Removed value: -"Tables"
    • removedOutput schema / properties / used_range / title
      Removed value: -"Used Range"
    • addedOutput schema / properties / view
      Added value: +{
      +  "$ref": "#/$defs/ViewInfo",
      +  "default": {
      +    "active": false,
      +    "gridlines": true,
      +    "headings": true,
      +    "right_to_left": false,
      +    "selected_cell": "A1",
      +    "show_formulas": false,
      +    "zoom": 100
      +  }
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "name",
      -  "used_range",
      -  "freeze_panes",
      -  "auto_filter",
      -  "merged_ranges",
      -  "tables",
      -  "chart_count",
      -  "data_validations",
      -  "conditional_formats",
      -  "column_widths"
      -]New value: +[
      +  "used_range"
      +]
    • removedOutput schema / title
      Removed value: -"SheetDetails"
  3. Addedv1.1.1

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower, yet the description adds two real traits: truncation ('lists stop at 200 entries, `more`: the rest') and the performance warning on large files. That is genuine behavioral context beyond the structured fields, though it stops short of describing any other limits or cost profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and then the caveats; the long parenthetical enumeration is dense but each item earns its place by telling the agent what content is discoverable. The truncation and slowness notes are short and placed at the end where they belong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure needn't be explained, and the description covers scope, truncation, and performance for a read-only describe tool. The only material gap is parameter meaning, which the schema leaves undocumented as well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two required parameters, so the description carries the full burden and does not compensate: it never explains whether 'path' is a filesystem path or workbook identifier, nor what form 'sheet' takes (name, index, case sensitivity). The only implicit hint is the word 'sheet' in the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('describe') and resource ('a sheet') and then enumerates exactly what is returned: used range, panes, merges, tables, charts, PivotTables, slicers, images, notes, hyperlinks, validation, conditional formats, sparklines, with names and cells. That enumeration makes it clearly distinct from describe_workbook, which operates one level up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (you want a full inventory of a sheet) and gives a useful performance caveat ('slow on very large files'), but it never names an alternative or states when not to use it, e.g. when find_cells or describe_workbook would be the better call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.