A1 Google Drive MCP
Summary: A1 Google Drive MCP gives an AI app 15 tools to search, organize, transfer, share, discuss, and clean up files in Google Drive through the Drive API.
Search and list files with filters (name, MIME type, folder, full text, raw Drive query), across My Drive and shared drives, with pagination and ordering.
Get file metadata: ids, parents, timestamps, owners, capabilities, export links, shortcut targets; trashed files are hidden unless requested.
List shared drives and browse their contents.
Create folders, copy files, move files/folders, and rename or update metadata (description, starred flag).
Upload inline text or local files (up to 5 MB), optionally converting to Google Docs/Sheets/Slides, or replace a file's content.
Download binary files to disk or inline (≤100 KB); export Google Docs/Sheets/Slides/Drawings to Markdown, PDF, DOCX, CSV, XLSX, PPTX, etc.
Trash or restore files/folders (reversible ~30 days), with permanent deletion as a deliberately separate destructive tool.
Manage sharing and permissions: list grants, share with users/groups/domains/anyone, change roles, transfer ownership, revoke access, and control notification emails.
Manage comments: list, get, create, reply, resolve/reopen, and delete comment threads on files.
Raw API escape hatch: call any Drive API v3 path directly for revisions, changes, resumable uploads, emptying trash, and other uncovered operations.
Reads are marked read-only; writes and destructive tools are marked so clients can require confirmation, and writes are never replayed after uncertain failures.
Provides tools for interacting with Google Drive, enabling file search, folder management, uploads and downloads, export of Google Docs/Sheets/Slides, trash handling, sharing, and comments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@A1 Google Drive MCPFind the project roadmap doc in my Drive, export it to Markdown and summarize it."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Drive MCP
English | Русский
A1 Google Drive MCP lets an AI app work with your Google Drive in plain language. Find a file, tidy up folders, upload and download content, export a Doc as Markdown, share it with the right people — and keep the trash between you and permanent deletion.
It uses the Google Drive API with your Google account. It sees My Drive and shared drives alike, treats “delete” as the reversible trash and makes the limits of the Drive API explicit instead of implying that every file task is possible.
15 tools. Search and metadata, folders and moving, upload and download, export of Docs/Sheets/Slides, the trash, sharing and comments.
The trash comes first. “Delete” means the reversible trash; permanent deletion is a deliberately separate tool that cannot be picked by accident.
Documents stay intact. Docs, Sheets and Slides move, copy, export and convert as whole files — the server never edits the text inside them.
You choose the scope.
drive.readonlycovers every read anddrive.filelimits access to app-created files; the full tool surface needsdrive.
Start with a read-only question:
Find the project roadmap doc in my Drive, export it to Markdown and summarize it.
Connect the server · Explore use cases · Open technical documentation
See it work in a minute
You: Show me what’s in the “Contracts 2025” folder, newest first.
Assistant: Lists the files with their types, owners and modification dates. Nothing changes.
You: Prepare an “Archive” subfolder and move everything older than a year into it.
Assistant: Shows the folder it would create and the files it would move, then asks for confirmation.
You: Confirm.
Assistant: Creates the folder and moves the files. Nothing is shared, trashed or deleted unless you ask separately.
Related MCP server: MCP Google Drive Server
Contents
Quick start
You need Node.js 20+, a Google account and OAuth credentials from a Google Cloud project with the Google Drive API enabled.
Add the server to your AI app.
Ask the read-only question above.
In the desktop app: open Settings → MCP servers, select Add server, choose STDIO, and enter the command npx -y @a1-x-tech/mcp-google-drive@latest with GOOGLE_DRIVE_CLIENT_ID, GOOGLE_DRIVE_CLIENT_SECRET and GOOGLE_DRIVE_REFRESH_TOKEN. Select Save, then Restart.
In the IDE extension: open the gear menu → MCP servers, select Add server, choose STDIO, and enter the same command and environment variables. Select Save, then Restart extension.
From the command line:
codex mcp add google-drive \
--env GOOGLE_DRIVE_CLIENT_ID=your_client_id \
--env GOOGLE_DRIVE_CLIENT_SECRET=your_client_secret \
--env GOOGLE_DRIVE_REFRESH_TOKEN=your_refresh_token \
-- npx -y @a1-x-tech/mcp-google-drive@latestcodex mcp listclaude mcp add \
--env GOOGLE_DRIVE_CLIENT_ID=your_client_id \
--env GOOGLE_DRIVE_CLIENT_SECRET=your_client_secret \
--env GOOGLE_DRIVE_REFRESH_TOKEN=your_refresh_token \
--transport stdio --scope user google-drive \
-- npx -y @a1-x-tech/mcp-google-drive@latestclaude mcp listThe current official path is Settings → Extensions. For a custom desktop extension, open Advanced settings → Extension Developer → Install Extension…, select a .mcpb file and follow the prompts.
This repository currently publishes an npm stdio package and does not contain a .mcpb bundle. For Claude Desktop builds that still support local configuration, use the following JSON stdio configuration as a fallback:
{
"mcpServers": {
"google-drive": {
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-drive@latest"],
"env": {
"GOOGLE_DRIVE_CLIENT_ID": "your_client_id",
"GOOGLE_DRIVE_CLIENT_SECRET": "your_client_secret",
"GOOGLE_DRIVE_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}In those builds, save it to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.
Claude Desktop MCP documentation
Add this to ~/.cursor/mcp.json on macOS/Linux or %USERPROFILE%\.cursor\mcp.json on Windows:
{
"mcpServers": {
"google-drive": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-drive@latest"],
"env": {
"GOOGLE_DRIVE_CLIENT_ID": "your_client_id",
"GOOGLE_DRIVE_CLIENT_SECRET": "your_client_secret",
"GOOGLE_DRIVE_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Run MCP: Open User Configuration and add:
{
"servers": {
"google-drive": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-drive@latest"],
"env": {
"GOOGLE_DRIVE_CLIENT_ID": "${input:drive_client_id}",
"GOOGLE_DRIVE_CLIENT_SECRET": "${input:drive_client_secret}",
"GOOGLE_DRIVE_REFRESH_TOKEN": "${input:drive_refresh_token}"
}
}
},
"inputs": [
{ "type": "promptString", "id": "drive_client_id", "description": "Google OAuth client ID" },
{ "type": "promptString", "id": "drive_client_secret", "description": "Google OAuth client secret", "password": true },
{ "type": "promptString", "id": "drive_refresh_token", "description": "Google OAuth refresh token", "password": true }
]
}Check it with MCP: List Servers.
What you can ask it to do
Find and read files
Find last quarter’s budget spreadsheet and show where it lives and who owns it.
Export the project brief to Markdown and summarize the open questions.
Download the signed contract PDF into my reports folder.
Organize and transfer content
Create a “2026 Reports” folder and move the monthly reports into it.
Upload these meeting notes and convert them into a Google Doc.
Copy the proposal template and rename the copy for the new client.
Share and discuss
Share the folder with a teammate as a commenter and add a note to the invitation.
List the open comments on the design doc and resolve the ones we’ve addressed.
Revoke the external contractor’s access to the archive.
Clean up deliberately
Trash the outdated drafts — and restore the one deleted by mistake.
Permanently delete the folder of test uploads once I confirm.
Show what’s in the trash before anything is purged.
How your Drive changes
Everything in Drive — folders and shared-drive items included — is a file with an id. Names are not unique, so tools act on ids, and duplicate names are legal: it pays to search before creating.
“Delete” means the trash: reversible, auto-purged by Google after about 30 days. Permanent deletion bypasses the trash, takes folder subtrees with it and lives in a deliberately separate tool.
Google Docs, Sheets and Slides are moved, copied, shared, exported and converted as whole units. The server has no tool that edits text inside a Doc or cells inside a Sheet.
A write is never replayed after an uncertain failure: retries after network and
5xxerrors apply to reads only, so a copy, upload or new folder cannot be duplicated behind your back.
Built-in uploads are capped at 5 MB (larger files go through a resumable session via raw_request), exports at 10 MB per the Drive API. Comments created through the API cannot be anchored to a specific passage inside a Doc.
What can change
Operation | What happens | Confirmation boundary |
Search, metadata, download, export | Reads files and folders | No change |
Create a folder, copy or upload | Adds files or replaces content | Changes Drive |
Move, rename, update metadata | Changes a file’s location or properties | Changes a file |
Manage permissions | Grants, changes or revokes access | Changes who can open a file |
Manage comments | Creates, resolves or deletes comment threads | Can destroy a discussion |
Trash or restore a file | Moves it into or out of the trash | Reversible for ~30 days |
Delete forever | Erases past the trash, subtrees included | Destructive |
Raw API request | Can call API methods without a dedicated tool | Potentially destructive |
The AI client controls confirmation prompts. The server marks reads, writes and destructive tools so the client can distinguish an inspection from a live change.
Getting access
Google Drive requires OAuth 2.0; an API key is not enough.
Create or select a Google Cloud project and enable Google Drive API.
Configure the OAuth consent screen and create a Desktop app OAuth client.
Authorize the Google account whose files the server should work with. The OAuth 2.0 Playground can obtain the refresh token when Use your own OAuth credentials is enabled.
Request the narrowest scope that covers your use:
Scope
Enables
https://www.googleapis.com/auth/drive.readonlyThe read-only tools: search, metadata, download, export and shared-drive listing.
https://www.googleapis.com/auth/drive.fileOnly files created or opened by this app — enough for upload-and-organize flows on app-owned files.
https://www.googleapis.com/auth/driveThe full tool surface: sharing, trash, deletion and comments on arbitrary files.
The server uses whatever scope the refresh token was minted with; a call outside it fails with an insufficientPermissions error.
Testing-mode OAuth refresh tokens can expire after seven days. Publish the OAuth app, or use an Internal app in a Workspace domain, when you need long-lived access. Treat the client secret and refresh token as passwords.
Configuration
Variable | Required | Description |
| Yes* | OAuth client ID. |
| Yes* | OAuth client secret. |
| Yes* | OAuth refresh token. |
| Yes* | Short-lived (~1 hour) alternative to the OAuth trio. |
| No | Google APIs base URL override. |
| No | Per-request timeout; default |
| No | Temporary-error retries; default |
* Provide either the OAuth trio or an access token.
Without any credentials the server still starts and completes the MCP handshake; the first tool call replies with the exact variables to set instead of a dead server.
Data, limits and background work
Requests go to Google Drive. The local server refreshes Google OAuth tokens and calls the Drive API. Its anonymous telemetry contains an installation ID, package version, AI client and platform versions, and tool names — never OAuth tokens, file content, tool arguments or prompts. Set
ASKADS_TELEMETRY=0to opt out.Google applies quotas and size caps. Uploads through the built-in tool are limited to 5 MB and exports to 10 MB. On
429, the server uses backoff; reads also retry after network and5xxerrors, while writes are not replayed after an uncertain failure.Local files are handled cautiously. Downloads save only to absolute paths and refuse to overwrite an existing file unless asked; inline returns cap at 100 KB of textual content.
There is no background polling. The server runs only when called; nothing watches your Drive between requests. If your AI app supports scheduled tasks, it can check for changes periodically.
Technical documentation
MCP capability catalog — task-oriented pages for every tool.
Support
Found a bug or need a scenario? Create an issue or write in Telegram.
Available Tools
15 toolscopy_fileCopy a fileA
Copies a file and returns the new copy's metadata (a fresh fileId — the original is untouched). name renames the copy (default: same name as the original, NOT 'Copy of ...'); parent_id places it in a folder (default: same parent as the original for My Drive files). Works on Google-native files (Docs/Sheets/Slides) and binaries alike, but folders cannot be copied — recreate the tree with create_folder + copy_file per file. Comments and permissions are not copied. Each retry would create another copy, so after an ambiguous failure check with search_files before calling again.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the copy (defaults to the original's name). | |
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| parent_id | No | Folder for the copy (defaults to the original's parent). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by revealing non-idempotency ('each retry would create another copy'), the fresh-fileId return behavior, default naming quirks, and that comments and permissions are not copied. No contradiction with the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five dense sentences, with the core action front-loaded. Every sentence earns its place by adding a distinct operational fact—naming defaults, folder exclusion, copied metadata, or retry behavior—with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, this description provides complete context: return value, supported file types, folder limitation, metadata exclusions, and retry handling. Combined with the schema, the agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameters (100% coverage), and the description adds meaningful detail beyond it: name defaults to the original name (not 'Copy of ...'), and parent_id defaults to the original's parent for My Drive files. This enriches the schema instead of repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'Copies a file and returns the new copy's metadata,' specifying a clear verb and resource. The phrase 'the original is untouched' distinguishes it from move/delete siblings, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not-to-use guidance: folders cannot be copied, and names the alternative workflow (create_folder + copy_file per file). It also tells the agent to check with search_files before retrying after an ambiguous failure, which is actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderCreate a folderA
Creates a folder (a Drive file with mimeType application/vnd.google-apps.folder) and returns its id, name, parents and webViewLink. parent_id places it inside a folder or a shared drive ('root' or omitted = My Drive top level). Drive allows several folders with the same name in the same parent — search_files first if the folder might already exist, and reuse its id instead of creating a duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The folder name (not required to be unique, even within one parent). | |
| parent_id | No | Parent folder or shared-drive id; omitted = My Drive root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already show readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds meaningful behavioral context beyond those flags: duplicate names are allowed in the same parent, the parent_id can target a shared drive, and the tool returns id, name, parents, and webViewLink. This is especially helpful because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver the core action, return values, parameter meaning, and duplication warning without any filler. The most important caveat about duplicates and search_files is placed at the end but still earns its place because it prevents harmful duplicate calls.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter create operation with no output schema, the description is complete: it explains what is created, what is returned, how parent_id behaves, and how to avoid unwanted duplicates. The annotations and full parameter coverage fill the remaining operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter descriptions already document that name need not be unique and parent_id is a folder/shared-drive id that defaults to My Drive root. The description mostly restates this, adding only the literal 'root' value and reinforcing the duplicate-name caveat. That is useful but does not substantially exceed the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: it creates a Drive folder with the mimeType application/vnd.google-apps.folder, and names the returned fields. It also distinguishes itself from the search_files sibling by addressing duplicate-folder handling, so an agent understands exactly what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance: if the folder might already exist, search_files should be called first and the existing id reused instead of calling create_folder. This is a clear when-not-to-use condition and identifies the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_file_foreverPermanently delete a fileADestructive
PERMANENTLY deletes a file, BYPASSING the trash — there is no undo, no 30-day grace period, and a folder takes every descendant with it. This is NOT the same as trash_file: when a user says 'delete', they almost always mean the reversible trash — use trash_file unless they explicitly confirmed permanent, unrecoverable deletion. Requires ownership (or organizer on a shared drive). Returns {ok:true} on success (the API responds with an empty 204).
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annocations already mark this as destructive and non-idempotent, but the description goes much further: no undo, no 30-day grace, folder descendants are deleted with it, and the API returns an empty 204 mapped to {ok:true}. This gives the agent a realistic model of what invoking it actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries meaningful information: the destructive nature is front-loaded, the sibling alternative is named, the permission requirement is explicit, and the return value is specified. Though the description is long, no sentence is wasted for a high-stakes destructive tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive annotation, the single parameter with complete schema coverage, and no output schema, the description covers all the key operational facts: irreversible action, scope of deletion, authorization need, alternative tool, and return shape. An agent has enough to decide whether to use this tool and what the outcome looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: file_id is already documented in detail, including examples of where to find it and notes that folders and shared-drive items count as files. The description adds context about folders and descendants, but does not substantially add new meaning to the parameter itself, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (permanently delete a file), the resource (file), and the critical scope (bypassing trash with no undo). It explicitly differentiates itself from trash_file, so an agent can distinguish between destructive and reversible deletion without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: use trash_file unless the user has confirmed permanent, unrecoverable deletion. It also states the permission prequisite (ownership or organizer on a shared drive), so the agent knows when the tool is callable and when it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_fileDownload file contentARead-onlyIdempotent
Downloads a binary file's bytes. With save_path (absolute local path) the file is written to disk (refuses to overwrite unless overwrite=true) and the result reports saved_to/bytes; without save_path small textual files (≤100 KB, text/JSON/XML) are returned inline as content. Google-native files (Docs/Sheets/Slides — mimeType application/vnd.google-apps.*) have no bytes: this tool rejects them, use export_file; for a shortcut it names the real target to download instead. acknowledge_abuse=true downloads a file Drive flagged as malware/abuse (owner only).
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| overwrite | No | Replace save_path if it already exists (default false). | |
| save_path | No | Absolute local path to write the file to (required for binary or >100 KB content). | |
| acknowledge_abuse | No | Download even though Drive flagged the file as abusive (owner only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnly/idempotent annotations, the description adds meaningful behavioral detail: overwrite refusal unless overwrite=true, inline size/type limits, rejection of Google-native files, shortcut resolution, and abuse-download restrictions. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then uses compact conditional clauses to cover modes, exceptions, and edge cases. Every sentence carries essential routing or behavioral information without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what to expect in each mode (saved_to/bytes vs inline content) and all relevant caveats. An agent has enough information to decide when and how to invoke the tool, including what to do for Google-native and flagged files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema: it explains the overwrite refusal behavior and the owner-only constraint on acknowledge_abuse. It could have also clarified file_id, but the schema already documents that adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Downloads a binary file's bytes') and immediately clarifies the two operating modes. It also explicitly separates itself from export_file for Google-native files, making sibling differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete decision rules: use save_path for writing to disk, inline return for small text files, export_file for Google-native files, and acknowledge_abuse for flagged files. It explicitly names an alternative tool and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fileExport a Google Workspace fileARead-onlyIdempotent
Exports (converts) a Google-native file — Doc, Sheet, Slides, Drawing — to a regular format. mime_type picks the target: Docs → text/markdown, text/plain, text/html, application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document (.docx), application/rtf; Sheets → text/csv (FIRST sheet only), application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (.xlsx); Slides → application/pdf, text/plain, application/vnd.openxmlformats-officedocument.presentationml.presentation (.pptx); Drawings → image/png, image/svg+xml, application/pdf. With save_path the result is written to disk; without it small textual exports (≤100 KB) come back inline as content. Export is capped at 10 MB by the API — use the file's exportLinks (get_file) for bigger documents. Binary (non-Google) files are not exportable — use download_file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| mime_type | Yes | Target format, e.g. text/markdown, text/csv, application/pdf (see the description for what each Google type supports). | |
| overwrite | No | Replace save_path if it already exists (default false). | |
| save_path | No | Absolute local path to write the export to (required for binary or >100 KB output). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses concrete behavior: exports are capped at 10 MB, only small textual exports under 100 KB return inline as content, Sheets exports only the first sheet, and save_path writes output to disk. These are non-obvious behavioral traits an agent needs to invoke the tool correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the core purpose, and every subsequent segment earns its place. The MIME mapping is dense but necessary and clearly organized by source type. There is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers return behavior, size limits, unsupported file types, and where to route for alternatives. Combined with the schema's save_path requirement note, an agent has everything needed to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema has 100% parameter coverage, the description adds critical semantics: the full MIME type mapping per Google file type, the meaning of save_path versus inline return, and the overwrite behavior context. The mime_type schema description even defers to the tool description, making this added meaning essential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Exports (converts) a Google-native file — Doc, Sheet, Slides, Drawing — to a regular format.' It enumerates source types and target formats, and explicitly contrasts itself with download_file for binary files, making sibling differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit routing guidance: 'Binary (non-Google) files are not exportable — use download_file' and 'use the file's exportLinks (get_file) for bigger documents.' It also tells the agent when to use save_path versus relying on inline content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileGet file metadataARead-onlyIdempotent
Returns a file's metadata (never its content — that is download_file/export_file): id, name, mimeType, size, parents, driveId, createdTime/modifiedTime, trashed, starred, description, md5Checksum, webViewLink, webContentLink, exportLinks (for Google-native files), owners, lastModifyingUser, shortcutDetails (a shortcut's real target id/mimeType) and capabilities (canEdit/canShare/canTrash/canDelete/canDownload — check before mutating). Google-native files (mimeType application/vnd.google-apps.*) report no size and no md5Checksum. Pass fields to select a custom projection (Drive fields syntax) when the default set is too much or too little.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Custom Drive fields projection, e.g. "id,name,permissions(id,role,emailAddress)". Defaults to a rich metadata set. | |
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/idempotent/non-destructive, so the bar is lower, but the description adds substantial behavior not in annotations: content is never returned, Google-native files lack size/md5Checksum, shortcuts expose target details, and capabilities are included for pre-mutation checks. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with core purpose and content exclusion before enumerating return fields. Dense but every segment earns its place, and since there is no output schema the field list is necessary rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a broad metadata surface, the description enumerates all expected fields, flags special cases (Google-native no size/md5, shortcutDetails), and routes content retrieval to named siblings. An agent has enough to invoke correctly without opening any other tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, so baseline is 3. The description adds a bit beyond schema: it clarifies that fields uses Drive fields syntax and explains the tradeoff of the default projection, and it reinforces file_id semantics. Does not add syntax examples as much as it could, but sufficient bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Returns a file's metadata'), clearly distinguishes itself from content-fetching siblings by explicitly naming download_file/export_file, and notes Google-native metadata exceptions. Far from tautology; an agent can tell what resource and scope this tool covers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when not to use it ('never its content — that is download_file/export_file') and tells the agent to check capabilities before mutating, which orients it toward mutation siblings. It also advises using fields projection when the default set is too much or too little, giving a concrete selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_commentsManage file commentsADestructive
Manages Drive comments on a file (Docs, Sheets, Slides, PDFs, images...). action=list pages through comments with their replies and resolved state (page_token; include_deleted shows tombstones); get fetches one (needs comment_id). create adds a comment (needs content; quoted_text attaches the passage it refers to — display only; positional anchoring inside a Doc's text is not possible through this API, such comments appear file-level). reply answers a thread (needs comment_id + content). resolve / reopen close or reopen a thread (need comment_id; optional content adds a closing note). delete removes a comment and its replies permanently (needs comment_id; author only). Comments carry author, createdTime/modifiedTime, resolved and quotedFileContent. Not for Docs suggestions — those are a Docs feature this API cannot touch.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | What to do with the file's comments. | |
| anchor | No | create only: a Drive anchor JSON string for region-anchorable media (rarely needed). | |
| content | No | create/reply: the comment text (plain text). Optional closing note for resolve/reopen. | |
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| page_size | No | list: comments per page (1..100; API default 20). | |
| comment_id | No | get/reply/resolve/reopen/delete: the comment id (from action=list). | |
| page_token | No | list: nextPageToken from the previous page. | |
| quoted_text | No | create only: the file passage the comment refers to (shown as a quote; does not position the comment). | |
| include_deleted | No | list: include deleted comments as tombstones (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations: it discloses that delete removes comments permanently and is author-only, that quoted_text is display-only with no positional anchoring possible, that deleted comments can appear as tombstones, and that suggestions are untouchable. These caveats align with destructiveHint=true, openWorldHint=true, and idempotentHint=false, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the overall purpose followed by per-action behavioral notes. It contains no filler, though it is one long run-on paragraph; breaking the action list into a structured format would improve scanability. Every sentence contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with 9 parameters and no output schema, the description covers operation semantics, prerequisites, limitations, and the response fields comments carry (author, timestamps, resolved state, quotedFileContent). It does not spell out return shapes for each action, but an agent has enough to select and invoke actions correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 applies, but the description adds conditional-parameter meaning the schema cannot express: which action requires which parameter, that content is a closing note for resolve/reopen rather than body text, and that quoted_text does not actually anchor a comment inside a document. This enriches the static schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Manages Drive comments on a file', then enumerates each action (list, get, create, reply, resolve, reopen, delete) with enough detail to distinguish it from any sibling. It also explicitly carves out 'Docs suggestions' as out of scope, so the tool's purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use each action and notes a key exclusion: 'Not for Docs suggestions — those are a Docs feature this API cannot touch.' It does not point to an alternative tool for suggestions, but it is clear that this tool is the right one for Drive comments and not for that adjacent use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_permissionsManage sharing & permissionsADestructive
Manages who can access a file. action=list shows the grants (id, type, role, emailAddress/domain, expirationTime, pendingOwner). action=share grants access: type=user/group (needs email_address), domain (needs domain), or anyone (link sharing; allow_file_discovery=true also makes it searchable); role=reader, commenter, writer, fileOrganizer/organizer (shared drives only) or owner. Sharing with a user emails them by default — send_notification_email=false suppresses it (not allowed for ownership transfers); email_message adds a note. action=update changes an existing grant's role (needs permission_id from list); action=remove revokes it. Ownership transfer: role=owner with transfer_ownership=true — between personal accounts this only INVITES the new owner (pendingOwner until they accept). Changes are live immediately; removing your own access to someone else's file is irreversible from your side. role=owner/organizer grants full control including permanent deletion — prefer writer or less.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | share/update: the access level. fileOrganizer/organizer exist only on shared drives; owner transfers ownership. | |
| type | No | share only: who the grant is for. user/group need email_address; domain needs domain; anyone = link sharing. | |
| action | Yes | What to do with the file's permissions. | |
| domain | No | share with type=domain: the Workspace domain, e.g. example.com. | |
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| page_token | No | list: nextPageToken from the previous page. | |
| email_address | No | share with type=user/group: the grantee's email address. | |
| email_message | No | share: a custom note for the notification email. | |
| permission_id | No | update/remove: the permission id from action=list. | |
| expiration_time | No | update: RFC3339 expiry for the grant, e.g. 2026-12-31T00:00:00Z (not available for owners). | |
| transfer_ownership | No | share with role=owner: confirm the ownership transfer (required by the API for role=owner). | |
| allow_file_discovery | No | share with type=domain/anyone: whether the file can be FOUND by search (default false = link only). | |
| send_notification_email | No | share with type=user/group: send the notification email (API default true; must stay true for ownership transfer). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations, disclosing that user sharing emails by default and can be suppressed, that ownership transfers between personal accounts only invite pendingOwner status until accepted, that changes are live immediately, that removing one's own access is irreversible, and that owner/organizer roles allow permanent deletion. These details align with destructiveHint=true and add critical safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but tightly organized by action, with the core purpose front-loaded and each clause earning its place. Use of semicolons and explicit parameter groupings keeps related information together without unnecessary prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with no output schema, the description is remarkably complete: it covers all four actions, parameter prerequisites, notification behavior, ownership-transfer caveats, and destructive consequences. An agent has enough context to invoke any action correctly, including edge cases like shared drives and pending ownership.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema coverage is 100%, the description adds important operational meaning: send_notification_email defaults to true and must stay true for ownership transfers, allow_file_discovery makes domain/anyone links searchable, expiration_time is unavailable for owners, and fileOrganizer/organizer are shared-drive-only. This meaningfully improves the agent's ability to combine parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Manages who can access a file' and then enumerates four concrete actions (list, share, update, remove), each with a clear effect. This unambiguously identifies the resource and operation and distinguishes it from sibling file-management tools like update_file_metadata or manage_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains when each action applies and the prerequisites for each (e.g., update needs permission_id from list, share requires certain type/role combinations). It does not explicitly name alternative sibling tools or exclusion scenarios, but the tool is the only permissions-management tool in the set, so the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileMove a fileADestructiveIdempotent
Moves a file or folder into another folder (or shared drive) and returns id, name and the new parents. By default the file leaves all its current parents (a plain move); keep_existing_parents=true only adds the new parent — note that files in shared drives always have exactly one parent, so keeping old parents fails there. Moving between My Drive and a shared drive changes ownership rules and may be rejected by the drive's settings. The move costs one extra read (the current parents are fetched first).
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| new_parent_id | Yes | Destination folder or shared-drive id ('root' = My Drive top level). | |
| keep_existing_parents | No | Add the new parent without removing the old ones (My Drive only; default false = a real move). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description adds meaningful behavioral detail: the default action removes the file from all current parents, keep_exsisting_parents only adds, shared-drive parent constraints, ownership-rule changes, possible rejection, and even an extra-read cost. This goes well beyond what the annotations alone communicate. No contradiction with annotations; 'destructive' aligns with removing parent relationships and ownership changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the main action and return value are in the first sentence, caveats follow logically, and every sentence earns its place (default behavior, shared-drive exception, ownership/rejection warning, cost note). There is no fluff or repetition of schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the operation's complexity, the description explains the return value, the default vs. optional behavior, edge cases (shared drives, ownership, rejection), and performance cost. The input schema already documents parameters, and no output schema exists, so the description's return-value note is necessary and sufficient. An agent has everything needed to decide when and how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters at 100%, so the baseline is 3. The description adds value by clarifying the real-world consequence of keep_existing_parents=true and the shared-drive limitation ('files in shared drives always have exactly one parent, so keeping old parents fails there'), which is not fully captured in the schema. It also contextualizes file_id and new_parent_id implicitly via the move semantic. This exceeds the baseline without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: 'Moves a file or folder into another folder (or shared drive)' and specifies the return value (id, name, new parents). This clearly distinguishes it from siblings like copy_file, update_file_metadata, and trash_file. The purpose is unambiguous and specific, not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default move behavior vs. keep_existing_parents=true, and warns that the latter fails in shared drives because they always have exactly one parent. It also mentions that moving between My Drive and a shared drive may be rejected. However, it does not explicitly name alternative tools (e.g., copy_file when the original should be retained), so it stops short of full when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_requestRaw Google Drive API callADestructive
Escape hatch to call any Google Drive API v3 path directly, for requests the typed tools don't cover — e.g. revisions ("drive/v3/files//revisions"), changes ("drive/v3/changes?pageToken=..."), shortcut creation (POST "drive/v3/files" with shortcutDetails), emptying the trash (DELETE "drive/v3/files/trash"), generateIds, or starting a resumable upload session (POST "upload/drive/v3/files?uploadType=resumable"). The path is relative to https://www.googleapis.com and may carry a query string (remember supportsAllDrives=true for shared-drive items). The Bearer token is added automatically; the method defaults to GET; the response must be JSON (binary media downloads belong to download_file/export_file).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body (POST/PATCH only). | |
| path | Yes | API path relative to https://www.googleapis.com, e.g. "drive/v3/files/<fileId>/revisions?fields=*". | |
| method | No | HTTP method (the Drive API uses these four). Defaults to GET. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that the Bearer token is added automatically, the method defaults to GET, the response must be JSON, and supportsAllDrives=true must be remembered for shared-drive items. It also includes destructive examples like DELETE drive/v3/files/trash, consistent with destructiveHint=true. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause adds value: purpose, examples, base URL, auth behavior, method default, and response constraints are all included without filler. The main purpose is front-loaded in the first sentence, followed by useful examples and operational details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic raw-request tool with no output schema, the description covers base URL construction, query strings, authentication, method defaults, request body semantics, JSON-only responses, and the boundary with binary download tools. Nothing essential is missing for an agent to invoke it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already documents all three parameters, the description adds meaningful context: the path is relative to https://www.googleapis.com, may include a query string, and needs supportsAllDrives for shared drives. It also clarifies that body is for POST/PATCH requests and that method defaults to GET, going well beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states this is an 'escape hatch to call any Google Drive API v3 path directly,' with concrete examples such as revisions, changes, trash emptying, generateIds, and resumable uploads. This clearly identifies the resource and scope while distinguishing it from the typed sibling tools it is meant to bypass.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says to use this tool 'for requests the typed tools don't cover,' giving a clear selection rule. It also explicitly routes binary media downloads to download_file/export_file, providing a concrete exclusion and pointing to the correct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesSearch and list filesARead-onlyIdempotent
Searches and lists files and folders: id, name, mimeType, size, parents, driveId, modifiedTime, trashed, starred, webViewLink and shortcutDetails per file, plus nextPageToken. The convenience filters (name_contains, full_text_contains, mime_type, parent_id, only_folders) are AND-ed together and with the raw Drive query expression (q syntax, e.g. "modifiedTime > '2026-01-01T00:00:00'"). Trashed files are hidden unless include_trashed=true. Names are NOT unique in Drive — expect several hits and pick by id. parent_id lists a folder's direct children (use 'root' for My Drive's top level). Shared drives: pass drive_id to search one drive, or include_all_drives=true to search everything at once. Paginate with page_token; order_by e.g. 'modifiedTime desc,name'. incompleteSearch=true in the result means some corpora were skipped — narrow the search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Raw Drive search expression (q syntax), AND-ed with the other filters, e.g. "modifiedTime > '2026-01-01T00:00:00' and not name contains 'draft'". | |
| drive_id | No | Search only this shared drive. | |
| order_by | No | Sort keys: createdTime, folder, modifiedTime, name, quotaBytesUsed, recency, starred; add ' desc' to reverse, e.g. 'modifiedTime desc,name'. | |
| mime_type | No | Exact mimeType, e.g. application/pdf, application/vnd.google-apps.document (Google Doc), application/vnd.google-apps.spreadsheet (Google Sheet). | |
| page_size | No | Files per page (1..1000; API default 100). | |
| parent_id | No | Only direct children of this folder ('root' = My Drive top level). | |
| page_token | No | nextPageToken from the previous page. | |
| only_folders | No | Only folders (mimeType application/vnd.google-apps.folder). | |
| name_contains | No | Substring match on the file name (case-insensitive prefix matching per word). | |
| include_trashed | No | Include trashed files (default false — the trash is a separate view, as in the Drive UI). | |
| full_text_contains | No | Full-text match over the file's content and description. | |
| include_all_drives | No | Search My Drive and every shared drive together (slower; ignored when drive_id is set). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyhint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered and the bar is lower. The description adds substantial behavior beyond annotations: trashed files are hidden unless include_trashed=true, names are NOT unique so 'expect several hits and pick by id', incompleteSearch=true means some corpora were skipped, convenience filters are AND-ed with the raw query, and include_all_drives is ignored when drive_id is set. These are exactly the operational edge cases structured hints cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly 135 words for a 12-parameter tool with no output schema is appropriately sized, and the first sentence front-loads the core purpose and return fields before the operational caveats follow in logical order. A few details (order_by examples, parent_id 'root', include_trashed default) slightly overlap what the schema already states, but no sentence is filler for a search tool with this many edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 optional parameters and no output schema, the risk of misuse is high, yet the description covers return format, filter composition, drive scoping, pagination, ordering, trashed-view semantics, name non-uniqueness, and the open-world caveat (incompleteSearch meaning skipped corpora). The openWorldHint annotation is substantiated by concrete guidance to 'narrow the search'. Almost nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, establishing a baseline of 3 since each parameter is already documented. The description adds compositional meaning the schema cannot express: the convenience filters (name_contains, full_text_contains, mime_type, parent_id, only_folders) are AND-ed together and with the raw query expression, and it explains the trashed default via the Drive UI's separate trash view. This justifies one point above baseline, though the schema still does most per-parameter heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Searches and lists files and folders') and enumerates the returned fields (id, name, mimeType, size, parents, driveId, modifiedTime, trashed, starred, webViewLink, shortutDetails, nextPageToken), making the tool's scope unmistakable. This clearly distinguishes it from siblings like get_file (single file by id), list_shared_drives (drives only), and the mutation tools (trash/delete/update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear scoping context: parent_id with 'root' targets My Drive's top level, drive_id restricts to one shared drive, include_all_drives=true searches everything, and trashed files require include_trashed=true. It does not explicitly name sibling alternatives such as 'use get_file when you already have the id', though the caveat 'pick by id' implies it — so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trash_fileTrash or restore a fileADestructiveIdempotent
action=trash moves a file (or folder, with everything inside) to the Drive trash; action=restore brings it back. Trashing is REVERSIBLE — the file stays recoverable until the trash auto-purges it after ~30 days — and is the safe default whenever a user asks to 'delete' something: only use delete_file_forever when they explicitly want it gone beyond recovery. Trashed files disappear from search_files unless include_trashed=true. Only the owner (or a shared-drive member with the right role) can trash; restore puts the file back at its old parent. Returns id, name, trashed and explicitlyTrashed.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | trash = move to the trash (reversible); restore = take it back out. | |
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing reversibility, the ~30-day auto-purge window, permission requirements, restore behavior, and the effect on search_files. It also states that trashing a folder includes everything inside, which is important behavioral context the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes meaningful information: what the actions do, reversibility and safety, search visibility, permissions, and return values. It front-loads the core action semantics and avoids redundant fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description is complete: it explains both actions, side effects, permission constraints, visibility in search, and exactly what the response contains. An agent has enough context to invoke the tool correctly and understand the consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters thoroughly, so the baseline is 3. The description adds extra meaning by explaining folder behavior, the reversible nature of the trash action, and restore's return to the old parent, which enriches the parameter semantics beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (trash or restore) on a specific resource (files/folders) and explains the two action values. It also distinguishes this tool from delete_file_forever, making its purpose unambiguous relative to siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says trashing is the safe default whenever a user asks to 'delete' something, and instructs that delete_file_forever should only be used when the user explicitly wants permanent deletion. It also provides operational context such as how trashed files behave in search_files, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_file_metadataRename / update file metadataADestructiveIdempotent
Renames a file and/or updates its description and starred flag — metadata only, the content is untouched (that is upload_file with file_id). Only the provided fields change; at least one is required. Works on folders too (folders are files). Returns id, name, description, starred and the new modifiedTime. Moving lives in move_file, trashing in trash_file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New file name (the extension is part of the name — keep it unless you mean to change it). | |
| file_id | Yes | The file id — the long id from the Drive URL (drive.google.com/file/d/<fileId> or docs.google.com/.../d/<fileId>/edit) or from search_files/get_file output. Folders and shared-drive items are files too. | |
| starred | No | Star or unstar the file. | |
| description | No | New description (shown in the Drive details pane; searchable via full text). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior: only metadata changes, content is untouched, only provided fields change, at least one field is required, folders are supported, and the return values are listed. This goes well beyond the annotations and clarifies that despite destructiveHint, the file content itself is not modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it front-loads the core purpose, then explains scope and exclusions, and ends with return values. Every sentence earns its place and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description appropriately lists the return fields. It also covers edge cases (folders are files), the 'content untouched' caveat, and sibling tool routing. Nothing essential is missing for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds operation-level semantics by stating 'Only the provided fields change; at least one is required,' which is not otherwise explicit in the schema and helps the agent understand the required combination of optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Renames a file and/or updates its description and starred flag — metadata only.' It also explicitly differentiates itself from related operations by noting 'content is untouched' and pointing to move_file and trash_file for other use cases, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance by stating when this tool is appropriate (metadata-only updates) and when it is not: moving lives in move_file, trashing in trash_file, and uploading content is handled by upload_file. This directly helps an agent select this tool over siblings without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload file contentA
Uploads content to Drive and returns the file's metadata. Without file_id it CREATES a new file (name required; parent_id places it); with file_id it REPLACES that file's content in place (same id, new bytes) — name/parent_id are ignored then. The bytes come from exactly one of content (inline UTF-8 text) or local_path (absolute path to a local file). mime_type describes the uploaded bytes (default: text/plain for content, guessed from the extension for local_path). convert_to=document|spreadsheet|presentation imports the bytes into an editable Google Doc/Sheet/Slides (e.g. a .docx or .csv becomes native; export back with export_file). Cap: 5 MB per upload (multipart) — larger files need a resumable session via raw_request. A retry after an ambiguous failure without file_id would create a duplicate — search_files first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name in Drive — required when creating (no file_id). | |
| content | No | Inline UTF-8 text content — for small text files. Exactly one of content/local_path. | |
| file_id | No | Existing file whose CONTENT to replace (omit to create a new file). | |
| mime_type | No | mimeType of the uploaded bytes (default: text/plain for content, extension-based for local_path). | |
| parent_id | No | Folder for the new file (create only; omitted = My Drive root). | |
| convert_to | No | Import into a Google-native editable file: document (Doc), spreadsheet (Sheet), presentation (Slides). | |
| local_path | No | Absolute local path to read the bytes from. Exactly one of content/local_path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only convey readOnly=false, idempotent=false, openWorld=true. The description adds substantial context beyond that: the dual create/replace behavior, the retry-duplicate hazard, the 5 MB multipart cap, the precedence rule that name/parent_id are ignored in replace mode, and the convert_to-to-export_file round trip — all behavioral traits the agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and near-zero waste: five sentences cover the split modes, byte source constraint, mime defaults, conversion, size cap, and retry safety. Small deduction because a few phrases (mime defaults, exactly-one constraint) restate what the input schema already documents rather than adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex dual-mode tool with 7 params, zero required params in the schema, and no output schema, the description covers all invocation risks: mode disambiguation, conditional requirements, size limit, conversion semantics, and duplicate prevention. The only gap is the return contract — 'returns the file's metadata' names the payload but not its fields, notably the file id, which matters because no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's per-parameter descriptions already state 'required when creating' and 'Exactly one of content/local_path'. The description adds interaction-level semantics the flat schema cannot express — name/parent_id ignored when file_id is present, convert_to producing native Google files, and the 5 MB bound — though some mime_type default text duplicates the schema, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Uploads content to Drive and returns the file's metadata.' It then discretely separates the create mode (no file_id, name required) from the replace mode (file_id, same id, new bytes), which clearly distinguishes it from siblings like download_file, export_file, copy_file, and update_file_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing to alternatives is present: 'export back with export_file' for converted files, 'larger files need a resumable session via raw_request' past the 5 MB cap, and 'search_files first' before retrying an ambiguous create. Naming the sibling and the condition that selects it leaves nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v0.1.0- First observed
copy_file - First observed
create_folder - First observed
delete_file_forever - First observed
download_file - First observed
export_file - First observed
get_file - First observed
list_shared_drives - First observed
manage_comments - First observed
manage_permissions - First observed
move_file - First observed
raw_request - First observed
search_files - First observed
trash_file - First observed
update_file_metadata - First observed
upload_file
TDQS
Scored across 15 tools
Each tool targets a distinct resource/action pair: search, metadata, folder creation, copy, move, upload, download, export, trash, permanent delete, permissions, comments, and a raw API escape hatch. The potentially confusing pairs like download/export and trash/delete are explicitly differentiated in their descriptions.
Tool names follow a consistent snake_case verb_noun pattern (search_files, create_folder, upload_file, manage_permissions). Even delete_file_forever and raw_request are predictable within the naming scheme.
15 tools is right-sized for a Google Drive server: it covers searching, file lifecycle operations, metadata, content transfer, permissions, comments, and an escape hatch. Each tool has a clear purpose and none feel redundant or like filler.
The surface covers the core Drive workflow well: search, metadata retrieval, folder creation, upload/download/export, copy/move, metadata updates, reversible and permanent deletion, permissions, and comments. raw_request fills remaining gaps like revisions, shortcut creation, and resumable uploads.
Maintenance
Related MCP Connectors
Give Claude only the Google Drive files you choose. Every action logged.
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
Create and manage documents, spreadsheets, and presentations from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI models to search, list, and read files from Google Drive with automatic format conversion for Google Workspace documents.5,007 npmMIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Google Drive, supporting file operations like list, search, read, create, update, delete, share, and manage permissions.7844 npm4MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with Google Drive, including reading, searching, listing folders, and uploading files.71-
- AlicenseAqualityDmaintenanceEnables AI assistants to securely access and manage Google Drive files and Google Sheets within a specified folder scope, with support for reading various file types including PDFs and Excel.784 npm1MIT