Google Workspace
Full-featured Google Workspace integration via the open-source workspace-mcp server. Manage Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Apps Script, and Custom Search — all through a unified interface.
When to Use
- Reading, sending, searching, and organizing Gmail messages
- Creating, editing, and sharing files in Google Drive
- Managing Google Calendar events and schedules
- Creating and editing Google Docs with rich formatting
- Reading and writing Google Sheets data
- Creating and updating Google Slides presentations
- Building and collecting responses from Google Forms
- Managing Google Tasks and task lists
- Looking up or managing Google Contacts
- Sending and searching Google Chat messages
- Running and managing Google Apps Script projects
- Searching the web via Google Programmable Search Engine
When NOT to Use
- Microsoft Office 365 or Outlook — use their respective integrations
- Raw Google API calls not covered here — use
google_apps_script to write a script instead
- Google Analytics, Ads, or other non-Workspace products
Prerequisites
uvx installed (pip install uv or curl -LsSf https://astral.sh/uv/install.sh | sh)
- A Google Cloud project with OAuth 2.0 Web Application credentials and the Google APIs you intend to use enabled (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, People, Chat, Apps Script)
- Skill configured via Settings → Skills → Google Workspace (multi-account):
- Use the account dropdown at the top of the section. Pick an existing account or choose + Add account to add another (e.g. "Personal", "Work"). Each account holds its own OAuth client.
- For the selected account, paste the OAuth Client ID and Client Secret and set the Default Google Email (
USER_GOOGLE_EMAIL).
- Each account is bound to a dedicated loopback port
basePort + slot (default base 9877, override via GOOGLE_WORKSPACE_MCP_BASE_PORT). The matching Redirect URI is http://localhost:<port> and is shown inline; register that exact URL in the same Google Cloud OAuth client.
- Save, then click Connect Google account to complete the in-app OAuth flow. On a self-hosted Linux VM the OAuth round-trip completes against the per-account loopback URL. On Replit, use the Manual code entry field (the redirect localhost URL won't load — paste it back into the field).
- Per-account credentials are stored under
~/.google_workspace_mcp_accounts/<accountId>/.google_workspace_mcp/credentials/<email>.json (workspace-mcp is run with HOME overridden so each account's tokens are fully isolated). Account records live as one file per account at <skillsDir>/google-workspace/accounts/<id>.json, with the active account in accounts/index.json. Removing an account scrubs both its config file and its ~/.google_workspace_mcp_accounts/<id>/ directory.
Tools
All tools return { "result": "..." } on success (formatted text) or { "error": "..." } on failure.
gmail
Manage Gmail: search, read, send, draft, and organize email.
Actions: search, get, get_batch, send, draft, get_thread, get_thread_batch, list_labels, manage_label, modify_labels, batch_modify_labels, list_filters, manage_filter, get_attachment
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
query |
string |
for search |
Gmail search query (e.g. from:user@example.com is:unread) |
message_id |
string |
for get/modify |
Gmail message ID |
message_ids |
string[] |
for batch ops |
List of message IDs |
thread_id |
string |
for thread ops |
Gmail thread ID |
to |
string |
for send/draft |
Recipient email |
subject |
string |
for send/draft |
Email subject |
body |
string |
for send/draft |
Email body |
body_format |
string |
no |
text or html |
add_label_ids |
string[] |
no |
Label IDs to add |
remove_label_ids |
string[] |
no |
Label IDs to remove |
max_results |
number |
no |
Max results (default 10) |
Examples:
{ "action": "search", "query": "from:boss@company.com is:unread" } — find unread emails from boss
{ "action": "send", "to": "user@example.com", "subject": "Hello", "body": "Hi there!" } — send an email
{ "action": "list_labels" } — list all Gmail labels
{ "action": "get", "message_id": "18abc123def456" } — read a specific message
google_drive
Manage Google Drive: search, read, create, copy, share files and folders.
Actions: search, get, download_url, share_link, create, create_folder, import, list, copy, update, manage_access, set_permissions, get_permissions, check_public
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
file_id |
string |
for file ops |
Drive file/folder ID |
query |
string |
for search |
Drive query string |
name |
string |
for create |
File/folder name |
content |
string |
for create |
File content |
mime_type |
string |
no |
MIME type |
folder_id |
string |
no |
Parent folder ID |
role |
string |
for permissions |
reader, commenter, writer, or owner |
share_with |
string |
for sharing |
Email address to share with |
Examples:
{ "action": "search", "query": "name contains 'Q4 Report'" } — find files by name
{ "action": "get", "file_id": "1BxiMVs..." } — read file content
{ "action": "create_folder", "name": "Projects 2025" } — create a folder
{ "action": "set_permissions", "file_id": "...", "role": "reader", "share_with": "user@example.com" } — share a file
google_calendar
Manage Google Calendar events and calendars.
Actions: list_calendars, get_events, manage_event
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
calendar_id |
string |
no |
Calendar ID (default: primary) |
event_id |
string |
for event ops |
Event ID |
event_action |
string |
for manage |
create, get, update, delete, or list |
time_min |
string |
no |
Start filter (ISO 8601) |
time_max |
string |
no |
End filter (ISO 8601) |
summary |
string |
for create |
Event title |
start |
string |
for create |
Start datetime (ISO 8601) |
end |
string |
for create |
End datetime (ISO 8601) |
attendees |
string[] |
no |
Attendee emails |
Examples:
{ "action": "list_calendars" } — list all calendars
{ "action": "get_events", "calendar_id": "primary", "time_min": "2025-01-01T00:00:00Z" } — get upcoming events
{ "action": "manage_event", "event_action": "create", "summary": "Team Meeting", "start": "2025-04-15T10:00:00Z", "end": "2025-04-15T11:00:00Z" } — create event
google_docs
Create and edit Google Docs with rich formatting.
Actions: get, create, modify_text, get_markdown, export_pdf, search, find_replace, list_in_folder, insert_elements, update_paragraph, insert_image, update_headers_footers, batch_update, inspect_structure, create_table, list_comments, manage_comment
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
document_id |
string |
for doc ops |
Document ID |
title |
string |
for create |
Document title |
content |
string |
for create |
Initial text content |
text |
string |
for modify |
Text to insert |
start_index |
number |
for modify |
Start character index |
end_index |
number |
for modify |
End character index |
find_text |
string |
for find_replace |
Text to find |
replace_text |
string |
for find_replace |
Replacement text |
operations |
array |
for batch_update |
Array of update operations |
Examples:
{ "action": "create", "title": "Meeting Notes", "content": "# April Meeting\n\nAttendees: ..." } — create a doc
{ "action": "get_markdown", "document_id": "1BxiMVs..." } — get doc as Markdown
{ "action": "find_replace", "document_id": "...", "find_text": "v1.0", "replace_text": "v2.0" } — find and replace
google_sheets
Read and write Google Sheets data.
Actions: read, write, create, list, get_info, format, create_sheet, list_comments, manage_comment, conditional_format
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
spreadsheet_id |
string |
for sheet ops |
Spreadsheet ID |
range_name |
string |
for read/write |
Cell range in A1 notation (e.g. Sheet1!A1:C10) |
values |
array[][] |
for write |
2D array of values |
title |
string |
for create |
Spreadsheet title |
clear_values |
boolean |
no |
Clear range before writing |
Examples:
{ "action": "read", "spreadsheet_id": "...", "range_name": "Sheet1!A1:D20" } — read cells
{ "action": "write", "spreadsheet_id": "...", "range_name": "Sheet1!A1", "values": [["Name", "Score"], ["Alice", 95]] } — write data
{ "action": "create", "title": "Q1 Budget" } — create a new spreadsheet
google_slides
Create and manage Google Slides presentations.
Actions: create, get, batch_update, get_page, get_thumbnail, list_comments, manage_comment
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
presentation_id |
string |
for pres ops |
Presentation ID |
title |
string |
for create |
Presentation title |
page_object_id |
string |
for page ops |
Slide object ID |
thumbnail_size |
string |
no |
SMALL, MEDIUM, or LARGE |
requests |
array |
for batch_update |
Array of update requests |
Examples:
{ "action": "create", "title": "Q4 Review" } — create a presentation
{ "action": "get", "presentation_id": "..." } — view all slides
{ "action": "get_thumbnail", "presentation_id": "...", "page_object_id": "p", "thumbnail_size": "LARGE" } — get slide thumbnail
google_forms
Create and manage Google Forms.
Actions: create, get, list_responses, get_response, set_publish, batch_update
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
form_id |
string |
for form ops |
Form ID |
title |
string |
for create |
Form title |
description |
string |
no |
Form description |
response_id |
string |
for get_response |
Response ID |
requests |
array |
for batch_update |
Update requests |
Examples:
{ "action": "create", "title": "Customer Feedback Survey" } — create a form
{ "action": "list_responses", "form_id": "..." } — view all responses
google_tasks
Manage Google Tasks and task lists.
Actions: list, get, manage, list_lists, get_list, manage_list
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
task_list_id |
string |
no |
Task list ID (default: @default) |
task_id |
string |
for task ops |
Task ID |
task_action |
string |
for manage |
create, get, update, delete, complete |
list_action |
string |
for manage_list |
create, update, delete |
title |
string |
for create |
Task or list title |
status |
string |
no |
needsAction or completed |
due |
string |
no |
Due date (RFC 3339) |
parent |
string |
no |
Parent task ID (for sub-tasks) |
Examples:
{ "action": "list", "task_list_id": "@default" } — list all tasks
{ "action": "manage", "task_action": "create", "title": "Review PR", "due": "2025-04-15T00:00:00Z" } — create a task
{ "action": "manage", "task_action": "complete", "task_id": "abc123" } — mark task complete
google_contacts
Manage Google Contacts via the People API.
Actions: search, get, list, manage, list_groups, get_group, manage_group, batch_manage
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
query |
string |
for search |
Search query |
contact_id |
string |
for contact ops |
Resource name (e.g. people/c123) |
contact_action |
string |
for manage |
create, update, delete |
given_name |
string |
for create |
First name |
family_name |
string |
for create |
Last name |
email |
string |
for create |
Email address |
phone |
string |
for create |
Phone number |
organization |
string |
for create |
Company name |
group_id |
string |
for group ops |
Group resource name |
Examples:
{ "action": "search", "query": "alice" } — find contacts matching "alice"
{ "action": "manage", "contact_action": "create", "given_name": "John", "family_name": "Doe", "email": "john@example.com" } — add a contact
google_chat
Send and search Google Chat messages.
Actions: get_messages, send, search, react, list_spaces, download_attachment
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
space_id |
string |
for space ops |
Space ID (e.g. spaces/XXXXXXX) |
message_text |
string |
for send |
Message text |
query |
string |
for search |
Search query |
thread_key |
string |
no |
Thread key (for threaded replies) |
emoji_unicode |
string |
for react |
Emoji unicode (e.g. 1F44D) |
message_name |
string |
for react |
Full message resource name |
Examples:
{ "action": "list_spaces" } — list all Chat spaces
{ "action": "send", "space_id": "spaces/XXXXXXX", "message_text": "Hello team!" } — send a message
{ "action": "search", "query": "deployment" } — search messages
google_apps_script
Create, run, and manage Google Apps Script projects.
Actions: list, get, get_content, create, update_content, run, list_deployments, manage_deployment, list_processes
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
script_id |
string |
for script ops |
Script project ID |
title |
string |
for create |
Project title |
file_name |
string |
for content ops |
Script filename |
source_code |
string |
for update_content |
Script source code |
function_name |
string |
for run |
Function to execute |
parameters |
array |
for run |
Function parameters |
dev_mode |
boolean |
no |
Use dev mode (for run) |
Examples:
{ "action": "list" } — list all Apps Script projects
{ "action": "run", "script_id": "...", "function_name": "sendWeeklyReport" } — run a function
{ "action": "create", "title": "Data Processor" } — create a new project
google_search
Search the web using Google Programmable Search Engine.
Actions: search, get_engine_info
Key Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
Action to perform |
q |
string |
for search |
Search query |
num |
number |
no |
Results to return (1-10) |
start |
number |
no |
Result offset |
safe |
string |
no |
active or off |
search_type |
string |
no |
image for image search |
site_search |
string |
no |
Restrict to domain (e.g. example.com) |
date_restrict |
string |
no |
Recency filter (d1, w1, m1) |
Examples:
{ "action": "search", "q": "machine learning papers 2025" } — web search
{ "action": "search", "q": "logo", "search_type": "image", "site_search": "company.com" } — image search
1---2name: google-workspace3description: Google Workspace4---5# Google Workspace67Full-featured Google Workspace integration via the open-source [workspace-mcp](https://workspacemcp.com) server. Manage Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Apps Script, and Custom Search — all through a unified interface.89## When to Use1011- Reading, sending, searching, and organizing Gmail messages12- Creating, editing, and sharing files in Google Drive13- Managing Google Calendar events and schedules14- Creating and editing Google Docs with rich formatting15- Reading and writing Google Sheets data16- Creating and updating Google Slides presentations17- Building and collecting responses from Google Forms18- Managing Google Tasks and task lists19- Looking up or managing Google Contacts20- Sending and searching Google Chat messages21- Running and managing Google Apps Script projects22- Searching the web via Google Programmable Search Engine2324## When NOT to Use2526- Microsoft Office 365 or Outlook — use their respective integrations27- Raw Google API calls not covered here — use `google_apps_script` to write a script instead28- Google Analytics, Ads, or other non-Workspace products2930## Prerequisites31321. `uvx` installed (`pip install uv` or `curl -LsSf https://astral.sh/uv/install.sh | sh`)332. A Google Cloud project with OAuth 2.0 Web Application credentials and the Google APIs you intend to use enabled (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, People, Chat, Apps Script)343. Skill configured via Settings → Skills → Google Workspace (multi-account):35 - Use the account dropdown at the top of the section. Pick an existing account or choose **+ Add account** to add another (e.g. "Personal", "Work"). Each account holds its own OAuth client.36 - For the selected account, paste the OAuth **Client ID** and **Client Secret** and set the **Default Google Email** (`USER_GOOGLE_EMAIL`).37 - Each account is bound to a dedicated loopback port `basePort + slot` (default base `9877`, override via `GOOGLE_WORKSPACE_MCP_BASE_PORT`). The matching **Redirect URI** is `http://localhost:<port>` and is shown inline; register that exact URL in the same Google Cloud OAuth client.38 - Save, then click **Connect Google account** to complete the in-app OAuth flow. On a self-hosted Linux VM the OAuth round-trip completes against the per-account loopback URL. On Replit, use the **Manual code entry** field (the redirect localhost URL won't load — paste it back into the field).39 - Per-account credentials are stored under `~/.google_workspace_mcp_accounts/<accountId>/.google_workspace_mcp/credentials/<email>.json` (workspace-mcp is run with `HOME` overridden so each account's tokens are fully isolated). Account records live as one file per account at `<skillsDir>/google-workspace/accounts/<id>.json`, with the active account in `accounts/index.json`. Removing an account scrubs both its config file and its `~/.google_workspace_mcp_accounts/<id>/` directory.4041## Tools4243All tools return `{ "result": "..." }` on success (formatted text) or `{ "error": "..." }` on failure.4445---4647### `gmail`4849Manage Gmail: search, read, send, draft, and organize email.5051**Actions:** `search`, `get`, `get_batch`, `send`, `draft`, `get_thread`, `get_thread_batch`, `list_labels`, `manage_label`, `modify_labels`, `batch_modify_labels`, `list_filters`, `manage_filter`, `get_attachment`5253**Key Parameters:**5455| Name | Type | Required | Description |56|------|------|----------|-------------|57| `action` | string | yes | Action to perform |58| `query` | string | for search | Gmail search query (e.g. `from:user@example.com is:unread`) |59| `message_id` | string | for get/modify | Gmail message ID |60| `message_ids` | string[] | for batch ops | List of message IDs |61| `thread_id` | string | for thread ops | Gmail thread ID |62| `to` | string | for send/draft | Recipient email |63| `subject` | string | for send/draft | Email subject |64| `body` | string | for send/draft | Email body |65| `body_format` | string | no | `text` or `html` |66| `add_label_ids` | string[] | no | Label IDs to add |67| `remove_label_ids` | string[] | no | Label IDs to remove |68| `max_results` | number | no | Max results (default 10) |6970**Examples:**71- `{ "action": "search", "query": "from:boss@company.com is:unread" }` — find unread emails from boss72- `{ "action": "send", "to": "user@example.com", "subject": "Hello", "body": "Hi there!" }` — send an email73- `{ "action": "list_labels" }` — list all Gmail labels74- `{ "action": "get", "message_id": "18abc123def456" }` — read a specific message7576---7778### `google_drive`7980Manage Google Drive: search, read, create, copy, share files and folders.8182**Actions:** `search`, `get`, `download_url`, `share_link`, `create`, `create_folder`, `import`, `list`, `copy`, `update`, `manage_access`, `set_permissions`, `get_permissions`, `check_public`8384**Key Parameters:**8586| Name | Type | Required | Description |87|------|------|----------|-------------|88| `action` | string | yes | Action to perform |89| `file_id` | string | for file ops | Drive file/folder ID |90| `query` | string | for search | Drive query string |91| `name` | string | for create | File/folder name |92| `content` | string | for create | File content |93| `mime_type` | string | no | MIME type |94| `folder_id` | string | no | Parent folder ID |95| `role` | string | for permissions | `reader`, `commenter`, `writer`, or `owner` |96| `share_with` | string | for sharing | Email address to share with |9798**Examples:**99- `{ "action": "search", "query": "name contains 'Q4 Report'" }` — find files by name100- `{ "action": "get", "file_id": "1BxiMVs..." }` — read file content101- `{ "action": "create_folder", "name": "Projects 2025" }` — create a folder102- `{ "action": "set_permissions", "file_id": "...", "role": "reader", "share_with": "user@example.com" }` — share a file103104---105106### `google_calendar`107108Manage Google Calendar events and calendars.109110**Actions:** `list_calendars`, `get_events`, `manage_event`111112**Key Parameters:**113114| Name | Type | Required | Description |115|------|------|----------|-------------|116| `action` | string | yes | Action to perform |117| `calendar_id` | string | no | Calendar ID (default: `primary`) |118| `event_id` | string | for event ops | Event ID |119| `event_action` | string | for manage | `create`, `get`, `update`, `delete`, or `list` |120| `time_min` | string | no | Start filter (ISO 8601) |121| `time_max` | string | no | End filter (ISO 8601) |122| `summary` | string | for create | Event title |123| `start` | string | for create | Start datetime (ISO 8601) |124| `end` | string | for create | End datetime (ISO 8601) |125| `attendees` | string[] | no | Attendee emails |126127**Examples:**128- `{ "action": "list_calendars" }` — list all calendars129- `{ "action": "get_events", "calendar_id": "primary", "time_min": "2025-01-01T00:00:00Z" }` — get upcoming events130- `{ "action": "manage_event", "event_action": "create", "summary": "Team Meeting", "start": "2025-04-15T10:00:00Z", "end": "2025-04-15T11:00:00Z" }` — create event131132---133134### `google_docs`135136Create and edit Google Docs with rich formatting.137138**Actions:** `get`, `create`, `modify_text`, `get_markdown`, `export_pdf`, `search`, `find_replace`, `list_in_folder`, `insert_elements`, `update_paragraph`, `insert_image`, `update_headers_footers`, `batch_update`, `inspect_structure`, `create_table`, `list_comments`, `manage_comment`139140**Key Parameters:**141142| Name | Type | Required | Description |143|------|------|----------|-------------|144| `action` | string | yes | Action to perform |145| `document_id` | string | for doc ops | Document ID |146| `title` | string | for create | Document title |147| `content` | string | for create | Initial text content |148| `text` | string | for modify | Text to insert |149| `start_index` | number | for modify | Start character index |150| `end_index` | number | for modify | End character index |151| `find_text` | string | for find_replace | Text to find |152| `replace_text` | string | for find_replace | Replacement text |153| `operations` | array | for batch_update | Array of update operations |154155**Examples:**156- `{ "action": "create", "title": "Meeting Notes", "content": "# April Meeting\n\nAttendees: ..." }` — create a doc157- `{ "action": "get_markdown", "document_id": "1BxiMVs..." }` — get doc as Markdown158- `{ "action": "find_replace", "document_id": "...", "find_text": "v1.0", "replace_text": "v2.0" }` — find and replace159160---161162### `google_sheets`163164Read and write Google Sheets data.165166**Actions:** `read`, `write`, `create`, `list`, `get_info`, `format`, `create_sheet`, `list_comments`, `manage_comment`, `conditional_format`167168**Key Parameters:**169170| Name | Type | Required | Description |171|------|------|----------|-------------|172| `action` | string | yes | Action to perform |173| `spreadsheet_id` | string | for sheet ops | Spreadsheet ID |174| `range_name` | string | for read/write | Cell range in A1 notation (e.g. `Sheet1!A1:C10`) |175| `values` | array[][] | for write | 2D array of values |176| `title` | string | for create | Spreadsheet title |177| `clear_values` | boolean | no | Clear range before writing |178179**Examples:**180- `{ "action": "read", "spreadsheet_id": "...", "range_name": "Sheet1!A1:D20" }` — read cells181- `{ "action": "write", "spreadsheet_id": "...", "range_name": "Sheet1!A1", "values": [["Name", "Score"], ["Alice", 95]] }` — write data182- `{ "action": "create", "title": "Q1 Budget" }` — create a new spreadsheet183184---185186### `google_slides`187188Create and manage Google Slides presentations.189190**Actions:** `create`, `get`, `batch_update`, `get_page`, `get_thumbnail`, `list_comments`, `manage_comment`191192**Key Parameters:**193194| Name | Type | Required | Description |195|------|------|----------|-------------|196| `action` | string | yes | Action to perform |197| `presentation_id` | string | for pres ops | Presentation ID |198| `title` | string | for create | Presentation title |199| `page_object_id` | string | for page ops | Slide object ID |200| `thumbnail_size` | string | no | `SMALL`, `MEDIUM`, or `LARGE` |201| `requests` | array | for batch_update | Array of update requests |202203**Examples:**204- `{ "action": "create", "title": "Q4 Review" }` — create a presentation205- `{ "action": "get", "presentation_id": "..." }` — view all slides206- `{ "action": "get_thumbnail", "presentation_id": "...", "page_object_id": "p", "thumbnail_size": "LARGE" }` — get slide thumbnail207208---209210### `google_forms`211212Create and manage Google Forms.213214**Actions:** `create`, `get`, `list_responses`, `get_response`, `set_publish`, `batch_update`215216**Key Parameters:**217218| Name | Type | Required | Description |219|------|------|----------|-------------|220| `action` | string | yes | Action to perform |221| `form_id` | string | for form ops | Form ID |222| `title` | string | for create | Form title |223| `description` | string | no | Form description |224| `response_id` | string | for get_response | Response ID |225| `requests` | array | for batch_update | Update requests |226227**Examples:**228- `{ "action": "create", "title": "Customer Feedback Survey" }` — create a form229- `{ "action": "list_responses", "form_id": "..." }` — view all responses230231---232233### `google_tasks`234235Manage Google Tasks and task lists.236237**Actions:** `list`, `get`, `manage`, `list_lists`, `get_list`, `manage_list`238239**Key Parameters:**240241| Name | Type | Required | Description |242|------|------|----------|-------------|243| `action` | string | yes | Action to perform |244| `task_list_id` | string | no | Task list ID (default: `@default`) |245| `task_id` | string | for task ops | Task ID |246| `task_action` | string | for manage | `create`, `get`, `update`, `delete`, `complete` |247| `list_action` | string | for manage_list | `create`, `update`, `delete` |248| `title` | string | for create | Task or list title |249| `status` | string | no | `needsAction` or `completed` |250| `due` | string | no | Due date (RFC 3339) |251| `parent` | string | no | Parent task ID (for sub-tasks) |252253**Examples:**254- `{ "action": "list", "task_list_id": "@default" }` — list all tasks255- `{ "action": "manage", "task_action": "create", "title": "Review PR", "due": "2025-04-15T00:00:00Z" }` — create a task256- `{ "action": "manage", "task_action": "complete", "task_id": "abc123" }` — mark task complete257258---259260### `google_contacts`261262Manage Google Contacts via the People API.263264**Actions:** `search`, `get`, `list`, `manage`, `list_groups`, `get_group`, `manage_group`, `batch_manage`265266**Key Parameters:**267268| Name | Type | Required | Description |269|------|------|----------|-------------|270| `action` | string | yes | Action to perform |271| `query` | string | for search | Search query |272| `contact_id` | string | for contact ops | Resource name (e.g. `people/c123`) |273| `contact_action` | string | for manage | `create`, `update`, `delete` |274| `given_name` | string | for create | First name |275| `family_name` | string | for create | Last name |276| `email` | string | for create | Email address |277| `phone` | string | for create | Phone number |278| `organization` | string | for create | Company name |279| `group_id` | string | for group ops | Group resource name |280281**Examples:**282- `{ "action": "search", "query": "alice" }` — find contacts matching "alice"283- `{ "action": "manage", "contact_action": "create", "given_name": "John", "family_name": "Doe", "email": "john@example.com" }` — add a contact284285---286287### `google_chat`288289Send and search Google Chat messages.290291**Actions:** `get_messages`, `send`, `search`, `react`, `list_spaces`, `download_attachment`292293**Key Parameters:**294295| Name | Type | Required | Description |296|------|------|----------|-------------|297| `action` | string | yes | Action to perform |298| `space_id` | string | for space ops | Space ID (e.g. `spaces/XXXXXXX`) |299| `message_text` | string | for send | Message text |300| `query` | string | for search | Search query |301| `thread_key` | string | no | Thread key (for threaded replies) |302| `emoji_unicode` | string | for react | Emoji unicode (e.g. `1F44D`) |303| `message_name` | string | for react | Full message resource name |304305**Examples:**306- `{ "action": "list_spaces" }` — list all Chat spaces307- `{ "action": "send", "space_id": "spaces/XXXXXXX", "message_text": "Hello team!" }` — send a message308- `{ "action": "search", "query": "deployment" }` — search messages309310---311312### `google_apps_script`313314Create, run, and manage Google Apps Script projects.315316**Actions:** `list`, `get`, `get_content`, `create`, `update_content`, `run`, `list_deployments`, `manage_deployment`, `list_processes`317318**Key Parameters:**319320| Name | Type | Required | Description |321|------|------|----------|-------------|322| `action` | string | yes | Action to perform |323| `script_id` | string | for script ops | Script project ID |324| `title` | string | for create | Project title |325| `file_name` | string | for content ops | Script filename |326| `source_code` | string | for update_content | Script source code |327| `function_name` | string | for run | Function to execute |328| `parameters` | array | for run | Function parameters |329| `dev_mode` | boolean | no | Use dev mode (for run) |330331**Examples:**332- `{ "action": "list" }` — list all Apps Script projects333- `{ "action": "run", "script_id": "...", "function_name": "sendWeeklyReport" }` — run a function334- `{ "action": "create", "title": "Data Processor" }` — create a new project335336---337338### `google_search`339340Search the web using Google Programmable Search Engine.341342**Actions:** `search`, `get_engine_info`343344**Key Parameters:**345346| Name | Type | Required | Description |347|------|------|----------|-------------|348| `action` | string | yes | Action to perform |349| `q` | string | for search | Search query |350| `num` | number | no | Results to return (1-10) |351| `start` | number | no | Result offset |352| `safe` | string | no | `active` or `off` |353| `search_type` | string | no | `image` for image search |354| `site_search` | string | no | Restrict to domain (e.g. `example.com`) |355| `date_restrict` | string | no | Recency filter (`d1`, `w1`, `m1`) |356357**Examples:**358- `{ "action": "search", "q": "machine learning papers 2025" }` — web search359- `{ "action": "search", "q": "logo", "search_type": "image", "site_search": "company.com" }` — image search