Reliable, token-efficient Google Sheets MCP server + CLI for AI agents. 32 tools, teaching errors, capped reads, dual auth (OAuth + service account).
SheetCraft demonstrates solid tool design with 34 well-named, verb-prefixed tools (get_, create_, update_, delete_, batch_) covering Google Sheets operations. All tools have descriptions (avg ~80 chars) and explicit input schemas with typed parameters. Strengths: consistent naming conventions, clear parameter types (enums for format/role/chartType), and risk annotations (READ_ONLY/WRITE/DESTRUCTIVE). Gaps: parameter descriptions are minimal (often just restating the name), output schemas are not documented in the provided code, error handling guidance is absent, and no evidence of pagination support for list operations. The batch_update tool exposes raw API requests, which risks LLM hallucination of invalid payloads.
Add a new sheet (tab) to a spreadsheet
Append rows to the end of a range
Read multiple ranges from a spreadsheet
Execute raw batchUpdate requests for advanced operations
Update multiple ranges in a spreadsheet
Clear all values from a range
Apply conditional formatting rules
Copy an existing spreadsheet
batch_update tool exposes raw Google Sheets API request objects without validation or guidance. LLMs cannot reliably construct valid batchUpdate payloads and will hallucinate invalid request structures.
Parameter descriptions are minimal and often just restate the parameter name (e.g., 'A1 notation range' for 'range'). LLMs need actionable guidance on format, constraints, and examples to avoid invalid input.
No output schemas documented in source code. LLMs cannot plan downstream tool calls or extract required fields (e.g., chartId, pivotTableId) without knowing response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Create an embedded chart in a spreadsheet
Create a pivot table
Create a new spreadsheet
Delete an embedded chart
Delete a pivot table
Delete a sheet from a spreadsheet
Duplicate a sheet within a spreadsheet
Export a spreadsheet to a file format
Find and replace text in a range
Search for spreadsheets by name
Apply formatting to cells
Freeze rows and/or columns
Get formatting information for a range
Get metadata about a spreadsheet (sheets, dimensions, properties)
Read cell values from a range
Insert or delete rows/columns
Merge cells in a range
Move rows or columns to a new position
Rename a sheet
Resolve a spreadsheet URL or ID to its canonical ID
Set data validation rules on a range
Share a spreadsheet with users or groups
Sort a range by one or more columns
Move a spreadsheet to trash
Update an existing embedded chart
Update cell values in a range
No pagination support visible for list operations (find_spreadsheets). Large result sets will blow context windows and degrade LLM reasoning.
Error handling and recovery guidance absent. Tools do not indicate which errors are retryable, user-fixable, or fatal, leaving LLMs unable to plan recovery.