@mcp-s/connectors 0.0.20261022190708 → 0.0.20261024071613
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/connectors/asana.json +1 -1
- package/dist/public/connectors/azure-devops.json +1 -1
- package/dist/public/connectors/bitbucket-datacenter.json +1 -1
- package/dist/public/connectors/bitbucket.json +1 -1
- package/dist/public/connectors/github.json +1 -1
- package/dist/public/connectors/gmail.json +1 -1
- package/dist/public/connectors/google-calendar.json +1 -1
- package/dist/public/connectors/google-workspace-admin.json +1 -1
- package/dist/public/connectors/google-workspace.json +1 -1
- package/dist/public/connectors/jira-server.json +1 -1
- package/dist/public/connectors/jira.json +1 -1
- package/dist/public/connectors/linear.json +1 -1
- package/dist/public/connectors/linkedin.json +1 -1
- package/dist/public/connectors/monday.json +1 -1
- package/dist/public/connectors/okta.json +1 -1
- package/dist/public/connectors/onedrive.json +1 -1
- package/dist/public/connectors/outlook-calendar.json +1 -1
- package/dist/public/connectors/outlook-mail.json +1 -1
- package/dist/public/connectors/salesforce.json +1 -1
- package/dist/public/connectors/sharepoint.json +1 -1
- package/dist/public/connectors/slack.json +1 -1
- package/dist/public/connectors/zendesk.json +1 -1
- package/dist/public/connectors/zoom.json +1 -1
- package/dist/public/index.json +24 -24
- package/dist/schema/auth.d.ts +27 -0
- package/dist/schema/auth.js +15 -0
- package/dist/schema/catalog.d.ts +12 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"google-workspace","status":"active","internal_status":"tool-works","applications":["google-workspace"],"definition":{"display":{"name":"Google Workspace","description":"Google Workspace is a suite of productivity tools developed by Google.","icon":"google-drive.svg","website":"https://workspace.google.com/","category":"file-storage-document-management","docs_url":"https://docs.withwillow.ai/docs/mcp-servers/built-in/google-workspace"},"api":{"base_url":""},"auth":{"methods":{"oauth":{"authUrl":"https://accounts.google.com/o/oauth2/v2/auth","tokenUrl":"https://oauth2.googleapis.com/token","authInitUrlParams":{"access_type":"offline","prompt":"consent"},"scopes":["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/drive.appdata","https://www.googleapis.com/auth/drive.apps.readonly","https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive.meet.readonly","https://www.googleapis.com/auth/drive.metadata","https://www.googleapis.com/auth/drive.metadata.readonly","https://www.googleapis.com/auth/drive.photos.readonly","https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/drive.scripts","https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/documents.readonly","https://www.googleapis.com/auth/presentations","https://www.googleapis.com/auth/presentations.readonly","https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/spreadsheets.readonly","https://www.googleapis.com/auth/tasks","https://www.googleapis.com/auth/drive.labels.readonly"],"defaultScopes":["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/presentations","https://www.googleapis.com/auth/spreadsheets"],"codeExchangeConfig":{"modelCredentialsMapping":"{\n \"access_token\": access_token, \n \"expires_at\": $fromMillis($millis() + expires_in * 1000),\n \"refresh_token\": refresh_token,\n \"refresh_token_expires_at\": $fromMillis($millis() + refresh_token_expires_in * 1000),\n \"scope\": scope,\n \"token_type\": token_type\n }"}},"server-app":{"algorithm":"RS256","mode":"exchange","keyMaterial":"privateKey","ttlSeconds":300,"tokenUrlPath":"https://oauth2.googleapis.com/token","supportScopes":true,"supportInstallationId":false,"supportSubject":true,"tokenBodyMapping":"{\n \"grant_type\": \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n \"assertion\": jwt\n }","tokenHeadersMapping":"{\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n }"}}},"conditions":[{"id":"block-sensitive-drive-files","name":"Block sensitive Drive files","description":"Before accessing a Drive file, Doc, Sheet or Slide deck, look up its applied Drive labels and block the call when one of the configured sensitive labels is present.","action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/listLabels","method":"GET","mapping":{"params":"{ \"fileId\": [\n arguments.fileId,\n arguments.spreadsheetId,\n arguments.documentId,\n arguments.presentationId\n ][0] }"}},"mapping":"$count(response.labels[id in $$.variables.sensitiveLabelIds]) > 0","message":"This file is labeled as sensitive and cannot be accessed by this tool.","variables":[{"key":"sensitiveLabelIds","label":"Sensitive labels","description":"Files carrying any of the labels you select are blocked from this tool.","type":"string[]","required":true,"placeholder":"labelId1, labelId2","options":{"action":{"path":"https://drivelabels.googleapis.com/v2/labels","method":"GET","mapping":{"query":"{ \"view\": \"LABEL_VIEW_FULL\", \"pageSize\": \"200\" }"}},"mapping":"response.labels.{ \"value\": $substringAfter(name, \"labels/\"), \"label\": properties.title }","searchable":true}}],"appliesTo":["google-drive-get-file-metadata","google-drive-copy-file","google-drive-convert-to-google-doc","move-file","share-file","comment","get-comments","get-sheet-values","update-sheet-values","get-spreadsheet-metadata","add-sheet","sheets-batch-update","get-doc","insert-text-doc","replace-all-text-doc","add-image-doc","docs-batch-update","get-presentation","get-presentation-texts","get-slide-thumbnail","insert-slide","insert-text-slide","replace-all-text-presentation","create-image-slide","slides-batch-update"]},{"id":"block-sensitive-drive-field-values","name":"Block Drive files by label field value","description":"Before accessing a Drive file, Doc, Sheet or Slide deck, look up its applied Drive labels and block the call when a selection field on one of those labels is set to a value you flagged as sensitive (e.g. Confidentiality = Confidential).","action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/listLabels","method":"GET","mapping":{"params":"{ \"fileId\": [\n arguments.fileId,\n arguments.spreadsheetId,\n arguments.documentId,\n arguments.presentationId\n ][0] }"}},"mapping":"$count((response.labels.fields.*[valueType = \"selection\"].($fid := id; selection.($fid & \":\" & $)))[$ in $$.variables.blockedFieldValues]) > 0","message":"This file carries a label value that is restricted for this tool.","variables":[{"key":"blockedFieldValues","label":"Sensitive label values","description":"Pick label field values (e.g. Confidentiality: Confidential). Files whose labels are set to any selected value are blocked from this tool.","type":"string[]","required":true,"placeholder":"fieldId:choiceId","options":{"action":{"path":"https://drivelabels.googleapis.com/v2/labels","method":"GET","mapping":{"query":"{ \"view\": \"LABEL_VIEW_FULL\", \"pageSize\": \"200\" }"}},"mapping":"response.labels.($labelTitle := properties.title; fields[selectionOptions].($fieldName := properties.displayName; $fieldId := id; selectionOptions.choices.{ \"value\": $fieldId & \":\" & id, \"label\": $labelTitle & \" › \" & $fieldName & \": \" & properties.displayName }))","searchable":true}}],"appliesTo":["google-drive-get-file-metadata","google-drive-copy-file","google-drive-convert-to-google-doc","move-file","share-file","comment","get-comments","get-sheet-values","update-sheet-values","get-spreadsheet-metadata","add-sheet","sheets-batch-update","get-doc","insert-text-doc","replace-all-text-doc","add-image-doc","docs-batch-update","get-presentation","get-presentation-texts","get-slide-thumbnail","insert-slide","insert-text-slide","replace-all-text-presentation","create-image-slide","slides-batch-update"]}],"tools":[{"name":"Google Drive Get File Metadata","description":"Read metadata of a file from Google Drive","slug":"google-drive-get-file-metadata","ai_risk":{"level":"low","score":1,"reasoning":"This tool reads metadata of a file from Google Drive, making it low risk as it does not modify any data.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"fileId":{"type":"string","description":"ID of the file to read"}},"required":["fileId"]},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}","method":"GET","mapping":{"params":"{ \n \"fileId\": arguments.fileId \n }","query":"{\n \"fields\": \"webContentLink\"\n }"}}},{"name":"Google Drive Search","description":"Search for files in Google Drive","slug":"google-drive-search","ai_risk":{"level":"low","score":1,"reasoning":"This tool searches for files in Google Drive, which is a read-only operation and poses minimal risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query. Filter files using <field> <operator> <value> syntax; supports fields like name, mimeType, modifiedTime, logical operators, and RFC 3339 date values. Always exclude the files in trash. Example: name contains 'test' and modifiedTime > '2024-01-01T00:00:00Z' and trashed = false"},"pageToken":{"type":"string","description":"Token for the next page of results"},"pageSize":{"type":"number","description":"Number of results per page (max 100)","default":10},"supportsAllDrives":{"type":"boolean","description":"Whether to support all drives","default":true},"corpora":{"type":"string","description":"Bodies of items to search. Options: 'user' (My Drive), 'drive' (specific shared drive - requires driveId), 'domain' (domain), 'allDrives' (all drives). Default: 'user'"},"includeItemsFromAllDrives":{"type":"boolean","description":"Whether to include items from all drives. Must be true if corpora is 'allDrives' or if searching shared drives."},"driveId":{"type":"string","description":"ID of the shared drive to search. Required when corpora is 'drive'."},"fields":{"type":"string","description":"Fields to return. Example: 'nextPageToken, files(id, name, driveId, parents)'. Default returns: id, name, mimeType, modifiedTime, size, webViewLink"}},"required":["query"]},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files","method":"GET","mapping":{"query":"{\n \"q\": arguments.query,\n \"pageToken\": arguments.pageToken,\n \"pageSize\": arguments.pageSize,\n \"orderBy\": \"modifiedTime desc\",\n \"supportsAllDrives\": $exists(arguments.supportsAllDrives) ? arguments.supportsAllDrives : true,\n \"corpora\": arguments.corpora,\n \"includeItemsFromAllDrives\": arguments.includeItemsFromAllDrives,\n \"driveId\": arguments.driveId,\n \"fields\": $exists(arguments.fields) ? arguments.fields : \"nextPageToken, files(id, name, mimeType, modifiedTime, size, webViewLink)\"\n }"}}},{"name":"Google Drive Copy File","description":"Copy a file in Google Drive. Useful for duplicating templates before filling in content.","slug":"google-drive-copy-file","ai_risk":{"level":"low","score":4,"reasoning":"This tool copies a file in Google Drive, which involves creating a new file but does not modify existing data, thus it is medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["fileId"],"properties":{"fileId":{"type":"string","description":"ID of the file to copy"},"name":{"type":"string","description":"Name for the copy. Defaults to 'Copy of <original name>'."},"destinationFolderId":{"type":"string","description":"ID of the folder to place the copy in. Defaults to the same folder as the original."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/copy","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{ \"supportsAllDrives\": true }","body":"{\n \"name\": arguments.name,\n \"parents\": $exists(arguments.destinationFolderId) ? [arguments.destinationFolderId] : undefined\n }"}}},{"name":"Google Drive Convert File to Google Doc","description":"Converts a non-native Google file (e.g. PDF, DOCX, RTF, ODT, TXT, HTML) in Google Drive to a native Google Doc so its text content can then be read. PDFs are converted using OCR. Returns the new Google Doc's id and metadata. To read the text afterwards, call 'Get Document' (slug: get-doc) with the returned id and onlyContent=true.","slug":"google-drive-convert-to-google-doc","ai_risk":{"level":"low","score":4,"reasoning":"This tool converts files to Google Docs format, creating a new document but not altering the original, making it medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["fileId"],"properties":{"fileId":{"type":"string","description":"ID of the source file to convert (e.g. a PDF or DOCX file in Drive)."},"name":{"type":"string","description":"Name for the converted Google Doc. Defaults to 'Copy of <original name>'."},"destinationFolderId":{"type":"string","description":"ID of the folder to place the converted Google Doc in. Defaults to the same folder as the original."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/copy","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{ \"supportsAllDrives\": true }","body":"{\n \"name\": arguments.name,\n \"mimeType\": \"application/vnd.google-apps.document\",\n \"parents\": $exists(arguments.destinationFolderId) ? [arguments.destinationFolderId] : undefined\n }"}}},{"name":"Google Drive Upload File","description":"Upload a file to Google Drive and get its URL. Useful for uploading images to then add to presentations.","slug":"google-drive-upload-file","ai_risk":{"level":"low","score":4,"reasoning":"This tool uploads a file to Google Drive, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["fileName","mimeType","data"],"properties":{"fileName":{"type":"string","description":"Name for the uploaded file (e.g. 'image.png')"},"mimeType":{"type":"string","description":"MIME type of the file (e.g. 'image/png', 'image/jpeg')"},"data":{"type":"string","description":"Base64-encoded file content"},"folderId":{"type":"string","description":"ID of the Google Drive folder to upload into. Defaults to root."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/upload/drive/v3/files","method":"POST","mapping":{"query":"{ \"uploadType\": \"multipart\", \"supportsAllDrives\": true, \"fields\": \"id,webContentLink,webViewLink\" }","headers":"{ \"Content-Type\": \"multipart/related\" }","body":"{\n \"metadata\": {\n \"name\": arguments.fileName,\n \"parents\": $exists(arguments.folderId) ? [arguments.folderId] : undefined\n },\n \"file\": {\n \"data\": arguments.data,\n \"mimeType\": arguments.mimeType,\n \"filename\": arguments.fileName\n }\n }"}},"requiredScopes":["https://www.googleapis.com/auth/drive.file"]},{"name":"Create Google Sheet","description":"Creates a new Google Sheet with the specified title","slug":"create-google-sheet","ai_risk":{"level":"low","score":4,"reasoning":"This tool creates a new Google Sheet, which is a standard write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Title of the new spreadsheet"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets","method":"POST","mapping":{"body":"{ \n \"properties\": { \n \"title\": arguments.title \n } \n }"}}},{"name":"Get Sheet Values","description":"Retrieves values from a specified range in a Google Sheet","slug":"get-sheet-values","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves values from a specified range in a Google Sheet, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","range"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"range":{"type":"string","description":"The A1 notation of the range to retrieve values from"},"majorDimension":{"type":"string","enum":["ROWS","COLUMNS"],"default":"ROWS","description":"The major dimension of the values"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}","method":"GET","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId, \n \"range\": arguments.range \n }","query":"{ \n \"majorDimension\": arguments.majorDimension\n }"}}},{"name":"Update Sheet Values","description":"Updates values in a specified range of a Google Sheet","slug":"update-sheet-values","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates values in a specified range of a Google Sheet, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","range","values"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"range":{"type":"string","description":"The A1 notation of the range to update"},"values":{"type":"array","items":{"type":"array","items":{"type":["string","number","boolean","null"],"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"description":"The data to write to the sheet (2D array)"},"valueInputOption":{"type":"string","enum":["RAW","USER_ENTERED"],"default":"USER_ENTERED","description":"How to interpret the input data"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}","method":"PUT","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId, \n \"range\": arguments.range \n }","query":"{ \n \"valueInputOption\": arguments.valueInputOption ? arguments.valueInputOption : \"USER_ENTERED\"\n }","body":"{ \n \"values\": arguments.values\n }"}}},{"name":"Get Spreadsheet Metadata","description":"Retrieves metadata of a Google Sheet including sheet tabs (properties, titles, sheet IDs, etc.)","slug":"get-spreadsheet-metadata","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves metadata of a Google Sheet, making it low risk as it does not modify any data.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["spreadsheetId"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"fields":{"type":"string","description":"Fields to include in the response. Default includes sheets (tabs) metadata. See Google Sheets API documentation for field options.","default":"properties.title,sheets.properties"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}","method":"GET","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId\n }","query":"{ \n \"fields\": arguments.fields ? arguments.fields : \"properties.title,sheets.properties\"\n }"}}},{"name":"Add Sheet","description":"Adds a new sheet to an existing spreadsheet","slug":"add-sheet","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a new sheet to an existing spreadsheet, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","title"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"title":{"type":"string","description":"Title of the new sheet"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate","method":"POST","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId\n }","body":"{ \n \"requests\": [\n { \n \"addSheet\": { \n \"properties\": { \n \"title\": arguments.title \n } \n }\n } \n ] \n }"}}},{"name":"Sheets Batch Update","description":"Update a spreadsheet with multiple requests including formatting, conditional formatting, styles, and other operations.","slug":"sheets-batch-update","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates a spreadsheet with multiple requests, which can modify data and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","requests"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"requests":{"type":"array","description":"The requests to perform on the spreadsheet as defined in the Google Sheets API: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#Request","items":{"type":"object"}}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate","method":"POST","mapping":{"params":"{ \"spreadsheetId\": arguments.spreadsheetId }","body":"{ \"requests\": arguments.requests }"}}},{"name":"Get Document","description":"Retrieve a Google Doc by ID. Only works with native Google Docs. For PDF or DOCX files, first convert them using 'Google Drive Convert File to Google Doc' (slug: google-drive-convert-to-google-doc), then call this tool with the returned id.","slug":"get-doc","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a Google Doc by ID, making it low risk as it is a read-only operation.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document to retrieve"},"onlyContent":{"type":"boolean","default":false,"description":"When true, returns only the concatenated text content; otherwise returns the full Google Docs API response."},"includeTabsContent":{"type":"boolean","default":true,"description":"Include all tabs in the document (default: true). Set to false to only retrieve the default tab."},"suggestionsViewMode":{"type":"string","enum":["DEFAULT_FOR_CURRENT_ACCESS","SUGGESTIONS_INLINE","PREVIEW_SUGGESTIONS_ACCEPTED","PREVIEW_WITHOUT_SUGGESTIONS"],"description":"How pending suggestions are represented. SUGGESTIONS_INLINE returns suggested insertions and deletions inline and is the only mode whose indexes are valid for a follow-up batch update. PREVIEW_SUGGESTIONS_ACCEPTED and PREVIEW_WITHOUT_SUGGESTIONS return the document as if every suggestion were accepted or rejected. Omit to use the default for the current user's access."}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}","method":"GET","mapping":{"params":"{ \"documentId\": arguments.documentId }","query":"{\n \"includeTabsContent\": $exists(arguments.includeTabsContent) ? arguments.includeTabsContent : true,\n \"suggestionsViewMode\": arguments.suggestionsViewMode\n }","response":"arguments.onlyContent ? $join(response.tabs[].documentTab.body.content.paragraph.elements.textRun.content) : response"}},"requiredScopes":["https://www.googleapis.com/auth/documents.readonly"]},{"name":"Create New Doc","description":"Create a new blank Google Doc.","slug":"create-new-doc","ai_risk":{"level":"low","score":4,"reasoning":"This tool creates a new blank Google Doc, which is a standard write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Title of the new spreadsheet"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents","method":"POST","mapping":{"body":"{ \n \"title\": arguments.title \n }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Insert Text to Doc","description":"Insert text into a Google Doc.","slug":"insert-text-doc","ai_risk":{"level":"medium","score":5,"reasoning":"This tool inserts text into a Google Doc, which modifies the document and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","text","index"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"text":{"type":"string","description":"The text to insert"},"index":{"type":"number","description":"The position index for insertion"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"insertText\": { \"location\": { \"index\": arguments.index }, \"text\": arguments.text } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Replace All Text in Doc","description":"Replace all instances of a text in a document.","slug":"replace-all-text-doc","ai_risk":{"level":"medium","score":5,"reasoning":"This tool replaces all instances of text in a document, which modifies the content and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId","findText","replaceText"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"findText":{"type":"string","description":"The text to find"},"replaceText":{"type":"string","description":"The text to replace with"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"replaceAllText\": { \"containsText\": { \"text\": arguments.findText, \"matchCase\": true }, \"replaceText\": arguments.replaceText } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Add Image","description":"Add an image to a document.","slug":"add-image-doc","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds an image to a document, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","imageUrl","index"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"imageUrl":{"type":"string","description":"The URL of the image to insert"},"index":{"type":"number","description":"The position index for insertion"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"insertInlineImage\": { \"location\": { \"index\": arguments.index }, \"uri\": arguments.imageUrl } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Get Presentation","description":"Retrieve a Google Slides presentation by ID.","slug":"get-presentation","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a Google Slides presentation by ID, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation to retrieve"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}","method":"GET","mapping":{"params":"{ \"presentationId\": arguments.presentationId }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations.readonly"]},{"name":"Create New Presentation","description":"Create a new blank presentation.","slug":"create-new-presentation","ai_risk":{"level":"low","score":4,"reasoning":"This tool creates a new blank presentation, which is a standard write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Title of the new presentation"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations","method":"POST","mapping":{"body":"{ \n \"title\": arguments.title \n }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Insert Slide","description":"Add a new slide to the presentation.","slug":"insert-slide","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a new slide to the presentation, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"insertionIndex":{"type":"number","description":"The position where the slide will be inserted"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"createSlide\": { \"insertionIndex\": arguments.insertionIndex } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Insert Text to Slide","description":"Insert text into a slide.","slug":"insert-text-slide","ai_risk":{"level":"medium","score":5,"reasoning":"This tool inserts text into a slide, which modifies the presentation and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId","objectId","text"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"objectId":{"type":"string","description":"The ID of the text box to insert text into"},"text":{"type":"string","description":"The text to insert"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"insertText\": { \"objectId\": arguments.objectId, \"text\": arguments.text } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Replace All Text in Presentation","description":"Replace all instances of a text in a presentation.","slug":"replace-all-text-presentation","ai_risk":{"level":"medium","score":5,"reasoning":"This tool replaces all instances of text in a presentation, which modifies the content and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId","findText","replaceText"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"findText":{"type":"string","description":"The text to find"},"replaceText":{"type":"string","description":"The text to replace with"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"replaceAllText\": { \"containsText\": { \"text\": arguments.findText, \"matchCase\": true }, \"replaceText\": arguments.replaceText } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Create Image","description":"Add an image to a slide.","slug":"create-image-slide","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds an image to a slide, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId","imageUrl","objectId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"imageUrl":{"type":"string","description":"The URL of the image to add"},"objectId":{"type":"string","description":"The ID of the object to attach the image to"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"createImage\": { \"url\": arguments.imageUrl, \"objectId\": arguments.objectId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Slides Batch Update","description":"Update a presentation with multiple requests.","slug":"slides-batch-update","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates a presentation with multiple requests, which can modify data and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId","requests"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"requests":{"type":"array","description":"The requests to perform on the presentation as defined in the Google Slides API: https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#Request","items":{"type":"object"}}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": arguments.requests }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Docs Batch Update","description":"Update a document with multiple requests.","slug":"docs-batch-update","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates a document with multiple requests, which modifies data and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","requests"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"requests":{"type":"array","description":"The requests to perform on the document as defined in the Google Docs API: https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#Request","items":{"type":"object"}}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": arguments.requests }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Get Doc Suggestions","description":"List the pending suggestions in a Google Doc. Returns each suggestionId, whether it is an INSERTION, DELETION or STYLE change, the affected text, its index range, and the tabId of the tab it lives in. Reads the document with SUGGESTIONS_INLINE; note that indexes are scoped to their tab, so use the tabId alongside them.","slug":"get-doc-suggestions","ai_risk":{"level":"low","score":1,"reasoning":"This tool reads the pending suggestions on a Google Doc, making it low risk as it is a read-only operation.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document to read suggestions from"},"includeTabsContent":{"type":"boolean","default":true,"description":"Include all tabs in the document (default: true). Set to false to only read suggestions on the default tab."}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}","method":"GET","mapping":{"params":"{ \"documentId\": arguments.documentId }","query":"{\n \"includeTabsContent\": $exists(arguments.includeTabsContent) ? arguments.includeTabsContent : true,\n \"suggestionsViewMode\": \"SUGGESTIONS_INLINE\"\n }","response":"(\n $scopes := $exists(response.tabs)\n ? [response.**[$exists(documentTab)]].{ \"tabId\": tabProperties.tabId, \"root\": documentTab }\n : [{ \"root\": response }];\n $suggestions := $scopes.(\n $tabId := tabId;\n root.**[$exists(textRun) and ($exists(textRun.suggestedInsertionIds) or $exists(textRun.suggestedDeletionIds) or $exists(textRun.suggestedTextStyleChanges))].(\n $el := $;\n [\n $el.textRun.suggestedInsertionIds.{\n \"suggestionId\": $,\n \"type\": \"INSERTION\",\n \"text\": $el.textRun.content,\n \"tabId\": $tabId,\n \"startIndex\": $el.startIndex,\n \"endIndex\": $el.endIndex\n },\n $el.textRun.suggestedDeletionIds.{\n \"suggestionId\": $,\n \"type\": \"DELETION\",\n \"text\": $el.textRun.content,\n \"tabId\": $tabId,\n \"startIndex\": $el.startIndex,\n \"endIndex\": $el.endIndex\n },\n $exists($el.textRun.suggestedTextStyleChanges) ? $each($el.textRun.suggestedTextStyleChanges, function($change, $suggestionId) {\n {\n \"suggestionId\": $suggestionId,\n \"type\": \"STYLE\",\n \"text\": $el.textRun.content,\n \"tabId\": $tabId,\n \"startIndex\": $el.startIndex,\n \"endIndex\": $el.endIndex,\n \"suggestedStyleFields\": [$keys($change.textStyleSuggestionState)[$lookup($change.textStyleSuggestionState, $)]]\n }\n }) : undefined\n ]\n )\n );\n {\n \"documentId\": response.documentId,\n \"title\": response.title,\n \"suggestionCount\": $count($distinct($suggestions.suggestionId)),\n \"suggestionIds\": [$distinct($suggestions.suggestionId)],\n \"suggestions\": [$suggestions]\n }\n )"}},"requiredScopes":["https://www.googleapis.com/auth/documents.readonly"]},{"name":"Docs Batch Update as Suggestions","description":"Apply Google Docs batch update requests as suggestions (deferred edits awaiting approval) instead of direct edits. Same requests as 'Docs Batch Update' (slug: docs-batch-update), but sent with writeControl.writeMode=SUGGEST. Requires the Google Workspace Developer Preview Program; other tenants get an error. AddDocumentTab, CreateNamedRange, DeleteFooter, DeleteHeader, DeleteNamedRange, DeleteTab, UpdateDocumentTabProperties and UpdateTableColumnProperties cannot be suggested, and UpdateDocumentStyle cannot suggest documentFormat, useEvenPageHeaderFooter or useFirstPageHeaderFooter. The response reports the ids of the suggestions this created under suggestionResponses[].createdSuggestionIds, which is how you get a suggestionId to later accept or reject without re-reading the document. Check commentUpdateState too: the text edits can commit while the suggestion itself fails to save.","slug":"docs-batch-update-suggest","labels":["developer-preview"],"ai_risk":{"level":"low","score":3,"reasoning":"This tool writes document edits as suggestions rather than direct changes, so a human must accept them before they take effect, which keeps the risk low.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","requests"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"requests":{"type":"array","description":"The requests to suggest on the document as defined in the Google Docs API: https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#Request. Index-based requests should use indexes read with suggestionsViewMode=SUGGESTIONS_INLINE.","items":{"type":"object"}}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": arguments.requests, \"writeControl\": { \"writeMode\": \"SUGGEST\" } }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Accept Doc Suggestion","description":"Accept a suggestion thread in a Google Doc, applying its pending changes to the document. Requires edit access, and the Google Workspace Developer Preview Program. Get the suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions).","slug":"accept-doc-suggestion","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool commits a pending suggestion into the document, which permanently modifies content and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","suggestionId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to accept. Obtain it from 'Get Doc Suggestions' (slug: get-doc-suggestions)."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"acceptSuggestion\": { \"suggestionId\": arguments.suggestionId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Reject Doc Suggestion","description":"Reject a suggestion thread in a Google Doc, discarding its pending changes. Requires edit access on the document or authorship of the suggestion, and the Google Workspace Developer Preview Program. Get the suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions).","slug":"reject-doc-suggestion","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool discards a collaborator's proposed changes, which destroys pending work and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","suggestionId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to reject. Obtain it from 'Get Doc Suggestions' (slug: get-doc-suggestions)."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"rejectSuggestion\": { \"suggestionId\": arguments.suggestionId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Delete Doc Suggestion","description":"Delete a suggestion thread in a Google Doc. Only the author of the suggestion can delete it. Requires the Google Workspace Developer Preview Program. Get the suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions).","slug":"delete-doc-suggestion","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool permanently removes a suggestion thread and its discussion, which destroys data and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","suggestionId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to delete. Obtain it from 'Get Doc Suggestions' (slug: get-doc-suggestions)."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"deleteSuggestion\": { \"suggestionId\": arguments.suggestionId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Insert Doc Comment","description":"Add a comment thread to a Google Doc, anchored to a text range and optionally assigned to someone. Unlike 'Comment' (slug: comment), which goes through the Drive API, this anchors by document index and supports assignment. Requires the Google Workspace Developer Preview Program. Read indexes with suggestionsViewMode=SUGGESTIONS_INLINE. Check commentUpdateState in the response, since the comment can fail to save even on a 200.","slug":"insert-doc-comment","labels":["developer-preview"],"ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a comment thread to a document, which is a write operation that does not alter document content and poses low risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","content","startIndex","endIndex"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"content":{"type":"string","description":"The plain text content of the comment"},"startIndex":{"type":"number","description":"Start index of the range the comment is anchored to, inclusive"},"endIndex":{"type":"number","description":"End index of the range the comment is anchored to, exclusive"},"assigneeEmailAddress":{"type":"string","description":"Optional. Email address of the person to assign the comment to. Omit for an unassigned comment."},"tabId":{"type":"string","description":"Optional. The tab the range belongs to. Required to anchor a comment in a document with multiple tabs, since indexes are scoped per tab. Omit to use the first tab. 'Get Doc Suggestions' (slug: get-doc-suggestions) reports a tabId per suggestion."},"segmentId":{"type":"string","description":"Optional. The header, footer or footnote the range belongs to. Omit to anchor in the document body."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"insertComment\": {\n \"content\": arguments.content,\n \"assigneeEmailAddress\": arguments.assigneeEmailAddress,\n \"range\": {\n \"startIndex\": arguments.startIndex,\n \"endIndex\": arguments.endIndex,\n \"tabId\": arguments.tabId,\n \"segmentId\": arguments.segmentId\n }\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Add Doc Comment Reply","description":"Reply to a comment or suggestion thread in a Google Doc, and optionally resolve it, reopen it, or reassign it. Requires the Google Workspace Developer Preview Program. Get a commentId from 'Get Comments' (slug: get-comments) or a suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions). Check commentUpdateState in the response, since the reply can fail to save even on a 200.","slug":"add-doc-comment-reply","labels":["developer-preview"],"ai_risk":{"level":"low","score":4,"reasoning":"This tool replies to or resolves a comment thread, which is a write operation that does not alter document content and poses low risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread to reply to. Provide exactly one of commentId or suggestionId."},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to reply to. Provide exactly one of commentId or suggestionId."},"content":{"type":"string","description":"The plain text content of the reply. Optional when the reply only carries a commentAction, for example resolving a thread."},"commentAction":{"type":"string","enum":["RESOLVE","REOPEN"],"description":"Optional. Resolve or reopen the thread as part of this reply."},"assigneeEmail":{"type":"string","description":"Optional. Email address to reassign the thread to as part of this reply."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"addCommentReply\": {\n \"commentId\": arguments.commentId,\n \"suggestionId\": arguments.suggestionId,\n \"post\": {\n \"content\": arguments.content,\n \"commentAction\": arguments.commentAction,\n \"assigneeEmail\": arguments.assigneeEmail\n }\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Update Doc Comment Post","description":"Edit the text of a comment or reply you authored in a Google Doc. The head post of a suggestion thread cannot be edited, because it is generated by the suggest-mode edit itself. Requires the Google Workspace Developer Preview Program.","slug":"update-doc-comment-post","labels":["developer-preview"],"ai_risk":{"level":"low","score":4,"reasoning":"This tool edits the text of a comment the caller authored, which is a write operation that does not alter document content and poses low risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId","postId","content"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread the post belongs to. Provide exactly one of commentId or suggestionId."},"suggestionId":{"type":"string","description":"The ID of the suggestion thread the post belongs to. Provide exactly one of commentId or suggestionId."},"postId":{"type":"string","description":"The ID of the post to edit"},"content":{"type":"string","description":"The new plain text content of the post"}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"updateCommentPost\": {\n \"commentId\": arguments.commentId,\n \"suggestionId\": arguments.suggestionId,\n \"postId\": arguments.postId,\n \"content\": arguments.content\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Delete Doc Comment","description":"Delete an entire comment thread from a Google Doc. Only the author of the thread's head post can delete it. Requires the Google Workspace Developer Preview Program.","slug":"delete-doc-comment","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool permanently removes a comment thread and all of its replies, which destroys data and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","commentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread to delete"}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"deleteComment\": { \"commentId\": arguments.commentId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Delete Doc Comment Reply","description":"Delete a single reply from a comment or suggestion thread in a Google Doc. Only replies you authored can be deleted, and replies that carry an action or an assignee cannot be deleted at all. Requires the Google Workspace Developer Preview Program.","slug":"delete-doc-comment-reply","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool permanently removes a reply from a comment thread, which destroys data and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","postId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread the reply belongs to. Provide exactly one of commentId or suggestionId."},"suggestionId":{"type":"string","description":"The ID of the suggestion thread the reply belongs to. Provide exactly one of commentId or suggestionId."},"postId":{"type":"string","description":"The ID of the reply post to delete"}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"deleteCommentReply\": {\n \"commentId\": arguments.commentId,\n \"suggestionId\": arguments.suggestionId,\n \"postId\": arguments.postId\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Move File","description":"Move a file from one location to another.","slug":"move-file","ai_risk":{"level":"medium","score":5,"reasoning":"This tool moves a file from one location to another, which modifies the file's location and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["fileId","newParentId"],"properties":{"fileId":{"type":"string","description":"The ID of the file to move"},"newParentId":{"type":"string","description":"The ID of the folder to move the file into. Use 'root' to move the file to the root directory."},"oldParentId":{"type":"string","description":"The ID of the current parent folder to remove the file from. Required if the file currently resides inside another folder."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}","method":"PATCH","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"addParents\": arguments.newParentId,\n \"removeParents\": arguments.oldParentId,\n \"supportsAllDrives\": true\n }"}}},{"name":"Comment","description":"Comment on a file.","slug":"comment","ai_risk":{"level":"low","score":4,"reasoning":"This tool allows commenting on a file, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["fileId","comment"],"properties":{"fileId":{"type":"string","description":"The ID of the file to comment on"},"comment":{"type":"string","description":"The comment to add"},"anchor":{"type":"string","description":"Optional. The anchor to comment on. For example 'slides/g123456abcde_0_5' or 'kix.12345abcde'"}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/comments?fields=*","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","body":"{ \"content\": arguments.comment, \"anchor\": arguments.anchor }"}}},{"name":"Get Comments","description":"Get all comments on a file.","slug":"get-comments","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves all comments on a file, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["fileId"],"properties":{"fileId":{"type":"string","description":"The ID of the file to get comments from"},"pageToken":{"type":"string","description":"Token for the next page of results"},"pageSize":{"type":"number","description":"Number of results per page (max 100)","default":20}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/comments","method":"GET","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"fields\": \"*\",\n \"pageToken\": arguments.pageToken,\n \"pageSize\": arguments.pageSize\n }"}}},{"name":"Reply to Comment","description":"Reply to an existing comment thread on a Drive file (Google Docs, Slides, Sheets). Use 'Get Comments' (slug: get-comments) first to obtain the commentId of the thread you want to reply to.","slug":"reply-to-comment","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a reply to an existing comment thread, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["fileId","commentId","content"],"properties":{"fileId":{"type":"string","description":"The ID of the file the comment belongs to"},"commentId":{"type":"string","description":"The ID of the comment (thread) to reply to. Obtain it from 'Get Comments' (slug: get-comments)."},"content":{"type":"string","description":"The plain text content of the reply"}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/comments/{commentId}/replies?fields=*","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId, \"commentId\": arguments.commentId }","body":"{ \"content\": arguments.content }"}}},{"name":"Share File","description":"Share a file with a user.","slug":"share-file","ai_risk":{"level":"medium","score":5,"reasoning":"This tool shares a file with a user, which modifies access permissions and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"fileId":{"type":"string","description":"The ID of the file to share"},"role":{"type":"string","description":"The role to assign to the user","enum":["reader","commenter","writer"]},"type":{"type":"string","description":"The type of the user to share with","enum":["user","group","domain","anyone"]},"email":{"type":"string","description":"The email of the user to share with"},"sendNotificationEmail":{"type":"boolean","description":"Whether to send a notification email to the user","default":false}},"required":["fileId","email","role"]},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/permissions","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","body":"{ \"role\": arguments.role, \"type\": arguments.type, \"emailAddress\": arguments.email, \"sendNotificationEmail\": arguments.sendNotificationEmail }"}}},{"name":"Get Slide Thumbnail","description":"Get a thumbnail of a slide.","slug":"get-slide-thumbnail","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a thumbnail of a slide, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId","slideId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"slideId":{"type":"string","description":"The ID of the slide"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}/pages/{pageId}/thumbnail","method":"GET","mapping":{"params":"{ \"presentationId\": arguments.presentationId, \"pageId\": arguments.slideId }"}}},{"name":"Get Presentation Texts","description":"Retrieve the text content from all slides in a Google Slides presentation using the presentation's ID. If the presentation ID is not correct, use google-drive-search to find a file with the given presentation ID as the name.","slug":"get-presentation-texts","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves the text content from all slides in a presentation, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation to retrieve"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}","method":"GET","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","query":"{ \"fields\": \"slides.objectId,slides.pageElements.shape.text.textElements.textRun.content\" }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations.readonly"]},{"name":"Export Google Doc","description":"Export (download) a native Google Doc in another file format. Returns the file as a downloadable resource (base64-encoded). Supported formats: docx (Word), pdf, html, md (Markdown). Only works with native Google Docs and files up to 10 MB.","slug":"export-google-doc","ai_risk":{"level":"low","score":1,"reasoning":"This tool exports/downloads a Google Doc in another format without modifying it, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["fileId","format"],"properties":{"fileId":{"type":"string","description":"The ID of the Google Doc to export"},"format":{"type":"string","enum":["docx","pdf","html","md"],"description":"Target format: 'docx' (Word), 'pdf', 'html', or 'md' (Markdown)."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/export","method":"GET","responseType":"arraybuffer","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"mimeType\": $lookup({\n \"docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"pdf\": \"application/pdf\",\n \"html\": \"text/html\",\n \"md\": \"text/markdown\"\n }, arguments.format)\n }"}},"requiredScopes":["https://www.googleapis.com/auth/drive.readonly"]},{"name":"Export Google Slides","description":"Export (download) a native Google Slides presentation in another file format. Returns the file as a downloadable resource (base64-encoded). Supported formats: pptx (PowerPoint), pdf. Only works with native Google Slides and files up to 10 MB.","slug":"export-google-slides","ai_risk":{"level":"low","score":1,"reasoning":"This tool exports/downloads a Google Slides presentation in another format without modifying it, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["fileId","format"],"properties":{"fileId":{"type":"string","description":"The ID of the Google Slides presentation to export"},"format":{"type":"string","enum":["pptx","pdf"],"description":"Target format: 'pptx' (PowerPoint) or 'pdf'."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/export","method":"GET","responseType":"arraybuffer","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"mimeType\": $lookup({\n \"pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \"pdf\": \"application/pdf\"\n }, arguments.format)\n }"}},"requiredScopes":["https://www.googleapis.com/auth/drive.readonly"]},{"name":"List Task Lists","description":"List the authenticated user's Google Tasks task lists. Use the returned list id as 'tasklist' in the other task tools.","slug":"list-tasklists","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists the user's Google Tasks task lists, which is a read-only operation and poses minimal risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"maxResults":{"type":"number","description":"Maximum number of task lists to return (max 100)","default":100},"pageToken":{"type":"string","description":"Token for the next page of results"}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/users/@me/lists","method":"GET","mapping":{"query":"{\n \"maxResults\": $exists(arguments.maxResults) ? arguments.maxResults : 100,\n \"pageToken\": arguments.pageToken\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"List Tasks","description":"List tasks in a Google Tasks task list. To find overdue tasks, set dueMax to the start of today in the user's timezone (e.g. '2026-10-01T00:00:00Z') and showCompleted to false.","slug":"list-tasks","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists tasks in a Google Tasks task list, which is a read-only operation and poses minimal risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"tasklist":{"type":"string","description":"ID of the task list. Defaults to '@default', the user's default task list."},"dueMin":{"type":"string","description":"Lower bound for a task's due date, as an RFC 3339 timestamp (e.g. '2026-10-01T00:00:00Z')."},"dueMax":{"type":"string","description":"Upper bound for a task's due date, as an RFC 3339 timestamp (e.g. '2026-10-01T00:00:00Z')."},"showCompleted":{"type":"boolean","description":"Whether to include completed tasks. Set to false to return only open tasks.","default":true},"showHidden":{"type":"boolean","description":"Whether to include hidden tasks (completed tasks cleared from the list view).","default":false},"updatedMin":{"type":"string","description":"Only return tasks updated after this RFC 3339 timestamp."},"maxResults":{"type":"number","description":"Maximum number of tasks to return (max 100)","default":100},"pageToken":{"type":"string","description":"Token for the next page of results"}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks","method":"GET","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\"\n }","query":"{\n \"dueMin\": arguments.dueMin,\n \"dueMax\": arguments.dueMax,\n \"showCompleted\": arguments.showCompleted,\n \"showHidden\": arguments.showHidden,\n \"updatedMin\": arguments.updatedMin,\n \"maxResults\": $exists(arguments.maxResults) ? arguments.maxResults : 100,\n \"pageToken\": arguments.pageToken\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"Create Task","description":"Create a new task in a Google Tasks task list. Optionally nest it under a parent task or position it after a sibling task.","slug":"create-task","ai_risk":{"level":"low","score":3,"reasoning":"This tool creates a new task in the user's task list without modifying existing data, making it low risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["title"],"properties":{"tasklist":{"type":"string","description":"ID of the task list. Defaults to '@default', the user's default task list."},"title":{"type":"string","description":"Title of the task"},"notes":{"type":"string","description":"Notes describing the task"},"due":{"type":"string","description":"Due date as an RFC 3339 timestamp (e.g. '2026-10-05T00:00:00Z'). Google Tasks only stores the date; the time portion is discarded."},"status":{"type":"string","enum":["needsAction","completed"],"description":"Status of the task. Defaults to 'needsAction'."},"parent":{"type":"string","description":"ID of the parent task to create this task under as a subtask. Omit to create a top-level task."},"previous":{"type":"string","description":"ID of the sibling task to place this task after. Omit to place it first among its siblings."}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks","method":"POST","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\"\n }","query":"{\n \"parent\": arguments.parent,\n \"previous\": arguments.previous\n }","body":"{\n \"title\": arguments.title,\n \"notes\": arguments.notes,\n \"due\": arguments.due,\n \"status\": arguments.status\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"Update Task","description":"Update a task in a Google Tasks task list. Only the provided fields are changed. Set status to 'completed' to mark a task done, or 'needsAction' to reopen it.","slug":"update-task","ai_risk":{"level":"medium","score":4,"reasoning":"This tool modifies an existing task's title, notes, due date, or status, which changes user data and carries medium risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["task"],"properties":{"tasklist":{"type":"string","description":"ID of the task list containing the task. Defaults to '@default', the user's default task list."},"task":{"type":"string","description":"ID of the task to update"},"title":{"type":"string","description":"New title of the task"},"notes":{"type":"string","description":"New notes for the task"},"due":{"type":"string","description":"New due date as an RFC 3339 timestamp (e.g. '2026-10-05T00:00:00Z'). Google Tasks only stores the date; the time portion is discarded."},"status":{"type":"string","enum":["needsAction","completed"],"description":"New status of the task"}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks/{task}","method":"PATCH","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\",\n \"task\": arguments.task\n }","body":"{\n \"title\": arguments.title,\n \"notes\": arguments.notes,\n \"due\": arguments.due,\n \"status\": arguments.status\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"Delete Task","description":"Permanently delete a task from a Google Tasks task list.","slug":"delete-task","ai_risk":{"level":"medium","score":6,"reasoning":"This tool permanently deletes a task, which destroys user data and cannot be undone, carrying medium risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["task"],"properties":{"tasklist":{"type":"string","description":"ID of the task list containing the task. Defaults to '@default', the user's default task list."},"task":{"type":"string","description":"ID of the task to delete"}}},"enabled":false,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks/{task}","method":"DELETE","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\",\n \"task\": arguments.task\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]}]}}
|
|
1
|
+
{"id":"google-workspace","status":"active","internal_status":"tool-works","applications":["google-workspace"],"definition":{"display":{"name":"Google Workspace","description":"Google Workspace is a suite of productivity tools developed by Google.","icon":"google-drive.svg","website":"https://workspace.google.com/","category":"file-storage-document-management","docs_url":"https://docs.withwillow.ai/docs/mcp-servers/built-in/google-workspace"},"api":{"base_url":""},"auth":{"methods":{"oauth":{"authUrl":"https://accounts.google.com/o/oauth2/v2/auth","tokenUrl":"https://oauth2.googleapis.com/token","authInitUrlParams":{"access_type":"offline","prompt":"consent"},"scopes":["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/drive.appdata","https://www.googleapis.com/auth/drive.apps.readonly","https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive.meet.readonly","https://www.googleapis.com/auth/drive.metadata","https://www.googleapis.com/auth/drive.metadata.readonly","https://www.googleapis.com/auth/drive.photos.readonly","https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/drive.scripts","https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/documents.readonly","https://www.googleapis.com/auth/presentations","https://www.googleapis.com/auth/presentations.readonly","https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/spreadsheets.readonly","https://www.googleapis.com/auth/tasks","https://www.googleapis.com/auth/tasks.readonly","https://www.googleapis.com/auth/drive.labels.readonly"],"defaultScopes":["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/presentations","https://www.googleapis.com/auth/spreadsheets"],"scopeTemplates":[{"id":"read-only","name":"Read-only","description":"Search, read and export Drive files, Docs, Sheets and Slides, and read task lists. Can't create, edit, share or move anything.","scopes":["https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/documents.readonly","https://www.googleapis.com/auth/spreadsheets.readonly","https://www.googleapis.com/auth/presentations.readonly","https://www.googleapis.com/auth/tasks.readonly"]},{"id":"willow-files-only","name":"Files created by Willow","description":"Create and edit Docs, Sheets, Slides and Drive files, but only the ones Willow itself creates. The user's existing files stay invisible.","scopes":["https://www.googleapis.com/auth/drive.file"]},{"id":"full-access","name":"Full access","description":"Read, create, edit, share and move every Drive file, Doc, Sheet and Slide the user can access, and manage their tasks.","scopes":["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/presentations","https://www.googleapis.com/auth/tasks"]}],"codeExchangeConfig":{"modelCredentialsMapping":"{\n \"access_token\": access_token, \n \"expires_at\": $fromMillis($millis() + expires_in * 1000),\n \"refresh_token\": refresh_token,\n \"refresh_token_expires_at\": $fromMillis($millis() + refresh_token_expires_in * 1000),\n \"scope\": scope,\n \"token_type\": token_type\n }"}},"server-app":{"algorithm":"RS256","mode":"exchange","keyMaterial":"privateKey","ttlSeconds":300,"tokenUrlPath":"https://oauth2.googleapis.com/token","supportScopes":true,"supportInstallationId":false,"supportSubject":true,"tokenBodyMapping":"{\n \"grant_type\": \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n \"assertion\": jwt\n }","tokenHeadersMapping":"{\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n }"}}},"conditions":[{"id":"block-sensitive-drive-files","name":"Block sensitive Drive files","description":"Before accessing a Drive file, Doc, Sheet or Slide deck, look up its applied Drive labels and block the call when one of the configured sensitive labels is present.","action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/listLabels","method":"GET","mapping":{"params":"{ \"fileId\": [\n arguments.fileId,\n arguments.spreadsheetId,\n arguments.documentId,\n arguments.presentationId\n ][0] }"}},"mapping":"$count(response.labels[id in $$.variables.sensitiveLabelIds]) > 0","message":"This file is labeled as sensitive and cannot be accessed by this tool.","variables":[{"key":"sensitiveLabelIds","label":"Sensitive labels","description":"Files carrying any of the labels you select are blocked from this tool.","type":"string[]","required":true,"placeholder":"labelId1, labelId2","options":{"action":{"path":"https://drivelabels.googleapis.com/v2/labels","method":"GET","mapping":{"query":"{ \"view\": \"LABEL_VIEW_FULL\", \"pageSize\": \"200\" }"}},"mapping":"response.labels.{ \"value\": $substringAfter(name, \"labels/\"), \"label\": properties.title }","searchable":true}}],"appliesTo":["google-drive-get-file-metadata","google-drive-copy-file","google-drive-convert-to-google-doc","move-file","share-file","comment","get-comments","get-sheet-values","update-sheet-values","get-spreadsheet-metadata","add-sheet","sheets-batch-update","get-doc","insert-text-doc","replace-all-text-doc","add-image-doc","docs-batch-update","get-presentation","get-presentation-texts","get-slide-thumbnail","insert-slide","insert-text-slide","replace-all-text-presentation","create-image-slide","slides-batch-update"]},{"id":"block-sensitive-drive-field-values","name":"Block Drive files by label field value","description":"Before accessing a Drive file, Doc, Sheet or Slide deck, look up its applied Drive labels and block the call when a selection field on one of those labels is set to a value you flagged as sensitive (e.g. Confidentiality = Confidential).","action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/listLabels","method":"GET","mapping":{"params":"{ \"fileId\": [\n arguments.fileId,\n arguments.spreadsheetId,\n arguments.documentId,\n arguments.presentationId\n ][0] }"}},"mapping":"$count((response.labels.fields.*[valueType = \"selection\"].($fid := id; selection.($fid & \":\" & $)))[$ in $$.variables.blockedFieldValues]) > 0","message":"This file carries a label value that is restricted for this tool.","variables":[{"key":"blockedFieldValues","label":"Sensitive label values","description":"Pick label field values (e.g. Confidentiality: Confidential). Files whose labels are set to any selected value are blocked from this tool.","type":"string[]","required":true,"placeholder":"fieldId:choiceId","options":{"action":{"path":"https://drivelabels.googleapis.com/v2/labels","method":"GET","mapping":{"query":"{ \"view\": \"LABEL_VIEW_FULL\", \"pageSize\": \"200\" }"}},"mapping":"response.labels.($labelTitle := properties.title; fields[selectionOptions].($fieldName := properties.displayName; $fieldId := id; selectionOptions.choices.{ \"value\": $fieldId & \":\" & id, \"label\": $labelTitle & \" › \" & $fieldName & \": \" & properties.displayName }))","searchable":true}}],"appliesTo":["google-drive-get-file-metadata","google-drive-copy-file","google-drive-convert-to-google-doc","move-file","share-file","comment","get-comments","get-sheet-values","update-sheet-values","get-spreadsheet-metadata","add-sheet","sheets-batch-update","get-doc","insert-text-doc","replace-all-text-doc","add-image-doc","docs-batch-update","get-presentation","get-presentation-texts","get-slide-thumbnail","insert-slide","insert-text-slide","replace-all-text-presentation","create-image-slide","slides-batch-update"]}],"tools":[{"name":"Google Drive Get File Metadata","description":"Read metadata of a file from Google Drive","slug":"google-drive-get-file-metadata","ai_risk":{"level":"low","score":1,"reasoning":"This tool reads metadata of a file from Google Drive, making it low risk as it does not modify any data.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"fileId":{"type":"string","description":"ID of the file to read"}},"required":["fileId"]},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}","method":"GET","mapping":{"params":"{ \n \"fileId\": arguments.fileId \n }","query":"{\n \"fields\": \"webContentLink\"\n }"}}},{"name":"Google Drive Search","description":"Search for files in Google Drive","slug":"google-drive-search","ai_risk":{"level":"low","score":1,"reasoning":"This tool searches for files in Google Drive, which is a read-only operation and poses minimal risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query. Filter files using <field> <operator> <value> syntax; supports fields like name, mimeType, modifiedTime, logical operators, and RFC 3339 date values. Always exclude the files in trash. Example: name contains 'test' and modifiedTime > '2024-01-01T00:00:00Z' and trashed = false"},"pageToken":{"type":"string","description":"Token for the next page of results"},"pageSize":{"type":"number","description":"Number of results per page (max 100)","default":10},"supportsAllDrives":{"type":"boolean","description":"Whether to support all drives","default":true},"corpora":{"type":"string","description":"Bodies of items to search. Options: 'user' (My Drive), 'drive' (specific shared drive - requires driveId), 'domain' (domain), 'allDrives' (all drives). Default: 'user'"},"includeItemsFromAllDrives":{"type":"boolean","description":"Whether to include items from all drives. Must be true if corpora is 'allDrives' or if searching shared drives."},"driveId":{"type":"string","description":"ID of the shared drive to search. Required when corpora is 'drive'."},"fields":{"type":"string","description":"Fields to return. Example: 'nextPageToken, files(id, name, driveId, parents)'. Default returns: id, name, mimeType, modifiedTime, size, webViewLink"}},"required":["query"]},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files","method":"GET","mapping":{"query":"{\n \"q\": arguments.query,\n \"pageToken\": arguments.pageToken,\n \"pageSize\": arguments.pageSize,\n \"orderBy\": \"modifiedTime desc\",\n \"supportsAllDrives\": $exists(arguments.supportsAllDrives) ? arguments.supportsAllDrives : true,\n \"corpora\": arguments.corpora,\n \"includeItemsFromAllDrives\": arguments.includeItemsFromAllDrives,\n \"driveId\": arguments.driveId,\n \"fields\": $exists(arguments.fields) ? arguments.fields : \"nextPageToken, files(id, name, mimeType, modifiedTime, size, webViewLink)\"\n }"}}},{"name":"Google Drive Copy File","description":"Copy a file in Google Drive. Useful for duplicating templates before filling in content.","slug":"google-drive-copy-file","ai_risk":{"level":"low","score":4,"reasoning":"This tool copies a file in Google Drive, which involves creating a new file but does not modify existing data, thus it is medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["fileId"],"properties":{"fileId":{"type":"string","description":"ID of the file to copy"},"name":{"type":"string","description":"Name for the copy. Defaults to 'Copy of <original name>'."},"destinationFolderId":{"type":"string","description":"ID of the folder to place the copy in. Defaults to the same folder as the original."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/copy","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{ \"supportsAllDrives\": true }","body":"{\n \"name\": arguments.name,\n \"parents\": $exists(arguments.destinationFolderId) ? [arguments.destinationFolderId] : undefined\n }"}}},{"name":"Google Drive Convert File to Google Doc","description":"Converts a non-native Google file (e.g. PDF, DOCX, RTF, ODT, TXT, HTML) in Google Drive to a native Google Doc so its text content can then be read. PDFs are converted using OCR. Returns the new Google Doc's id and metadata. To read the text afterwards, call 'Get Document' (slug: get-doc) with the returned id and onlyContent=true.","slug":"google-drive-convert-to-google-doc","ai_risk":{"level":"low","score":4,"reasoning":"This tool converts files to Google Docs format, creating a new document but not altering the original, making it medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["fileId"],"properties":{"fileId":{"type":"string","description":"ID of the source file to convert (e.g. a PDF or DOCX file in Drive)."},"name":{"type":"string","description":"Name for the converted Google Doc. Defaults to 'Copy of <original name>'."},"destinationFolderId":{"type":"string","description":"ID of the folder to place the converted Google Doc in. Defaults to the same folder as the original."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/copy","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{ \"supportsAllDrives\": true }","body":"{\n \"name\": arguments.name,\n \"mimeType\": \"application/vnd.google-apps.document\",\n \"parents\": $exists(arguments.destinationFolderId) ? [arguments.destinationFolderId] : undefined\n }"}}},{"name":"Google Drive Upload File","description":"Upload a file to Google Drive and get its URL. Useful for uploading images to then add to presentations.","slug":"google-drive-upload-file","ai_risk":{"level":"low","score":4,"reasoning":"This tool uploads a file to Google Drive, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["fileName","mimeType","data"],"properties":{"fileName":{"type":"string","description":"Name for the uploaded file (e.g. 'image.png')"},"mimeType":{"type":"string","description":"MIME type of the file (e.g. 'image/png', 'image/jpeg')"},"data":{"type":"string","description":"Base64-encoded file content"},"folderId":{"type":"string","description":"ID of the Google Drive folder to upload into. Defaults to root."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/upload/drive/v3/files","method":"POST","mapping":{"query":"{ \"uploadType\": \"multipart\", \"supportsAllDrives\": true, \"fields\": \"id,webContentLink,webViewLink\" }","headers":"{ \"Content-Type\": \"multipart/related\" }","body":"{\n \"metadata\": {\n \"name\": arguments.fileName,\n \"parents\": $exists(arguments.folderId) ? [arguments.folderId] : undefined\n },\n \"file\": {\n \"data\": arguments.data,\n \"mimeType\": arguments.mimeType,\n \"filename\": arguments.fileName\n }\n }"}},"requiredScopes":["https://www.googleapis.com/auth/drive.file"]},{"name":"Create Google Sheet","description":"Creates a new Google Sheet with the specified title","slug":"create-google-sheet","ai_risk":{"level":"low","score":4,"reasoning":"This tool creates a new Google Sheet, which is a standard write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Title of the new spreadsheet"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets","method":"POST","mapping":{"body":"{ \n \"properties\": { \n \"title\": arguments.title \n } \n }"}}},{"name":"Get Sheet Values","description":"Retrieves values from a specified range in a Google Sheet","slug":"get-sheet-values","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves values from a specified range in a Google Sheet, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","range"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"range":{"type":"string","description":"The A1 notation of the range to retrieve values from"},"majorDimension":{"type":"string","enum":["ROWS","COLUMNS"],"default":"ROWS","description":"The major dimension of the values"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}","method":"GET","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId, \n \"range\": arguments.range \n }","query":"{ \n \"majorDimension\": arguments.majorDimension\n }"}}},{"name":"Update Sheet Values","description":"Updates values in a specified range of a Google Sheet","slug":"update-sheet-values","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates values in a specified range of a Google Sheet, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","range","values"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"range":{"type":"string","description":"The A1 notation of the range to update"},"values":{"type":"array","items":{"type":"array","items":{"type":["string","number","boolean","null"],"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"description":"The data to write to the sheet (2D array)"},"valueInputOption":{"type":"string","enum":["RAW","USER_ENTERED"],"default":"USER_ENTERED","description":"How to interpret the input data"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}","method":"PUT","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId, \n \"range\": arguments.range \n }","query":"{ \n \"valueInputOption\": arguments.valueInputOption ? arguments.valueInputOption : \"USER_ENTERED\"\n }","body":"{ \n \"values\": arguments.values\n }"}}},{"name":"Get Spreadsheet Metadata","description":"Retrieves metadata of a Google Sheet including sheet tabs (properties, titles, sheet IDs, etc.)","slug":"get-spreadsheet-metadata","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves metadata of a Google Sheet, making it low risk as it does not modify any data.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["spreadsheetId"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"fields":{"type":"string","description":"Fields to include in the response. Default includes sheets (tabs) metadata. See Google Sheets API documentation for field options.","default":"properties.title,sheets.properties"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}","method":"GET","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId\n }","query":"{ \n \"fields\": arguments.fields ? arguments.fields : \"properties.title,sheets.properties\"\n }"}}},{"name":"Add Sheet","description":"Adds a new sheet to an existing spreadsheet","slug":"add-sheet","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a new sheet to an existing spreadsheet, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","title"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"title":{"type":"string","description":"Title of the new sheet"}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate","method":"POST","mapping":{"params":"{ \n \"spreadsheetId\": arguments.spreadsheetId\n }","body":"{ \n \"requests\": [\n { \n \"addSheet\": { \n \"properties\": { \n \"title\": arguments.title \n } \n }\n } \n ] \n }"}}},{"name":"Sheets Batch Update","description":"Update a spreadsheet with multiple requests including formatting, conditional formatting, styles, and other operations.","slug":"sheets-batch-update","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates a spreadsheet with multiple requests, which can modify data and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["spreadsheetId","requests"],"properties":{"spreadsheetId":{"type":"string","description":"The ID of the spreadsheet"},"requests":{"type":"array","description":"The requests to perform on the spreadsheet as defined in the Google Sheets API: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#Request","items":{"type":"object"}}}},"enabled":true,"action":{"path":"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate","method":"POST","mapping":{"params":"{ \"spreadsheetId\": arguments.spreadsheetId }","body":"{ \"requests\": arguments.requests }"}}},{"name":"Get Document","description":"Retrieve a Google Doc by ID. Only works with native Google Docs. For PDF or DOCX files, first convert them using 'Google Drive Convert File to Google Doc' (slug: google-drive-convert-to-google-doc), then call this tool with the returned id.","slug":"get-doc","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a Google Doc by ID, making it low risk as it is a read-only operation.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document to retrieve"},"onlyContent":{"type":"boolean","default":false,"description":"When true, returns only the concatenated text content; otherwise returns the full Google Docs API response."},"includeTabsContent":{"type":"boolean","default":true,"description":"Include all tabs in the document (default: true). Set to false to only retrieve the default tab."},"suggestionsViewMode":{"type":"string","enum":["DEFAULT_FOR_CURRENT_ACCESS","SUGGESTIONS_INLINE","PREVIEW_SUGGESTIONS_ACCEPTED","PREVIEW_WITHOUT_SUGGESTIONS"],"description":"How pending suggestions are represented. SUGGESTIONS_INLINE returns suggested insertions and deletions inline and is the only mode whose indexes are valid for a follow-up batch update. PREVIEW_SUGGESTIONS_ACCEPTED and PREVIEW_WITHOUT_SUGGESTIONS return the document as if every suggestion were accepted or rejected. Omit to use the default for the current user's access."}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}","method":"GET","mapping":{"params":"{ \"documentId\": arguments.documentId }","query":"{\n \"includeTabsContent\": $exists(arguments.includeTabsContent) ? arguments.includeTabsContent : true,\n \"suggestionsViewMode\": arguments.suggestionsViewMode\n }","response":"arguments.onlyContent ? $join(response.tabs[].documentTab.body.content.paragraph.elements.textRun.content) : response"}},"requiredScopes":["https://www.googleapis.com/auth/documents.readonly"]},{"name":"Create New Doc","description":"Create a new blank Google Doc.","slug":"create-new-doc","ai_risk":{"level":"low","score":4,"reasoning":"This tool creates a new blank Google Doc, which is a standard write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Title of the new spreadsheet"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents","method":"POST","mapping":{"body":"{ \n \"title\": arguments.title \n }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Insert Text to Doc","description":"Insert text into a Google Doc.","slug":"insert-text-doc","ai_risk":{"level":"medium","score":5,"reasoning":"This tool inserts text into a Google Doc, which modifies the document and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","text","index"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"text":{"type":"string","description":"The text to insert"},"index":{"type":"number","description":"The position index for insertion"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"insertText\": { \"location\": { \"index\": arguments.index }, \"text\": arguments.text } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Replace All Text in Doc","description":"Replace all instances of a text in a document.","slug":"replace-all-text-doc","ai_risk":{"level":"medium","score":5,"reasoning":"This tool replaces all instances of text in a document, which modifies the content and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId","findText","replaceText"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"findText":{"type":"string","description":"The text to find"},"replaceText":{"type":"string","description":"The text to replace with"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"replaceAllText\": { \"containsText\": { \"text\": arguments.findText, \"matchCase\": true }, \"replaceText\": arguments.replaceText } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Add Image","description":"Add an image to a document.","slug":"add-image-doc","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds an image to a document, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","imageUrl","index"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"imageUrl":{"type":"string","description":"The URL of the image to insert"},"index":{"type":"number","description":"The position index for insertion"}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"insertInlineImage\": { \"location\": { \"index\": arguments.index }, \"uri\": arguments.imageUrl } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Get Presentation","description":"Retrieve a Google Slides presentation by ID.","slug":"get-presentation","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a Google Slides presentation by ID, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation to retrieve"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}","method":"GET","mapping":{"params":"{ \"presentationId\": arguments.presentationId }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations.readonly"]},{"name":"Create New Presentation","description":"Create a new blank presentation.","slug":"create-new-presentation","ai_risk":{"level":"low","score":4,"reasoning":"This tool creates a new blank presentation, which is a standard write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Title of the new presentation"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations","method":"POST","mapping":{"body":"{ \n \"title\": arguments.title \n }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Insert Slide","description":"Add a new slide to the presentation.","slug":"insert-slide","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a new slide to the presentation, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"insertionIndex":{"type":"number","description":"The position where the slide will be inserted"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"createSlide\": { \"insertionIndex\": arguments.insertionIndex } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Insert Text to Slide","description":"Insert text into a slide.","slug":"insert-text-slide","ai_risk":{"level":"medium","score":5,"reasoning":"This tool inserts text into a slide, which modifies the presentation and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId","objectId","text"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"objectId":{"type":"string","description":"The ID of the text box to insert text into"},"text":{"type":"string","description":"The text to insert"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"insertText\": { \"objectId\": arguments.objectId, \"text\": arguments.text } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Replace All Text in Presentation","description":"Replace all instances of a text in a presentation.","slug":"replace-all-text-presentation","ai_risk":{"level":"medium","score":5,"reasoning":"This tool replaces all instances of text in a presentation, which modifies the content and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId","findText","replaceText"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"findText":{"type":"string","description":"The text to find"},"replaceText":{"type":"string","description":"The text to replace with"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"replaceAllText\": { \"containsText\": { \"text\": arguments.findText, \"matchCase\": true }, \"replaceText\": arguments.replaceText } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Create Image","description":"Add an image to a slide.","slug":"create-image-slide","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds an image to a slide, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId","imageUrl","objectId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"imageUrl":{"type":"string","description":"The URL of the image to add"},"objectId":{"type":"string","description":"The ID of the object to attach the image to"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": [{ \"createImage\": { \"url\": arguments.imageUrl, \"objectId\": arguments.objectId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Slides Batch Update","description":"Update a presentation with multiple requests.","slug":"slides-batch-update","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates a presentation with multiple requests, which can modify data and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["presentationId","requests"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"requests":{"type":"array","description":"The requests to perform on the presentation as defined in the Google Slides API: https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#Request","items":{"type":"object"}}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate","method":"POST","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","body":"{ \"requests\": arguments.requests }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations"]},{"name":"Docs Batch Update","description":"Update a document with multiple requests.","slug":"docs-batch-update","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates a document with multiple requests, which modifies data and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","requests"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"requests":{"type":"array","description":"The requests to perform on the document as defined in the Google Docs API: https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#Request","items":{"type":"object"}}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": arguments.requests }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Get Doc Suggestions","description":"List the pending suggestions in a Google Doc. Returns each suggestionId, whether it is an INSERTION, DELETION or STYLE change, the affected text, its index range, and the tabId of the tab it lives in. Reads the document with SUGGESTIONS_INLINE; note that indexes are scoped to their tab, so use the tabId alongside them.","slug":"get-doc-suggestions","ai_risk":{"level":"low","score":1,"reasoning":"This tool reads the pending suggestions on a Google Doc, making it low risk as it is a read-only operation.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document to read suggestions from"},"includeTabsContent":{"type":"boolean","default":true,"description":"Include all tabs in the document (default: true). Set to false to only read suggestions on the default tab."}}},"enabled":true,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}","method":"GET","mapping":{"params":"{ \"documentId\": arguments.documentId }","query":"{\n \"includeTabsContent\": $exists(arguments.includeTabsContent) ? arguments.includeTabsContent : true,\n \"suggestionsViewMode\": \"SUGGESTIONS_INLINE\"\n }","response":"(\n $scopes := $exists(response.tabs)\n ? [response.**[$exists(documentTab)]].{ \"tabId\": tabProperties.tabId, \"root\": documentTab }\n : [{ \"root\": response }];\n $suggestions := $scopes.(\n $tabId := tabId;\n root.**[$exists(textRun) and ($exists(textRun.suggestedInsertionIds) or $exists(textRun.suggestedDeletionIds) or $exists(textRun.suggestedTextStyleChanges))].(\n $el := $;\n [\n $el.textRun.suggestedInsertionIds.{\n \"suggestionId\": $,\n \"type\": \"INSERTION\",\n \"text\": $el.textRun.content,\n \"tabId\": $tabId,\n \"startIndex\": $el.startIndex,\n \"endIndex\": $el.endIndex\n },\n $el.textRun.suggestedDeletionIds.{\n \"suggestionId\": $,\n \"type\": \"DELETION\",\n \"text\": $el.textRun.content,\n \"tabId\": $tabId,\n \"startIndex\": $el.startIndex,\n \"endIndex\": $el.endIndex\n },\n $exists($el.textRun.suggestedTextStyleChanges) ? $each($el.textRun.suggestedTextStyleChanges, function($change, $suggestionId) {\n {\n \"suggestionId\": $suggestionId,\n \"type\": \"STYLE\",\n \"text\": $el.textRun.content,\n \"tabId\": $tabId,\n \"startIndex\": $el.startIndex,\n \"endIndex\": $el.endIndex,\n \"suggestedStyleFields\": [$keys($change.textStyleSuggestionState)[$lookup($change.textStyleSuggestionState, $)]]\n }\n }) : undefined\n ]\n )\n );\n {\n \"documentId\": response.documentId,\n \"title\": response.title,\n \"suggestionCount\": $count($distinct($suggestions.suggestionId)),\n \"suggestionIds\": [$distinct($suggestions.suggestionId)],\n \"suggestions\": [$suggestions]\n }\n )"}},"requiredScopes":["https://www.googleapis.com/auth/documents.readonly"]},{"name":"Docs Batch Update as Suggestions","description":"Apply Google Docs batch update requests as suggestions (deferred edits awaiting approval) instead of direct edits. Same requests as 'Docs Batch Update' (slug: docs-batch-update), but sent with writeControl.writeMode=SUGGEST. Requires the Google Workspace Developer Preview Program; other tenants get an error. AddDocumentTab, CreateNamedRange, DeleteFooter, DeleteHeader, DeleteNamedRange, DeleteTab, UpdateDocumentTabProperties and UpdateTableColumnProperties cannot be suggested, and UpdateDocumentStyle cannot suggest documentFormat, useEvenPageHeaderFooter or useFirstPageHeaderFooter. The response reports the ids of the suggestions this created under suggestionResponses[].createdSuggestionIds, which is how you get a suggestionId to later accept or reject without re-reading the document. Check commentUpdateState too: the text edits can commit while the suggestion itself fails to save.","slug":"docs-batch-update-suggest","labels":["developer-preview"],"ai_risk":{"level":"low","score":3,"reasoning":"This tool writes document edits as suggestions rather than direct changes, so a human must accept them before they take effect, which keeps the risk low.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","requests"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"requests":{"type":"array","description":"The requests to suggest on the document as defined in the Google Docs API: https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#Request. Index-based requests should use indexes read with suggestionsViewMode=SUGGESTIONS_INLINE.","items":{"type":"object"}}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": arguments.requests, \"writeControl\": { \"writeMode\": \"SUGGEST\" } }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Accept Doc Suggestion","description":"Accept a suggestion thread in a Google Doc, applying its pending changes to the document. Requires edit access, and the Google Workspace Developer Preview Program. Get the suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions).","slug":"accept-doc-suggestion","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool commits a pending suggestion into the document, which permanently modifies content and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","suggestionId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to accept. Obtain it from 'Get Doc Suggestions' (slug: get-doc-suggestions)."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"acceptSuggestion\": { \"suggestionId\": arguments.suggestionId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Reject Doc Suggestion","description":"Reject a suggestion thread in a Google Doc, discarding its pending changes. Requires edit access on the document or authorship of the suggestion, and the Google Workspace Developer Preview Program. Get the suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions).","slug":"reject-doc-suggestion","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool discards a collaborator's proposed changes, which destroys pending work and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","suggestionId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to reject. Obtain it from 'Get Doc Suggestions' (slug: get-doc-suggestions)."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"rejectSuggestion\": { \"suggestionId\": arguments.suggestionId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Delete Doc Suggestion","description":"Delete a suggestion thread in a Google Doc. Only the author of the suggestion can delete it. Requires the Google Workspace Developer Preview Program. Get the suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions).","slug":"delete-doc-suggestion","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool permanently removes a suggestion thread and its discussion, which destroys data and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","suggestionId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to delete. Obtain it from 'Get Doc Suggestions' (slug: get-doc-suggestions)."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"deleteSuggestion\": { \"suggestionId\": arguments.suggestionId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Insert Doc Comment","description":"Add a comment thread to a Google Doc, anchored to a text range and optionally assigned to someone. Unlike 'Comment' (slug: comment), which goes through the Drive API, this anchors by document index and supports assignment. Requires the Google Workspace Developer Preview Program. Read indexes with suggestionsViewMode=SUGGESTIONS_INLINE. Check commentUpdateState in the response, since the comment can fail to save even on a 200.","slug":"insert-doc-comment","labels":["developer-preview"],"ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a comment thread to a document, which is a write operation that does not alter document content and poses low risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","content","startIndex","endIndex"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"content":{"type":"string","description":"The plain text content of the comment"},"startIndex":{"type":"number","description":"Start index of the range the comment is anchored to, inclusive"},"endIndex":{"type":"number","description":"End index of the range the comment is anchored to, exclusive"},"assigneeEmailAddress":{"type":"string","description":"Optional. Email address of the person to assign the comment to. Omit for an unassigned comment."},"tabId":{"type":"string","description":"Optional. The tab the range belongs to. Required to anchor a comment in a document with multiple tabs, since indexes are scoped per tab. Omit to use the first tab. 'Get Doc Suggestions' (slug: get-doc-suggestions) reports a tabId per suggestion."},"segmentId":{"type":"string","description":"Optional. The header, footer or footnote the range belongs to. Omit to anchor in the document body."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"insertComment\": {\n \"content\": arguments.content,\n \"assigneeEmailAddress\": arguments.assigneeEmailAddress,\n \"range\": {\n \"startIndex\": arguments.startIndex,\n \"endIndex\": arguments.endIndex,\n \"tabId\": arguments.tabId,\n \"segmentId\": arguments.segmentId\n }\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Add Doc Comment Reply","description":"Reply to a comment or suggestion thread in a Google Doc, and optionally resolve it, reopen it, or reassign it. Requires the Google Workspace Developer Preview Program. Get a commentId from 'Get Comments' (slug: get-comments) or a suggestionId from 'Get Doc Suggestions' (slug: get-doc-suggestions). Check commentUpdateState in the response, since the reply can fail to save even on a 200.","slug":"add-doc-comment-reply","labels":["developer-preview"],"ai_risk":{"level":"low","score":4,"reasoning":"This tool replies to or resolves a comment thread, which is a write operation that does not alter document content and poses low risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread to reply to. Provide exactly one of commentId or suggestionId."},"suggestionId":{"type":"string","description":"The ID of the suggestion thread to reply to. Provide exactly one of commentId or suggestionId."},"content":{"type":"string","description":"The plain text content of the reply. Optional when the reply only carries a commentAction, for example resolving a thread."},"commentAction":{"type":"string","enum":["RESOLVE","REOPEN"],"description":"Optional. Resolve or reopen the thread as part of this reply."},"assigneeEmail":{"type":"string","description":"Optional. Email address to reassign the thread to as part of this reply."}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"addCommentReply\": {\n \"commentId\": arguments.commentId,\n \"suggestionId\": arguments.suggestionId,\n \"post\": {\n \"content\": arguments.content,\n \"commentAction\": arguments.commentAction,\n \"assigneeEmail\": arguments.assigneeEmail\n }\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Update Doc Comment Post","description":"Edit the text of a comment or reply you authored in a Google Doc. The head post of a suggestion thread cannot be edited, because it is generated by the suggest-mode edit itself. Requires the Google Workspace Developer Preview Program.","slug":"update-doc-comment-post","labels":["developer-preview"],"ai_risk":{"level":"low","score":4,"reasoning":"This tool edits the text of a comment the caller authored, which is a write operation that does not alter document content and poses low risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["documentId","postId","content"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread the post belongs to. Provide exactly one of commentId or suggestionId."},"suggestionId":{"type":"string","description":"The ID of the suggestion thread the post belongs to. Provide exactly one of commentId or suggestionId."},"postId":{"type":"string","description":"The ID of the post to edit"},"content":{"type":"string","description":"The new plain text content of the post"}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"updateCommentPost\": {\n \"commentId\": arguments.commentId,\n \"suggestionId\": arguments.suggestionId,\n \"postId\": arguments.postId,\n \"content\": arguments.content\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Delete Doc Comment","description":"Delete an entire comment thread from a Google Doc. Only the author of the thread's head post can delete it. Requires the Google Workspace Developer Preview Program.","slug":"delete-doc-comment","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool permanently removes a comment thread and all of its replies, which destroys data and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","commentId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread to delete"}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"deleteComment\": { \"commentId\": arguments.commentId } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Delete Doc Comment Reply","description":"Delete a single reply from a comment or suggestion thread in a Google Doc. Only replies you authored can be deleted, and replies that carry an action or an assignee cannot be deleted at all. Requires the Google Workspace Developer Preview Program.","slug":"delete-doc-comment-reply","labels":["developer-preview"],"ai_risk":{"level":"medium","score":5,"reasoning":"This tool permanently removes a reply from a comment thread, which destroys data and carries medium risk.","calculated_at":"2026-08-01T00:00:00.000Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["documentId","postId"],"properties":{"documentId":{"type":"string","description":"The ID of the document"},"commentId":{"type":"string","description":"The ID of the comment thread the reply belongs to. Provide exactly one of commentId or suggestionId."},"suggestionId":{"type":"string","description":"The ID of the suggestion thread the reply belongs to. Provide exactly one of commentId or suggestionId."},"postId":{"type":"string","description":"The ID of the reply post to delete"}}},"enabled":false,"action":{"path":"https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate","method":"POST","mapping":{"params":"{ \"documentId\": arguments.documentId }","body":"{ \"requests\": [{ \"deleteCommentReply\": {\n \"commentId\": arguments.commentId,\n \"suggestionId\": arguments.suggestionId,\n \"postId\": arguments.postId\n } }] }"}},"requiredScopes":["https://www.googleapis.com/auth/documents"]},{"name":"Move File","description":"Move a file from one location to another.","slug":"move-file","ai_risk":{"level":"medium","score":5,"reasoning":"This tool moves a file from one location to another, which modifies the file's location and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["fileId","newParentId"],"properties":{"fileId":{"type":"string","description":"The ID of the file to move"},"newParentId":{"type":"string","description":"The ID of the folder to move the file into. Use 'root' to move the file to the root directory."},"oldParentId":{"type":"string","description":"The ID of the current parent folder to remove the file from. Required if the file currently resides inside another folder."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}","method":"PATCH","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"addParents\": arguments.newParentId,\n \"removeParents\": arguments.oldParentId,\n \"supportsAllDrives\": true\n }"}}},{"name":"Comment","description":"Comment on a file.","slug":"comment","ai_risk":{"level":"low","score":4,"reasoning":"This tool allows commenting on a file, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["fileId","comment"],"properties":{"fileId":{"type":"string","description":"The ID of the file to comment on"},"comment":{"type":"string","description":"The comment to add"},"anchor":{"type":"string","description":"Optional. The anchor to comment on. For example 'slides/g123456abcde_0_5' or 'kix.12345abcde'"}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/comments?fields=*","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","body":"{ \"content\": arguments.comment, \"anchor\": arguments.anchor }"}}},{"name":"Get Comments","description":"Get all comments on a file.","slug":"get-comments","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves all comments on a file, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["fileId"],"properties":{"fileId":{"type":"string","description":"The ID of the file to get comments from"},"pageToken":{"type":"string","description":"Token for the next page of results"},"pageSize":{"type":"number","description":"Number of results per page (max 100)","default":20}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/comments","method":"GET","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"fields\": \"*\",\n \"pageToken\": arguments.pageToken,\n \"pageSize\": arguments.pageSize\n }"}}},{"name":"Reply to Comment","description":"Reply to an existing comment thread on a Drive file (Google Docs, Slides, Sheets). Use 'Get Comments' (slug: get-comments) first to obtain the commentId of the thread you want to reply to.","slug":"reply-to-comment","ai_risk":{"level":"low","score":4,"reasoning":"This tool adds a reply to an existing comment thread, which is a write operation and poses medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","required":["fileId","commentId","content"],"properties":{"fileId":{"type":"string","description":"The ID of the file the comment belongs to"},"commentId":{"type":"string","description":"The ID of the comment (thread) to reply to. Obtain it from 'Get Comments' (slug: get-comments)."},"content":{"type":"string","description":"The plain text content of the reply"}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/comments/{commentId}/replies?fields=*","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId, \"commentId\": arguments.commentId }","body":"{ \"content\": arguments.content }"}}},{"name":"Share File","description":"Share a file with a user.","slug":"share-file","ai_risk":{"level":"medium","score":5,"reasoning":"This tool shares a file with a user, which modifies access permissions and carries medium risk.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"fileId":{"type":"string","description":"The ID of the file to share"},"role":{"type":"string","description":"The role to assign to the user","enum":["reader","commenter","writer"]},"type":{"type":"string","description":"The type of the user to share with","enum":["user","group","domain","anyone"]},"email":{"type":"string","description":"The email of the user to share with"},"sendNotificationEmail":{"type":"boolean","description":"Whether to send a notification email to the user","default":false}},"required":["fileId","email","role"]},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/permissions","method":"POST","mapping":{"params":"{ \"fileId\": arguments.fileId }","body":"{ \"role\": arguments.role, \"type\": arguments.type, \"emailAddress\": arguments.email, \"sendNotificationEmail\": arguments.sendNotificationEmail }"}}},{"name":"Get Slide Thumbnail","description":"Get a thumbnail of a slide.","slug":"get-slide-thumbnail","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a thumbnail of a slide, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId","slideId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation"},"slideId":{"type":"string","description":"The ID of the slide"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}/pages/{pageId}/thumbnail","method":"GET","mapping":{"params":"{ \"presentationId\": arguments.presentationId, \"pageId\": arguments.slideId }"}}},{"name":"Get Presentation Texts","description":"Retrieve the text content from all slides in a Google Slides presentation using the presentation's ID. If the presentation ID is not correct, use google-drive-search to find a file with the given presentation ID as the name.","slug":"get-presentation-texts","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves the text content from all slides in a presentation, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["presentationId"],"properties":{"presentationId":{"type":"string","description":"The ID of the presentation to retrieve"}}},"enabled":true,"action":{"path":"https://slides.googleapis.com/v1/presentations/{presentationId}","method":"GET","mapping":{"params":"{ \"presentationId\": arguments.presentationId }","query":"{ \"fields\": \"slides.objectId,slides.pageElements.shape.text.textElements.textRun.content\" }"}},"requiredScopes":["https://www.googleapis.com/auth/presentations.readonly"]},{"name":"Export Google Doc","description":"Export (download) a native Google Doc in another file format. Returns the file as a downloadable resource (base64-encoded). Supported formats: docx (Word), pdf, html, md (Markdown). Only works with native Google Docs and files up to 10 MB.","slug":"export-google-doc","ai_risk":{"level":"low","score":1,"reasoning":"This tool exports/downloads a Google Doc in another format without modifying it, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["fileId","format"],"properties":{"fileId":{"type":"string","description":"The ID of the Google Doc to export"},"format":{"type":"string","enum":["docx","pdf","html","md"],"description":"Target format: 'docx' (Word), 'pdf', 'html', or 'md' (Markdown)."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/export","method":"GET","responseType":"arraybuffer","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"mimeType\": $lookup({\n \"docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"pdf\": \"application/pdf\",\n \"html\": \"text/html\",\n \"md\": \"text/markdown\"\n }, arguments.format)\n }"}},"requiredScopes":["https://www.googleapis.com/auth/drive.readonly"]},{"name":"Export Google Slides","description":"Export (download) a native Google Slides presentation in another file format. Returns the file as a downloadable resource (base64-encoded). Supported formats: pptx (PowerPoint), pdf. Only works with native Google Slides and files up to 10 MB.","slug":"export-google-slides","ai_risk":{"level":"low","score":1,"reasoning":"This tool exports/downloads a Google Slides presentation in another format without modifying it, making it low risk as it is read-only.","calculated_at":"2026-05-22T10:04:58.125Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["fileId","format"],"properties":{"fileId":{"type":"string","description":"The ID of the Google Slides presentation to export"},"format":{"type":"string","enum":["pptx","pdf"],"description":"Target format: 'pptx' (PowerPoint) or 'pdf'."}}},"enabled":true,"action":{"path":"https://www.googleapis.com/drive/v3/files/{fileId}/export","method":"GET","responseType":"arraybuffer","mapping":{"params":"{ \"fileId\": arguments.fileId }","query":"{\n \"mimeType\": $lookup({\n \"pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \"pdf\": \"application/pdf\"\n }, arguments.format)\n }"}},"requiredScopes":["https://www.googleapis.com/auth/drive.readonly"]},{"name":"List Task Lists","description":"List the authenticated user's Google Tasks task lists. Use the returned list id as 'tasklist' in the other task tools.","slug":"list-tasklists","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists the user's Google Tasks task lists, which is a read-only operation and poses minimal risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"maxResults":{"type":"number","description":"Maximum number of task lists to return (max 100)","default":100},"pageToken":{"type":"string","description":"Token for the next page of results"}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/users/@me/lists","method":"GET","mapping":{"query":"{\n \"maxResults\": $exists(arguments.maxResults) ? arguments.maxResults : 100,\n \"pageToken\": arguments.pageToken\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"List Tasks","description":"List tasks in a Google Tasks task list. To find overdue tasks, set dueMax to the start of today in the user's timezone (e.g. '2026-10-01T00:00:00Z') and showCompleted to false.","slug":"list-tasks","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists tasks in a Google Tasks task list, which is a read-only operation and poses minimal risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"tasklist":{"type":"string","description":"ID of the task list. Defaults to '@default', the user's default task list."},"dueMin":{"type":"string","description":"Lower bound for a task's due date, as an RFC 3339 timestamp (e.g. '2026-10-01T00:00:00Z')."},"dueMax":{"type":"string","description":"Upper bound for a task's due date, as an RFC 3339 timestamp (e.g. '2026-10-01T00:00:00Z')."},"showCompleted":{"type":"boolean","description":"Whether to include completed tasks. Set to false to return only open tasks.","default":true},"showHidden":{"type":"boolean","description":"Whether to include hidden tasks (completed tasks cleared from the list view).","default":false},"updatedMin":{"type":"string","description":"Only return tasks updated after this RFC 3339 timestamp."},"maxResults":{"type":"number","description":"Maximum number of tasks to return (max 100)","default":100},"pageToken":{"type":"string","description":"Token for the next page of results"}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks","method":"GET","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\"\n }","query":"{\n \"dueMin\": arguments.dueMin,\n \"dueMax\": arguments.dueMax,\n \"showCompleted\": arguments.showCompleted,\n \"showHidden\": arguments.showHidden,\n \"updatedMin\": arguments.updatedMin,\n \"maxResults\": $exists(arguments.maxResults) ? arguments.maxResults : 100,\n \"pageToken\": arguments.pageToken\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"Create Task","description":"Create a new task in a Google Tasks task list. Optionally nest it under a parent task or position it after a sibling task.","slug":"create-task","ai_risk":{"level":"low","score":3,"reasoning":"This tool creates a new task in the user's task list without modifying existing data, making it low risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"destructiveHint":false},"inputSchema":{"type":"object","required":["title"],"properties":{"tasklist":{"type":"string","description":"ID of the task list. Defaults to '@default', the user's default task list."},"title":{"type":"string","description":"Title of the task"},"notes":{"type":"string","description":"Notes describing the task"},"due":{"type":"string","description":"Due date as an RFC 3339 timestamp (e.g. '2026-10-05T00:00:00Z'). Google Tasks only stores the date; the time portion is discarded."},"status":{"type":"string","enum":["needsAction","completed"],"description":"Status of the task. Defaults to 'needsAction'."},"parent":{"type":"string","description":"ID of the parent task to create this task under as a subtask. Omit to create a top-level task."},"previous":{"type":"string","description":"ID of the sibling task to place this task after. Omit to place it first among its siblings."}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks","method":"POST","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\"\n }","query":"{\n \"parent\": arguments.parent,\n \"previous\": arguments.previous\n }","body":"{\n \"title\": arguments.title,\n \"notes\": arguments.notes,\n \"due\": arguments.due,\n \"status\": arguments.status\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"Update Task","description":"Update a task in a Google Tasks task list. Only the provided fields are changed. Set status to 'completed' to mark a task done, or 'needsAction' to reopen it.","slug":"update-task","ai_risk":{"level":"medium","score":4,"reasoning":"This tool modifies an existing task's title, notes, due date, or status, which changes user data and carries medium risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["task"],"properties":{"tasklist":{"type":"string","description":"ID of the task list containing the task. Defaults to '@default', the user's default task list."},"task":{"type":"string","description":"ID of the task to update"},"title":{"type":"string","description":"New title of the task"},"notes":{"type":"string","description":"New notes for the task"},"due":{"type":"string","description":"New due date as an RFC 3339 timestamp (e.g. '2026-10-05T00:00:00Z'). Google Tasks only stores the date; the time portion is discarded."},"status":{"type":"string","enum":["needsAction","completed"],"description":"New status of the task"}}},"enabled":true,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks/{task}","method":"PATCH","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\",\n \"task\": arguments.task\n }","body":"{\n \"title\": arguments.title,\n \"notes\": arguments.notes,\n \"due\": arguments.due,\n \"status\": arguments.status\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]},{"name":"Delete Task","description":"Permanently delete a task from a Google Tasks task list.","slug":"delete-task","ai_risk":{"level":"medium","score":6,"reasoning":"This tool permanently deletes a task, which destroys user data and cannot be undone, carrying medium risk.","calculated_at":"2026-10-01T00:00:00.000Z"},"annotations":{"destructiveHint":true,"idempotentHint":true},"inputSchema":{"type":"object","required":["task"],"properties":{"tasklist":{"type":"string","description":"ID of the task list containing the task. Defaults to '@default', the user's default task list."},"task":{"type":"string","description":"ID of the task to delete"}}},"enabled":false,"action":{"path":"https://tasks.googleapis.com/tasks/v1/lists/{tasklist}/tasks/{task}","method":"DELETE","mapping":{"params":"{\n \"tasklist\": $exists(arguments.tasklist) ? arguments.tasklist : \"@default\",\n \"task\": arguments.task\n }"}},"requiredScopes":["https://www.googleapis.com/auth/tasks"]}]}}
|