Google Sheets and Drive MCP
Provides tools for searching and listing Google Drive files, and granting editing access to authorized files.
Provides tools for reading, writing, and analyzing Google Sheets, including creating sheets, managing data, creating pivot tables and charts, conditional formatting, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Sheets and Drive MCPread the range A1:C10 from my budget spreadsheet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Sheets and Drive MCP
Локальный пакет с двумя MCP-серверами по stdio:
google-sheets-mcpпредоставляет 25 инструментов для предсказуемого чтения, изменения и анализа Google-таблиц;google-drive-mcpпредоставляет поиск и перечисление таблиц, а также отдельный чувствительный инструмент для выдачи editor-доступа к разрешённым файлам.
Инструменты MCP
health— диагностика конфигурации и лимитов;get_spreadsheet— метаданные таблицы и список листов;create_sheet— создание пустого листа с ограниченным начальным размером;rename_sheet— переименование существующего листа;copy_sheet— полное дублирование листа внутри той же таблицы;read_range— чтение ограниченного A1-диапазона;batch_read_ranges— чтение нескольких ограниченных диапазонов одним API-запросом;read_sheet— безопасное постраничное чтение листа сnext_start_row;write_range— запись прямоугольной матрицы значений;batch_write_ranges— запись нескольких прямоугольных диапазонов одним API-запросом;clear_range— очистка значений в одном ограниченном диапазоне;append_rows— добавление строк в конец табличного диапазона;unpivot_range— преобразование широкой таблицы в длинную с записью результата;create_pivot_table— создание нативной сводной таблицы Google Sheets;create_chart— создание нативной диаграммы Google Sheets;set_basic_filterиclear_basic_filter— установка и снятие фильтра;sort_range— сортировка по одному или нескольким заголовкам;add_conditional_format— цветовое условное форматирование;freeze_panes— закрепление верхних строк и левых колонок;write_formulas— запись прямоугольной матрицы формул;insert_image— вставка изображения внутрь ячейки по HTTP(S)-URL;copy_range— копирование значений, формул, форматов и правил;grant_read_access— выдача пользователю праваreaderна всю таблицу;set_sheet_visibility— скрытие и возврат листа.
create_chart поддерживает все нативные семейства диаграмм Google Sheets:
COLUMN, BAR, LINE, AREA, SCATTER, COMBO, STEPPED_AREA, PIE,
HISTOGRAM, BUBBLE, WATERFALL, SCORECARD, CANDLESTICK, TREEMAP и ORG.
create_pivot_table поддерживает группировки по строкам и столбцам, итоги и
стандартные функции агрегации: SUM, COUNT, AVERAGE, MIN, MAX и другие.
Для условного форматирования используются цвета #RRGGBB. Например, два
вызова с условиями NUMBER_GREATER и NUMBER_LESS позволяют выделить
положительные значения зелёным, а отрицательные — красным.
batch_read_ranges принимает список bounded A1-диапазонов и применяет лимит
чтения к их суммарному потенциальному размеру. batch_write_ranges принимает
список объектов {"range": ..., "values": ...} и применяет лимит записи к
суммарному числу ячеек во всех прямоугольных матрицах. Порядок диапазонов
сохраняется; batch-write является идемпотентной перезаписью указанных диапазонов.
clear_range требует явно указать лист и bounded A1-диапазон, например
'Data'!A1:D20. Операция учитывает общий write-лимит и очищает только значения:
форматирование, data validation, комментарии и размеры листа не изменяются.
create_sheet создаёт пустой лист с настраиваемым числом строк и колонок;
начальная сетка ограничена одним миллионом ячеек и 18 278 колонками.
rename_sheet сохраняет данные, позицию и свойства листа. copy_sheet
дублирует весь лист только внутри той же Google-таблицы, включая данные и
оформление; копирование между разными spreadsheet_id не выполняется.
set_basic_filter создаёт один нативный Basic Filter и заменяет предыдущий
Basic Filter листа. clear_basic_filter снимает его. freeze_panes принимает
число закреплённых строк и колонок; нулевые значения снимают закрепление.
write_formulas принимает только строки, начинающиеся с =. insert_image
использует нативную формулу IMAGE() и требует URL, доступный Google; локальные
файлы сначала нужно разместить в доступном хранилище. Поддерживаются режимы
вписывания, растягивания, исходного и пользовательского размера.
copy_range работает внутри одной Google-таблицы и поддерживает PASTE_VALUES,
PASTE_FORMULA, PASTE_FORMAT, PASTE_NORMAL, перенос data validation,
условного форматирования и транспонирование. Для копирования между разными
таблицами можно использовать связку read_range → write_range.
grant_read_access работает через Google Drive API и выдаёт доступ ко всему
файлу таблицы — Google не поддерживает отдельные права чтения для одного листа.
Для работы с существующими файлами, которые были расшарены на service account,
Drive-клиенту требуется полный scope https://www.googleapis.com/auth/drive:
узкий drive.file такие файлы не видит. Сервисный аккаунт также должен иметь
право делиться файлом, а доменная политика Google Workspace может запрещать
внешний доступ.
set_sheet_visibility не является механизмом защиты: скрытый лист остаётся
частью таблицы и доступен через API. Инструмент не позволяет скрыть последний
видимый лист и поддерживает обратную операцию через hidden=false.
Related MCP server: Google Sheets MCP Server
Google Drive MCP
Отдельный google-drive-mcp предоставляет четыре инструмента:
health— диагностика credentials и собственных границ безопасности;list_spreadsheets(page_size=50, page_token=null)— перечисление доступных Google-таблиц с пагинацией;search_spreadsheets(name_query, page_size=50, page_token=null)— безопасный поиск по буквальной подстроке имени без произвольного Drive query;grant_edit_access(file_id, email, send_notification_email=false)— выдача пользователю фиксированной ролиwriterна весь файл.
Read-инструменты возвращают только file_id, имя и время последнего изменения.
Размер страницы ограничен диапазоном 1–100. Если allowlist пуст, используются
нативные page tokens Google Drive. При включённом allowlist сервер запрашивает
только явно разрешённые ID через files.get, фильтрует неподходящие и недоступные
файлы и использует собственный непрозрачный page token.
Если permission отсутствует, сервер создаёт его. Существующий reader или
commenter повышается до writer; writer, fileOrganizer, organizer и
owner возвращают успешный no-op и никогда не понижаются. Произвольные роли,
передача владения, доменные permissions, revoke и downgrade не поддерживаются.
Google Drive не позволяет выдать editor-доступ только к одному листу или диапазону:
операция меняет доступ ко всему файлу.
Требования
Python 3.12–3.14
uvGoogle Cloud service account с включёнными Google Sheets API и Google Drive API
Установка
UV_CACHE_DIR=.uv-cache uv syncСкопируйте .env.example в локальный .env либо экспортируйте переменные в
окружение MCP-клиента. JSON-ключ и .env нельзя добавлять в репозиторий.
Подготовка Google Cloud
Включите Google Sheets API в нужном Google Cloud project.
Создайте service account и скачайте JSON-ключ в каталог вне репозитория.
Расшарьте тестовую таблицу на email service account с нужными правами.
Установите
GOOGLE_APPLICATION_CREDENTIALSв абсолютный путь к ключу.
Запуск
UV_CACHE_DIR=.uv-cache uv run google-sheets-mcp
UV_CACHE_DIR=.uv-cache uv run google-drive-mcpОба сервера используют stdio: обычный вывод зарезервирован под MCP-протокол.
Диагностический инструмент health проверяет конфигурацию без обращения к Google API.
Подключение к Codex
Codex CLI, IDE extension и desktop app используют общую MCP-конфигурацию. Зарегистрировать локальный сервер можно командой:
codex mcp add google_sheets \
--env GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
--env GOOGLE_SHEETS_MAX_READ_CELLS=100000 \
--env GOOGLE_SHEETS_MAX_WRITE_CELLS=10000 \
--env GOOGLE_SHEETS_REQUEST_TIMEOUT_SECONDS=30 \
--env GOOGLE_SHEETS_MAX_RETRIES=2 \
--env GOOGLE_SHEETS_RETRY_BASE_DELAY_SECONDS=0.5 \
--env GOOGLE_SHEETS_READ_ONLY=true \
--env GOOGLE_SHEETS_ALLOWED_SPREADSHEET_IDS=spreadsheet-id \
-- /absolute/path/to/google_sheets_tool/.venv/bin/google-sheets-mcp
codex mcp add google_drive \
--env GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
--env GOOGLE_DRIVE_REQUEST_TIMEOUT_SECONDS=30 \
--env GOOGLE_DRIVE_READ_ONLY=false \
--env GOOGLE_DRIVE_ALLOWED_FILE_IDS=file-id \
-- /absolute/path/to/google_sheets_tool/.venv/bin/google-drive-mcpПроверить регистрацию:
codex mcp get google_sheets
codex mcp get google_drive
codex mcp listПосле изменения MCP-конфигурации перезапустите Codex или IDE extension. В TUI
список подключённых серверов доступен через /mcp. JSON-ключ не следует
копировать в репозиторий или записывать непосредственно в config.toml;
конфигурация хранит только абсолютный путь к нему.
Эквивалентная ручная конфигурация в ~/.codex/config.toml:
[mcp_servers.google_sheets]
command = "/absolute/path/to/google_sheets_tool/.venv/bin/google-sheets-mcp"
startup_timeout_sec = 10
tool_timeout_sec = 60
enabled = true
[mcp_servers.google_sheets.env]
GOOGLE_APPLICATION_CREDENTIALS = "/absolute/path/to/service-account.json"
GOOGLE_SHEETS_MAX_READ_CELLS = "100000"
GOOGLE_SHEETS_MAX_WRITE_CELLS = "10000"
GOOGLE_SHEETS_REQUEST_TIMEOUT_SECONDS = "30"
GOOGLE_SHEETS_MAX_RETRIES = "2"
GOOGLE_SHEETS_RETRY_BASE_DELAY_SECONDS = "0.5"
GOOGLE_SHEETS_READ_ONLY = "true"
GOOGLE_SHEETS_ALLOWED_SPREADSHEET_IDS = "spreadsheet-id"
[mcp_servers.google_drive]
command = "/absolute/path/to/google_sheets_tool/.venv/bin/google-drive-mcp"
startup_timeout_sec = 10
tool_timeout_sec = 60
enabled = true
[mcp_servers.google_drive.env]
GOOGLE_APPLICATION_CREDENTIALS = "/absolute/path/to/service-account.json"
GOOGLE_DRIVE_REQUEST_TIMEOUT_SECONDS = "30"
GOOGLE_DRIVE_READ_ONLY = "false"
GOOGLE_DRIVE_ALLOWED_FILE_IDS = "file-id"Границы безопасности
GOOGLE_SHEETS_READ_ONLY=true запускает сервер с Google scope
spreadsheets.readonly, убирает изменяющие инструменты из MCP discovery и
дополнительно отклоняет прямые попытки их вызова. Доступными остаются health,
get_spreadsheet, read_range, batch_read_ranges и read_sheet.
GOOGLE_SHEETS_ALLOWED_SPREADSHEET_IDS принимает разделённый запятыми список
точных spreadsheet_id. Если список непустой, любой инструмент отклоняет работу
с другими таблицами до создания Google API-клиента. Пустое значение сохраняет
режим без ограничений. Параметры можно совмещать:
GOOGLE_SHEETS_READ_ONLY=true
GOOGLE_SHEETS_ALLOWED_SPREADSHEET_IDS=spreadsheet-id-1,spreadsheet-id-2Инструмент health сообщает только состояние режимов и количество разрешённых
таблиц, но не раскрывает сами идентификаторы.
GOOGLE_DRIVE_READ_ONLY=true убирает grant_edit_access из discovery и блокирует
его прямой вызов; Drive-клиент получает scope drive.metadata.readonly вместо
полного drive. GOOGLE_DRIVE_ALLOWED_FILE_IDS принимает разделённый запятыми
список точных file_id. При непустом списке list/search обращаются только к этим
ID, а editor-доступ к любому другому файлу отклоняется до создания API-клиента.
Пустой список разрешает любой видимый service account файл. Drive health
сообщает только факт включения allowlist и число файлов, не раскрывая ID.
Повторы временных ошибок
Для HTTP 429, 500, 502, 503 и 504 сервер выполняет ограниченный
exponential backoff. По умолчанию разрешены два повтора с задержками 0,5 и
1 секунду. GOOGLE_SHEETS_MAX_RETRIES=0 полностью отключает повторы; допустимый
диапазон — от 0 до 5. Начальная задержка задаётся через
GOOGLE_SHEETS_RETRY_BASE_DELAY_SECONDS: больше 0 и не более 60 секунд.
Автоматически повторяются только чтения и операции с однозначным конечным
состоянием: write_range (включая формулы и изображения),
batch_write_ranges, clear_range, rename_sheet, установка и снятие Basic
Filter, freeze panes и visibility.
Сервер никогда автоматически не
повторяет append_rows, grant_read_access, create_sheet, copy_sheet,
создание диаграмм, pivot-таблиц и условных правил, сортировку или копирование
диапазона.
google-drive-mcp также не повторяет create/update permission. После timeout
вызывающая сторона должна сначала проверить фактическую роль и только затем
решать, нужен ли отдельный ручной повтор.
Ограничения
сервер рассчитан на локальный однопользовательский запуск по
stdio;авторизация выполняется только через Google Cloud service account;
allowlist ограничивает таблицы целиком, но не отдельные листы или диапазоны;
grant_read_accessиспользует полный Google Drive scope и меняет доступ ко всему файлу, а не к одному листу;grant_edit_accessнаходится только вgoogle-drive-mcp, всегда запрашивает рольwriterдля всего файла и требует capabilitycanShare;insert_imageтребует HTTP(S)-URL, доступный серверам Google;сервер не создаёт и не удаляет Google-таблицы целиком;
multi-step операции не являются транзакциями Google Sheets;
после timeout неоднозначной операции вызывающая сторона должна проверить фактическое состояние перед ручным повтором.
Разработка
UV_CACHE_DIR=.uv-cache uv run ruff check .
UV_CACHE_DIR=.uv-cache uv run pytest
UV_CACHE_DIR=.uv-cache uv build
UV_CACHE_DIR=.uv-cache .venv/bin/python scripts/check_release_artifacts.py
UV_CACHE_DIR=.uv-cache .venv/bin/python scripts/smoke_package.pyGitHub Actions выполняет те же проверки на Python 3.12 для каждого push и pull
request: устанавливает зависимости строго из uv.lock, запускает Ruff и Pytest,
затем собирает sdist и wheel и устанавливает wheel в чистое временное окружение.
Явный smoke-тест чтения не выводит значения ячеек:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_read.pySmoke-тест записи создаёт или переиспользует изолированный лист _mcp_test,
очищает только A:Z на этом листе и проверяет запись чтением обратно:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_write.pyАналитический smoke-тест пересоздаёт только _mcp_test, затем проверяет
постраничное чтение, unpivot, нативную сводную таблицу и диаграмму:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_analytics.pySmoke-тест представления проверяет все типы диаграмм, фильтр, сортировку, условное форматирование и закрепление панелей:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_presentation.pySmoke-тест содержимого проверяет формулы, копирование значений и формул, а также вставку изображения в ячейку:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_content.pySmoke-тест доступа проверяет Drive capability canShare, временно скрывает
_mcp_test, подтверждает состояние и возвращает лист видимым:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_access.pyОтдельный smoke-тест безопасно выдаёт право чтения: сначала проверяет наличие permission, не создаёт дубликат и подтверждает результат чтением обратно. Уведомление пользователю не отправляется:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
GOOGLE_SHEETS_TEST_READER_EMAIL=user@example.com \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_grant_access.pyПолный последовательный прогон всех smoke-тестов:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
GOOGLE_SHEETS_TEST_READER_EMAIL=user@example.com \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_all.pyПрогон изменяет только тестовый лист _mcp_test. Аналитические, presentation и
content-сценарии пересоздают этот лист, поэтому хранить на нём рабочие данные
нельзя.
Проверка всех инструментов через настоящий MCP stdio-протокол:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
GOOGLE_SHEETS_TEST_READER_EMAIL=user@example.com \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_mcp_stdio.pyОтдельный Drive MCP smoke проверяет discovery четырёх инструментов, list/search
строго внутри allowlist, выдачу writer-доступа без уведомления и восстановление
исходного permission в finally:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_DRIVE_TEST_FILE_ID=file-id \
GOOGLE_DRIVE_TEST_EDITOR_EMAIL=user@example.com \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_drive_mcp_stdio.pyПолный release-smoke объединяет Sheets API, оба MCP stdio сценария и временные
проверки permissions. Подробный вывод дочерних сценариев подавляется, а исходный
permission тестового пользователя восстанавливается в finally:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service-account.json \
GOOGLE_SHEETS_TEST_SPREADSHEET_ID=spreadsheet-id \
GOOGLE_SHEETS_TEST_READER_EMAIL=user@example.com \
UV_CACHE_DIR=.uv-cache uv run python scripts/smoke_release.pyЛицензия и релиз
Проект распространяется по лицензии MIT. История изменений находится в CHANGELOG.md, а обязательные проверки перед публикацией — в RELEASE_CHECKLIST.md.
Полный план и границы MVP описаны в PLAN.md.
Available Tools
25 toolsadd_conditional_formatC
Add a native conditional-formatting rule using #RRGGBB colors.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | ||
| range | Yes | ||
| rule_index | No | ||
| text_color | No | ||
| condition_type | Yes | ||
| spreadsheet_id | Yes | ||
| background_color | No | ||
| condition_values | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as whether the rule overrides existing ones, permissions required, or immediate effect. It only states the action without behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it lacks structure and does not earn its space by providing sufficient detail for the tool's complexity. It is too brief for an 8-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, no annotations, no schema descriptions, yet the description only mentions colors. It fails to explain critical parameters like condition_type, condition_values, range, or the output schema, leaving the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate but only references '#RRGGBB colors', which weakly explains two of eight parameters (text_color and background_color). Most parameters like condition_type, condition_values, rule_index, etc., are not explained at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and resource 'native conditional-formatting rule', and specifies color format '#RRGGBB'. It distinguishes the tool's function from siblings like 'set_basic_filter' or 'create_pivot_table', but does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No prerequisites, contexts, or exclusions are provided. The description simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_rowsC
Append rows to the table detected in an A1 range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| values | Yes | ||
| spreadsheet_id | Yes | ||
| insert_data_option | No | INSERT_ROWS | |
| value_input_option | No | USER_ENTERED |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It does not mention whether rows are inserted at the end, how existing data is handled, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise in a single sentence, but it is too terse and lacks structure. It could be improved with a brief overview and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and no annotations, the description fails to cover behavioral traits, parameter details, or output characteristics. The output schema exists but the description does not reference it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, and the description adds no explanation for the five parameters. The agent has no understanding of what 'values', 'insert_data_option', or 'value_input_option' mean beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action 'append rows' and the target 'table detected in an A1 range', which is clear. However, it does not differentiate from sibling tools like write_range or batch_write_ranges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as write_range or batch_write_ranges. The description lacks context about preconditions or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_read_rangesC
Read several explicitly bounded A1 ranges in one API request.
| Name | Required | Description | Default |
|---|---|---|---|
| ranges | Yes | ||
| spreadsheet_id | Yes | ||
| major_dimension | No | ROWS | |
| value_render_option | No | FORMATTED_VALUE |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal disclosure beyond 'one API request'; no mention of behavior like range ordering, limits, or error handling. No annotations provided to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise but omits critical details. Could be more structured to cover usage and parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch operation, multiple parameters, output schema), the description is insufficiently complete. Missing guidance on range format, options, and batching behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only the 'ranges' parameter is described ('explicitly bounded A1 ranges'). Other parameters (spreadsheet_id, major_dimension, value_render_option) are not mentioned. With 0% schema coverage, the description should add more meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads multiple A1 ranges in one request, distinguishing it from read_range which reads a single range. However, it could be more explicit about the batch nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like read_range; the batching benefit is implied but not stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_write_rangesB
Write several rectangular ranges in one idempotent API request.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| spreadsheet_id | Yes | ||
| value_input_option | No | USER_ENTERED |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for disclosing behavioral traits. It only mentions idempotency, but omits critical details like side effects (e.g., overwriting data), authentication needs, rate limits, or error behavior. Significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, achieving high conciseness. However, it sacrifices completeness for brevity. It could include more detail while remaining efficient, hence not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown), the description does not explain return values, the structure of the data array, or the behavior of the optional value_input_option parameter. Given the tool's complexity (nested objects, enums), the description is far from complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must elaborate on parameters. It provides zero information about spreadsheet_id, data (the array of BatchWriteRange objects), or value_input_option (though an enum is defined). The agent cannot infer correct parameter usage from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'write' and the resource 'several rectangular ranges', and includes 'idempotent' as a key qualifier. It distinguishes this tool from siblings like write_range (single range) and batch_read_ranges (read), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for batch writing multiple ranges, but it does not explicitly state when to use this tool versus alternatives like write_range, nor does it mention any prerequisites or when not to use it (e.g., for non-rectangular writes). The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_basic_filterC
Remove the native basic filter from a sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_name | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as what happens if no filter exists, whether data is affected, or if any permissions are required. This leaves the agent with significant uncertainty about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence. It is efficient and front-loaded with the key action. However, it could include slightly more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no annotations, the description is minimally adequate. It defines the action but lacks details on behavior when the filter doesn't exist, return values (though output schema exists), or edge cases. It does not fully leverage the available context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 2 required parameters with 0% description coverage. The description does not add any meaning beyond the parameter names (spreadsheet_id, sheet_name). No formats, constraints, or examples are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the object 'native basic filter' from a 'sheet', making it unambiguous. It effectively distinguishes from the sibling tool 'set_basic_filter' which adds a filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'set_basic_filter' or conditions like the filter must exist. It does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_rangeB
Clear values from one bounded, sheet-qualified A1 range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only says 'Clear values', but it does not disclose whether formatting, formulas, or data validation are preserved. It also does not mention authorization needs or whether the operation is reversible. For a potentially destructive action, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 8 words in a single sentence, which is concise. The verb 'Clear' is front-loaded. However, it is so brief that it sacrifices necessary detail; therefore it earns a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple purpose and an output schema exists, so return values are likely documented elsewhere. However, for a destructive operation, details about side effects (e.g., formatting preservation) and required permissions are missing. An agent may need to rely on external knowledge, making completeness only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so parameters 'range' and 'spreadsheet_id' have no documentation. The description adds minimal value: it qualifies 'range' as a 'bounded, sheet-qualified A1 range', but does not explain spreadsheet_id or provide formatting constraints. The agent must infer parameter meaning from the name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('clear') and the resource ('values from ... range'). It specifies 'one bounded, sheet-qualified A1 range', which distinguishes it from sibling tools like read_range, sort_range, or freeze_panes. No ambiguity about what action is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as write_range (to overwrite values) or delete_sheet. No mention of prerequisites, limitations, or typical use cases. An agent has no context for decision-making beyond the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_rangeC
Copy values, formulas, formatting, or rules within one spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| paste_type | No | PASTE_VALUES | |
| orientation | No | NORMAL | |
| source_range | Yes | ||
| spreadsheet_id | Yes | ||
| target_start_cell | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It only states basic copy behavior, omitting details like target overwrite, reversibility, or permissions. Insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundancy. Front-loads action and scope. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 5 parameters and a meaningful operation, yet description is minimal. No explanation of output (though output schema exists), range formats, or paste behavior. Incomplete given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for 5 parameters. Description does not explain any parameter (e.g., source_range format, paste_type enum, orientation). Relies entirely on schema, which lacks descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Copy) and the resource (within one spreadsheet), listing specific items (values, formulas, formatting, or rules). It distinguishes from siblings like copy_sheet or write_range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., copy_sheet). Does not mention constraints like same-spreadsheet-only or when to prefer other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_sheetC
Duplicate one complete sheet within the same spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| new_sheet_name | Yes | ||
| spreadsheet_id | Yes | ||
| source_sheet_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the basic action without disclosing details like whether formatting, formulas, or data validation are copied, or if the source sheet remains unchanged. The minimal description lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that captures the core functionality. It is front-loaded and to the point. However, it could include a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description could be slightly lighter on return details, but it fails to mention important context such as that the source sheet is preserved, cannot copy to another spreadsheet, or any constraints on sheet names. The description is inadequate for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain any of the three parameters beyond their names. It adds no semantic value, e.g., it does not specify that 'source_sheet_name' must match an existing sheet name exactly or that 'new_sheet_name' must be unique.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'duplicate' and explicitly names the resource 'sheet' and context 'within the same spreadsheet'. It clearly distinguishes from sibling tools like 'copy_range' (copies a range, not entire sheet) and 'create_sheet' (creates new blank sheet).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives. For instance, it doesn't state that the copy must be within the same spreadsheet or mention when to use 'copy_range' instead. Users must infer usage from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_chartC
Create a native chart using the first source column as its domain.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| chart_type | No | COLUMN | |
| anchor_cell | Yes | ||
| header_rows | No | ||
| source_range | Yes | ||
| width_pixels | No | ||
| height_pixels | No | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only reveals that the domain comes from the first source column, but fails to disclose whether the tool modifies data, requires permissions, or has side effects. With no annotations, the burden is high, and this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded, but it is too brief to be considered efficient given the tool's complexity. It sacrifices substance for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, 3 required, no schema descriptions, and no output schema details, the description is woefully incomplete. An agent cannot reliably invoke this tool without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the 8 parameters, and the schema has 0% coverage. Users are left to infer the meaning of title, chart_type, anchor_cell, etc., without any added context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'native chart', and adds specificity with 'using the first source column as its domain.' This distinguishes it from sibling tools like create_pivot_table and other non-chart tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or exclusion criteria mentioned. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pivot_tableC
Create a native Google Sheets pivot table from a bounded source range.
| Name | Required | Description | Default |
|---|---|---|---|
| row_columns | Yes | ||
| show_totals | No | ||
| target_cell | Yes | ||
| source_range | Yes | ||
| value_columns | Yes | ||
| column_columns | No | ||
| spreadsheet_id | Yes | ||
| summarize_function | No | SUM |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only says 'create a pivot table' without detailing side effects, permissions needed, or error handling for invalid ranges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks necessary detail. It could be restructured to include key parameter info while remaining succinct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, 5 required, and a complex operation, the description is severely incomplete. It does not address parameter arrays, default values, or return value (despite having an output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema parameter descriptions have 0% coverage, and the tool description does not explain any parameters (e.g., row_columns, value_columns, summarize_function). The agent has no understanding of what each parameter means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Create' and identifies the resource as 'native Google Sheets pivot table', with a constraint 'from a bounded source range'. This clearly differentiates it from sibling tools like read_range or create_chart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Lacks context such as prerequisites (e.g., data must be contiguous) or when not to use (e.g., if data is not tabular).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sheetC
Create one empty sheet with a bounded initial grid size.
| Name | Required | Description | Default |
|---|---|---|---|
| row_count | No | ||
| sheet_name | Yes | ||
| column_count | No | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions 'bounded' but does not clarify limits, side effects on other sheets, authorization needs, or what the output contains (though an output schema exists). Significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but omits critical information; it is under-specified rather than concise. A single sentence is insufficient for a tool with 4 parameters and no parameter descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 params, no parameter docs, no annotations) and the presence of an output schema, the description should provide more context about usage and behavior. It does not adequately compensate for the lack of structured documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The tool description does not explain any parameter beyond its name, so the agent cannot infer meaning or constraints for row_count, column_count, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and resource 'sheet', specifying it creates an empty sheet with a bounded initial grid size, which distinguishes it from siblings like copy_sheet or read_sheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like copy_sheet, or what prerequisites are needed (e.g., existing spreadsheet). The agent receives no context for decision-making among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freeze_panesA
Freeze top rows and left columns; use zero counts to unfreeze.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_name | Yes | ||
| frozen_rows | No | ||
| frozen_columns | No | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It covers the core action and the unfreeze mechanism, but omits any safety considerations, permission requirements, or side effects. The behavior is minimally explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose and includes a key usage instruction. Every word is necessary and contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the essential freeze/unfreeze functionality. However, it does not mention required parameters or the sheet-specific context, making it marginally complete for a zero-annotation, zero-schema-coverage scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to 'frozen_rows' and 'frozen_columns' by linking them to 'top rows and left columns' and explaining zero counts for unfreezing, but does not clarify the required parameters 'spreadsheet_id' and 'sheet_name'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'freeze' and resource 'top rows and left columns', clearly distinguishing the tool from siblings like 'clear_range' or 'sort_range'. It also covers the dual purpose of freezing and unfreezing via zero counts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use zero counts (to unfreeze), providing clear context. It does not elaborate on when not to use the tool or compare with alternatives, but since no sibling tool handles freeze/unfreeze, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spreadsheetA
Get spreadsheet metadata and its list of sheets.
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheet_id | Yes | ||
| include_grid_properties | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description indicates read operation, but no details on rate limits, auth needs, or side effects. Minimal but adequate for a simple get.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence. To the point, though could mention that output includes sheet IDs for context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has output schema, so return values covered. Description covers main aspects (metadata + sheets). Lacks mention of optional parameters but sufficient for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameter descriptions in schema or description. Schema coverage 0%. Description does not explain include_grid_properties or add value beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets spreadsheet metadata and sheet list. Verb 'get' and resource 'spreadsheet' are specific. Distinguishable from siblings like read_sheet or clear_range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use. Implied that it's for retrieving overall structure, but no guidance on selecting over siblings like read_sheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grant_read_accessC
Grant a user reader access to the entire spreadsheet through Google Drive.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| spreadsheet_id | Yes | ||
| send_notification_email | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only states the high-level effect. It omits important behaviors such as whether the user is added as a collaborator, whether a notification email is sent (though hinted by the schema parameter), and what happens if access already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is too brief to be informative. It would benefit from additional detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's purpose (sharing) and the presence of an output schema, the description lacks crucial context such as required permissions, side effects on existing permissions, and behavior for invalid inputs. It is insufficient for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no information about the parameters. Parameter names are self-explanatory, but the description fails to clarify format, constraints, or usage beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly and specifically states the action (grant), resource (reader access to the entire spreadsheet), and method (through Google Drive). It effectively distinguishes the tool from siblings, which focus on data manipulation rather than sharing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., required permissions), and no exclusions. The agent is left without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
healthA
Report server status and whether Google credentials are configured.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'reports' but doesn't disclose read-only nature, required permissions, or output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence with no fluff, but could benefit from bullet points for structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health tool with output schema, description is sufficient; doesn't need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; baseline 4 applies as description doesn't need to add param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports server status and credential configuration, differentiating it from sibling spreadsheet tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or exclusions, but context implies it's for checking server/credential health before other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_imageC
Insert an in-cell image from an HTTP(S) URL using IMAGE().
| Name | Required | Description | Default |
|---|---|---|---|
| cell | Yes | ||
| mode | No | FIT | |
| image_url | Yes | ||
| width_pixels | No | ||
| height_pixels | No | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It only states the basic action without disclosing side effects, error cases, or constraints (e.g., URL must return valid image, supported formats, size limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it omits necessary details. It is not excessively verbose, but the brevity sacrifices clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters (three required), an output schema (not shown), and no annotation, the description is insufficient. It does not cover behaviors, return format, or parameter relationships.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the six parameters (e.g., what 'mode' does, how 'width_pixels' interacts). The agent must infer entirely from parameter names and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Insert' and resource 'in-cell image from an HTTP(S) URL using IMAGE()', which is specific and distinguishes this tool from sibling tools (none of which deal with images).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any exclusions or context. The agent receives no help in deciding between this and other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_rangeC
Read an explicitly bounded A1 range from a spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| spreadsheet_id | Yes | ||
| major_dimension | No | ROWS | |
| value_render_option | No | FORMATTED_VALUE |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It only states the basic action, missing details like read-only behavior, effect of parameters, or any side effects. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence, but it is too minimal and omits important details. It is not overly verbose, but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no description of output (though output schema exists), the description is insufficient. It does not cover parameter roles or behavioral nuance needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no information about parameters. The schema itself is clear but the description does not assist the agent in understanding parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads an A1 range from a spreadsheet, distinguishing it from siblings like read_sheet (likely reads entire sheet) and batch_read_ranges (multiple ranges). The verb 'Read' and resource 'explicitly bounded A1 range' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or usage context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sheetC
Read a safe page of a whole sheet; use next_start_row to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| max_rows | No | ||
| start_row | No | ||
| end_column | No | ||
| sheet_name | Yes | ||
| start_column | No | A | |
| spreadsheet_id | Yes | ||
| value_render_option | No | FORMATTED_VALUE |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description hints at pagination via 'use next_start_row to continue' and suggests a 'safe' (possibly bounded) read, but does not disclose request limits, output behavior, or read-only nature. With no annotations, the burden is higher but only partially met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 13 words, efficient and front-loaded. Could include more detail without harming conciseness, but current length is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no descriptions, and no annotations, the description is too sparse. It omits crucial context like pagination mechanics, parameter ranges, and output format (though output schema exists, description doesn't leverage it).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no parameter explanations. It mentions 'next_start_row' which is not a parameter (actual param is start_row). No additional meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a sheet, using verb 'Read' and resource 'sheet', and distinguishes from siblings like read_range by implying it reads the whole sheet in pages. However, 'safe page' is vague, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like read_range or batch_read_ranges. Only mentions using next_start_row for continuation, but no context on when to stop or switch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_sheetA
Rename one sheet without changing its data or position.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_name | Yes | ||
| new_sheet_name | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states that data and position are unchanged, which is the key behavioral guarantee. It does not mention any side effects or prerequisites (e.g., unique new name), but for a simple rename, the provided detail is sufficient to avoid misunderstanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the core action and its constraints. Every word is necessary, with no redundancy or filler. It is front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required parameters, no nested objects) and the presence of an output schema (so return values need not be explained), the description is minimally adequate. However, it omits parameter details and does not specify constraints like unique new name, leaving gaps for an agent to fill by inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate by explaining parameter meanings. It does not describe spreadsheet_id, sheet_name, or new_sheet_name beyond what their names imply. The agent must infer parameter purposes from parameter names alone, which is insufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames a single sheet, using a specific verb ('rename') and resource ('sheet'). It adds the constraint 'without changing its data or position', which distinguishes it from siblings like copy_sheet or create_sheet. This leaves no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use this tool (when renaming a sheet) and what it does not do (alter data or position). However, it does not explicitly state when not to use it or mention alternatives among siblings. The context is clear for a straightforward operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_basic_filterC
Set a native sheet filter on one named column; replaces the existing basic filter.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| column_name | Yes | ||
| hidden_values | No | ||
| condition_type | Yes | ||
| spreadsheet_id | Yes | ||
| condition_values | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool replaces the existing basic filter, but does not mention side effects, authorization needs, or output behavior. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise (one sentence) and front-loaded, but lacks necessary detail for a 6-parameter tool, making it under-specified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and a complex condition type enum, the description fails to explain how to use conditions, what the return value represents, or any constraints. Incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of any parameter. The condition_type enum and condition_values remain unexplained despite being critical for correct use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('set a native sheet filter'), resource ('one named column'), and that it replaces existing basic filter, distinguishing it from sibling 'clear_basic_filter'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives like 'clear_basic_filter' or other filtering methods. The description implies it replaces an existing filter but lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sheet_visibilityC
Hide or show a sheet; hiding is not an access-control boundary.
| Name | Required | Description | Default |
|---|---|---|---|
| hidden | No | ||
| sheet_name | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait: hiding does not restrict access. However, with no annotations, it does not cover other behaviors such as error states or prerequisites, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core action and a critical caveat. No unnecessary words, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the basic purpose. However, it omits prerequisites, error handling, and relationship to other sheet operations, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about the three parameters (spreadsheet_id, sheet_name, hidden). The agent receives no parameter guidance beyond the schema's type and required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Hide or show a sheet') and adds an important caveat about access control. It does not explicitly differentiate from sibling tools but the action is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The caveat about access-control boundary hints at a limitation but does not direct the agent to other tools like grant_read_access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sort_rangeC
Sort a bounded range by named columns while preserving header rows.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| sort_order | No | ASCENDING | |
| header_rows | No | ||
| sort_columns | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure burden. It only mentions 'preserving header rows', but omits critical details like that sorting modifies the range in-place, requires edit permissions, or how ties are handled. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, but it sacrifices necessary detail for brevity. While front-loaded with the core action, it lacks the completeness expected for a tool with five parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to provide essential context for a mutable operation: it does not state that the sort is applied in-place, that header rows are preserved but not sorted, or any side effects. The minimal information leaves significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the tool description does not explain any parameters beyond implying 'named columns' corresponds to sort_columns. Key parameters like range syntax, sort_order effect, and header_rows interpretation are undocumented, leaving the agent to infer from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Sort a bounded range by named columns while preserving header rows' clearly states the action (sort), the resource (bounded range), and key constraints (by named columns, preserving headers). It distinguishes this tool from siblings like read_range or write_range, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when sorting is preferable to filtering or other data manipulation. There are no conditions, prerequisites, or exclusion criteria mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpivot_rangeC
Convert a wide range into normalized rows and write the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id_columns | Yes | ||
| source_range | Yes | ||
| target_range | Yes | ||
| spreadsheet_id | Yes | ||
| skip_empty_values | No | ||
| value_column_name | No | value | |
| variable_column_name | No | variable |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must reveal behavioral traits. It implies a write operation but fails to specify whether it overwrites, appends, or affects existing data, nor does it mention permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. However, it could be slightly longer to include essential context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has seven parameters, no annotations, and an output schema, the description is too brief. It does not explain what 'normalized rows' means, how id_columns work, or what the output looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in the schema), and the description adds no information about the seven parameters, their roles, or defaults. The description is completely silent on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts a wide range into normalized rows and writes the result, matching the tool name 'unpivot_range'. However, it does not differentiate from sibling tools like 'write_range' or 'read_range'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, conditions, or scenarios where unpivoting is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_formulasC
Write a rectangular matrix of formulas beginning with '='.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| formulas | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must cover behavior. It mentions formulas start with '=' but omits whether it overwrites, clears existing data, or affects formatting. For a write tool, these are critical gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste. Efficient but lacks structure like bullet points or sections. Appropriate for minimalism, but could be improved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 required params, no param descriptions in schema, and a sibling set of similar tools, the description fails to provide sufficient detail for correct invocation and selection. Output schema exists but return behavior not explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description adds that 'formulas' is a 'rectangular matrix' and must begin with '=', but does not explain 'spreadsheet_id' or 'range' format. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it writes formulas beginning with '=', specifying 'rectangular matrix'. This distinguishes it from write_range (values) and append_rows, but does not explicitly differentiate from other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like write_range or batch_write_ranges. No prerequisites or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_rangeB
Write a rectangular values matrix to an A1 range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| values | Yes | ||
| spreadsheet_id | Yes | ||
| value_input_option | No | USER_ENTERED |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only states 'write', implying mutation, but does not disclose effects like overwriting, permissions, or limitations. For a write tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded and efficient, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, required fields, and an output schema, the description is too brief. It omits details on return values, behavioral effects (e.g., overwrite behavior), and context relative to siblings. For a mutation tool without annotations, completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds minimal context. It clarifies that 'values' is a rectangular matrix and 'range' is in A1 notation, but fails to explain 'spreadsheet_id' or the 'value_input_option' enum. Given the low coverage, the description does not adequately compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Write a rectangular values matrix to an A1 range' clearly states the action (write), the resource (rectangular values matrix), and the target (A1 range). It distinguishes from siblings like 'batch_write_ranges' or 'append_rows' by specifying 'rectangular matrix' and 'A1 range'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Siblings include 'batch_write_ranges', 'append_rows', and others, but the description does not mention when to prefer this tool or exclusions. The agent has no context for choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
25 tool updates
v0.2.0- First observed
add_conditional_format - First observed
append_rows - First observed
batch_read_ranges - First observed
batch_write_ranges - First observed
clear_basic_filter - First observed
clear_range - First observed
copy_range - First observed
copy_sheet - First observed
create_chart - First observed
create_pivot_table - First observed
create_sheet - First observed
freeze_panes - First observed
get_spreadsheet - First observed
grant_read_access - First observed
health - First observed
insert_image - First observed
read_range - First observed
read_sheet - First observed
rename_sheet - First observed
set_basic_filter - First observed
set_sheet_visibility - First observed
sort_range - First observed
unpivot_range - First observed
write_formulas - First observed
write_range
TDQS
Each tool has a distinct and clearly defined purpose. Even similar tools like read_range, batch_read_ranges, and read_sheet are differentiated by scope (bounded range, multiple ranges, entire sheet page). No overlapping functionality.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_spreadsheet, clear_range, create_sheet). The only exception is 'health', but it is a simple status check and fits the pattern if considered as a verb implied. Overall, naming is highly predictable.
25 tools is slightly above the typical 3-15 range, but each tool provides a specific, non-redundant operation. The count is justified by the breadth of Google Sheets functionality covered, though it could be trimmed (e.g., batch operations could be merged).
The tool set covers many common operations but has notable gaps: no delete_sheet, no create_spreadsheet, no delete_rows, and no cross-spreadsheet copy/move. This will cause agents to struggle with basic workflows like creating and deleting spreadsheets or deleting data.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query your Google Sheets as structured JSON: list sheets and tabs, read schemas, filter rows.
Provides tools for searching Google Workspace documentation and much more.
Connect AI assistants to Google Sheets through controlled tools for reading and updating rows.
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceIntegrates with Google Drive to enable listing, searching, and reading files, plus reading and writing to Google Sheets.1,397283MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables comprehensive interaction with Google Sheets and Google Drive through OAuth2 authentication. Supports spreadsheet creation, data manipulation, formatting, chart creation, and advanced operations like SQL queries and batch updates.-
- FlicenseNot gradedqualityDmaintenanceEnables reading and writing Google Sheets using API key or service account, with support for public and authenticated access.-
- AlicenseNot gradedqualityCmaintenanceEnables reading, writing, appending, and creating Google Sheets spreadsheets through MCP tools, with support for exploring spreadsheet structure and creating new sheets.14MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Runemal/google_sheets_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server