Skip to main content
Glama

Copy range

copy_range
Destructive

Duplicate a cell range and paste it to another location or sheet in an Excel workbook, overwriting the destination; supports values, formulas, formats, transpose, and skip blanks.

Instructions

Copy and paste a range, overwriting the destination. Relative references shift as in Excel. Returns the destination.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
atYesTop-left destination cell.
pathYes
pasteNoPaste Special. Not 'all': keeps the destination's formatting (dates paste as numbers).all
rangeYes
sheetYes
to_sheetNoDestination sheet. Default: `sheet`.
transposeNo
skip_blanksNoKeep destination cells under empty source cells.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv2.0.0
    • addedInput schema / properties / at
      Added value: +{
      +  "description": "Top-left destination cell.",
      +  "type": "string"
      +}
    • addedInput schema / properties / paste
      Added value: +{
      +  "default": "all",
      +  "description": "Paste Special. Not 'all': keeps the destination's formatting (dates paste as numbers).",
      +  "enum": [
      +    "all",
      +    "values",
      +    "formulas",
      +    "formats"
      +  ],
      +  "type": "string"
      +}
    • 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 / range / description
      Removed value: -"A cell or rectangular range in A1 notation, e.g. 'A1:D20'."
    • removedInput schema / properties / range / title
      Removed value: -"Range"
    • removedInput schema / properties / sheet / description
      Removed value: -"Worksheet name, e.g. 'Sheet1'."
    • removedInput schema / properties / sheet / title
      Removed value: -"Sheet"
    • addedInput schema / properties / skip_blanks
      Added value: +{
      +  "description": "Keep destination cells under empty source cells.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / target_cell
      Removed value: -{
      -  "description": "Top-left cell of the destination.",
      -  "title": "Target Cell",
      -  "type": "string"
      -}
    • removedInput schema / properties / target_sheet
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Destination sheet. Default: the same sheet.",
      -  "title": "Target Sheet"
      -}
    • addedInput schema / properties / to_sheet
      Added value: +{
      +  "description": "Destination sheet. Default: `sheet`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / transpose
      Added value: +{
      +  "type": "boolean"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "path",
      -  "sheet",
      -  "range",
      -  "target_cell"
      -]New value: +[
      +  "path",
      +  "sheet",
      +  "range",
      +  "at"
      +]
    • removedInput schema / title
      Removed value: -"copy_rangeArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "title": "Result",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "copy_rangeOutput",
      -  "type": "object"
      -}New value: +null
  2. Changed11 schema fields changedv1.1.1
    • removedInput schema / properties / filepath
      Removed value: -{
      -  "title": "Filepath",
      -  "type": "string"
      -}
    • addedInput schema / properties / path
      Added value: +{
      +  "description": "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.",
      +  "title": "Path",
      +  "type": "string"
      +}
    • addedInput schema / properties / range
      Added value: +{
      +  "description": "A cell or rectangular range in A1 notation, e.g. 'A1:D20'.",
      +  "title": "Range",
      +  "type": "string"
      +}
    • addedInput schema / properties / sheet
      Added value: +{
      +  "description": "Worksheet name, e.g. 'Sheet1'.",
      +  "title": "Sheet",
      +  "type": "string"
      +}
    • removedInput schema / properties / sheet_name
      Removed value: -{
      -  "title": "Sheet Name",
      -  "type": "string"
      -}
    • removedInput schema / properties / source_end
      Removed value: -{
      -  "title": "Source End",
      -  "type": "string"
      -}
    • removedInput schema / properties / source_start
      Removed value: -{
      -  "title": "Source Start",
      -  "type": "string"
      -}
    • addedInput schema / properties / target_cell
      Added value: +{
      +  "description": "Top-left cell of the destination.",
      +  "title": "Target Cell",
      +  "type": "string"
      +}
    • addedInput schema / properties / target_sheet / description
      Added value: +"Destination sheet. Default: the same sheet."
    • removedInput schema / properties / target_start
      Removed value: -{
      -  "title": "Target Start",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "filepath",
      -  "sheet_name",
      -  "source_start",
      -  "source_end",
      -  "target_start"
      -]New value: +[
      +  "path",
      +  "sheet",
      +  "range",
      +  "target_cell"
      +]
  3. First observedv1.0.0

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and non-idempotent, but the description adds genuinely non-obvious behavior: the destination is overwritten and relative references shift as in Excel. It also notes the return value, which matters with no output schema. It omits overlap/self-copy behavior and error conditions.

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?

Three tight sentences, with purpose and the overwrite warning front-loaded. No filler, though the 'Returns the destination' clause is slightly vague about format.

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

Completeness3/5

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

For a destructive, 8-parameter mutation with no output schema, the description covers the critical overwrite and reference-shift facts and the return value, but leaves half the parameters and cross-sheet/transpose behavior unexplained.

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?

Only 50% of the 8 parameters are described in the schema, and path/sheet/range/transpose are undocumented in both places. The description says nothing about any parameter, so it does not compensate for the coverage gap (e.g., transpose or to_sheet semantics are never explained).

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

Purpose4/5

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

States a concrete verb+resource ('copy and paste a range') plus the key effect ('overwriting the destination'), which clearly separates it from read_range, clear_range, or write_range. It never explicitly names a sibling to contrast against, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this over write_range, transform_range, or copy_sheet, nor any note about prerequisites or source/destination overlap. Usage must be inferred entirely from the name.

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