with one click
gws-shared
// Google Workspace MCP tools: shared patterns for flags, formatting, multi-account routing, and security.
// Google Workspace MCP tools: shared patterns for flags, formatting, multi-account routing, and security.
Browser automation via MCP tools. ALWAYS use these tools for ANY web task - navigating sites, clicking, typing, filling forms, taking screenshots, or extracting data. This is the ONLY way to control the browser.
View, create, update, and delete Google Calendar events across all connected accounts. Find free time for meetings.
Read and manage Gmail across all connected Google accounts — search, send, reply, draft, archive, and label emails.
Guidance for working across multiple connected Google accounts — managing email, calendar events, and files for personal and work accounts simultaneously.
Guide for creating effective skills. Use when users want to create a new skill (or update an existing skill) that extends the AI's capabilities with specialized knowledge, workflows, or tool integrations.
Download files in Chrome on Windows and macOS. Handles triggering downloads, detecting and resolving popups, verifying completion, and locating files.
| name | gws-shared |
| description | Google Workspace MCP tools: shared patterns for flags, formatting, multi-account routing, and security. |
| command | /gws-shared |
| verified | true |
| hidden | true |
| Tool | Description |
|---|---|
google_sheets | Create spreadsheets, read/write cell data (auto-prepends sheets ) |
google_docs | Create documents, read/write text content (auto-prepends docs ) |
google_slides | Create presentations, read/write slides (auto-prepends slides ) |
google_gmail | Send, read, and manage Gmail messages |
google_calendar | Create, list, and update Google Calendar events |
request_google_file_picker | Request access to Google Drive files via the file picker UI |
google_sheets, google_docs, and google_slides use the drive.file scope. They can only access:
spreadsheets create, documents create, presentations create)To access an existing user file, call request_google_file_picker with the filename as query. The tool will:
This means files picked in a previous task can be reused without showing the picker again.
All tools accept an optional account parameter to target a specific connected Google account.
google_gmail(command: "list", account: "Work")
google_calendar(command: "list-events", account: "Personal")
request_google_file_picker(query: "Q3 Budget", account: "Work")
| Operation | When account omitted | When account specified |
|---|---|---|
| Read (list, search, get, free-time) | Queries all accounts | Queries only that account |
| Write (send, create, update, delete) | Ask which account first | Uses specified account |
Use either the label or the full email address:
google_gmail(command: "send ...", account: "Work")
google_gmail(command: "send ...", account: "alice@company.com")
request_google_file_picker(query: "Budget", account: "Personal")
Create responses for google_docs, google_sheets, and google_slides always end with a direct link to the created Doc, Sheet, or Slide deck. Use that link in the task result when the user may want to open the file.
# 1. Create a spreadsheet
google_sheets(command: "spreadsheets create --json '{\"properties\": {\"title\": \"Q3 Metrics\"}}'")
# 2. Add multiple rows with --json-values
google_sheets(command: "+append --spreadsheet '<spreadsheetId>' --json-values '[[\"Name\",\"Revenue\"],[\"Acme\",\"1.2M\"]]'")
# 3. Read back to verify
google_sheets(command: "+read --spreadsheet '<spreadsheetId>' --range 'Sheet1'")
# 1. Create a document
google_docs(command: "documents create --json '{\"title\": \"Meeting Notes\"}'")
# 2. Append plain text
google_docs(command: "+write --document '<documentId>' --text 'Key decisions from today...'")
# 3. Read back to verify
google_docs(command: "documents get --params '{\"documentId\": \"<documentId>\"}'")
# 1. Create a presentation
google_slides(command: "presentations create --json '{\"title\": \"Q3 Review\"}'")
# 2. Get the presentation to discover slide/placeholder IDs
google_slides(command: "presentations get --params '{\"presentationId\": \"<presentationId>\"}'")
IMPORTANT —
--valuesvs--json-values(Sheets only)
--values 'a,b,c'appends one row. It CANNOT be used multiple times to add more rows.--json-values '[["a","b"],["c","d"]]'appends multiple rows in a single call. Always use this for bulk data.
If a call fails, the tool returns an error message (not JSON). Check the message for HTTP status codes:
drive.file scope)If a tool returns an error because no accounts are connected, direct the user to Settings → Integrations → Google Accounts.
If an account shows status expired, instruct the user to reconnect it in Settings → Integrations → Google Accounts.
| Flag | Description |
|---|---|
--params '{"key": "val"}' | URL/query parameters |
--json '{"key": "val"}' | Request body |
--page-all | Auto-paginate (NDJSON output) |
--page-limit <N> | Max pages when using --page-all (default: 10) |
--format jsonis automatically appended by the MCP server. Do not add it.