Tool Reference¶
127 tools. All tool names are lowercase with underscores — use these exact strings with ENABLED_TOOLS or --include-tools.
Sheets — data¶
| Tool | Description | Key parameters |
|---|---|---|
get_sheet_data |
Get data from a specific sheet in a Google Spreadsheet. | spreadsheet_id, sheet, range?, include_grid_data?, local_path? |
get_sheet_formulas |
Get formulas from a specific sheet in a Google Spreadsheet. | spreadsheet_id, sheet, range? |
get_multiple_sheet_data |
Get data from multiple specific ranges in Google Spreadsheets. | queries, local_path? |
get_multiple_spreadsheet_summary |
Get a summary of multiple Google Spreadsheets, including sheet names, headers, and the first few rows of data for each sheet. | spreadsheet_ids, rows_to_fetch?, local_path? |
find_in_spreadsheet |
Find cells containing a specific value in a Google Spreadsheet. | spreadsheet_id, query, sheet?, case_sensitive?, max_results?, local_path? |
clear_values |
Clear cell content in a range without touching formatting. | spreadsheet_id, sheet, range? |
update_cells |
Update cells in a Google Spreadsheet. | spreadsheet_id, sheet, range, data |
batch_update_cells |
Batch update multiple ranges in a Google Spreadsheet. | spreadsheet_id, sheet, ranges |
batch_update |
Execute a batch update on a Google Spreadsheet using the full batchUpdate endpoint. This provides access to all batchUpdate operations including adding sheets, updating properties, inserting/deleting dimensions, formatting, and more. | spreadsheet_id, requests |
batch_update is the escape hatch for anything not covered by a named tool (formatting, conditional formatting, dimension properties, etc.).
Sheets — structure¶
| Tool | Description | Key parameters |
|---|---|---|
list_sheets |
List all sheets in a Google Spreadsheet. | spreadsheet_id |
copy_sheet |
Copy a sheet from one spreadsheet to another. | src_spreadsheet, src_sheet, dst_spreadsheet, dst_sheet |
duplicate_sheet |
Duplicate a sheet tab within the same spreadsheet. | spreadsheet_id, sheet, new_name?, insert_index? |
rename_sheet |
Rename a sheet in a Google Spreadsheet. | spreadsheet, sheet, new_name |
create_sheet |
Create a new sheet tab in an existing Google Spreadsheet. | spreadsheet_id, title |
add_rows |
Add rows to a sheet in a Google Spreadsheet. | spreadsheet_id, sheet, count, start_row? |
add_columns |
Add columns to a sheet in a Google Spreadsheet. | spreadsheet_id, sheet, count, start_column? |
delete_sheet |
Delete a sheet tab from a Google Spreadsheet. | spreadsheet_id, sheet |
delete_rows |
Delete rows from a sheet. | spreadsheet_id, sheet, start_row, end_row? |
delete_columns |
Delete columns from a sheet. | spreadsheet_id, sheet, start_column, end_column? |
hide_rows |
Hide rows in a sheet from view. | spreadsheet_id, sheet, start_row, end_row? |
unhide_rows |
Unhide previously hidden rows in a sheet. | spreadsheet_id, sheet, start_row, end_row? |
hide_columns |
Hide columns in a sheet from view. | spreadsheet_id, sheet, start_column, end_column? |
unhide_columns |
Unhide previously hidden columns in a sheet. | spreadsheet_id, sheet, start_column, end_column? |
resize_rows |
Set an explicit pixel height for rows, or auto-fit them to content. | spreadsheet_id, sheet, start_row, end_row?, pixel_size?, auto_resize? |
resize_columns |
Set an explicit pixel width for columns, or auto-fit them to content. | spreadsheet_id, sheet, start_column, end_column?, pixel_size?, auto_resize? |
format_cells |
Apply formatting to a cell range (background color, font, alignment, number format). | spreadsheet_id, sheet, range, bold?, italic?, strikethrough?, font_size?, font_color?, background_color?, horizontal_alignment?, vertical_alignment?, number_format_type?, number_format_pattern? |
update_borders |
Apply or clear borders on the edges of a cell range. | spreadsheet_id, sheet, range, top?, bottom?, left?, right?, inner_horizontal?, inner_vertical? |
add_data_validation |
Set a data validation rule on a cell range — dropdown lists, checkboxes, or date/number/text constraints. | spreadsheet_id, sheet, range, condition_type, values?, input_message?, strict?, show_custom_ui? |
get_data_validation |
Read existing data validation rules for a cell range. | spreadsheet_id, sheet, range |
merge_cells |
Merge a range of cells into one cell. | spreadsheet_id, sheet, range, merge_type? |
unmerge_cells |
Unmerge all merged cells in a range. | spreadsheet_id, sheet, range |
freeze |
Freeze rows and/or columns in a sheet. | spreadsheet_id, sheet, rows?, columns? |
update_sheet_properties |
Update sheet-level display properties: tab color, gridline visibility, right-to-left layout. | spreadsheet_id, sheet, tab_color?, show_gridlines?, right_to_left? |
sort_range |
Sort a range by one or more columns. | spreadsheet_id, sheet, range, sort_order? |
add_chart |
Add a chart to a Google Spreadsheet. | spreadsheet_id, sheet, chart_type, data_range, title?, x_axis_label?, y_axis_label?, position_x?, position_y?, width?, height? |
add_chart supports types: COLUMN, BAR, LINE, AREA, PIE, SCATTER, COMBO, HISTOGRAM.
Spreadsheets (Drive-level)¶
| Tool | Description | Key parameters |
|---|---|---|
create_spreadsheet |
Create a new Google Spreadsheet. | title, folder_id? |
import_csv_to_sheet |
Create a new Google Spreadsheet populated from a local CSV file. | local_path, title, folder_id?, sheet_name? |
list_spreadsheets |
List all spreadsheets in the specified Google Drive folder. If no folder is specified, uses the configured default folder or lists from 'My Drive'. | folder_id? |
search_spreadsheets |
Search for spreadsheets in Google Drive by name or content. | query, max_results? |
create_spreadsheet cannot create files in a personal Drive when using service account auth — use OAuth or a Shared Drive.
Drive — files¶
| Tool | Description | Key parameters |
|---|---|---|
list_folders |
List all folders in the specified Google Drive folder. If no parent folder is specified, lists folders from 'My Drive' root. | parent_folder_id? |
list_drives |
List shared (Team) Drives accessible to the authenticated account. | query?, max_results? |
list_files |
List files in a Google Drive folder, optionally filtered by MIME type. | folder_id, mime_type?, max_results? |
search_files |
Search for files in Google Drive by name or content. | query, mime_type?, folder_id?, max_results? |
get_file_metadata |
Get metadata for any file or folder in Google Drive. | file_id |
create_folder |
Create a new folder in Google Drive. | name, parent_folder_id? |
create_shortcut |
Create a Drive shortcut pointing to an existing file. | target_file_id, folder_id?, name? |
copy_file |
Copy a file in Google Drive. | file_id, new_name?, folder_id? |
move_file |
Move a file or folder to a different folder in Google Drive. | file_id, destination_folder_id |
rename_file |
Rename a file or folder in Google Drive. | file_id, new_name |
star_file |
Mark a file or folder as starred in Google Drive, for easy retrieval later. | file_id |
unstar_file |
Remove a file or folder's starred marker in Google Drive. | file_id |
list_shared_with_me |
List files explicitly shared with the authenticated user. | mime_type?, max_results? |
list_recent_files |
List recently modified files in Drive, newest first. | max_results?, days?, mime_type? |
get_storage_quota |
Get Drive storage usage and limits for the authenticated account. | — |
delete_file |
Move a file to the trash or permanently delete it. | file_id, permanent? |
restore_file |
Restore a trashed file or folder back to its original location — undoes delete_file when it was called without permanent=True. Raises an API error (does not silently no-op) if the file was permanently deleted or otherwise no longer exists — permanent deletion can't be recovered from. |
file_id |
empty_trash |
Permanently delete every trashed file in a single trash. This cannot be undone — unlike delete_file's default (recoverable) trash behavior, there is no restoring a file after this. |
drive_id? |
Drive — transfer¶
| Tool | Description | Key parameters |
|---|---|---|
export_file |
Export or download a file from Google Drive. | file_id, export_format |
list_revisions |
List available revisions for a Google Drive file (Sheets, Docs, or any file). | file_id |
export_revision |
Export a historical revision of a Google Sheets file and return its cell data. | file_id, revision_id, range?, sheet? |
upload_file |
Upload a text file to Google Drive, optionally converting it to a Google Doc. | name, content, source_format?, folder_id?, convert_to_doc? |
upload_local_file |
Upload a file from the local filesystem to a Google Drive folder. Handles binary and text files (images, PDFs, DOCX, XLSX, scripts, etc.). | local_path, parent_folder_id, name?, skip_if_exists?, convert? |
upload_local_folder |
Upload all files in a local directory (non-recursive) to a Google Drive folder. | local_path, parent_folder_id, skip_if_exists?, skip_system_files?, convert? |
download_file |
Download a file from Google Drive to the local filesystem. | file_id, local_path, export_format? |
download_folder |
Download all files in a Google Drive folder (non-recursive) to a local directory. | folder_id, local_path, export_format?, mime_type_filter?, skip_if_exists? |
sync_folder |
Sync files between a Google Drive folder and a local directory. | folder_id, local_path, direction?, export_format?, convert_markdown?, use_checksum?, skip_system_files?, dry_run?, recursive?, result_local_path? |
Drive — sharing¶
| Tool | Description | Key parameters |
|---|---|---|
share_spreadsheet |
Share a Google Spreadsheet with multiple users via email, assigning specific roles. | spreadsheet_id, recipients, send_notification? |
list_permissions |
List all permissions on a file or folder in Google Drive. | file_id |
update_permission |
Change the role on an existing permission for a file or folder. | file_id, permission_id, role |
remove_permission |
Revoke a permission on a file or folder. | file_id, permission_id |
transfer_ownership |
Transfer ownership of a file or folder to another user. | file_id, new_owner_email, send_notification? |
share_file |
Share any file or folder with one or more principals. | file_id, permissions, send_notification? |
share_spreadsheet's recipients is a list of {email_address, role} objects. Valid roles: reader, commenter, writer, owner.
share_file's permissions is a list of {type, role, ...} objects — type is user, group, domain, or anyone; user/group also need email_address, domain needs domain. Valid roles: reader, commenter, writer.
Drive — activity¶
| Tool | Description | Key parameters |
|---|---|---|
list_file_activity |
Return the activity timeline for a Google Drive file. | file_id, page_size?, page_token? |
Requires the drive.activity.readonly scope; uses the Drive Activity API v2.
Docs¶
| Tool | Description | Key parameters |
|---|---|---|
create_doc |
Create a new Google Doc, optionally with initial content. | title, content?, folder_id?, content_format?, autolink_urls?, revoke_sharing?, auto_downscale? |
create_doc_from_file |
Create a Google Doc from a local .md or .html file. | local_path, title?, folder_id?, autolink_urls?, revoke_sharing?, auto_downscale? |
get_doc_content |
Get the plain text content of a Google Doc. | file_id, local_path? |
write_doc_content |
Replace the full content of an existing Google Doc. | doc_id, content, content_format?, autolink_urls?, revoke_sharing?, auto_downscale? |
update_doc_from_file |
Replace an existing Google Doc's content in place from a local .md or .html file. | doc_id, local_path, content_format?, autolink_urls?, revoke_sharing?, auto_downscale? |
get_doc_structure |
Return the full structural map of a Google Doc body with element indices. | doc_id |
find_in_doc |
Search a Google Doc's text and return match locations as document character offsets. | doc_id, query, regex?, case_sensitive?, max_results?, local_path? |
insert_doc_text |
Insert text at one or more positions in a Google Doc. | doc_id, insertions |
delete_doc_range |
Delete one or more content ranges from a Google Doc. | doc_id, deletions |
insert_page_break |
Insert an explicit page break at a specific index in a Google Doc. | doc_id, index |
insert_softbreak_paragraph |
Insert a single paragraph built from multiple lines joined by soft line breaks (Shift+Enter in the Docs UI), with the paragraph's style set explicitly rather than inherited from whatever is at index. |
doc_id, index, lines, named_style_type? |
insert_inline_image |
Insert an inline image at a specific index in a Google Doc. | doc_id, index, uri?, drive_file_id?, width?, height?, auto_downscale? |
insert_local_images |
Upload local image files to Drive and swap each into a Google Doc at a plain-text marker, in one call. | doc_id, images, folder_id?, revoke_sharing?, auto_downscale? |
insert_doc_table |
Insert an empty table at a specific position in a Google Doc. | doc_id, index, rows, columns |
insert_table_row |
Insert a row into an existing table in a Google Doc. | doc_id, table_start_index, row_index, insert_below? |
delete_table_row |
Delete a row from an existing table in a Google Doc. | doc_id, table_start_index, row_index |
insert_table_column |
Insert a column into an existing table in a Google Doc. | doc_id, table_start_index, column_index, insert_right? |
merge_table_cells |
Merge a rectangular range of cells in an existing table into one cell. | doc_id, table_start_index, row_index, column_index, row_span?, column_span? |
delete_table_column |
Delete a column from an existing table in a Google Doc. | doc_id, table_start_index, column_index |
style_doc_range |
Apply paragraph and/or text styles to one or more index ranges in a Google Doc. | doc_id, ranges |
style_doc_table_cells |
Apply border, padding, and background styles to table cells in a Google Doc. | doc_id, table_start_index, cells |
create_paragraph_bullets |
Turn one or more paragraph ranges into a bulleted or numbered list, with explicit nesting depth. | doc_id, ranges |
delete_paragraph_bullets |
Remove list membership (bullets/numbering) from one or more paragraph ranges, leaving each paragraph's text and other styling untouched. | doc_id, ranges |
get_doc_theme |
Derive a theme dict from a Google Doc's actual paragraph styles. | doc_id |
get_doc_named_styles |
Read a Google Doc's named style defaults and return them as a theme dict. | doc_id |
apply_theme |
Apply a theme dict to a Google Doc by updating its named style definitions. | doc_id, theme, overwrite? |
create_header |
Add a page header to a Google Doc. | doc_id, header_type?, content? |
create_footer |
Add a page footer to a Google Doc. | doc_id, footer_type?, content? |
list_doc_comments |
List comments (and their replies) on a Google Doc via the Drive comments resource. | doc_id, page_size?, page_token?, include_deleted? |
add_doc_comment |
Add a comment to a Google Doc via the Drive comments resource. | doc_id, content, quoted_text? |
resolve_doc_comment |
Mark a comment on a Google Doc as resolved, by posting a reply with a "resolve" action via the Drive comments resource. | doc_id, comment_id, reply_content? |
create_named_range |
Create a named range over a span of content in a Google Doc. | doc_id, name, start_index, end_index |
create_bookmark |
Create a lightweight, named anchor point at a single position in a Google Doc. | doc_id, name, index |
get_doc_as_markdown |
Export a Google Doc's content as GitHub-flavored Markdown. | doc_id, include_comments?, local_path? |
write_doc_content and create_doc accept either HTML or Markdown (content_format='markdown') and convert it to Docs API requests via the HTML→AST→emitter pipeline — Markdown is converted to HTML first. See Docs AST Pipeline for the design and Markdown Support for the full Markdown→Docs mapping table.
create_doc cannot create files in a personal Drive when using service account auth — see Authentication.
Calendar¶
| Tool | Description | Key parameters |
|---|---|---|
list_calendars |
List all calendars accessible to the authenticated user. | — |
get_calendar |
Fetch metadata for a single calendar. | calendar_id |
create_calendar |
Create a new secondary calendar owned by the authenticated user. | summary, description?, timezone? |
update_calendar |
Update fields on an existing calendar using patch semantics. Only the fields you provide are changed; omitted fields are left as-is. | calendar_id, summary?, description?, timezone?, color_id? |
delete_calendar |
Permanently delete a calendar. For calendars you own, this deletes the calendar entirely for all users it is shared with — use with caution. To only stop seeing a calendar in your own list, use remove_calendar_from_list instead. | calendar_id |
add_calendar_to_list |
Subscribe the authenticated user (or service account) to a calendar, adding it to their calendar list so it appears in list_calendars. | calendar_id, color_id? |
remove_calendar_from_list |
Unsubscribe from a calendar, removing it from the authenticated user's calendar list. The calendar itself is not deleted and is unaffected for any other user it's shared with — use delete_calendar to permanently delete a calendar you own. | calendar_id |
list_calendar_acl |
List the access control rules (sharing entries) on a calendar. | calendar_id |
add_calendar_acl |
Grant access to a calendar by adding an access control rule. | calendar_id, role, scope_type?, scope_value?, send_notifications? |
remove_calendar_acl |
Revoke an access control rule from a calendar. | calendar_id, rule_id |
list_events |
List events in a calendar. | calendar_id, time_min?, time_max?, query?, max_results?, expand_recurring? |
get_event |
Fetch a single event by calendar ID and event ID. | calendar_id, event_id |
create_event |
Create a new event in a calendar. | calendar_id, summary, start, end, description?, location?, attendees?, timezone?, recurrence? |
update_event |
Update fields on an existing event using a partial update (patch semantics). Only the fields you provide are changed; omitted fields are left as-is. | calendar_id, event_id, summary?, start?, end?, description?, location?, attendees?, timezone?, recurrence? |
delete_event |
Delete or cancel an event. | calendar_id, event_id |
find_free_slots |
Query busy times for a list of calendars and return free slots within the window. | calendar_ids, time_min, time_max, timezone? |
list_all_events |
List events across multiple calendars in one call, fanning out to each calendar in parallel instead of requiring one list_events call per calendar. | time_min?, time_max?, query?, calendar_ids?, max_results_per_calendar?, expand_recurring?, group_by_calendar? |
Note: when using service account auth, calendars must be explicitly shared with the service account. The service account must also subscribe to shared calendars via calendarList().insert() before they appear in list_calendars.
Cache¶
| Tool | Description | Key parameters |
|---|---|---|
get_cache_ttl |
Read the cache TTL currently in effect for this running process. | — |
set_cache_ttl |
Change the cache time-to-live at runtime, without restarting the server. | ttl_seconds |
refresh_cache |
Invalidate caches, forcing a fresh fetch on next use. | spreadsheet_id?, doc_id?, folder_id?, calendar_id? |
Omit all parameters to flush the entire cache. See Configuration for TTL and path settings.
MCP resources¶
Two resources are available (read-only, not tools):
| Resource | Description |
|---|---|
server://auth-status |
Active auth method and Drive capability limits |
spreadsheet://{spreadsheet_id}/info |
Sheet list and grid properties for a spreadsheet |