CLI & MCP

Waymaker sheets

Manage spreadsheets in Commander. Create, read, update, and export sheet data programmatically.

SheetsSpreadsheets
Last updated: January 21, 2026

Overview

Manage spreadsheets in Commander. Create, read, update, and export sheet data programmatically.

Usage

waymaker sheets <subcommand> [options]

Subcommands

SubcommandDescription
listList sheets in a workspace
getGet sheet data
createCreate a new sheet
updateUpdate sheet data
exportExport sheet to CSV/Excel

List Sheets

waymaker sheets list --workspace <workspace-id>

Output:

Sheets (8)

id           title                    rows    cols    updated
-------------------------------------------------------------
sheet_abc123 Q1 Budget               150     12      2 hours ago
sheet_def456 Sales Pipeline          340     8       1 day ago
sheet_ghi789 Team Capacity           25      6       3 days ago

JSON Output

waymaker sheets list --workspace ws_xxx --json
[
  {
    "id": "sheet_abc123",
    "title": "Q1 Budget",
    "row_count": 150,
    "column_count": 12,
    "workspace_id": "ws_xxx",
    "updated_at": "2026-01-21T08:00:00Z"
  }
]

Get Sheet Data

Get Metadata

waymaker sheets get <sheet-id>

Output:

Q1 Budget

ID: sheet_abc123
Workspace: ws_xxx
Rows: 150
Columns: 12
Created: January 15, 2026
Updated: 2 hours ago

Columns:
  A: Category (text)
  B: Description (text)
  C: Q1 Budget (currency)
  D: Q1 Actual (currency)
  ...

Get Cell Range

waymaker sheets get <sheet-id> --range "A1:D10"

Output:

A1:D10 (10 rows x 4 cols)

Category     Description          Q1 Budget    Q1 Actual
---------------------------------------------------------
Marketing    Digital Ads          $50,000      $48,500
Marketing    Events               $25,000      $22,000
Sales        Travel               $15,000      $14,200
...

Get as JSON

waymaker sheets get <sheet-id> --range "A1:D10" --json
{
  "range": "A1:D10",
  "values": [
    ["Category", "Description", "Q1 Budget", "Q1 Actual"],
    ["Marketing", "Digital Ads", 50000, 48500],
    ["Marketing", "Events", 25000, 22000]
  ]
}

Create Sheet

waymaker sheets create \
  --workspace <workspace-id> \
  --title "New Sheet"

Output:

✓ Sheet created
ID: sheet_new123
Title: New Sheet
Workspace: ws_xxx

Create from CSV

waymaker sheets create \
  --workspace ws_xxx \
  --title "Imported Data" \
  --file ./data.csv

Create with Initial Data

waymaker sheets create \
  --workspace ws_xxx \
  --title "Quick Sheet" \
  --data '[["Name", "Value"], ["Item 1", 100], ["Item 2", 200]]'

Update Sheet Data

Update Cell Range

waymaker sheets update <sheet-id> \
  --range "A1:B2" \
  --data '[["Header1", "Header2"], ["Value1", "Value2"]]'

Update from CSV

waymaker sheets update <sheet-id> \
  --range "A1" \
  --file ./updates.csv

Append Rows

waymaker sheets update <sheet-id> \
  --append \
  --data '[["New Row 1", 100], ["New Row 2", 200]]'

Export Sheet

Export to CSV

waymaker sheets export <sheet-id> --format csv --output ./export.csv

Export to Excel

waymaker sheets export <sheet-id> --format xlsx --output ./export.xlsx

Export Range Only

waymaker sheets export <sheet-id> \
  --format csv \
  --range "A1:D100" \
  --output ./partial-export.csv

Options Reference

list

OptionTypeDescription
--workspacestringRequired. Workspace ID
--jsonflagOutput as JSON

get

OptionTypeDescription
--rangestringCell range (e.g., "A1:D10")
--jsonflagOutput as JSON

create

OptionTypeDescription
--workspacestringRequired. Workspace ID
--titlestringRequired. Sheet title
--filestringImport from CSV file
--datastringInitial data as JSON array

update

OptionTypeDescription
--rangestringTarget cell range
--datastringData as JSON array
--filestringData from CSV file
--appendflagAppend to end of sheet

export

OptionTypeDescription
--formatenumExport format (csv, xlsx)
--outputstringRequired. Output file path
--rangestringExport specific range only

AI Agent Workflow

# List all sheets
SHEETS=$(waymaker sheets list --workspace ws_xxx --json)

# Get specific data range
DATA=$(waymaker sheets get sheet_abc123 --range "A1:D100" --json)

# Process and update
PROCESSED=$(echo $DATA | jq '.values | map(...)')
waymaker sheets update sheet_abc123 \
  --range "E1" \
  --data "$PROCESSED"

# Create report sheet from data
waymaker sheets create \
  --workspace ws_xxx \
  --title "$(date +%Y-%m) Report" \
  --data "$REPORT_DATA"

# Export for external processing
waymaker sheets export sheet_abc123 --format csv --output /tmp/data.csv

MCP Tools (Claude Desktop)

When using the Waymaker MCP server with Claude Desktop or other AI assistants, these tools are available:

commander_sheet_list

List all sheets in an organization.

Parameters:

ParameterTypeRequiredDescription
organization_idstringYesOrganization UUID
workspace_idstringNoFilter by workspace
project_idstringNoFilter by project

Example prompts:

"List all spreadsheets in my organization"

"Show me sheets in the Finance workspace"

commander_sheet_get

Retrieve a sheet by ID with optional cell data.

Parameters:

ParameterTypeRequiredDescription
sheet_idstringYesSheet UUID
organization_idstringYesOrganization UUID
include_cellsbooleanNoInclude all cell data (default: false)

Example prompts:

"Get the Q1 Budget sheet and show me the data"

"Read the Team Capacity spreadsheet with all cell values"

commander_sheet_create

Create a new spreadsheet with optional initial data.

Parameters:

ParameterTypeRequiredDescription
workspace_idstringYesWorkspace UUID
organization_idstringYesOrganization UUID
titlestringYesSheet title
descriptionstringNoSheet description
row_countnumberNoNumber of rows (default: 100)
column_countnumberNoNumber of columns (default: 26)
initial_dataarrayNo2D array of initial data
project_idstringNoProject UUID
folder_idstringNoFolder UUID for placement

Example prompts:

"Create a spreadsheet called 'Q1 Budget' in my workspace"

"Create a sheet titled 'Team Capacity' with columns for Name, Role, Hours, and Availability"

"Create a budget tracking sheet and place it in the Finance folder"

commander_sheet_update

Update a sheet's metadata or cell values.

Parameters:

ParameterTypeRequiredDescription
sheet_idstringYesSheet UUID
organization_idstringYesOrganization UUID
titlestringNoNew sheet title
descriptionstringNoNew description
cellsarrayNoArray of cell updates: [{row, column, value}]

Example prompts:

"Rename the budget sheet to 'Q1 2026 Budget'"

"Update cell A1 in the budget sheet to 'Revenue'"

"Update cells B2 through B5 with the new sales figures"