Google Drive
Arcade toolkit · docs.arcade.dev
The Google Drive toolkit connects LLMs to Google Drive via Arcade, enabling agents to read, write, organize, share, and audit Drive files and folders on behalf of authenticated users.
Capabilities
- File discovery & access checks — search files, retrieve the full folder tree, check batch accessibility before reading, and look up the authenticated user's profile and storage environment.
- File I/O — download files directly (small files) or in byte-range chunks (large files), upload files from a URL (up to 25 MB, non-Workspace formats), and generate a Google file picker URL to request per-file access grants.
- Organization — create folders, move files within a drive, rename files or folders, and support both My Drive and shared drives.
- Permissions & sharing — share files with individuals (with role upsert), list all collaborators and link-sharing state, change general/link-sharing access, revoke access for specific people or groups, and bulk-remove all collaborators with fine-grained exceptions.
Tools16
GoogleDrive_CheckFileAccess
Check whether this app can already read each of several Drive files, in one batched pre-flight call, before attempting to read them. Use this when the user references multiple files, to learn which are readable up front instead of hitting a separate access error for each one. Where this app reaches files one grant at a time, the ungranted ones can then be granted together in a single picker step. Each input may be a bare file id or a full Google Drive/Workspace URL (documents, spreadsheets, slides, PDFs, images, folders — any type). Returns files (a per-id list with accessible, the title and mime_type when the file was read, and a reason when not usable), all_accessible (true only when every id is already accessible), connected_account_email (the connected Google account, empty when unknown), and a grant block. grant lists the ungranted ids (ungranted_ids) plus, when the inline picker is enabled, a single picker URL covering them all. Where this app already reaches every file the account can open there is no per-file grant to make, so ungranted_ids stays empty and only access_hint comes back. A reason of not_accessible_or_not_found is a file this app cannot read: one not granted to it yet, one that does not exist, or one the connected account itself cannot open — indistinguishable here. Empty ungranted_ids means no grant step exists, so treat those ids as not found rather than asking the user to grant them. invalid_reference is an input that is not a Drive id or link at all; ask the user to re-check it. error is a transient server-side failure (a timeout or 5xx) that no grant can fix; the same inputs may be retried later.
GoogleDrive_CreateFolder
Create a new folder in Google Drive. By default, parent folder paths are resolved in My Drive. For shared drives, use folder IDs or provide shared_drive_id.
GoogleDrive_DownloadFile
Download a blob file (non-workspace file) from Google Drive as base64 encoded content. For small files (under ~5MB raw), returns the file content directly in the response as base64. For large files, returns metadata with requires_chunked_download=True, meaning the file must be retrieved in parts with byte-range chunk downloads. By default, paths are resolved in My Drive. For shared drives, use file IDs or provide shared_drive_id.
GoogleDrive_DownloadFileChunk
Download a specific byte range of a file from Google Drive. Use this for large files that require chunked download (when a file download reports requires_chunked_download=True). Call repeatedly with increasing start_byte values to retrieve the complete file. Returns the chunk content as base64, along with progress information including whether this is the final chunk.
GoogleDrive_GenerateGoogleFilePickerUrl
Generate a URL where the user can grant this app access to specific Drive files. Check url first. An empty url means this app already reaches every file the connected account can open, so there is no per-file grant to request: this tool cannot change any outcome, and a file that could not be read is one the account itself cannot open. Do not retry it. Otherwise the URL opens Google's first-party Drive picker, where the user selects which files to share with this application — it is not a sign-in or credential prompt. By default the picker shows files of all types; pass file_types to restrict it to specific types. Use this when a prior tool reported that a file was not found or access was denied, and the user expects the file to exist. After the user completes the picker flow, retry the prior tool.
GoogleDrive_GetFileTreeStructure
Get the file/folder tree structure of the user's entire Google Drive. Very inefficient for large drives. Use with caution.
GoogleDrive_ListFilePermissions
List permissions on a Google Drive file or folder. Returns the individual people (and groups) with access and the current General access (link sharing) state. general_access is computed across the ENTIRE file regardless of filtering -- so "is this doc public?" is always answered authoritatively. When roles is provided, people and total_people reflect only collaborators whose role matches the filter. Truncated collaborators beyond limit are not returned; has_more indicates whether truncation occurred.
GoogleDrive_MoveFile
Move a file or folder to a different folder within the same Google Drive. Can move to a folder (keeping name), or move and rename in one operation. By default, paths are resolved in My Drive. For shared drives, use file IDs or provide shared_drive_id.
GoogleDrive_RemoveAllCollaborators
Remove all user collaborators (and optionally groups) from a Google Drive file. The file owner and the calling user are always preserved. Groups are preserved by default because the Drive API cannot verify group membership -- pass include_groups=True to opt in. Inherited shared-drive permissions are never removable from the file level and are skipped. Use except_people to preserve additional people or groups by email or name. Ambiguous or unmatched except_people entries raise an error to avoid accidentally removing someone the caller meant to keep.
GoogleDrive_RenameFile
Rename a file or folder in Google Drive. By default, paths are resolved in My Drive. For files in shared drives, either use the file ID directly or provide the shared_drive_id parameter.
GoogleDrive_RevokeFileAccess
Revoke access for specific people or groups on a Google Drive file. Identifies matches by email (exact, case-insensitive) or display name. When an input matches multiple people, the clear matches are still revoked and the ambiguous input is surfaced in the ambiguous response field with candidate details so the agent can re-prompt the user for just the uncertain ones. Inputs that don't match any collaborator are returned in not_found. Pending-owner matches (mid-ownership-transfer) are skipped and surfaced in skipped_pending_owner so the clean revokes in the batch still land. Owner permissions cannot be revoked -- transfer ownership first. When a grantee has both a direct and an inherited permission (e.g., shared-drive member also granted directly on the file), revoking the direct row leaves the inherited access intact. The inherited row is surfaced in skipped_inherited so callers don't assume the grantee is fully removed -- inherited access must be adjusted at the shared drive level.
GoogleDrive_SearchFiles
Search for files in Google Drive. The provided 'query' should only contain the search terms. The tool will construct the full search query for you.
GoogleDrive_SetGeneralAccess
Change the 'General access' (link sharing) setting on a Google Drive file. Idempotent: calling with the same state as the current configuration is a no-op. When access is 'domain', the link is scoped to the caller's email domain -- NOT the file owner's domain. For cross-org collaboration (e.g., editing a file owned by another organization), confirm with the user which domain they intend before calling. Google will reject domain sharing for personal accounts (gmail.com, outlook.com, etc.) -- the tool translates that rejection into a friendly error. The response's access and role fields report the EFFECTIVE state after the transition, not the requested state. For files on shared drives, inherited link permissions cannot be changed from the file level -- if the request would have required removing an inherited permission, the effective state will reflect the inherited permission that remained. When skipped_inherited is non-empty, inspect it to understand why effective state may differ from what was requested.
GoogleDrive_ShareFile
Share a file or folder in Google Drive with specific people by granting them permissions. If a user already has permission on the file, their role will be updated to the new role. By default, paths are resolved in My Drive. For shared drives, use file IDs or provide shared_drive_id.
GoogleDrive_UploadFile
Upload a file to Google Drive from a URL. Fetches the file content from the provided URL and uploads it to Google Drive. Supports files of any size - uses resumable upload internally for large files. CANNOT upload Google Workspace files (Google Docs, Sheets, Slides) CANNOT upload files larger than 25MB
GoogleDrive_WhoAmI
Get comprehensive user profile and Google Drive environment information. This tool provides detailed information about the authenticated user including their name, email, profile picture, Google Drive storage information, the shared drives (and their IDs) the user has access to, and other important profile details from Google services.