Skip to main content
Glama

drive_download

Download a file or folder from Proton Drive to your local filesystem, preserving original names and handling conflicts with skip, rename, or remove options.

Instructions

Download a file or folder from Proton Drive to the local filesystem. Requires authentication. localPath is a destination FOLDER, not the file's exact final path — the CLI creates it automatically if missing and places the downloaded item inside it under its original remote name. E.g. downloading /my-files/report.pdf with localPath '/tmp/out' produces /tmp/out/report.pdf, not /tmp/out itself as a file — confirmed live against the real CLI (v0.8.0). For folders, downloads recursively. Conflict strategies are set separately for files and folders (CLI v0.8.0+) — both default to 'skip'. Returns {downloaded, skipped, failed} counts — not the actual local path; construct it as localPath + the remote item's basename if you need it. Fails the call if any file failed to download. Do not use to move files within Drive (use drive_move) or to read a small text file's contents (use drive_read_file if PROTON_DRIVE_SYNC_PATH is set).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
localPathYesAbsolute local DESTINATION FOLDER (must start with '/'), not the file's final path. Created automatically if it doesn't exist. The downloaded item is placed inside it, keeping its original remote name.
remotePathYesAbsolute remote Drive path to download (must start with '/'). E.g. /my-files/report.pdf
fileConflictStrategyNo'skip' leaves an existing local file unchanged (default). 'rename' downloads under a unique name. 'remove' deletes the local file and downloads the remote copy in its place — confirm with user first.
folderConflictStrategyNo'skip' leaves an existing local folder unchanged (default). 'merge' merges the downloaded folder's contents into the existing one. 'rename' downloads under a unique name. 'remove' deletes the local folder and downloads the remote copy in its place — confirm with user first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.0.32
    • removedInput schema / properties / conflictStrategy
      Removed value: -{
      -  "description": "'skip' leaves an existing local file unchanged (default). 'replace' overwrites it — confirm with user first. 'keep-both' downloads under a unique name.",
      -  "enum": [
      -    "skip",
      -    "replace",
      -    "keep-both"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / fileConflictStrategy
      Added value: +{
      +  "description": "'skip' leaves an existing local file unchanged (default). 'rename' downloads under a unique name. 'remove' deletes the local file and downloads the remote copy in its place — confirm with user first.",
      +  "enum": [
      +    "skip",
      +    "rename",
      +    "remove"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / folderConflictStrategy
      Added value: +{
      +  "description": "'skip' leaves an existing local folder unchanged (default). 'merge' merges the downloaded folder's contents into the existing one. 'rename' downloads under a unique name. 'remove' deletes the local folder and downloads the remote copy in its place — confirm with user first.",
      +  "enum": [
      +    "skip",
      +    "merge",
      +    "rename",
      +    "remove"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / localPath / description
      Previous value: -"Absolute local destination path (must start with '/'). Parent directory must already exist."New value: +"Absolute local DESTINATION FOLDER (must start with '/'), not the file's final path. Created automatically if it doesn't exist. The downloaded item is placed inside it, keeping its original remote name."
  2. Changed1 schema field changedv1.0.28
    • addedInput schema / properties / conflictStrategy
      Added value: +{
      +  "description": "'skip' leaves an existing local file unchanged (default). 'replace' overwrites it — confirm with user first. 'keep-both' downloads under a unique name.",
      +  "enum": [
      +    "skip",
      +    "replace",
      +    "keep-both"
      +  ],
      +  "type": "string"
      +}
  3. Changed2 schema fields changedv0.1.2
    • changedInput schema / properties / localPath / description
      Previous value: -"Absolute local destination path."New value: +"Absolute local destination path (must start with '/'). Parent directory must already exist."
    • changedInput schema / properties / remotePath / description
      Previous value: -"Remote Drive path to download. E.g. /my-files/report.pdf"New value: +"Absolute remote Drive path to download (must start with '/'). E.g. /my-files/report.pdf"
  4. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the sparse openWorldHint annotation, the description discloses key behaviors: authentication requirement, recursive folder downloads, separate file/folder conflict strategies with defaults, failure causes the call to fail, and return counts instead of the actual local path. It even cites live CLI verification, giving strong behavioral 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 well-structured: it front-loads the core action, then details path semantics, conflict behavior, return values, and exclusions. Every sentence adds operational value; none are 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 minimal annotations, the description fully compensates by explaining return counts, failure behavior, path construction, recursion, and conflict defaults. An agent has enough information to call the tool correctly and interpret its result without further inference.

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 baseline is 3. The description adds extra semantic value by clarifying localPath is a destination folder, giving a concrete path example, and explaining how to reconstruct the actual local path from the return counts. Some schema repetition exists, but the additional path-construction guidance pushes it above baseline.

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: 'Download a file or folder from Proton Drive to the local filesystem.' It also distinguishes itself from drive_move and drive_read_file, making sibling differentiation explicit.

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-to-use guidance and exclusions: it is for downloading to the local filesystem, not for moving files within Drive (drive_move) or reading small text files (drive_read_file). This directly helps an agent choose correctly among siblings.

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