# Google MCP connector

The Google connector brings Drive files and folders, Docs, Forms responses, and Meet transcripts into Claude, ChatGPT, Cursor, or any MCP client, so each person can ask about them while signed in as themselves and every request is logged.

Source: https://elaichi.ai/connectors/google/

## Facts

| | |
| --- | --- |
| Application | Google |
| Category | SSO |
| AI tools | 120 |
| Authentication | Connects over OAuth |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 120 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Google is connected

- Summarize the responses to last week's onboarding form.
- Find the folders shared with the Finance team.
- List files created in the Marketing drive this month.

## Connect Google in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Google.
2. Optionally set Share with, then press Connect.
3. Approve it in Google. Google's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Google tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Google to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Google to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Google to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Google to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Google tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Google through Elaichi

### Recap a customer call from the Meet transcript

Sales. After a discovery call, pull the Google Meet transcript, see who was on the line, and get a short summary of what the prospect asked for before you write the follow-up.

### Find the right help doc without digging

Support. Ask for the Google Doc that covers a refund or setup question and get the current version from Drive, instead of scrolling through shared folders.

### Read survey results without opening the spreadsheet

Operations. Ask what people said in a Google Form, such as an office move survey or a vendor intake, and get the responses grouped and summarized.

### Check who attended the all-hands

People. Pull the participant list and transcript from a Google Meet session to confirm attendance and capture the questions that came up.

### Locate the latest version of a brief

Marketing. Search Drive and shared drives for the campaign brief or launch plan and pull the text of the Google Doc to work from, rather than an old copy someone emailed.

### Pull a contract draft from a shared drive

Legal. Ask for the agreement stored in a specific Google shared drive, read its contents, and compare it with the meeting transcript where terms were discussed.

## Frequently asked questions

### How do I connect Google to Claude?

First, connect Google in Elaichi. You are sent to the normal Google sign-in screen, you choose your account and click Allow, and you are done; there is no client ID or secret to generate. Then in Claude, open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Claude signs you in through Elaichi and your Google files, Docs, Forms, and Meet records are available.

### Does Google work with ChatGPT and Cursor as well as Claude?

Yes. Once Google is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Google once and every client you use picks it up.

### What can an AI agent actually do with my Google data?

With Google connected, an agent can search Drive and shared drives for files and folders, read the text of a Google Doc, list Google Forms and read their responses, and pull Google Meet conference records including transcripts and who attended. It reads and reports; the tools available today do not create, edit, or delete anything in Google. Because Google offers a lot of tools, short concrete asks like "find the Q3 pricing doc" work better than long paragraphs.

### Does connecting Google give the AI access to everything in my Drive and shared drives?

No. When you connect Google, the agent sees only the files, folders, shared drives, Forms, and Meet records you could already open yourself, because every request runs under your own Google sign-in and Google's sharing rules still apply. Elaichi can narrow that access further, for example to search and reading only, but it can never widen it beyond what Google already lets you see.

### Can my team share one Google connection?

Yes. One person connects Google in Elaichi and shares the connection with a team, and nobody else has to handle a password, token, or credential. Each teammate still signs in to Elaichi as themselves, so when they search Drive or read a Meet transcript the audit log names that person, not the person who set up the Google connection.

### Can I stop an agent from deleting or changing things in Google?

Yes, and with Google it is already the case: the tools this connector provides only list, search, and read Drive files, Docs, Forms responses, and Meet records, so nothing can be changed or deleted through it. Restrictions in Elaichi work per action, and a blocked action is never shown to Claude, ChatGPT, or Cursor at all, so no prompt, however worded, can reach it.

### What happens to a Google connection when someone leaves?

When you offboard someone in Elaichi, their access to the Google connection ends at once, in Claude, ChatGPT, Cursor, and every other client together. If they were using a Google connection shared with their team, it keeps working for everyone else. If you want to remove Google entirely, disconnecting it once in Elaichi removes it from every client for everyone.

## All 120 Google tools

Every tool below is callable through https://api.elaichi.ai/mcp once Google is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Google files** (List). Retrieves the user's files stored in Google Drive. This method allows filtering results using the q parameter, which accepts search queries to find specific files based on name, type, ownership, and other metadata. The response includes key file attributes such as id, name, mimeType, createdTime, modifiedTime, owners, driveId, shared, and permissions.
- **Get single Google file by ID** (Get). Retrieves metadata or content from a single file on the user's Google Drive. It always requires the ID to fetch.
- **List all Google folders** (List). List all Google Drive folders. Returns folder objects including id, name, and mimeType, filtered automatically to items of type folder.
- **Get single Google folder by ID** (Get). Get a single Google Drive folder by id. Returns the full folder metadata including id, name, mimeType, and parents. Required: id.
- **List all Google drive** (List). List all shared drives available in Google Drive. Returns an array of drive objects including their metadata.
- **Get single Google drive by ID** (Get). Get a single Google Drive shared drive by id. Returns the full drive object including its metadata. Required: id.
- **List all Google search** (List). Retrieves the user's files stored in Google Drive. This method allows filtering results using the q parameter, which accepts search queries to find specific files or folders based on name, type, ownership, and other metadata. The response includes key file attributes such as id, name, mimeType, createdTime, modifiedTime, owners, parents, driveId, shared, and permissions.
- **Get single Google file export by ID** (Get). Export a Google Drive file to a specified MIME type. Returns the exported file content as a binary stream. Required: id (the Drive file ID), mimeType (the target export format, e.g. "application/pdf").
- **List all Google drive items** (List). List files and folders in Google Drive, including items from all shared drives. Returns an array of file metadata objects.
- **Get single Google drive item by ID** (Get). Get a single Google Drive file or folder by id. Returns the full file metadata object. Required: id.
- **List all Google user info** (List). Retrieves basic profile information about the authenticated user in Google Calendar. The response includes essential details such as the user's unique identifier (sub), full name (name), first name (given_name), last name (family_name), profile picture URL (picture), and email address (email).
- **Get single Google form by ID** (Get). Get a single Google Form by id. Returns the full form object including its structure, title, and items. Required: id.
- **List all Google forms** (List). List all Google Forms accessible in Google Drive. Returns an array of file objects representing forms, including id, name, and mimeType.
- **List all Google responses** (List). List all responses submitted to a specific Google Form. Returns an array of form response objects. Required: form_id.
- **Get single Google response by ID** (Get). Get a single response submitted to a Google Form by its id. Returns the full response object. Required: form_id and id.
- **List all Google conference records** (List). List Google Meet conference records. Returns a collection of conferenceRecords objects from the Google Meet API.
- **Get single Google conference record by ID** (Get). Get a single Google Meet conference record by id. Returns the conference record object. Required: id.
- **List all Google conference record transcripts** (List). List transcripts for a Google Meet conference record. Returns a collection of transcript objects associated with the specified conference record. Required: conference_record_id.
- **Get single Google conference record transcript by ID** (Get). Get a single transcript from a Google Meet conference record by id. Returns the transcript object for the specified conference record and transcript. Required: conference_record_id and id.
- **List all Google conference record transcript entries** (List). List transcript entries for a specific Google Meet conference record transcript. Returns a collection of transcript entries. Required: conference_record_id, conference_record__transcript_id.
- **Get single Google conference record transcript entry by ID** (Get). Get a single transcript entry from a Google Meet conference record transcript by id. Required: conference_record_id, conference_record__transcript_id, id.
- **List all Google conference record participants** (List). List participants for a specific Google Meet conference record. Returns an array of participant objects. Required: conference_record_id.
- **Get single Google conference record participant by ID** (Get). Get a single participant from a Google Meet conference record by id. Returns the participant object. Required: conference_record_id and id.
- **List all Google documents** (List). List Google Drive documents (Google Docs files). Returns an array of file objects including id, name, and mimeType, filtered to documents only.
- **Get single Google document by ID** (Get). Get a single Google Drive document by id. Returns the full file metadata object. Required: id.
- **Create a Google document** (Create). Create a new Google Docs document. Returns the created document object including its document id and title. Required: title.
- **List all Google document content** (List). Get a Google document by page_id. Returns the full document object including its body content, title, and revision metadata. Required: page_id.
- **Google document content batch update** (Update). Apply one or more structured updates to a Google document identified by document_id. Returns the document id and an array of replies corresponding to each applied request. Required: document_id and requests.
- **List all Google calendar lists** (List). List the calendars on the authenticated user's Calendar List (owned plus subscribed). Use when browsing available calendars or resolving a display name to a calendar id before calling events list or get. Results are summaries; fetch full calendar metadata via this resource's get method or calendars get. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google calendar list by ID** (Get). Read one Calendar List entry: access role, colors, and visibility for a calendar the user has subscribed to. Use when checking how a calendar appears in the user's list (not the calendar's own metadata — use calendars get for that). Obtain id from the calendar list.
- **Create a Google calendar list** (Create). Add an existing calendar to the authenticated user's Calendar List (subscribe). Use when the user wants another calendar to appear in their list. Do NOT use this to create a brand-new secondary calendar — use calendars create for that. Returns the new list entry including the calendar id.
- **Update a Google calendar list by ID** (Update). Update a Calendar List entry's preferences (color, visibility, reminders) for a subscribed calendar. Use when changing how a calendar appears in the user's list without changing the calendar itself. Obtain id from the calendar list.
- **Delete a Google calendar list by ID** (Delete). Remove a calendar from the user's Calendar List (unsubscribe). Use when the user no longer wants a subscribed calendar shown. Does not delete the underlying calendar — use calendars delete for that. Returns an empty 204 response on success. Obtain id from the calendar list.
- **Google calendar lists watch** (Action). Open a push-notification channel for changes to the user's Calendar List. Use when an app needs webhook alerts when calendars are added or removed from the list — not for reading the list itself (use the calendar list). Returns a channel with id and expiration.
- **Get single Google calendar by ID** (Get). Read a Google Calendar's metadata: display name, description, time zone, and location. Use when resolving a calendar id to human-readable details before listing or creating events. Obtain id from the calendar list or calendars create.
- **Create a Google calendar** (Create). Create a secondary Google Calendar with a summary (display name). Use when the user needs a new calendar separate from their primary one. Returns the created calendar including its id — store it for subsequent event calls. Do not use this to add someone else's calendar to the list; use the calendar list create for that.
- **Update a Google calendar by ID** (Update). Update a Google Calendar's metadata (summary, description, time zone, location); only fields provided are changed. Use when renaming a calendar or correcting its details. Obtain id from the calendar list.
- **Delete a Google calendar by ID** (Delete). Delete a secondary Google Calendar by id. Use when permanently removing a calendar the user owns (not the primary). This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. To wipe events but keep the calendar, use calendars clear instead. Obtain id from the calendar list.
- **Google calendars clear** (Clear). Delete every event on a Google Calendar identified by calendar_id, leaving the calendar itself. Use when the user wants to wipe a calendar clean without deleting it. This clears all events and cannot be undone; confirm the calendar and get explicit user confirmation before calling. To remove the calendar entirely, use calendars delete. Obtain calendar_id from the calendar list.
- **List all Google events** (List). List events on a Google Calendar for a time window. Use when asking what's on the schedule, finding free slots, or resolving an event title to an id. Pass calendar_id (from the calendar list; primary is usually 'primary'). Results are summaries; fetch a full record via this resource's get method. For expanded occurrences of a recurring series, use event instances instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Create a Google event** (Create). Create a structured Google Calendar event with title, start/end, attendees, and optional location or conference data. Use when scheduling a meeting with known fields. For a one-line natural-language create ("Lunch Friday 1pm"), prefer events quick-add. For importing an existing iCalendar payload, use events import. Returns the created event including its id.
- **Get single Google event by ID** (Get). Read a single Google Calendar event: title, time, attendees, location, and description. Use when you already know the event id and need full details. For browsing many events, use events list instead. Obtain id from events. Requires calendar_id of the calendar that owns the event.
- **Update a Google event by ID** (Update). Partially update an existing Google Calendar event; only fields provided are changed. Use when rescheduling, renaming, or editing attendees on a known event. Obtain id from events. Requires calendar_id.
- **Google events quick add** (Add). Create a Google Calendar event from a free-text phrase (natural language). Use when the user describes an event in one sentence without structured fields. For full control over attendees, recurrence, or conference data, use events create instead. Returns the created event including its id.
- **Google events move** (Move). Move a Google Calendar event from one calendar to another. Use when the user wants an event on a different calendar without recreating it. Pass the source calendar_id, event_id, and destination calendar id. Obtain ids from the calendar list and events.
- **Delete a Google event by ID** (Delete). Delete a Google Calendar event by id. Use when the user asks to cancel or remove a specific event. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from events. Requires calendar_id.
- **Google events import** (Import). Import an existing iCalendar event into a Google Calendar, preserving the original event id when possible. Use when migrating or syncing an external .ics event. For creating a brand-new event from structured fields, use events create instead.
- **Google events watch** (Action). Open a push-notification channel for event changes on a Google Calendar. Use when an app needs webhook alerts for creates/updates/deletes — not for reading the schedule (use events list). Returns a channel with id and expiration. Requires calendar_id.
- **List all Google event instances** (List). List expanded instances of a recurring Google Calendar event within a time range. Use when you need each occurrence of a series (with concrete start/end times), not the master recurring event. Pass calendar_id and event_id of the recurring series. For ordinary event browsing, use events list instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **List all Google free busy** (List). Get free/busy information for a set of calendars in Google Calendar. Requires timeMin, timeMax, and items with calendar or group ids. Returns busy time ranges and any errors per calendar.
- **List all Google search contacts** (List). Get a list of contacts matching the query in Google Calendar. Requires query and readMask. Returns matched contacts with fields specified in readMask such as names, emailAddresses, phoneNumbers, and organizations.
- **Get single Google search contact by ID** (Get). Get information about a specific contact by id in Google Calendar. Requires personFields parameter specifying which fields to return such as names, emailAddresses, phoneNumbers, and organizations.
- **Delete a Google search contact by ID** (Delete). Delete a contact person by id in Google Calendar. The response is empty if successful. Non-contact data will not be deleted. Mutate requests must be sent sequentially to avoid latency and failures.
- **List all Google other contacts** (List). Get a list of other contacts matching the query in Google Calendar. Requires query and readMask parameters. Returns matched contacts with fields emailAddresses, metadata, names, and phoneNumbers.
- **List all Google acl** (List). List who can access a Google Calendar and their roles (reader, writer, owner). Use when auditing sharing or resolving who has access before changing permissions. Pass calendar_id. Results are summaries; fetch a full record via this resource's get method. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google acl by ID** (Get). Read one ACL rule for a Google Calendar: the subject (user/group/domain) and their role. Use when inspecting a known sharing rule. Obtain id from calendar ACL. Requires calendar_id.
- **Delete a Google acl by ID** (Delete). Revoke a Google Calendar sharing rule by deleting an ACL entry. Use when removing someone's access. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from calendar ACL. Requires calendar_id.
- **Update a Google acl by ID** (Update). Change the role or scope of an existing Google Calendar ACL rule. Use when upgrading/downgrading someone's access. Obtain id from calendar ACL. Requires calendar_id.
- **Create a Google acl** (Create). Grant access to a Google Calendar by creating an ACL rule (role + scope). Use when sharing a calendar with a user, group, or domain. Returns the created rule including its id. Requires calendar_id.
- **Google acl watch** (Action). Open a push-notification channel for ACL changes on a Google Calendar. Use when an app needs webhook alerts when sharing rules change — not for listing ACL (use calendar ACL). Requires calendar_id.
- **Google channels stop** (Stop). Stop watching resources through a channel in Google Calendar. Returns an empty response on success.
- **List all Google colors** (List). List the palette of calendar and event color ids with background/foreground hex values. Use when mapping a colorId on a calendar or event to a display color. Read-only; does not change any calendar.
- **List all Google settings** (List). List the authenticated user's Google Calendar settings (locale, time zone, default event duration, etc.). Use when reading preference values that affect how events are displayed or created. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google setting by ID** (Get). Read one Google Calendar user setting by id (key/value). Use when you need a specific preference such as timezone or locale. Obtain id from settings.
- **Google settings watch** (Action). Open a push-notification channel for Google Calendar settings changes. Use when an app needs webhook alerts for preference updates — not for reading settings (use settings list).
- **Get single Google customer by ID** (Get). Get a Google Admin Directory customer by id. Returns the customer object from the Admin Directory API. Required: id.
- **List all Google licenses** (List). List Google Workspace product licenses assigned to users for a given product. Returns user license assignment records. Required: product_id.
- **List all Google usage reports** (List). List Google Admin usage reports for all users on a specific date. Returns usage activity records per user for the given date. Required: date (in YYYY-MM-DD format).
- **List all Google users** (List). List all Google Workspace users in the directory. Returns a collection of user objects including id, primaryEmail, and name.
- **Get single Google user by ID** (Get). Get a single Google Workspace user by id. Returns the full user object including id, primaryEmail, name, and associated account details. Required: id.
- **Create a Google user** (Create). Create a new Google Workspace user in the directory. Returns the created user object including id and primaryEmail. Required: primaryEmail, name (givenName and familyName), and password.
- **Update a Google user by ID** (Update). Update an existing Google Workspace user by id, replacing the resource with the supplied fields. Returns the updated user object including id and primaryEmail. Required: id.
- **Delete a Google user by ID** (Delete). Delete a Google Workspace user by id. Returns an empty 204 response on success. Required: id.
- **List all Google groups** (List). List groups in the Google Directory. Returns an array of group objects for the customer.
- **Get single Google group by ID** (Get). Get a single Google Directory group by id. Returns the full group object. Required: id.
- **Create a Google oauth token** (Create). Exchange an authorization code or refresh token for a Google OAuth access token via the Google OAuth2 token endpoint. Returns: access_token, token_type, expires_in, and optionally refresh_token. Required: grant_type, client_id, client_secret, and either code with redirect_uri (for authorization_code grant) or refresh_token (for refresh_token grant).
- **List all Google roles** (List). List all roles defined in the Google Admin Directory for the authenticated customer. Returns an array of role objects from the directory.
- **List all Google role assignments** (List). List all role assignments for your Google Admin Directory customer account. Returns a collection of role assignment items from the Google Admin SDK.
- **List all Google tokens** (List). List all OAuth tokens issued by a Google user to third-party applications. Returns a collection of token items associated with the user. Required: user_id.
- **List all Google accounts** (List). List all Google Analytics accounts accessible to the authenticated user. Returns a collection of account objects including their id, name, and related metadata.
- **List all Google group members** (List). List all members of a Google group. Returns member records for the specified group. Required: group_id.
- **Get single Google group member by ID** (Get). Get a single member of a Google group by id. Returns the member record for the specified group and member. Required: group_id, id.
- **Create a Google group member** (Create). Add a new member to a Google group. Returns the created member record. Required: group_id.
- **Update a Google group member by ID** (Update). Update an existing member of a Google group by id. Returns the updated member record. Required: group_id, id.
- **Delete a Google group member by ID** (Delete). Remove a member from a Google group by id. Returns an empty response on success. Required: group_id, id.
- **List all Google account users** (List). List Google Analytics account user links (entityUserLinks) for a specific account. Returns a list of items representing user-to-account associations. Required: account_id.
- **List all Google messages** (List). Search and list Gmail messages matching a query. Use when locating specific emails by sender, subject, label, or unread state. Pass q with Gmail search syntax (from:, to:, subject:, label:, is:unread, has:attachment, after:, before:). Results are summaries (id and threadId only); hydrate via this resource's get with format=metadata. For conversation previews with snippets, prefer threads list instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google message by ID** (Get). Read a single Gmail message: sender, subject, date, and snippet by default via format=metadata. Use when you know the exact message to inspect. Pass format=full only when you need the body to reply or summarize — metadata is faster and usually enough. Obtain id from messages list or threads get.
- **Create a Google message** (Create). Send a Gmail message on behalf of the authenticated user. Provide the email as plain-text RFC 2822 MIME in the raw field (headers + blank line + body); Truto base64url-encodes it before sending, so do NOT pre-encode. For attachments, build a multipart/mixed MIME and pass the whole thing as raw. Returns the sent message resource including its id and threadId.
- **Delete a Google message by ID** (Delete). Permanently delete a single Gmail message. This bypasses Trash and cannot be undone. Prefer messages trash unless the user has explicitly asked for permanent deletion. Requires the https://mail.google.com/ scope. Returns an empty 204 response on success. Obtain id from messages.
- **Update a Google message by ID** (Update). Modify labels on a Gmail message (addLabelIds / removeLabelIds) without changing the body. Use when starring, marking read/unread, archiving (remove INBOX), or applying user labels. Does NOT edit subject or body — use drafts for composition. Obtain id from messages.
- **Google messages trash** (Action). Move a Gmail message to Trash (recoverable). Use when the user asks to delete an email and a soft delete is acceptable. Prefer this over messages delete. Obtain id from messages.
- **List all Google threads** (List). Search and list Gmail conversations (threads) with a preview snippet per thread. Use when browsing recent correspondence or getting a conversation overview. Pass q with Gmail search syntax. For pinpointing one specific email, use messages list instead. Use threads get only when you need every message in the conversation. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google thread by ID** (Get). Read a full Gmail conversation (thread) including its messages. Use when summarizing or replying in-thread and you need the complete exchange. For a single message, use messages get instead. Obtain id from threads.
- **Update a Google thread by ID** (Update). Modify labels on every message in a Gmail thread. Use when archiving, starring, or labeling a whole conversation at once. Obtain id from threads.
- **Delete a Google thread by ID** (Delete). Permanently delete an entire Gmail conversation (thread) and all of the messages it contains. This bypasses Trash and cannot be undone. Prefer threads trash unless the user has explicitly asked for permanent deletion. Requires the https://mail.google.com/ scope. Returns an empty 204 response on success. Obtain id from threads.
- **Google threads trash** (Action). Move an entire Gmail conversation (thread) to Trash, including all messages. Use when the user wants to discard a whole thread. Prefer this over threads delete. Obtain id from threads.
- **Create a Google batch** (Create). Send a batch of Gmail API requests to Google in a single HTTP call. The request body is a raw multipart/mixed document, not JSON: each part is delimited by `--truto_multipart_boundary`, carries the header `Content-Type: application/http`, and contains one Gmail API request line such as `GET /gmail/v1/users/me/messages/<id>`, with the document closed by `--truto_multipart_boundary--`. The response is returned as multipart/mixed and passed through unparsed, so it is not a JSON payload. Sending a JSON object instead of a raw multipart document fails with 400 'Failed to get multipart boundary'. Requires the https://mail.google.com/ scope.
- **List all Google batch** (List). Send a batch of Gmail API requests to Google, using the same /batch/gmail/v1 endpoint as the create method. Google requires a raw multipart/mixed body here as well: parts delimited by `--truto_multipart_boundary`, each with `Content-Type: application/http` and one Gmail API request line. Note that this method is declared with a JSON body format, which Gmail's batch endpoint does not accept — a JSON body fails with 400 'Failed to get multipart boundary'. Prefer the create method for batch requests. Requires the https://mail.google.com/ scope.
- **List all Google labels** (List). List all Gmail labels (system and user-created) in one response. Use when resolving a label name to its id before filtering mail or applying labels. Gmail does not paginate this endpoint. To apply labels to mail, use messages update or threads update — not this method.
- **Get single Google label by ID** (Get). Read one Gmail label: name, type, and visibility settings. Use when inspecting a known label id. Obtain id from labels.
- **Create a Google label** (Create). Create a user-defined Gmail label. Use when the user wants a new mailbox label for organizing mail. Returns the created label including its id. System labels cannot be created this way.
- **Delete a Google label by ID** (Delete). Permanently delete a user-created Gmail label by its immutable id (e.g. Label_31 from labels). Use when removing a custom label. System labels (INBOX, STARRED, …) cannot be deleted — remove them from messages via messages update instead. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from labels.
- **Update a Google label by ID** (Update). Update a user-created Gmail label's name or visibility. Use when renaming a label. Obtain id from labels. System labels cannot be renamed.
- **Get single Google attachment by ID** (Get). Get a specific attachment from a Gmail message by attachment id. Returns the attachment payload including its base64url-encoded data and size. Required: message_id and id. user_id defaults to "me" (the authenticated user).
- **List all Google permissions** (List). List permissions for a Google Drive file. Returns: id, role, type, emailAddress, domain, allowFileDiscovery, and permissionDetails for each permission entry. Required: file_id.
- **List all Google drive labels** (List). List Google Drive labels available in the account. Returns a collection of label objects from the Drive Labels API with full label view details.
- **List all Google file labels** (List). List labels applied to a specific Google Drive file. Returns an array of labels associated with the file. Required: file_id.
- **List all Google org units** (List). List Google organizational units for the customer. Returns an array of organizationUnits objects from the Google Admin Directory API.
- **List all Google people** (List). List people from the Google directory via the People API. Returns a collection of people objects from the caller's domain directory.
- **List all Google comments** (List). List all comments on a Google Drive file. Returns: id, content, author, createdTime, modifiedTime, resolved, and replies for each comment. Required: file_id.
- **Get single Google comment by ID** (Get). Get a single comment on a Google Drive file by id. Returns: id, content, author, createdTime, modifiedTime, resolved, anchor, htmlContent, and replies. Required: file_id, id.
- **List all Google revisions** (List). List all revisions for a Google Drive file. Returns a collection of revision objects for the specified file. Required: file_id.
- **Get single Google revision by ID** (Get). Get a single revision of a Google Drive file by revision id. Returns the full revision object for the specified file and revision. Required: file_id and id.
- **List all Google drafts** (List). List Gmail drafts with each draft id and underlying message/thread ids (no body). Use when browsing unsent mail or resolving a draft to edit or send. Results are summaries; fetch content via this resource's get method. Pass q with Gmail search syntax when filtering. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google draft by ID** (Get). Read one Gmail draft including its message headers and snippet (format=metadata) or full MIME (format=full). Use when reviewing or editing an unsent message before send. Obtain id from drafts.
- **Create a Google draft** (Create). Create a Gmail draft (an unsent message saved in the mailbox). Pass the email as plain-text RFC 2822 MIME in message.raw and Truto base64url-encodes it before saving. Do not pre-encode. Returns the created draft including its id.
- **Update a Google draft by ID** (Update). Update an existing Gmail draft by its id, replacing its content. Pass the email as plain-text RFC 2822 MIME in message.raw and Truto base64url-encodes it before saving. Do not pre-encode. Returns the updated draft.
- **Delete a Google draft by ID** (Delete). Permanently delete a Gmail draft by id (not moved to Trash). Use when discarding an unsent message. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from drafts.
- **Google drafts send** (Send). Send an existing Gmail draft by its id. Obtain the id from create draft or list drafts. Returns the sent message including its id and threadId.
