
MCP Gee Sweet
MCP server for Google Workspace — Sheets, Drive, Docs (HTML or Markdown), Calendar, and Gmail.
Connector by khuisman · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/khuisman-mcp-gee-sweet
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 44 read · 4 write · 89 delete · 2 not yet classified
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 139
Read from the source code; the running server may list different tools.
Read 44 · Look things up without changing anything.
download_filedownload_folderexport_filefind_free_slotsfind_in_docfind_in_spreadsheetget_cache_ttlget_calendarget_data_validationget_doc_as_markdownget_doc_contentget_doc_named_styles
Show 32 more tools
get_doc_structureget_doc_themeget_eventget_file_metadataget_messageget_multiple_sheet_dataget_multiple_spreadsheet_summaryget_sheet_dataget_sheet_formulasget_storage_quotaget_threadlist_all_eventslist_calendar_acllist_calendarslist_doc_commentslist_driveslist_eventslist_file_activitylist_fileslist_folderslist_labelslist_messageslist_permissionslist_recent_fileslist_revisionslist_shared_with_melist_sheetslist_spreadsheetslist_threadsrefresh_cachesearch_filessearch_spreadsheets
Write 4 · Create, change, send or run things.
export_revisionset_cache_ttlstar_fileupdate_sheet_properties
Delete 89 · Delete, drop, revoke or wipe things.
add_calendar_acladd_calendar_to_listadd_chartadd_columnsadd_data_validationadd_doc_commentadd_rowsapply_themebatch_updatebatch_update_cellsclear_data_validationclear_values
Show 77 more tools
copy_filecopy_sheetcreate_bookmarkcreate_calendarcreate_doccreate_doc_from_filecreate_draftcreate_eventcreate_foldercreate_footercreate_headercreate_named_rangecreate_paragraph_bulletscreate_sheetcreate_shortcutcreate_spreadsheetdelete_calendardelete_columnsdelete_doc_rangedelete_eventdelete_filedelete_paragraph_bulletsdelete_rowsdelete_sheetdelete_table_columndelete_table_rowduplicate_sheetempty_trashformat_cellshide_columnshide_rowsimport_csv_to_sheetinsert_doc_tableinsert_doc_textinsert_inline_imageinsert_local_imagesinsert_page_breakinsert_softbreak_paragraphinsert_table_columninsert_table_rowmerge_cellsmerge_table_cellsmodify_labelsmove_fileremove_calendar_aclremove_calendar_from_listremove_permissionrename_filerename_sheetreply_to_messageresize_columnsresize_rowsresolve_doc_commentrestore_filesend_draftsend_messageshare_fileshare_spreadsheetstyle_doc_rangestyle_doc_table_cellssync_foldertransfer_ownershiptrash_messageunhide_columnsunhide_rowsunmerge_cellsunstar_fileupdate_bordersupdate_calendarupdate_cellsupdate_doc_from_fileupdate_eventupdate_permissionupload_fileupload_local_fileupload_local_folderwrite_doc_content
Not yet classified 2 · We could not tell from the name and description.
freezesort_range
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
AUTH_METHODCREDENTIALS_CONFIG
Other settings (environment variables or headers).
CREDENTIALS_PATHENABLED_TOOLSSERVICE_ACCOUNT_PATHTOKEN_PATH
Network hosts it talks to 9
developers.google.com· found in codedocs.google.com· found in codegithub.com· found in codegoogleapis.com· found in codegstatic.com· found in codekhuisman.github.io· found in codemail.google.com· found in codeoauth2.googleapis.com· found in coderaw.githubusercontent.com· found in code
Files it touches
/tmp/mcp_gee_sweet.db- Your home directory (~)
- Any path the agent passes to its tools
Tools (139)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_calendar_aclAdd Calendar ACLcan change or delete dataGrant access to a calendar by adding an access control rule. Args: calendar_id: The calendar ID, or 'primary'. role: Access role to grant. One of: 'reader', 'writer', 'owner', 'freeBusyReader'. scope_type: Who the rule applies to. One of: 'user', 'group', 'domain', 'default' ('default' grants public access to all users and must not have a scope_value). scope_value: Email address (for 'user'/'group') or domain name (for 'domain'). Required unless scope_type is 'default', in which case it must be omitted. send…
add_calendar_to_listAdd Calendar To Listcan change or delete dataSubscribe the authenticated user (or service account) to a calendar, adding it to their calendar list so it appears in list_calendars. This does not create or share a calendar — it only adds an existing, already-accessible calendar to your own list. For service accounts, this is the required step before a calendar shared with the service account's email will show up in list_calendars. Args: calendar_id: The calendar ID to subscribe to (e.g. the owner's email for a personal calendar, or a `...@group.calendar.google.com` ID). color_id: Optional color ID from the palett…
add_chartAdd Chartcan change or delete dataAdd a chart to a Google Spreadsheet. Creates a chart from the specified data range with customizable type, title, and positioning. The chart is added as a floating element on the sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet containing the data chart_type: Type of chart to create. Supported types: - COLUMN: Vertical bar chart - BAR: Horizontal bar chart - LINE: Line chart - AREA: Area chart - PIE: Pie chart - SCATTER: Scatter plot …
add_columnsAdd Columnscan change or delete dataAdd columns to a sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of columns to add start_column: 0-based column index to start adding. If not provided, adds at the beginning. Returns: Result of the operation. Returns {"error": ...} without calling the Sheets API if start_column is negative or count isn't positive.
add_data_validationAdd Data Validationcan change or delete dataadd_doc_commentAdd Document Commentcan change or delete dataAdd a comment to a Google Doc via the Drive comments resource. Args: doc_id: The Google Doc file ID. content: The comment text. quoted_text: Optional text from the document to anchor the comment to, shown as the quoted range the comment refers to. Returns: Dictionary with id, content, author (display_name, email_address), created_time, and quoted_text (echoing the anchor, if one was set).
add_rowsAdd Rowscan change or delete dataAdd rows to a sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of rows to add start_row: 0-based row index to start adding. If not provided, adds at the beginning. Returns: Result of the operation. Returns {"error": ...} without calling the Sheets API if start_row is negative or count isn't positive.
apply_themeApply Document Themecan change or delete dataApply a theme dict to a Google Doc by updating its named style definitions. By default (overwrite=False), theme entries are applied as document-level named style defaults via updateNamedStyle. Paragraphs that have explicit individual style overrides are unaffected — their styles take precedence over the named style defaults. This preserves intentional per-paragraph variations (e.g. a section deliberately styled in a different colour). For AI-generated docs where all content uses explicit paragraph/run styles, the default mode updates the named style definitions but does not visually change e…
batch_updateBatch Updatecan change or delete dataExecute 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. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) requests: A list of request objects. Each request object can contain any valid batchUpdate operation. Common operations include: - addSheet: Add a new sheet - updateSheetProperties: Update sheet properties (title, grid properties, etc.) -…
batch_update_cellsBatch Update Cellscan change or delete dataBatch update multiple ranges in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet ranges: Dictionary mapping range strings to 2D arrays of values e.g., {'A1:B2': [[1, 2], [3, 4]], 'D1:E2': [['a', 'b'], ['c', 'd']]} Returns: Result of the batch update operation
clear_data_validationClear Data Validationcan change or delete dataClear any data validation rule from a cell range. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to clear (e.g. "A2:A100") Returns: Result of the batchUpdate operation.
clear_valuesClear Valuescan change or delete dataClear cell content in a range without touching formatting. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: A1 notation range to clear (e.g., 'A1:D10'). If omitted, clears the entire sheet. Returns: Result of the clear operation
copy_fileCopy Filecan change or delete dataCopy a file in Google Drive. Args: file_id: The ID of the file to copy. new_name: Name for the copy. Defaults to 'Copy of <original name>'. folder_id: Destination folder ID. Defaults to the same folder as the original. Returns: fileId, name, mimeType, parent, and webViewLink of the new copy. Note: Requires OAuth or ADC auth. Service accounts cannot copy files into personal Drive (no storage quota). Works on Shared Drives regardless of auth method. Check server://auth-status for your current auth method.
copy_sheetCopy Sheetcan change or delete dataCopy a sheet from one spreadsheet to another. Args: src_spreadsheet: Source spreadsheet ID src_sheet: Source sheet name dst_spreadsheet: Destination spreadsheet ID dst_sheet: Destination sheet name Returns: Result of the operation
create_bookmarkCreate Bookmarkcan change or delete dataCreate a lightweight, named anchor point at a single position in a Google Doc. The Docs API has no dedicated bookmark-creation endpoint (Docs UI bookmarks can only be inserted by hand). This is a convenience wrapper around create_named_range that spans the single character at `index`, giving you a named position you can look up later without hardcoding raw indices — the range's bounds shift automatically as the API tracks surrounding edits. Use get_doc_structure to find a suitable index. Args: doc_id: The Google Doc file ID. name: Name for the bookmark. Not required to be unique; 1-…
Show 124 more tools
create_calendarCreate Calendarcan change or delete dataCreate a new secondary calendar owned by the authenticated user. Args: summary: Calendar title. description: Optional calendar description. timezone: IANA timezone name (e.g. 'America/Los_Angeles'). Defaults to the account's timezone if omitted. Returns: Created calendar: id, summary, description, time_zone.
create_docCreate Documentcan change or delete dataCreate a new Google Doc, optionally with initial content. Content is interpreted as HTML by default. Pass content_format='markdown' to supply Markdown instead (headings, bold, italic, lists, links, tables, fenced code blocks, task list items, and images are all supported). Each table is inserted where it appears in the content. A table nested inside a table cell needs HTML content; Markdown has no syntax for one. Images: a markdown "" (or an HTML <img src=...>) is embedded inline. `src` may be a local filesystem path (uploaded to Drive automatically), a "drive:<file_id>" reference…
create_doc_from_fileCreate Document from Filecan change or delete dataCreate a Google Doc from a local .md or .html file. Not available when the server runs with LOCAL_FILE_ACCESS=off. The file format is inferred from the extension: .md files are parsed as Markdown, .html / .htm files as HTML. The document title defaults to the filename without extension if not supplied. Images referenced from the file (markdown "" or HTML <img src=...>) are embedded inline the same way create_doc's own content_format='markdown' path handles them — see that tool's docstring for the src conventions, the revoke_sharing tradeoff, and the auto_downscale size-limit behav…
create_draftCreate Draftcan change or delete dataCreate a draft email without sending it. Args: to: Recipient email address, or a list of addresses. subject: Email subject line. body: Plain-text body. cc: Optional CC address or list of addresses. bcc: Optional BCC address or list of addresses. body_html: Optional HTML body (sent alongside the plain-text body). attachments: Optional list of attachment dicts. Each needs either local_path or content_base64, plus optional filename and mime_type (guessed from the filename's extension when omitted, else application/oct…
create_eventCreate Eventcan change or delete dataCreate a new event in a calendar. Args: calendar_id: The calendar ID, or 'primary'. summary: Event title. start: Start datetime in RFC 3339 format, e.g. '2026-06-01T10:00:00-07:00'. Use 'YYYY-MM-DD' for all-day events. end: End datetime in RFC 3339 format. Use 'YYYY-MM-DD' for all-day events. description: Optional event description. location: Optional location string. attendees: Optional list of attendee email addresses. timezone: IANA timezone name (e.g. 'America/Los_Angeles'). Required when start/end are date-only (all-day events) or …
create_folderCreate Foldercan change or delete dataCreate a new folder in Google Drive. Args: name: The name of the new folder parent_folder_id: Optional parent folder ID. If not provided, creates in the configured default folder or the root of My Drive. Returns: Information about the newly created folder including its ID
create_footerCreate Document Footercan change or delete dataAdd a page footer to a Google Doc. Creates a footer section and optionally inserts plain text content into it. For rich formatting, use insert_doc_text with the returned footerId as segmentId after calling this tool. Args: doc_id: The Google Doc file ID. footer_type: "DEFAULT" (all pages, default) or "FIRST_PAGE_FOOTER" (applies only to the first page — requires useFirstPageHeaderFooter to be set on the document section, which the Docs UI handles automatically). content: Optional plain text content to insert into the footer. Returns: Confirmation with docId a…
create_headerCreate Document Headercan change or delete dataAdd a page header to a Google Doc. Creates a header section and optionally inserts plain text content into it. For rich formatting, use insert_doc_text with the returned headerId as segmentId after calling this tool. Args: doc_id: The Google Doc file ID. header_type: "DEFAULT" (all pages, default) or "FIRST_PAGE_HEADER" (applies only to the first page — requires useFirstPageHeaderFooter to be set on the document section, which the Docs UI handles automatically). content: Optional plain text content to insert into the header. Returns: Confirmation with docId a…
create_named_rangeCreate Named Rangecan change or delete dataCreate a named range over a span of content in a Google Doc. A named range lets you reference a section of the document by name later (e.g. with ReplaceNamedRangeContentRequest via batch_update) without tracking raw indices yourself — the Docs API automatically shifts the range's bounds as content is inserted or deleted elsewhere in the doc. Use get_doc_structure to find start/end indices for the target span. Args: doc_id: The Google Doc file ID. name: Name for the range. Not required to be unique; 1-256 UTF-16 code units. start_index: Start of the range (inclusive). end_ind…
create_paragraph_bulletsCreate Paragraph Bulletscan change or delete dataTurn one or more paragraph ranges into a bulleted or numbered list, with explicit nesting depth. Wraps the Docs API's createParagraphBullets/deleteParagraphBullets requests, working around two confirmed-live API quirks: - createParagraphBullets is a no-op on a paragraph that's already part of a list — it neither changes the existing nesting level nor consumes any leading tab characters meant to signal a new one (they're left behind as literal text). Every paragraph this tool touches is deleteParagraphBullets'd first (harmless even if it wasn't previously a list item) so createParag…
create_sheetCreate Sheetcan change or delete dataCreate a new sheet tab in an existing Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet title: The title for the new sheet Returns: Information about the newly created sheet
create_shortcutCreate Shortcutcan change or delete dataCreate a Drive shortcut pointing to an existing file. Args: target_file_id: The ID of the file the shortcut should point to. folder_id: Destination folder ID for the shortcut. If not provided, uses the configured default folder or creates in root. name: Name for the shortcut. Defaults to the target file's own name. Returns: shortcutId, name, parent, targetId, and targetMimeType of the new shortcut.
create_spreadsheetCreate Spreadsheetcan change or delete dataCreate a new Google Spreadsheet. Args: title: The title of the new spreadsheet folder_id: Optional Google Drive folder ID where the spreadsheet should be created. If not provided, uses the configured default folder or creates in root. Returns: Information about the newly created spreadsheet including its ID Note: Requires OAuth or ADC auth. Service accounts cannot create files in personal Drive (no storage quota). Works on Shared Drives regardless of auth method. Check server://auth-status for your current auth method.
delete_calendarDelete Calendarcan change or delete dataPermanently 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. Args: calendar_id: The calendar ID to delete. Returns: Confirmation with calendar_id and action 'deleted'.
delete_columnsDelete Columnscan change or delete dataDelete columns from a sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_column: 0-based index of the first column to delete (0 = column A) end_column: 0-based index of the last column to delete (inclusive). If omitted, deletes only start_column. Returns: Result of the operation. Returns {"error": ...} without calling the Sheets API if start_column is negative or end_column precedes start_column.
delete_doc_rangeDelete Document Rangecan change or delete dataDelete one or more content ranges from a Google Doc. All indices are interpreted as positions in the document before any of the deletions in this call. Deletions are applied high-index-first so earlier indices are not shifted by later ones. Use get_doc_structure to obtain the correct start/end indices. Args: doc_id: The Google Doc file ID. deletions: List of {"start_index": int, "end_index": int}. The range [start_index, end_index) is deleted (end_index is exclusive). Do not include the document's final newline (last endIndex - 1). Returns: Confirmation with doc…
delete_eventDelete Eventcan change or delete dataDelete or cancel an event. Args: calendar_id: The calendar ID, or 'primary'. event_id: The event ID to delete. Returns: Confirmation with calendar_id, event_id, and action 'deleted'.
delete_fileTrash or Delete Filecan change or delete dataMove a file to the trash or permanently delete it. Args: file_id: The ID of the file or folder to remove. permanent: If False (default), moves to trash (recoverable). If True, permanently deletes — this cannot be undone. Raises ValueError, without deleting anything, if the caller can't permanently delete the file (e.g. a Content manager on a Shared Drive, who can only trash). Returns: Confirmation with fileId and action taken ('trashed' or 'deleted').
delete_paragraph_bulletsDelete Paragraph Bulletscan change or delete dataRemove list membership (bullets/numbering) from one or more paragraph ranges, leaving each paragraph's text and other styling untouched. Args: doc_id: The Google Doc file ID. ranges: List of range dicts, each with start_index and end_index (from get_doc_structure). Returns: Confirmation with docId and count of batchUpdate requests sent.
delete_rowsDelete Rowscan change or delete dataDelete rows from a sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_row: 0-based index of the first row to delete end_row: 0-based index of the last row to delete (inclusive). If omitted, deletes only start_row. Returns: Result of the operation. Returns {"error": ...} without calling the Sheets API if start_row is negative or end_row precedes start_row.
delete_sheetDelete Sheetcan change or delete dataDelete a sheet tab from a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet to delete Returns: Result of the operation
delete_table_columnDelete Table Columncan change or delete dataDelete a column from an existing table in a Google Doc. Use get_doc_structure to find the table's startIndex and the column_index to delete. Args: doc_id: The Google Doc file ID. table_start_index: The startIndex of the table (from get_doc_structure). column_index: Zero-based index of the column to delete. Returns: Confirmation with docId, table_start_index, and deleted column_index.
delete_table_rowDelete Table Rowcan change or delete dataDelete a row from an existing table in a Google Doc. Use get_doc_structure to find the table's startIndex and the row_index to delete. Args: doc_id: The Google Doc file ID. table_start_index: The startIndex of the table (from get_doc_structure). row_index: Zero-based index of the row to delete. Returns: Confirmation with docId, table_start_index, and deleted row_index.
download_fileDownload Fileread-onlyDownload a file from Google Drive to the local filesystem. Not available when the server runs with LOCAL_FILE_ACCESS=off. For non-Google files the raw content is downloaded. For Google Workspace files (Docs, Sheets, Slides) an export_format is required to convert the file before download. If local_path is a directory, the file is saved inside it using the Drive filename (with an extension appended for exported Workspace files). A local_path ending in a path separator (or in '/.' or '/..') is always treated as a directory target, and is created (mkdir -p) if it doesn't exist yet. Directories …
download_folderDownload Folderread-onlyDownload all files in a Google Drive folder (non-recursive) to a local directory. Not available when the server runs with LOCAL_FILE_ACCESS=off. For non-Google files the raw content is downloaded. Google Workspace files are skipped unless export_format is provided, in which case they are exported to that format. Subfolders are always skipped, regardless of export_format — this tool never descends into them. A file whose Drive name isn't a single ordinary filename (it contains '/' or '\', is '.' or '..', etc.) is listed under 'failed' and not downloaded. Files transfer concurrently rather tha…
duplicate_sheetDuplicate Sheetcan change or delete dataDuplicate a sheet tab within the same spreadsheet. Distinct from copy_sheet, which copies a sheet across spreadsheets. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet to duplicate new_name: Optional title for the new sheet. Defaults to Google's auto-generated name (e.g. "Copy of Sheet1") if omitted. insert_index: Optional 0-based tab position for the new sheet. Defaults to immediately after the source sheet if omitted. Returns: Information about the newly created sheet
empty_trashEmpty Trashcan change or delete dataPermanently 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. Args: drive_id: If omitted (default), empties the caller's own My Drive trash only. If set to a Shared Drive's ID (see `list_drives`), empties that Shared Drive's trash instead. A single call only ever targets one trash — to empty several Shared Drives' trash, call this once per `drive_id`. Returns: Confirmation that the trash was emptied, echoing which drive (drive_id…
export_fileExport Fileread-onlyExport or download a file from Google Drive. **Prefer `download_file` when saving to disk** — this tool returns raw base64-encoded bytes for binary formats (xlsx, pdf, docx, etc.) that require manual decoding. Use `export_file` only when you need the file content in-memory. For Google Workspace files (Docs, Sheets, Slides) the file is converted to the requested format. For non-Google files the raw content is downloaded. Supported export_format values: All Google types: 'pdf', 'html' Google Docs: 'txt', 'docx', 'odt', 'rtf', 'epub' Google Sheets: 'csv', 'xlsx', 'ods' Googl…
export_revisionExport RevisionExport a historical revision of a Google Sheets file (cell data) or a Google Doc (Markdown). Use list_revisions to find the revision_id. Google Sheets: downloads the revision as XLSX and returns the values for the requested sheet and range. Typical recovery workflow: 1. list_revisions → find the revision ID from the timestamp before data was lost 2. export_revision → read the affected range from that revision 3. batch_update_cells → write the recovered values back to the current sheet Each call downloads the full file, so a large spreadsheet may be slow. Google Docs: returns the revisi…
find_free_slotsFind Free Slotsread-onlyQuery busy times for a list of calendars and return free slots within the window. Args: calendar_ids: List of calendar IDs to check (use 'primary' for the user's primary calendar). time_min: Start of the window to check, RFC 3339 format, e.g. '2026-06-01T09:00:00Z'. time_max: End of the window to check, RFC 3339 format. timezone: IANA timezone name for the query (default 'UTC'). Returns: busy: dict mapping each calendar_id to its list of busy periods ({start, end} each in RFC 3339). A calendar the freebusy API couldn't r…
find_in_docFind in Documentread-onlySearch a Google Doc's text and return match locations as document character offsets. Matches feed directly into style_doc_range's ranges — e.g. to link up bare URLs already sitting in a doc: find_in_doc(doc_id, query=r'https?://[^\s<>"]+(?<![.,;:!?)])', regex=True), then style_doc_range with link_url per match. The trailing negative lookbehind keeps a URL followed by sentence punctuation (or an unmatched closing paren) from swallowing it into the link. Args: doc_id: The Google Doc file ID. query: Text to search for. Interpreted literally by default; pass regex=True to treat i…
find_in_spreadsheetFind Cellsread-onlyFind cells containing a specific value in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) query: The text to search for in cell values sheet: Optional sheet name to search in. If not provided, searches all sheets. case_sensitive: Whether the search should be case-sensitive (default False) max_results: Maximum number of results to return (default 50) local_path: Optional local filesystem path (file or directory) to write the result to instead of returning it inline. Bypasses the response-size cap. A path ending in…
format_cellsFormat Cellscan change or delete dataApply formatting to a cell range (background color, font, alignment, number format). Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to format (e.g. "A1:D5") bold: Set bold text italic: Set italic text strikethrough: Set strikethrough font_size: Font size in points font_color: RGB color dict, e.g. {"red": 1.0, "green": 0.0, "blue": 0.0} background_color: RGB color dict for cell background horizontal_alignment: "LEFT", "CENTER", or "RIGHT" vertical_alignment: "TOP", "MIDDLE", or "BOTTOM" numbe…
freezeFreeze Rows/ColumnsFreeze rows and/or columns in a sheet. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet rows: Number of rows to freeze (0 to unfreeze all rows) columns: Number of columns to freeze (0 to unfreeze all columns) Returns: Result of the batchUpdate operation
get_cache_ttlGet Cache TTLread-onlyRead the cache TTL currently in effect for this running process. Returns: {"ttl_seconds": <int>}. All five cache namespaces are always kept in sync by set_cache_ttl, so a single value represents all of them.
get_calendarGet Calendarread-onlyFetch metadata for a single calendar. Args: calendar_id: The calendar ID, or 'primary' for the user's primary calendar. Returns: Calendar metadata: id, summary, description, time_zone, access_role, primary.
get_data_validationGet Data Validationread-onlyRead existing data validation rules for a cell range. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to inspect (e.g. "A1:A100") Returns: List of {cell, rule} for every cell in the range that has a validation rule; cells without one are omitted. 'rule' matches the Sheets API's DataValidationRule shape: {condition: {type, values}, inputMessage, strict, showCustomUi}. Returns {"error": ...} if the sheet isn't found.
get_doc_as_markdownGet Document as Markdownread-onlyExport a Google Doc's content as GitHub-flavored Markdown. The inverse of create_doc/write_doc_content's content_format='markdown' path — walks the Docs API structure into this project's own AST and serializes it to Markdown, rather than converting Docs' own HTML export. Supports headings, bold/italic/strikethrough/links, nested bullet and numbered lists, task-list checkboxes, blockquotes, inline code and code blocks, images, and tables (including nested tables, best-effort — see Known limitations below). Args: doc_id: The Google Doc file ID. include_comments: When True, appends a "#…
get_doc_contentGet Document Contentread-onlyGet the plain text content of a Google Doc. Args: file_id: The Google Drive file ID of the document. local_path: Optional local filesystem path (file or directory) to write the result to instead of returning it inline. Bypasses the response-size cap. A path ending in '/' is a directory, created if missing. A file in place of a parent directory, or at a path ending in '/', raises ValueError; an existing file at a plain file path is replaced. Same caveat as download_file/download_folder: this path is resolved on the *server's* filesystem, …
get_doc_named_stylesGet Document Named StylesRead a Google Doc's named style defaults and return them as a theme dict. Named styles are set via Format > Paragraph styles > Update X to match in the Google Docs UI. They define the default appearance for each style type and are inherited by paragraphs that have no explicit overrides. Most docs leave named styles at Google's defaults even when paragraphs look custom — because humans usually format text directly without updating named styles. In that case this tool returns Google's defaults (Arial/Roboto etc.), which may not reflect the doc's actual appearance. Use get_doc_theme to read wha…
get_doc_structureGet Document Structureread-onlyReturn the full structural map of a Google Doc body with element indices. Every batchUpdate operation (insert, delete, style, table) requires knowing the startIndex and endIndex of the target element. This tool exposes those indices alongside paragraph styles, text run formatting, and table cell positions. Args: doc_id: The Google Doc file ID. Returns: Dictionary with docId, title, and an elements list. Each element has: - type: "paragraph" | "table" | "sectionBreak" | "tableOfContents" - startIndex, endIndex Paragraphs also include namedStyleType, text, headingId (Googl…
get_doc_themeGet Document ThemeDerive a theme dict from a Google Doc's actual paragraph styles. Scans the document body and reads the style of the first paragraph found for each named style type (NORMAL_TEXT, HEADING_1 through HEADING_6, TITLE, SUBTITLE). Text-level fields (font_family, font_size, bold, italic, color) come from the first non-empty text run in that paragraph; paragraph-level fields (line_spacing, space_above, space_below) come from the paragraph's paragraphStyle. Only named style types that appear in the body are included. Subsequent paragraphs of the same named style type that differ in style are ignored …
get_eventGet Eventread-onlyFetch a single event by calendar ID and event ID. Args: calendar_id: The calendar ID, or 'primary'. event_id: The event ID. Returns: Full event details: id, summary, start, end, location, description, organizer, attendees, recurrence, html_link, status, created, updated.
get_file_metadataGet File Metadataread-onlyGet metadata for any file or folder in Google Drive. Args: file_id: The Google Drive file or folder ID. Returns: id, name, mimeType, parents, createdTime, modifiedTime, size, owners, webViewLink, trashed status, starred status, and md5_checksum. md5_checksum (like size) is only present for binary files — Google Workspace files have no fixed byte content and the Drive API omits it for them. Compare it to a local file's md5 to detect real content drift instead of inferring change from modifiedTime alone; sync_folder(use_checksum=True) does that comparison itself…
get_messageGet Messageread-onlyFetch a single message by ID, including headers, body, and attachment metadata. Args: message_id: The Gmail message ID (from list_messages or get_thread). local_path: Optional local filesystem path (file or directory) to write the message JSON to instead of returning it inline. Bypasses the response-size cap, for messages with very large bodies. A path ending in '/' is a directory, created if missing. A file in place of a parent directory, or at a path ending in '/', raises ValueError; an existing file at …
get_multiple_sheet_dataGet Multiple Sheet Dataread-onlyGet data from multiple specific ranges in Google Spreadsheets. Queries fetch concurrently rather than one at a time. If the caller supplied a progressToken, a `notifications/progress` update is sent as each query finishes (#355). Args: queries: A list of dictionaries, each specifying a query. Each dictionary must have 'spreadsheet_id' and 'sheet' keys. 'range' is optional; omitting it returns the entire sheet. Example: [{'spreadsheet_id': 'abc', 'sheet': 'Sheet1', 'range': 'A1:B5'}, {'spreadsheet_id': 'xyz', 'sheet': 'Data'}] …
get_multiple_spreadsheet_summaryGet Multiple Spreadsheet Summaryread-onlyGet a summary of multiple Google Spreadsheets, including sheet names, headers, and the first few rows of data for each sheet. Spreadsheets summarize concurrently rather than one at a time. If the caller supplied a progressToken, a `notifications/progress` update is sent as each summary finishes (#355). Args: spreadsheet_ids: A list of spreadsheet IDs to summarize. rows_to_fetch: The number of rows (including header) to fetch for the summary (default: 5). local_path: Optional local filesystem path (file or directory) to write the result to instead of returning it inline. B…
get_sheet_dataGet Sheet Dataread-onlyGet data from a specific sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all data. With include_grid_data=True and no range, the used range is auto-detected (see below) rather than fetching the sheet's full padded grid. include_grid_data: If True, includes cell formatting and other metadata in the response. Note: Setting this to True will significantly increase the response size and token usage …
get_sheet_formulasGet Sheet Formulasread-onlyGet formulas from a specific sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all formulas from the sheet. Returns: A 2D array of the sheet formulas, or {"error": ...} if the range is rejected by the Sheets API (issue #757).
get_storage_quotaGet Storage Quotaread-onlyGet Drive storage usage and limits for the authenticated account. Returns: Storage quota with limit_bytes, usage_bytes, usage_in_drive_bytes, usage_in_trash_bytes, email, and display_name. All byte values are integers. limit_bytes is None if the key is absent, or 0 if the API returns "0" (typical for service accounts with no personal quota).
get_threadGet Threadread-onlyFetch all messages in a conversation thread. Args: thread_id: The Gmail thread ID (from list_threads or a message's thread_id). local_path: Optional local filesystem path (file or directory) to write the thread JSON to instead of returning it inline. Bypasses the response-size cap, for threads with very large bodies. A path ending in '/' is a directory, created if missing. A file in place of a parent directory, or at a path ending in '/', raises ValueError; an existing file at a plain file path is …
hide_columnsHide Columnscan change or delete dataHide columns in a sheet from view. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_column: 0-based index of the first column to hide (0 = column A) end_column: 0-based index of the last column to hide (inclusive). If omitted, hides only start_column. Returns: Result of the batchUpdate operation. Returns {"error": ...} without calling the Sheets API if start_column is negative or end_column precedes start_column.
hide_rowsHide Rowscan change or delete dataHide rows in a sheet from view. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_row: 0-based index of the first row to hide end_row: 0-based index of the last row to hide (inclusive). If omitted, hides only start_row. Returns: Result of the batchUpdate operation. Returns {"error": ...} without calling the Sheets API if start_row is negative or end_row precedes start_row.
import_csv_to_sheetImport CSV to Sheetcan change or delete dataCreate a new Google Spreadsheet populated from a local CSV file. Not available when the server runs with LOCAL_FILE_ACCESS=off. Reads the CSV, creates the spreadsheet, expands the sheet's grid to fit the data (avoiding the default 1000-row/26-column limit), and writes every row in one or more batched value updates. Row chunks write concurrently rather than one at a time (#183). If the caller supplied a progressToken, a `notifications/progress` update is sent as each chunk finishes (#355). Args: local_path: Absolute path to the local .csv file. title: Title for the new spreadsheet. …
insert_doc_tableInsert Document Tablecan change or delete dataInsert an empty table at a specific position in a Google Doc. The table is inserted at the given index. The document is re-fetched immediately to return the actual cell indices. Use those indices with insert_doc_text (targeting each cell's paragraphStartIndex) to fill cells, or with style_doc_table_cells to apply formatting. Also useful for form-style column alignment (labels/values lined up without a visible table) — a zero-padding table gives exact column positions where tabStops would otherwise be needed (tabStops itself is read-only, #404). See docs/design/borderless-table-columns.md for…
insert_doc_textInsert Document Textcan change or delete dataInsert text at one or more positions in a Google Doc. All indices are interpreted as positions in the document before any of the insertions in this call. Insertions are applied high-index-first so earlier indices are not shifted by later ones. Use get_doc_structure to obtain the correct target indices. Args: doc_id: The Google Doc file ID. insertions: List of insertion dicts. Required keys: index (int): document position to insert at. text (str): text to insert. "\n" creates a new paragraph. Optional keys: segment_id (str): segmentId of the header or fo…
insert_inline_imageInsert Inline Imagecan change or delete dataInsert an inline image at a specific index in a Google Doc. Provide either uri (a publicly accessible HTTPS image URL) or drive_file_id (a Drive file ID for an image stored in Drive). The image is inserted at the given document index. Use get_doc_structure to find a suitable insertion index. Args: doc_id: The Google Doc file ID. index: Document body index where the image should be inserted. uri: A publicly accessible image URI (HTTPS). Mutually exclusive with drive_file_id. drive_file_id: A Google Drive file ID for an image stored in Drive. The Docs backend fetches t…
insert_local_imagesInsert Local Images by Markercan change or delete dataUpload local image files to Drive and swap each into a Google Doc at a plain-text marker, in one call. Not available when the server runs with LOCAL_FILE_ACCESS=off. Typical flow: write doc content with a unique plain-text placeholder per image (e.g. "IMGMARKERONE") via create_doc/write_doc_content/insert_doc_text, then call this tool once with the marker → local file mapping. Collapses the N manual upload/find/insert/delete round trips a multi-image doc would otherwise need into a single call. For each image: uploads the local file to Drive, shares it as anyone-with-link/reader (required — …
insert_page_breakInsert Page Breakcan change or delete dataInsert an explicit page break at a specific index in a Google Doc. Use get_doc_structure to find a suitable insertion index. Args: doc_id: The Google Doc file ID. index: Document body index where the page break should be inserted. Returns: Confirmation with docId and the insertion index.
insert_softbreak_paragraphInsert Soft-Break Paragraphcan change or delete dataInsert 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`. Use this for metadata/header-style blocks that must render as one tight paragraph with no blank line between rows — e.g. a document header block: Document ID: KH-OPS-001 (bold) Category: AWS / Database Source: ... insert_doc_text with "\n" between lines creates separate paragraphs with a blank line between them instead. This also sidesteps delete_doc_range's paragraph-merge style-…
insert_table_columnInsert Table Columncan change or delete dataInsert a column into an existing table in a Google Doc. Use get_doc_structure to find the table's startIndex and the column_index to insert relative to. Args: doc_id: The Google Doc file ID. table_start_index: The startIndex of the table (from get_doc_structure). column_index: The column to insert relative to. insert_right: If True (default), insert to the right of the specified column. If False, insert to the left. Returns: Confirmation with docId, table_start_index, and the column_index used.
insert_table_rowInsert Table Rowcan change or delete dataInsert a row into an existing table in a Google Doc. Use get_doc_structure to find the table's startIndex and the row_index to insert relative to. Args: doc_id: The Google Doc file ID. table_start_index: The startIndex of the table (from get_doc_structure). row_index: The row to insert relative to. insert_below: If True (default), insert below the specified row. If False, insert above it. Returns: Confirmation with docId, table_start_index, and the row_index used.
list_all_eventsList All Eventsread-onlyList events across multiple calendars in one call, fanning out to each calendar in parallel instead of requiring one list_events call per calendar. At most LIST_ALL_EVENTS_MAX_CONCURRENCY (default 20) calendars are queried at once, shared across every concurrent list_all_events call on this server. Args: time_min: Lower bound (inclusive) for event start times, RFC 3339 format, e.g. '2026-01-01T00:00:00Z'. Defaults to the current UTC time. time_max: Upper bound (exclusive) for event end times, RFC 3339 format. query: Free-text search terms to find events matching summ…
list_calendar_aclList Calendar ACLread-onlyList the access control rules (sharing entries) on a calendar. Every page is fetched (250 rules each), up to a 100-page safety bound. Args: calendar_id: The calendar ID, or 'primary'. Returns: List of ACL rules, each with id, role, scope_type, and scope_value. If the first page fails, returns [{"error": ...}]. If a later page fails (or the page bound is hit), returns the rules already fetched followed by one final {"error": ..., "partial": True} entry, so a truncated list is never mistaken for a complete one. Raises ValueError if the response exceeds the safety ca…
list_calendarsList Calendarsread-onlyList all calendars accessible to the authenticated user. Returns: List of calendars with id, summary, time_zone, access_role, and primary flag. Results are cached; call refresh_cache(calendar_id=...) to invalidate.
list_doc_commentsList Document Commentsread-onlyList comments (and their replies) on a Google Doc via the Drive comments resource. Args: doc_id: The Google Doc file ID. page_size: Maximum number of comments to return per page (default 20). page_token: Continuation token from a previous response for pagination. include_deleted: Whether to include deleted comments (default False). Returns: Dictionary with: - doc_id: echoed back for reference - comments: list of comments, each with id, content, author (display_name, email_address), created_time, modified_time, resolved, deleted, quoted_text (the anchor…
list_drivesList Shared Drivesread-onlyList shared (Team) Drives accessible to the authenticated account. Args: query: Optional filter string. Supports Drive query syntax, e.g. 'name contains "Marketing"'. If omitted, all accessible shared drives are returned. max_results: Maximum number of drives to return (default 100, max 200). Returns: List of shared drives, each with id, name, createdTime, and a capabilities summary (canAddChildren, canManageMembers, etc.).
list_eventsList Eventsread-onlyList events in a calendar. Args: calendar_id: The calendar ID, or 'primary'. time_min: Lower bound (inclusive) for event start times, RFC 3339 format, e.g. '2026-01-01T00:00:00Z'. Defaults to the current UTC time. time_max: Upper bound (exclusive) for event end times, RFC 3339 format. query: Free-text search terms to find events matching summary, description, location, attendee names/emails. max_results: Maximum number of events to return (default 50, max 2500). expand_recurring: When True (default), recurring events are expanded into …
list_file_activityList File Activityread-onlyReturn the activity timeline for a Google Drive file. Uses the Drive Activity API (driveactivity/v2) to fetch a chronological list of edits, permission changes, comments, and other events for the given file. Each activity entry reports: - timestamp: ISO 8601 UTC time of the activity - action: type of action (edit, create, move, rename, delete, restore, permission_change, comment, settings_change, system_event, …) - actors: list of who performed the action; each actor has a type field ("user", "system", "administrator", "anonymous") plus a person_name for known u…
list_filesList Filesread-onlyList files in a Google Drive folder, optionally filtered by MIME type. For a spreadsheet-only listing, list_spreadsheets(folder_id) is a narrower convenience wrapper around this same call pre-filtered to the spreadsheet MIME type. Args: folder_id: The Google Drive folder ID to list files from. mime_type: Optional MIME type filter. Common values: 'application/vnd.google-apps.document' (Google Docs) 'application/vnd.google-apps.spreadsheet' (Google Sheets) 'application/vnd.google-apps.folder' (folders) max_results: Maximum number of resu…
list_foldersList Foldersread-onlyList all folders in the specified Google Drive folder. If no parent is specified, uses the configured default folder (DRIVE_FOLDER_ID); if that is also unset, searches across 'My Drive' AND every shared drive the authenticated account can access (includeItemsFromAllDrives=True) — not just 'My Drive'. Args: parent_folder_id: Optional Google Drive folder ID to search within. If not provided, uses the configured default folder or searches 'My Drive' and every shared drive the account can access. max_results: Maximum number of…
list_labelsList Labelsread-onlyList all labels in the authenticated user's mailbox (system and user-defined). Returns: List of labels with id, name, type, message_list_visibility, and label_list_visibility. On API failure, {"error": "..."}.
list_messagesList Messagesread-onlyList messages in the authenticated user's mailbox. Args: query: Gmail search syntax filter, e.g. 'from:alice@example.com is:unread'. label_ids: Only return messages that have all of these label IDs (e.g. ['INBOX', 'UNREAD']). max_results: Maximum number of messages to return (default 50, max 500). page_token: Continuation token from a previous response for pagination. include_spam_trash: When True, include messages from SPAM and TRASH. Returns: Dictionary with messages (id, thread_id), optional next_page_token, and result_size_estimate. Use get_mess…
list_permissionsList File Permissionsread-onlyList all permissions on a file or folder in Google Drive. Args: file_id: The Google Drive file or folder ID. Returns: List of permissions, each with id, type, role, email_address (for user/group), domain (for domain permissions), display_name, expiration_time, and deleted flag.
list_recent_filesList Recent Filesread-onlyList recently modified files in Drive, newest first. Args: max_results: Maximum number of files to return (default 20, max 100). days: If provided, only return files modified within the last N days. mime_type: Optional MIME type filter. Returns: List of files with id, name, mime_type, modified_time, owners, and web_link, ordered by modification time descending.
list_revisionsList Revisionsread-onlyList available revisions for a Google Drive file (Sheets, Docs, or any file). Returns every revision in chronological order with its ID, timestamp, and the user who made the change. Use the revision ID with export_revision to read a historical version of a spreadsheet (cell data) or a Google Doc (Markdown). Retention differs by file type: - Binary (uploaded) files: Drive purges a revision 30 days after newer content replaces it, unless keepForever is set (at most 200 per file). - Google Docs, Sheets, and Slides: not subject to that purge, and keepForever doesn't apply to them (al…
list_shared_with_meList Shared With Meread-onlyList files explicitly shared with the authenticated user. Args: mime_type: Optional MIME type filter, e.g. 'application/vnd.google-apps.spreadsheet'. max_results: Maximum number of files to return (default 50, max 200). Returns: List of shared files with id, name, mime_type, modified_time, owners, and web_link, ordered by modification time descending. Note: With service account auth, returns files shared with the service account email, not files shared with a personal user.
list_sheetsList Sheetsread-onlyList all sheets in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) Returns: List of sheet names. Results are cached; call refresh_cache(spreadsheet_id=spreadsheet_id) to invalidate, or refresh_cache() to clear all caches.
list_spreadsheetsList Spreadsheetsread-onlyList all spreadsheets in the specified Google Drive folder. If no folder is specified, uses the configured default folder; if that's also unset, searches across 'My Drive' AND every shared drive the authenticated account can access (includeItemsFromAllDrives=True) — not just 'My Drive'. A strict, less-flexible special case of list_files pre-filtered to the spreadsheet MIME type. For a different result cap or other file types, use list_files(folder_id, mime_type='application/vnd.google-apps.spreadsheet', ...) instead. Args: folder_id: Optional Google Drive folder ID to search in. …
list_threadsList Threadsread-onlyList conversation threads in the authenticated user's mailbox. Args: query: Gmail search syntax filter, e.g. 'subject:invoice newer_than:7d'. label_ids: Only return threads that have all of these label IDs. max_results: Maximum number of threads to return (default 50, max 500). page_token: Continuation token from a previous response for pagination. include_spam_trash: When True, include threads from SPAM and TRASH. Returns: Dictionary with threads (id, snippet, history_id), optional next_page_token, and result_size_estimate. Use get_thread for full messages. On AP…
merge_cellsMerge Cellscan change or delete dataMerge a range of cells into one cell. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to merge (e.g. "A1:C3") merge_type: "MERGE_ALL" (default), "MERGE_COLUMNS" (merge each column independently), or "MERGE_ROWS" (merge each row independently) Returns: Result of the batchUpdate operation
merge_table_cellsMerge Table Cellscan change or delete dataMerge a rectangular range of cells in an existing table into one cell. Use get_doc_structure to find the table's startIndex and the row/column of the merge range's top-left (anchor) cell. Merging doesn't delete content or shift character indices: cells covered by the merge remain physical entries in the doc, they're just no longer independently addressable in the rendered table. Args: doc_id: The Google Doc file ID. table_start_index: The startIndex of the table (from get_doc_structure). row_index: Zero-based row of the merge range's top-left cell. column_index: Zero-based co…
modify_labelsModify Labelscan change or delete dataAdd or remove labels on a message or an entire thread. Common label IDs: INBOX (archive = remove INBOX), UNREAD (mark read = remove UNREAD; mark unread = add UNREAD), STARRED, IMPORTANT, TRASH, SPAM. User labels use their id from list_labels. Args: add_label_ids: Label IDs to add. remove_label_ids: Label IDs to remove. message_id: Target a single message. Provide message_id or thread_id, not both. thread_id: Target every message in a thread. Provide message_id or thread_id, not both. Returns: For a message: id, thread_id, label_ids. For a t…
move_fileMove Filecan change or delete dataMove a file or folder to a different folder in Google Drive. Args: file_id: The ID of the file or folder to move destination_folder_id: The ID of the destination folder Returns: Updated file metadata including new parent folder
refresh_cacheRefresh Cacheread-onlyInvalidate caches, forcing a fresh fetch on next use. Args: spreadsheet_id: Invalidate sheet structure and data cache for this spreadsheet. doc_id: Invalidate doc content cache for this Google Doc file ID. folder_id: Invalidate Drive folder listing cache for this folder ID. calendar_id: Invalidate calendar metadata cache for this calendar ID. If none are provided, invalidates all caches (sheets, data, folders, docs, calendars, and the Gmail mailbox's own send-as addresses). Returns: Confirmation of what was invalidated
remove_calendar_aclRemove Calendar ACLcan change or delete dataRevoke an access control rule from a calendar. Args: calendar_id: The calendar ID, or 'primary'. rule_id: The ACL rule ID to remove (from list_calendar_acl). Returns: Confirmation with calendar_id, rule_id, and action 'removed'. The calendar's primary-owner rule and the authenticated account's own rule can't be removed; that returns an {"error": ...} naming which one.
remove_calendar_from_listRemove Calendar From Listcan change or delete dataUnsubscribe 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. Args: calendar_id: The calendar ID to remove from the list. Returns: Confirmation with calendar_id and action 'removed_from_list'.
remove_permissionRemove Permissioncan change or delete dataRevoke a permission on a file or folder. Args: file_id: The Google Drive file or folder ID. permission_id: The permission ID to remove (from list_permissions). Returns: Confirmation with fileId, permissionId, and action taken.
rename_fileRename Filecan change or delete dataRename a file or folder in Google Drive. Args: file_id: The ID of the file or folder to rename. new_name: The new name. Returns: Updated fileId, name, and parent folder ID.
rename_sheetRename Sheetcan change or delete dataRename a sheet in a Google Spreadsheet. Args: spreadsheet: Spreadsheet ID sheet: Current sheet name new_name: New sheet name Returns: Result of the operation
reply_to_messageReply to Messagecan change or delete dataSend a reply in an existing thread. Fetches the original message for Subject / Message-ID / References headers and sets the reply's threadId so Gmail groups it correctly. Args: message_id: ID of the message being replied to. body: Plain-text reply body. body_html: Optional HTML reply body. reply_all: When True, also include the original To and Cc recipients in addition to the reply target. Recipients follow standard mail-client rules: the reply goes to the original's Reply-To if it has one, otherwise its From. Replying to a message you sent yourself goes to th…
resize_columnsResize Columnscan change or delete dataSet an explicit pixel width for columns, or auto-fit them to content. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_column: 0-based index of the first column to resize (0 = column A) end_column: 0-based index of the last column to resize (inclusive). If omitted, resizes only start_column. pixel_size: Explicit column width in pixels. Mutually exclusive with auto_resize. auto_resize: If True, auto-fit column width to content instead of setting an explicit pixel_size. Returns: Re…
resize_rowsResize Rowscan change or delete dataSet an explicit pixel height for rows, or auto-fit them to content. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_row: 0-based index of the first row to resize end_row: 0-based index of the last row to resize (inclusive). If omitted, resizes only start_row. pixel_size: Explicit row height in pixels. Mutually exclusive with auto_resize. auto_resize: If True, auto-fit row height to content instead of setting an explicit pixel_size. Returns: Result of the batchUpdate operation. Retu…
resolve_doc_commentResolve Document Commentcan change or delete dataMark a comment on a Google Doc as resolved, by posting a reply with a "resolve" action via the Drive comments resource. Args: doc_id: The Google Doc file ID. comment_id: The ID of the comment to resolve (from list_doc_comments). reply_content: Optional text to attach to the resolving reply. Returns: Dictionary with doc_id, comment_id, reply id, and action ("resolve").
restore_fileRestore Filecan change or delete dataRestore 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. Args: file_id: The ID of the trashed file or folder to restore. Returns: Confirmation with fileId and action taken ('restored').
search_filesSearch Filesread-onlySearch for files in Google Drive by name or content. For a spreadsheet-only search, search_spreadsheets(query, max_results) is a narrower convenience wrapper around this same query pre-filtered to the spreadsheet MIME type. Args: query: Search string matched against file name and full text. mime_type: Optional MIME type filter, e.g. 'application/vnd.google-apps.document', 'application/vnd.google-apps.spreadsheet', 'application/pdf'. folder_id: Optional folder to restrict the search to. max_results: Maximum results to return (defaul…
search_spreadsheetsSearch Spreadsheets by Name or Contentread-onlySearch for spreadsheets in Google Drive by name or content. A strict, less-flexible special case of search_files pre-filtered to the spreadsheet MIME type. For folder-scoped search or other file types, use search_files(query, mime_type='application/vnd.google-apps.spreadsheet', ...) instead. Args: query: Search query string. Searches in file name and content. Examples: "budget 2024", "sales report", "project tracker" max_results: Maximum number of results to return (default 20, max 100) Returns: List of matching spreadsheets with their ID, name, metadata, and star…
send_draftSend Draftcan change or delete dataSend an existing draft by ID. Args: draft_id: The draft ID returned by create_draft. Returns: Sent message id, thread_id, and label_ids. On failure, {"error": "..."}.
send_messageSend Messagecan change or delete dataSend a new email message. Args: to: Recipient email address, or a list of addresses. subject: Email subject line. body: Plain-text body. cc: Optional CC address or list of addresses. bcc: Optional BCC address or list of addresses. body_html: Optional HTML body (sent alongside the plain-text body). attachments: Optional list of attachment dicts. Each needs either local_path or content_base64, plus optional filename and mime_type (guessed from the filename's extension when omitted, else application/octet-stream). Re…
set_cache_ttlSet Cache TTLChange the cache time-to-live at runtime, without restarting the server. The change takes effect in the running server process, without a restart. Use get_cache_ttl first if you need to restore the previous value afterward. Args: ttl_seconds: New TTL in seconds, applied to all five cache namespaces (sheet structure, sheet data, Drive folders, docs, calendars). Must be >= 0; 0 effectively disables TTL-based caching (every entry is immediately eligible for expiry). Returns: Confirmation with the new TTL. Applies only to this running process — set CACHE_TTL …
share_fileShare Filecan change or delete dataShare any file or folder with one or more principals. Permission entries share concurrently rather than one at a time. If the caller supplied a progressToken, a `notifications/progress` update is sent as each share finishes (#355). Args: file_id: The Google Drive file or folder ID. permissions: List of permission entries. Each must have 'type' and 'role'. Additional fields depend on type: type='user' or 'group' — requires 'email_address' type='domain' — requires 'domain' type='anyone' — no ext…
share_spreadsheetShare Spreadsheetcan change or delete dataShare a Google Spreadsheet with multiple users via email, assigning specific roles. Recipients share concurrently rather than one at a time. If the caller supplied a progressToken, a `notifications/progress` update is sent as each share finishes (#355). Args: spreadsheet_id: The ID of the spreadsheet to share. recipients: A list of dictionaries, each containing 'email_address' and 'role'. The role should be one of: 'reader', 'commenter', 'writer'. Example: [ {'email_address': 'user1@example.com', 'role': 'writer'}, …
sort_rangeSort RangeSort a range by one or more columns. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to sort (e.g. "A1:D100") sort_order: List of sort specs, each with: - "column_index": 0-based column index within the range - "order": "ASCENDING" (default) or "DESCENDING" If omitted, sorts by the first column ascending. Returns: Result of the batchUpdate operation
star_fileStar FileMark a file or folder as starred in Google Drive, for easy retrieval later. Args: file_id: The ID of the file or folder to star. Returns: fileId, name, and the resulting starred state.
style_doc_rangeStyle Document Rangecan change or delete dataApply paragraph and/or text styles to one or more index ranges in a Google Doc. Use get_doc_structure to obtain the startIndex and endIndex for each target range. Multiple ranges can be styled in a single call; all batchUpdate requests are sent together. Args: doc_id: The Google Doc file ID. ranges: List of range dicts. Each dict must include start_index and end_index, plus any combination of the style fields below: Paragraph style: named_style_type (str): NORMAL_TEXT, HEADING_1 … HEADING_6, TITLE, SUBTITLE Text style: bold …
style_doc_table_cellsStyle Document Table Cellscan change or delete dataApply border, padding, and background styles to table cells in a Google Doc. Args: doc_id: The Google Doc file ID. table_start_index: The startIndex of the table (from get_doc_structure or insert_doc_table). cells: List of cell style dicts. Each dict must include row_index and column_index, plus any combination of: background_color (dict): {"red": 0-1, "green": 0-1, "blue": 0-1} padding_top, padding_right, padding_bottom, padding_left (float): points border_color (dict): {"red": 0-1, "green": 0-1, "blue": 0-1} Applies the same c…
sync_folderSync Foldercan change or delete dataSync files between a Google Drive folder and a local directory. Not available when the server runs with LOCAL_FILE_ACCESS=off. ## Sync logic Files are matched by name. For Google Workspace files (Docs, Sheets, Slides), the export extension is appended to form the local name — e.g. a Doc called 'Notes' with export_format='docx' matches the local file 'Notes.docx'. Workspace files with no export_format are skipped entirely — except a Doc produced by convert_markdown, which keeps its '.md' name and matches its local .md file directly regardless of export_format (see convert_markdown below). Fo…
transfer_ownershipTransfer File Ownershipcan change or delete dataTransfer ownership of a file or folder to another user. Args: file_id: The Google Drive file or folder ID. new_owner_email: Email address of the new owner. send_notification: Whether to send a notification email to the new owner. Defaults to True, and must stay True: Drive refuses any ownership transfer whose notification is disabled. Returns: Confirmation with fileId, new_owner, and permissionId. {"error": ...} if send_notification is False, before any API call. Note: Requires OAuth auth — service accounts have no pers…
trash_messageTrash Messagecan change or delete dataMove a message to trash (recoverable). Permanent delete is intentionally not exposed — it requires the full https://mail.google.com/ scope, which this server does not request. Args: message_id: The Gmail message ID to trash. Returns: Message id, thread_id, label_ids, and action 'trashed'. On failure, {"error": "..."}.
unhide_columnsUnhide Columnscan change or delete dataUnhide previously hidden columns in a sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_column: 0-based index of the first column to unhide (0 = column A) end_column: 0-based index of the last column to unhide (inclusive). If omitted, unhides only start_column. Returns: Result of the batchUpdate operation. Returns {"error": ...} without calling the Sheets API if start_column is negative or end_column precedes start_column.
unhide_rowsUnhide Rowscan change or delete dataUnhide previously hidden rows in a sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet start_row: 0-based index of the first row to unhide end_row: 0-based index of the last row to unhide (inclusive). If omitted, unhides only start_row. Returns: Result of the batchUpdate operation. Returns {"error": ...} without calling the Sheets API if start_row is negative or end_row precedes start_row.
unmerge_cellsUnmerge Cellscan change or delete dataUnmerge all merged cells in a range. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to unmerge (e.g. "A1:C3") Returns: Result of the batchUpdate operation
unstar_fileUnstar FileRemove a file or folder's starred marker in Google Drive. Args: file_id: The ID of the file or folder to unstar. Returns: fileId, name, and the resulting starred state.
update_bordersUpdate Borderscan change or delete dataApply or clear borders on the edges of a cell range. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet range: A1 notation range to border (e.g. "A1:D5") top: Border spec for the top edge of the range, e.g. {"style": "SOLID", "color": {"red": 0.0, "green": 0.0, "blue": 0.0}}. "style" is required and must be one of "DOTTED", "DASHED", "SOLID", "SOLID_MEDIUM", "SOLID_THICK", "DOUBLE", or "NONE" (clears the border). "color" is an optional RGB dict. "width" is optional and deprecated by the Sheets API in favor …
update_calendarUpdate Calendarcan change or delete dataUpdate fields on an existing calendar using patch semantics. Only the fields you provide are changed; omitted fields are left as-is. Note: color_id is set via the authenticated user's calendar list entry (calendarList().patch()), not the calendar resource itself — it is a per-user setting, not a property of the calendar shared with others. Args: calendar_id: The calendar ID, or 'primary'. summary: New calendar title. description: New calendar description. timezone: New IANA timezone name (e.g. 'America/Los_Angeles'). color_id: New color ID from the palette returned by the…
update_cellsUpdate Cellscan change or delete dataUpdate cells in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Cell range in A1 notation (e.g., 'A1:C10') data: 2D array of values to update. Each cell is normally a plain scalar (str/int/float/bool), parsed the same way as typing it into the Sheets UI (USER_ENTERED — formulas, dates, etc. are recognized). For a partial (rich-text) hyperlink or mixed-format run within a single cell, pass a list of run dicts instead, e.g. [{"text": "See "}, {"text": "docs", "hyp…
update_doc_from_fileUpdate Document from Filecan change or delete dataReplace an existing Google Doc's content in place from a local .md or .html file. Not available when the server runs with LOCAL_FILE_ACCESS=off. Reads local_path server-side the same way create_doc_from_file does (file format inferred from extension, or pass content_format to override), then replaces the doc's content the same way write_doc_content does — preserving the doc's ID, URL, permissions, and Drive location. Unlike calling create_doc_from_file again, this never mints a duplicate Doc, and unlike write_doc_content, the caller never has to read the file into its own context — the server…
update_eventUpdate Eventcan change or delete dataUpdate fields on an existing event using a partial update (patch semantics). Only the fields you provide are changed; omitted fields are left as-is. **Recurring event scope** — the Calendar API controls which instances are updated based on which event ID you pass: - This event only: pass the instance event ID (e.g. "base_id_20260601T100000Z"). The API creates an exception override for that occurrence. - All events in the series: pass the master (recurring) event ID. Use list_events(expand_recurring=False) to retrieve master event IDs. - This and following: not directly supported by the AP…
update_permissionUpdate Permissioncan change or delete dataChange the role on an existing permission for a file or folder. Args: file_id: The Google Drive file or folder ID. permission_id: The permission ID to update (from list_permissions). role: New role. One of: 'reader', 'commenter', 'writer'. Returns: Updated permissionId and role.
update_sheet_propertiesUpdate Sheet PropertiesUpdate sheet-level display properties: tab color, gridline visibility, right-to-left layout. Note: the Sheets API does not expose row/column header visibility as a settable sheet property, so it isn't included here. Frozen row/column counts are handled separately by the freeze tool. Args: spreadsheet_id: The ID of the spreadsheet sheet: The name of the sheet tab_color: RGB color dict for the sheet tab, e.g. {"red": 1.0, "green": 0.0, "blue": 0.0}. Pass {} to clear the tab color back to the default. show_gridlines: Whether gridlines are shown in t…
upload_fileUpload Filecan change or delete dataUpload a text file to Google Drive, optionally converting it to a Google Doc. Args: name: File name (include extension, e.g. 'notes.md', 'report.html'). content: Text content to upload. source_format: How to interpret the content. One of: 'markdown' — Markdown text; converted to HTML before upload. 'html' — Raw HTML. 'text' — Plain text (default). folder_id: Destination folder ID. Defaults to the configured folder or Drive root. convert_to_doc: If True, create a Google Doc instead of a raw file. …
upload_local_fileUpload Local Filecan change or delete dataUpload a file from the local filesystem to a Google Drive folder. Handles binary and text files (images, PDFs, DOCX, XLSX, scripts, etc.). Not available when the server runs with LOCAL_FILE_ACCESS=off. Args: local_path: Absolute path to the local file to upload. parent_folder_id: ID of the destination Drive folder. name: Name to give the file in Drive. Defaults to the local filename. skip_if_exists: If True (default), skip the upload and return the existing file's metadata if a file with the same name already exists in the destination fo…
upload_local_folderUpload Local Foldercan change or delete dataUpload all files in a local directory (non-recursive) to a Google Drive folder. Not available when the server runs with LOCAL_FILE_ACCESS=off. Args: local_path: Absolute path to the local directory. parent_folder_id: ID of the destination Drive folder. skip_if_exists: Skip files that already exist in the destination (default True). skip_system_files: Skip OS metadata files like .DS_Store (default True). convert: If True, request Drive's native import conversion for every file — same mapping as upload_local_file's convert param: .csv/.xlsx -> Googl…
write_doc_contentWrite Document Contentcan change or delete dataReplace the full content of an existing Google Doc. Content is interpreted as HTML by default. Pass content_format='markdown' to supply Markdown instead. Headings, paragraphs, lists, links, tables, fenced code blocks, task list items, and images are all supported. Each table is inserted where it appears in the content. Use this to populate a doc created manually in Drive (bypassing service account storage quota limits). Images are embedded inline the same way create_doc's own content_format='markdown' path handles them — see that tool's docstring for the src conventions, the revoke_sharing t…
Compare and alternatives
Featured in
Signals
- Stars
- 1
- Forks
- 9
- Open issues
- 136
- Weekly downloads
- 3,128
- Last commit
- Oct 24, 2026 (4 days ago)
- Last release
- Oct 23, 2026 (5 days ago)
- Last package publish
- Oct 23, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.khuisman/mcp-gee-sweet- Version
- 0.9.4
- Auth
- API key
- Packages
- pypi mcp-gee-sweet
- License
- MIT
- Repository
- github.com/khuisman/mcp-gee-sweet
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
MCP Gee Sweet. Agent Mart. https://agentmart.dev/connectors/khuisman-mcp-gee-sweet (last updated 2026-10-24)