| docs_get_documentA | Retrieve the content of a Google Doc by its ID. Args: Returns:
Document title, content, and metadata. For JSON format:
{
"documentId": string,
"title": string,
"textContent": string,
"revisionId": string
} Examples: |
| docs_create_documentA | Create a new Google Doc with an optional initial body. Args: title (string): The title for the new document body_content (string, optional): Initial text content for the document body
Returns:
{
"documentId": string,
"title": string,
"revisionId": string
} Examples: Create empty doc: title="Meeting Notes" Create with content: title="Draft", body_content="Hello World"
|
| docs_batch_updateA | Apply batch updates to a Google Doc (insert/update/delete text, formatting, images, tables). Args: Common request types: insertText: { insertText: { location: { index: 1 }, text: "Hello" } } deleteContentRange: { deleteContentRange: { range: { startIndex: 1, endIndex: 10 } } } updateTextStyle: { updateTextStyle: { range: {...}, textStyle: {...}, fields: "bold" } } insertInlineImage: { insertInlineImage: { location: {...}, uri: "https://..." } } insertTable: { insertTable: { rows: 3, columns: 3, location: {...} } }
See Google Docs API batchUpdate documentation for full request schema. Returns:
{
"documentId": string,
"replies": array,
"writeControl": object
} |
| drive_list_commentsA | List comments on a Google Doc. Args: file_id (string): The ID of the Google Doc include_deleted (boolean): Include deleted comments (default: false) page_size (number): Max comments to return, 1-100 (default: 20) page_token (string, optional): Pagination token for next page response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
For JSON format:
{
"comments": [
{
"id": string,
"content": string,
"author": string,
"createdTime": string,
"resolved": boolean,
"quotedFileContent": string,
"replies": [{ "id", "content", "author", "createdTime" }]
}
],
"next_page_token": string | null
} |
| drive_create_commentA | Add a comment to a Google Doc. Can be anchored to specific text or unanchored. Args: file_id (string): The ID of the Google Doc content (string): The text content of the comment quoted_text (string, optional): Text to anchor the comment to (for anchored comments)
Returns:
{
"id": string,
"content": string,
"author": string,
"createdTime": string
} Examples: Unanchored: file_id="...", content="Please review this section" Anchored: file_id="...", content="Typo here", quoted_text="teh"
|
| drive_reply_to_commentA | Reply to an existing comment on a Google Doc. Args: file_id (string): The ID of the Google Doc comment_id (string): The ID of the comment to reply to content (string): The text content of the reply
Returns:
{
"id": string,
"content": string,
"author": string,
"createdTime": string
} |
| drive_resolve_commentB | Mark a comment as resolved on a Google Doc. Args: Returns:
{
"id": string,
"resolved": true
} |
| drive_delete_commentA | Delete a comment from a Google Doc. Args: Returns:
{
"deleted": true,
"comment_id": string
} Note: This action cannot be undone. |
| drive_list_filesA | List files in your Google Drive. Args: page_size (number): Max files to return, 1-100 (default: 20) page_token (string, optional): Pagination token for next page order_by (string): Sort order (default: 'modifiedTime desc') mime_type ('all' | 'documents' | 'spreadsheets' | 'presentations' | 'folders'): Filter by type (default: 'all') response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
For JSON format:
{
"files": [
{
"id": string,
"name": string,
"mimeType": string,
"createdTime": string,
"modifiedTime": string,
"size": string,
"webViewLink": string,
"owners": string[]
}
],
"next_page_token": string | null
} |
| drive_search_filesA | Search for files in your Google Drive by name or content. Args: query (string): Search query - searches file names and content page_size (number): Max files to return, 1-100 (default: 20) page_token (string, optional): Pagination token for next page mime_type ('all' | 'documents' | 'spreadsheets' | 'presentations' | 'folders'): Filter by type (default: 'all') response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
For JSON format:
{
"files": [
{
"id": string,
"name": string,
"mimeType": string,
"createdTime": string,
"modifiedTime": string,
"size": string,
"webViewLink": string,
"owners": string[]
}
],
"next_page_token": string | null
} Examples: |
| drive_get_fileA | Download and return the content of a file from Google Drive. Supports PDFs, images, and other binary files. Args: Returns:
The file content. For PDFs and images, returns the binary content that Claude can read directly. Examples: |
| drive_copy_fileA | Create a copy of a file in Google Drive. Args: file_id (string): The ID of the file to copy name (string, optional): New name for the copied file (defaults to 'Copy of [original name]') parent_folder_id (string, optional): ID of the folder to copy the file into (defaults to same location as original)
Returns:
{
"id": string,
"name": string,
"mimeType": string,
"webViewLink": string
} Examples: Copy file: file_id="1abc123" Copy with new name: file_id="1abc123", name="Budget 2025" Copy to folder: file_id="1abc123", parent_folder_id="0xyz789"
|
| sheets_get_spreadsheetA | Retrieve metadata and optionally cell data from a Google Spreadsheet. Args: spreadsheet_id (string): The ID of the Google Spreadsheet (found in the URL after /d/) include_grid_data (boolean): Whether to include cell data (default: false) response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
Spreadsheet title, sheets info, and metadata. For JSON format:
{
"spreadsheetId": string,
"title": string,
"locale": string,
"sheets": [{ "sheetId": number, "title": string, "rowCount": number, "columnCount": number }],
"spreadsheetUrl": string
} Examples: |
| sheets_get_valuesA | Read cell values from a specific range in a Google Spreadsheet. Args: spreadsheet_id (string): The ID of the Google Spreadsheet range (string): The A1 notation range to read (e.g., 'Sheet1!A1:D10' or 'A1:D10') major_dimension ('ROWS' | 'COLUMNS'): Return data by rows or columns (default: 'ROWS') response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
For JSON format:
{
"range": string,
"majorDimension": string,
"values": [[cell values...], ...]
} Examples: Read range: spreadsheet_id="...", range="Sheet1!A1:D10" Read specific column: spreadsheet_id="...", range="Sheet1!A:A"
|
| sheets_batch_get_valuesA | Read cell values from multiple ranges in a Google Spreadsheet in a single request. Args: spreadsheet_id (string): The ID of the Google Spreadsheet ranges (string[]): Array of A1 notation ranges to read (e.g., ['Sheet1!A1:D10', 'Sheet2!A1:B5']) major_dimension ('ROWS' | 'COLUMNS'): Return data by rows or columns (default: 'ROWS') response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
For JSON format:
{
"spreadsheetId": string,
"valueRanges": [{ "range": string, "values": [[...]] }, ...]
} Examples: |
| sheets_update_valuesA | Write cell values to a specific range in a Google Spreadsheet. Args: spreadsheet_id (string): The ID of the Google Spreadsheet range (string): The A1 notation range to update (e.g., 'Sheet1!A1:D10') values (array): 2D array of values to write (rows of cells) value_input_option ('RAW' | 'USER_ENTERED'): How to interpret input (default: 'USER_ENTERED') 'RAW': Values are stored as-is 'USER_ENTERED': Values are parsed as if typed by user (formulas, dates work)
Returns:
{
"spreadsheetId": string,
"updatedRange": string,
"updatedRows": number,
"updatedColumns": number,
"updatedCells": number
} Examples: Write data: range="Sheet1!A1", values=[["Name", "Age"], ["Alice", 30]] Write formula: range="Sheet1!C1", values=[["=SUM(A1:B1)"]]
|
| sheets_append_valuesA | Append rows of data to the end of a table in a Google Spreadsheet. Args: spreadsheet_id (string): The ID of the Google Spreadsheet range (string): The A1 notation range defining the table to append to (e.g., 'Sheet1!A:D') values (array): 2D array of values to append (rows of cells) value_input_option ('RAW' | 'USER_ENTERED'): How to interpret input (default: 'USER_ENTERED') insert_data_option ('OVERWRITE' | 'INSERT_ROWS'): How to insert data (default: 'INSERT_ROWS')
Returns:
{
"spreadsheetId": string,
"tableRange": string,
"updates": { "updatedRange": string, "updatedRows": number, "updatedCells": number }
} Examples: Append rows: range="Sheet1!A:D", values=[["Alice", 30, "Engineer", "NYC"]]
|
| sheets_create_spreadsheetA | Create a new Google Spreadsheet with optional sheet names. Args: title (string): The title for the new spreadsheet sheet_titles (string[], optional): Array of sheet names to create
Returns:
{
"spreadsheetId": string,
"title": string,
"spreadsheetUrl": string,
"sheets": [{ "sheetId": number, "title": string }]
} Examples: Create basic: title="My Spreadsheet" With sheets: title="Budget", sheet_titles=["Income", "Expenses", "Summary"]
|
| sheets_batch_updateA | Apply batch updates to a Google Spreadsheet (formatting, charts, filters, conditional formatting, etc.). Args: Common request types: updateCells: Update cell data and formatting addSheet: Add a new sheet deleteSheet: Delete a sheet updateSheetProperties: Rename sheet, change grid size mergeCells: Merge cell ranges addConditionalFormatRule: Add conditional formatting addChart: Add a chart setDataValidation: Add data validation rules addFilterView: Add filter views repeatCell: Apply formatting to a range
See Google Sheets API batchUpdate documentation for full request schema. Returns:
{
"spreadsheetId": string,
"replies": array
} Examples: Add sheet: requests=[{ "addSheet": { "properties": { "title": "NewSheet" } } }] Bold range: requests=[{ "repeatCell": { "range": {...}, "cell": { "userEnteredFormat": { "textFormat": { "bold": true } } }, "fields": "userEnteredFormat.textFormat.bold" } }]
|
| sheets_clear_valuesA | Clear cell values from a specific range in a Google Spreadsheet (keeps formatting). Args: spreadsheet_id (string): The ID of the Google Spreadsheet range (string): The A1 notation range to clear (e.g., 'Sheet1!A1:D10')
Returns:
{
"spreadsheetId": string,
"clearedRange": string
} Examples: |
| sheets_duplicate_sheetA | Duplicate a sheet within the same spreadsheet. Args: spreadsheet_id (string): The ID of the Google Spreadsheet sheet_id (number): The ID of the sheet to duplicate (use sheets_get_spreadsheet to find sheet IDs) new_sheet_name (string, optional): Name for the new sheet (defaults to 'Copy of [original name]')
Returns:
{
"sheetId": number,
"title": string,
"index": number
} Examples: Duplicate sheet: spreadsheet_id="...", sheet_id=0 Duplicate with new name: spreadsheet_id="...", sheet_id=0, new_sheet_name="January Data"
|
| sheets_create_pivot_tableA | Create a pivot table from spreadsheet data with full Google Sheets UI feature support. Args: spreadsheet_id (string): The ID of the Google Spreadsheet source_range (string): A1 notation range (e.g., 'Sheet1!A1:E100', 'Sales!A:F') destination_sheet_id (number, optional): Sheet ID for pivot (default: creates new sheet) destination_sheet_name (string): Name for new sheet (default: 'Pivot Table') rows/columns (array): Groupings (at least one row OR column required) source_column: Column letter ('A') or index (0) label: Custom display name show_totals: Show subtotals (default: true) sort_order: 'ASCENDING' or 'DESCENDING' sort_by_value: { value_index: 0 } - Sort by aggregated value instead of alphabetically group_rule: Bucketing options (pick one): { date_time: { type: 'MONTH' } } - Group dates (YEAR, QUARTER, MONTH, DAY_OF_WEEK, etc.) { histogram: { interval: 100, start: 0, end: 1000 } } - Numeric buckets { manual: { groups: [{ group_name: 'West', items: ['CA', 'WA', 'OR'] }] } }
group_limit: Max groups to display
values (array, required): Aggregations source_column: Column to aggregate (or use formula) formula: Custom formula like '=Revenue/Quantity' (use with summarize_function: 'CUSTOM') summarize_function: SUM, COUNT, COUNTA, COUNTUNIQUE, AVERAGE, MAX, MIN, MEDIAN, PRODUCT, STDEV, STDEVP, VAR, VARP, CUSTOM name: Display name calculated_display_type: 'PERCENT_OF_ROW_TOTAL', 'PERCENT_OF_COLUMN_TOTAL', 'PERCENT_OF_GRAND_TOTAL'
filters (array, optional): Filter source data source_column: Column to filter visible_values: ['Active', 'Pending'] - Show only these values condition: { type: 'NUMBER_GREATER', values: [100] } - Filter by condition
value_layout: 'HORIZONTAL' or 'VERTICAL' (default: 'HORIZONTAL')
Examples: Date grouped: rows=[{source_column: "A", group_rule: {date_time: {type: "MONTH"}}}], values=[{source_column: "E", summarize_function: "SUM"}] Sorted by value: rows=[{source_column: "A", sort_by_value: {value_index: 0}, sort_order: "DESCENDING"}], values=[{source_column: "E", summarize_function: "SUM"}] Filtered: filters=[{source_column: "B", visible_values: ["Active"]}], rows=[{source_column: "A"}], values=[{source_column: "E", summarize_function: "SUM"}] Percentage: values=[{source_column: "E", summarize_function: "SUM", calculated_display_type: "PERCENT_OF_GRAND_TOTAL"}]
|
| gmail_list_messagesA | List messages from Gmail with optional search filters. Args: query (string, optional): Gmail search query (e.g., 'from:boss@company.com is:unread', 'subject:invoice after:2024/01/01') max_results (number): Maximum messages to return, 1-100 (default: 10) label_ids (string[]): Filter by labels like 'INBOX', 'UNREAD', 'STARRED', 'SENT' page_token (string, optional): Token for pagination response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
List of message summaries with ID, subject, from, date, and snippet. Examples: Unread emails: query="is:unread" From specific sender: query="from:notifications@github.com" Recent with attachment: query="has:attachment newer_than:7d"
|
| gmail_get_messageA | Get the full content of a specific Gmail message. Args: Returns:
Full message content including headers and body text. |
| gmail_list_threadsA | List conversation threads from Gmail. Args: query (string, optional): Gmail search query to filter threads max_results (number): Maximum threads to return, 1-100 (default: 10) label_ids (string[]): Filter by labels page_token (string, optional): Token for pagination response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
List of threads with message count and snippet. |
| gmail_get_threadA | Get all messages in a conversation thread. Args: Returns:
All messages in the thread with full content. |
| gmail_list_labelsA | List all labels (folders) in Gmail. Args: Returns:
List of all labels with their IDs and types. |
| gmail_create_draftA | Create a new email draft in Gmail. The draft is saved but NOT sent automatically. Args: to (string[]): Array of recipient email addresses (required) subject (string): Email subject line body (string): Email body content (plain text or HTML depending on content_type) content_type (string, optional): MIME content type - "text/plain" (default) or "text/html" cc (string[], optional): Array of CC recipient email addresses bcc (string[], optional): Array of BCC recipient email addresses reply_to_message_id (string, optional): Message ID to reply to (for creating reply drafts)
Returns:
{
"draftId": string,
"messageId": string,
"threadId": string
} Examples: Simple draft: to=["bob@example.com"], subject="Hello", body="Hi Bob!" Reply draft: to=["bob@example.com"], subject="Re: Meeting", body="Sounds good!", reply_to_message_id="abc123"
|
| gmail_list_attachmentsA | List all attachments in a specific Gmail message. Args: Returns:
{
"attachments": [
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"size": number
}
]
} |
| gmail_get_attachmentA | Download an attachment from a Gmail message. Args: message_id (string): The ID of the message containing the attachment attachment_id (string): The ID of the attachment to download (from gmail_list_attachments) filename (string, optional): Filename for the attachment (for display purposes)
Returns:
The attachment content. For images, returns the image directly. For other files, provides download info. Examples: |
| calendar_list_calendarsA | List all calendars accessible to the user. Args: Returns:
List of calendars with their IDs, names, and access roles. |
| calendar_list_eventsA | List events from a calendar within an optional time range. Args: calendar_id (string): Calendar ID (default: 'primary' for main calendar) time_min (string, optional): Start of time range in ISO 8601 format (e.g., '2024-01-01T00:00:00Z') time_max (string, optional): End of time range in ISO 8601 format max_results (number): Maximum events to return, 1-250 (default: 10) query (string, optional): Free text search to filter events single_events (boolean): Expand recurring events into instances (default: true) order_by ('startTime' | 'updated'): Sort order (default: 'startTime') page_token (string, optional): Token for pagination response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
List of events with title, time, location, and attendees. Examples: Today's events: time_min="2024-01-15T00:00:00Z", time_max="2024-01-16T00:00:00Z" Search meetings: query="standup" Next 7 days: time_min=(now), time_max=(now + 7 days)
|
| calendar_get_eventA | Get detailed information about a specific calendar event. Args: calendar_id (string): Calendar ID (default: 'primary') event_id (string): The event ID to retrieve response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
Full event details including description, attendees, and conference info. |
| calendar_freebusy_queryA | Check availability (free/busy times) for one or more calendars within a time range. This is useful for finding available meeting times across multiple people. It only returns busy time blocks (not event details) for privacy. Args: time_min (string): Start of the time range (ISO 8601 format, e.g., '2024-01-15T00:00:00Z') time_max (string): End of the time range (ISO 8601 format, e.g., '2024-01-22T00:00:00Z') calendar_ids (string[]): Array of calendar IDs or email addresses to check (e.g., ['primary', 'colleague@company.com']) response_format ('markdown' | 'json'): Output format (default: 'markdown')
Returns:
For each calendar, a list of busy time blocks within the range. Requirements for checking other people's calendars: Same Google Workspace organization, OR They have shared their calendar with you, OR Their calendar is public
Examples: Check your availability: calendar_ids=["primary"], time_min="2024-01-15T09:00:00Z", time_max="2024-01-15T18:00:00Z" Check team availability: calendar_ids=["alice@company.com", "bob@company.com"]
|