google-drive · git:20260923.32a3ff2 · 2026-09-23 · sha256 ba5545a21037a778

google-drive git:20260923.32a3ff2A

Immutable. This exact content never changes and is served at /api/v1/blob/ba5545a21037a778.

---
name: google-drive
description: Work with Google Drive through the google_drive_* tools - search, read, create, organize, share, comment, and export files. Use when creating files in specific folders, moving or renaming, converting Markdown/CSV into Docs/Sheets, managing comments, or exporting a rendered PDF.
---

# Google Drive files

## Ids come from search, never guesses

Every tool takes Drive file ids. Get them from `google_drive_search` (or
`google_drive_list_folder` for a known folder,
`google_drive_list_recent_files` for "what was I just working on"), or from
the id in a URL the user pasted. `exact_name` beats `query` for a known
filename; add `mime_type_filter` to cut noise. Never invent an id or reuse
one from a stale conversation - re-search first.

## Folder targeting

- `google_drive_create_folder` takes `parent_folder_id`; without it the
  folder lands in My Drive root. When the user names a destination folder,
  resolve its id and pass it - a file created in root when a folder was
  specified is a wrong result even if the content is perfect.
- `google_drive_create_file` also takes `parent_folder_id`, so create files
  directly where they belong instead of creating then moving.
- The Docs/Sheets/Slides providers' own create tools CANNOT target a folder
  (their APIs have no parent parameter). When placement matters, either
  create the artifact there with `google_drive_create_file` (Markdown to
  Doc, CSV to Sheet), or create it and then `google_drive_move_or_rename`
  with `destination_folder_id`.
- `google_drive_move_or_rename` does either or both in one call; renaming
  does not change the id.
- Grant limits: this app's grant is `drive.file`, so moving into or writing
  files/folders this app never created (and the user never picked) can 403.
  That 403 is a permission fact, not a transient error; do not retry it.

## Markdown and CSV conversion

`google_drive_create_file` with `target_mime_type:
application/vnd.google-apps.document` converts Markdown (headings, lists,
tables) into a real Google Doc in one call; `...spreadsheet` converts CSV
into a Sheet. This is the fastest correct way to produce a formatted Doc:
prefer it over create-then-insert when the content is known up front.
`google_drive_update_file_content` converts in place the same way.

## Copying, metadata, and sharing

- `google_drive_copy_file` duplicates a file (optionally into a folder) -
  the right way to instantiate a template without touching the original.
- `google_drive_get_file_metadata` returns the full record (mime type,
  parents, size, owners, modified time); use it to confirm a move landed.
- `google_drive_get_file_permissions` lists who has access;
  `google_drive_share_file` grants a role to an email. Share only when the
  user asked; report the link rather than widening access speculatively.
- `google_drive_download_file` returns the raw bytes base64-encoded for
  non-Google files (images, PDFs, plain text).

## Reading and exporting

- `google_drive_read_file` returns text: Docs as Markdown, Sheets as CSV per
  tab, Slides as plain text. Use it to verify content after writes.
- `google_drive_export_file` returns rendered bytes base64-encoded: `pdf`
  for Docs/Sheets/Slides (Sheets PDF renders every tab, charts included),
  `png`/`svg` for Drawings, plus office formats (docx/xlsx/pptx). Use PDF
  when the user wants to see the final look; exports cap at 10 MB.
- For one slide as PNG use the google-slides `get_slide_thumbnail` tool, not
  Drive export.

## Comments

Comments live on the Drive file, so one tool set covers Docs, Sheets, and
Slides alike:

- `google_drive_list_comments` returns each comment's text, quoted document
  text, resolved state, and replies; it pages, so follow `nextPageToken`
  before concluding a thread does not exist.
- `google_drive_add_comment` adds a file-level comment (no text anchor).
- `google_drive_reply_to_comment` replies by comment id, and its
  `action: "resolve"` (content optional) is the ONLY way to resolve a
  thread; editing document text near a comment never resolves it. Leave
  already-resolved threads alone.

## Deleting

`google_drive_trash_file` is recoverable (~30 days) and works on files and
folders (a trashed folder takes its contents). Permanent deletion is
deliberately not available; never promise it.

## Verify your work

After creates and moves, confirm placement with `google_drive_list_folder`
on the destination or `google_drive_get_file_metadata` (check `parents`).
After content writes, `google_drive_read_file` is the ground truth for text
and `google_drive_export_file` (pdf) for the rendered result.