workbench Docs

Google Workspace

Gmail, Drive, Docs & more

Scopes and complete tool lists for each of the seven google-* plugins.

Seven plugins, 39 tools between them, each connected independently. Operator setup — Cloud project, consent screen, and the seven OAuth clients — is on Google setup & scopes. This page is the per-plugin breakdown.

PluginToolsProxy base
google-gmail8https://gmail.googleapis.com/gmail/v1
google-drive8https://www.googleapis.com/drive/v3
google-calendar7https://www.googleapis.com/calendar/v3
google-docs5https://docs.googleapis.com/v1
google-sheets5https://sheets.googleapis.com/v4
google-slides5https://slides.googleapis.com/v1
google-gemini1https://generativelanguage.googleapis.com/v1beta

Gmail#

Scope: https://www.googleapis.com/auth/gmail.modify

ToolPurpose
google_gmail_listScan a mailbox: sender, subject, date, and snippet per row
google_gmail_getOne message in full, with a decoded plain-text body and its messageIdHeader
google_gmail_sendSend an email, or reply inside an existing thread
google_gmail_draftCreate a draft in the Drafts folder without sending
google_gmail_modifyChange labels: mark read or unread, archive, add or remove label ids
google_gmail_labelsList system and user label ids
google_gmail_threadsList conversation threads with snippets and a page token
google_gmail_profileThe connected account's address and message counts

Replying in-thread needs both the thread id and the original Message-ID header, which is why google_gmail_get returns messageIdHeader separately from the message id. gmail.modify does not permit permanent deletion.

Google Drive#

Scope: https://www.googleapis.com/auth/drive

ToolPurpose
google_drive_listList files, optionally filtered with a raw Drive q query
google_drive_searchKeyword search over file names and full document text, safely escaped
google_drive_uploadUpload a file
google_drive_upload_from_urlFetch from a signed URL and upload straight to Drive
google_drive_downloadDownload a file's contents
google_drive_create_folderCreate a folder
google_drive_trashMove a file to trash
google_drive_permissionsUpdate a file's sharing permissions
`google_drive_upload_from_url` blocks private addresses by hostname string only

It requires https, then rejects localhost and the private ranges — 127.*, 10.*, 172.16-31.*, 192.168.*, 169.254.*, 0.0.0.0, and IPv6 ::1, fc, fd, fe80. That check runs against the hostname text, so a public DNS name that resolves to a private address is not caught. Treat the URL argument as attacker-influenced when an agent picks it up from untrusted content.

google_drive_list forwards its query to Drive verbatim, so a malformed query surfaces as a Drive error. google_drive_search escapes what you give it and is the safer default.

Google Calendar#

Scope: https://www.googleapis.com/auth/calendar

ToolPurpose
google_calendar_list_calendarsThe user's calendars, with the ids the other tools take
google_calendar_list_eventsEvents on a calendar as slim rows
google_calendar_get_eventOne event in detail, description truncated to 1000 characters
google_calendar_create_eventCreate an event
google_calendar_update_eventPATCH an event — only the fields you pass change
google_calendar_delete_eventDelete an event permanently
google_calendar_freebusyFind busy intervals across calendars between two times

Every tool defaults to the primary calendar. Call google_calendar_freebusy before you create an event, to avoid double-booking. Prefer google_calendar_update_event over delete-and-recreate when only the time or the details change, because a delete notifies attendees.

Google Docs#

Scopes: https://www.googleapis.com/auth/documents, https://www.googleapis.com/auth/drive.file

ToolPurpose
google_docs_searchFind Docs through Drive
google_docs_getThe document's full structural JSON
google_docs_get_plaintextThe document as plain text
google_docs_createCreate a new document
google_docs_batch_updateInsert text, delete content, apply formatting

Read with google_docs_get_plaintext unless you need the structure — the full document JSON is large, and edits go through google_docs_batch_update regardless.

Google Sheets#

Scopes: https://www.googleapis.com/auth/spreadsheets, https://www.googleapis.com/auth/drive.file

ToolPurpose
google_sheets_searchFind spreadsheets by name through Drive
google_sheets_readRead a range as a 2D array of strings
google_sheets_writeOverwrite an exact range (PUT semantics)
google_sheets_appendAppend rows to the end of a table or log
google_sheets_createCreate an empty spreadsheet, optionally with named tabs
`google_sheets_write` replaces, it does not add

Writing to Sheet1!A1:C10 overwrites whatever is in those cells. To add rows to a log or table without touching existing data, use google_sheets_append with a column range such as Sheet1!A:C. Sheets finds the table and inserts after it.

Google Slides#

Scopes: https://www.googleapis.com/auth/presentations, https://www.googleapis.com/auth/drive.file

ToolPurpose
google_slides_searchFind presentations through Drive
google_slides_getA presentation's structure
google_slides_createCreate an empty presentation
google_slides_batch_updateInsert text, create or delete slides
google_slides_create_from_markdownBuild a deck from Markdown

google_slides_create_from_markdown splits slides on --- and handles tables, bullets, and quotes. ||| makes a two-column layout. It is far less work than assembling the same deck through google_slides_batch_update.

Google Gemini#

Scope: https://www.googleapis.com/auth/generative-language.retriever

ToolPurpose
google_gemini_generateGenerate content from a prompt; model defaults to gemini-1.5-flash

Google quota-limits the Generative Language API independently of the other Google plugins. See the Gemini API rate-limit documentation.