A Model Context Protocol server for Google Sheets
Server has 9 tools with basic schemas and descriptions, but quality is inconsistent. All tools have descriptions (10-50 chars, mostly short), and input schemas are present with typed parameters. However, descriptions lack actionable context for LLM selection, they state WHAT but not WHEN or WHY. Parameter descriptions are minimal (e.g., 'Google Sheet ID' with no format guidance). Output schemas are undocumented. Error handling is absent from tool definitions. Naming is clear (verb_noun pattern) but some tools conflate concerns (append_rows vs insert_rows). No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Missing pagination guidance for list_files despite page_size/page_token params.
Append rows to the end of data in a Google Sheet
Create a new Google Sheet
Delete a Google Sheet
Batch read values from multiple ranges in a Google Sheet
Insert rows at a specific position in a Google Sheet
List Google Sheets as files
Read Google Sheet data
Descriptions lack actionable context. Most are 30-50 chars and state only WHAT (e.g., 'Read Google Sheet data') without WHEN to use or prerequisites. LLMs cannot distinguish read_file from read_range from get_values.
No output schemas documented. Tools return JSON but LLMs cannot plan downstream calls without knowing response structure (e.g., does list_files return file_id or spreadsheetId?).
Tool annotations missing. delete_sheet is destructive and create_sheet is idempotent, but no readOnlyHint/destructiveHint/idempotentHint declared. Agents cannot reason about retry safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Read data from a specific range in a Google Sheet
Update values in a specific range of a Google Sheet
Parameter descriptions are minimal. 'Google Sheet ID' lacks format guidance (is it a URL, a 44-char alphanumeric string?). 'Range in A1 notation' assumes LLM knows A1 notation.
append_rows and insert_rows overlap in functionality (both add rows). Descriptions do not clarify when to use each. LLM will guess or try both.