Skip to main content
Glama

Google Drive MCP

English | Русский

npm CI Glama License: MIT

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.readonly covers every read and drive.file limits access to app-created files; the full tool surface needs drive.

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.

  1. Prepare Google OAuth access.

  2. Add the server to your AI app.

  3. 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@latest
codex mcp list

Codex MCP documentation

claude 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@latest
claude mcp list

Claude Code MCP documentation

The 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"
      }
    }
  }
}

Cursor MCP documentation

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.

VS Code MCP documentation

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

  1. 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.

  2. “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.

  3. 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.

  4. A write is never replayed after an uncertain failure: retries after network and 5xx errors 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.

  1. Create or select a Google Cloud project and enable Google Drive API.

  2. Configure the OAuth consent screen and create a Desktop app OAuth client.

  3. 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.

  4. Request the narrowest scope that covers your use:

    Scope

    Enables

    https://www.googleapis.com/auth/drive.readonly

    The read-only tools: search, metadata, download, export and shared-drive listing.

    https://www.googleapis.com/auth/drive.file

    Only files created or opened by this app — enough for upload-and-organize flows on app-owned files.

    https://www.googleapis.com/auth/drive

    The 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

GOOGLE_DRIVE_CLIENT_ID

Yes*

OAuth client ID.

GOOGLE_DRIVE_CLIENT_SECRET

Yes*

OAuth client secret.

GOOGLE_DRIVE_REFRESH_TOKEN

Yes*

OAuth refresh token.

GOOGLE_DRIVE_ACCESS_TOKEN

Yes*

Short-lived (~1 hour) alternative to the OAuth trio.

GOOGLE_DRIVE_API_BASE

No

Google APIs base URL override.

GOOGLE_DRIVE_TIMEOUT_MS

No

Per-request timeout; default 60000 ms.

GOOGLE_DRIVE_MAX_RETRIES

No

Temporary-error retries; default 3.

* 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=0 to 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 and 5xx errors, 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

Support

Found a bug or need a scenario? Create an issue or write in Telegram.

Available Tools

15 tools
copy_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for the copy (defaults to the original's name).
file_idYesThe 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_idNoFolder for the copy (defaults to the original's parent).

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe folder name (not required to be unique, even within one parent).
parent_idNoParent folder or shared-drive id; omitted = My Drive root.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 fileA
Destructive

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesThe 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

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 contentA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesThe 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.
overwriteNoReplace save_path if it already exists (default false).
save_pathNoAbsolute local path to write the file to (required for binary or >100 KB content).
acknowledge_abuseNoDownload even though Drive flagged the file as abusive (owner only).

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 fileA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesThe 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_typeYesTarget format, e.g. text/markdown, text/csv, application/pdf (see the description for what each Google type supports).
overwriteNoReplace save_path if it already exists (default false).
save_pathNoAbsolute local path to write the export to (required for binary or >100 KB output).

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 metadataA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoCustom Drive fields projection, e.g. "id,name,permissions(id,role,emailAddress)". Defaults to a rich metadata set.
file_idYesThe 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

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

list_shared_drivesList shared drivesA
Read-onlyIdempotent

Lists the shared drives (formerly Team Drives) the authorized user is a member of: id, name, createdTime, plus nextPageToken. Use a drive's id as drive_id in search_files to browse its contents, or as parent_id to list its root. name_contains filters by name. My Drive is not a shared drive and never appears here.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoDrives per page (1..100; API default 10).
page_tokenNonextPageToken from the previous page.
name_containsNoOnly shared drives whose name contains this substring.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the bar for additional context is lower. The description adds valuable behavioral context: membership scoping, pagination via nextPageToken, name filtering, and the My Drive exclusion, all beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three efficient sentences, with the core purpose and output fields front-loaded. Every sentence adds distinct value: scope, downstream usage, filtering, and an exclusion note. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately lists the return fields (id, name, createdTime, nextPageToken). It covers pagination, filtering, scope, and how to use the result with sibling tools, making it complete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that name_contains filters by substring and that the output id is meant to be consumed by search_files or as parent_id, giving the parameters practical usage context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Lists'), a precise resource ('shared drives'), and the scope ('the authorized user is a member of'), which unambiguously distinguishes it from the sibling tools like search_files or get_file. It further clarifies that My Drive is not included, eliminating a common point of confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear follow-up usage: use the returned drive id as drive_id in search_files or as parent_id to list its root. It also gives an explicit exclusion ('My Drive is not a shared drive and never appears here'), though it does not state when not to use this tool relative to an alternative listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_commentsManage file commentsA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhat to do with the file's comments.
anchorNocreate only: a Drive anchor JSON string for region-anchorable media (rarely needed).
contentNocreate/reply: the comment text (plain text). Optional closing note for resolve/reopen.
file_idYesThe 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_sizeNolist: comments per page (1..100; API default 20).
comment_idNoget/reply/resolve/reopen/delete: the comment id (from action=list).
page_tokenNolist: nextPageToken from the previous page.
quoted_textNocreate only: the file passage the comment refers to (shown as a quote; does not position the comment).
include_deletedNolist: include deleted comments as tombstones (default false).

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 & permissionsA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoshare/update: the access level. fileOrganizer/organizer exist only on shared drives; owner transfers ownership.
typeNoshare only: who the grant is for. user/group need email_address; domain needs domain; anyone = link sharing.
actionYesWhat to do with the file's permissions.
domainNoshare with type=domain: the Workspace domain, e.g. example.com.
file_idYesThe 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_tokenNolist: nextPageToken from the previous page.
email_addressNoshare with type=user/group: the grantee's email address.
email_messageNoshare: a custom note for the notification email.
permission_idNoupdate/remove: the permission id from action=list.
expiration_timeNoupdate: RFC3339 expiry for the grant, e.g. 2026-12-31T00:00:00Z (not available for owners).
transfer_ownershipNoshare with role=owner: confirm the ownership transfer (required by the API for role=owner).
allow_file_discoveryNoshare with type=domain/anyone: whether the file can be FOUND by search (default false = link only).
send_notification_emailNoshare with type=user/group: send the notification email (API default true; must stay true for ownership transfer).

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 fileA
DestructiveIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesThe 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_idYesDestination folder or shared-drive id ('root' = My Drive top level).
keep_existing_parentsNoAdd the new parent without removing the old ones (My Drive only; default false = a real move).

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 callA
Destructive

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON request body (POST/PATCH only).
pathYesAPI path relative to https://www.googleapis.com, e.g. "drive/v3/files/<fileId>/revisions?fields=*".
methodNoHTTP method (the Drive API uses these four). Defaults to GET.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 filesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoRaw 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_idNoSearch only this shared drive.
order_byNoSort keys: createdTime, folder, modifiedTime, name, quotaBytesUsed, recency, starred; add ' desc' to reverse, e.g. 'modifiedTime desc,name'.
mime_typeNoExact mimeType, e.g. application/pdf, application/vnd.google-apps.document (Google Doc), application/vnd.google-apps.spreadsheet (Google Sheet).
page_sizeNoFiles per page (1..1000; API default 100).
parent_idNoOnly direct children of this folder ('root' = My Drive top level).
page_tokenNonextPageToken from the previous page.
only_foldersNoOnly folders (mimeType application/vnd.google-apps.folder).
name_containsNoSubstring match on the file name (case-insensitive prefix matching per word).
include_trashedNoInclude trashed files (default false — the trash is a separate view, as in the Drive UI).
full_text_containsNoFull-text match over the file's content and description.
include_all_drivesNoSearch My Drive and every shared drive together (slower; ignored when drive_id is set).

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 fileA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYestrash = move to the trash (reversible); restore = take it back out.
file_idYesThe 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

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 metadataA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew file name (the extension is part of the name — keep it unless you mean to change it).
file_idYesThe 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.
starredNoStar or unstar the file.
descriptionNoNew description (shown in the Drive details pane; searchable via full text).

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFile name in Drive — required when creating (no file_id).
contentNoInline UTF-8 text content — for small text files. Exactly one of content/local_path.
file_idNoExisting file whose CONTENT to replace (omit to create a new file).
mime_typeNomimeType of the uploaded bytes (default: text/plain for content, extension-based for local_path).
parent_idNoFolder for the new file (create only; omitted = My Drive root).
convert_toNoImport into a Google-native editable file: document (Doc), spreadsheet (Sheet), presentation (Slides).
local_pathNoAbsolute local path to read the bytes from. Exactly one of content/local_path.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 15 tool updatesv0.1.0
    • First observedcopy_file
    • First observedcreate_folder
    • First observeddelete_file_forever
    • First observeddownload_file
    • First observedexport_file
    • First observedget_file
    • First observedlist_shared_drives
    • First observedmanage_comments
    • First observedmanage_permissions
    • First observedmove_file
    • First observedraw_request
    • First observedsearch_files
    • First observedtrash_file
    • First observedupdate_file_metadata
    • First observedupload_file

TDQS

A4.8/5.0

Scored across 15 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers