{
  "schema_version": "cmdhub.website.command_catalog.v1",
  "tool": "gdrive",
  "title": "Google Drive CLI",
  "description": "Files, folders, metadata, trash, and sharing permissions from the terminal.",
  "auth_mode": "OAuth2",
  "auth_scopes": {
    "label": "Google OAuth",
    "scopes": [
      "openid",
      "email",
      "profile",
      "https://www.googleapis.com/auth/drive"
    ],
    "note": "Used for Drive files, folders, metadata, trash, and permissions."
  },
  "markdown_url": "/cli/gdrive/index.md",
  "commands": [
    {
      "id": "cmd-gdrive-auth",
      "path": "gdrive auth",
      "name": "auth",
      "short": "Manage Google Drive authentication",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-gdrive-auth-login",
      "path": "gdrive auth login",
      "name": "login",
      "short": "Authenticate with Google Drive",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive auth login\ngdrive auth login --help\ngdrive auth status",
      "flags": []
    },
    {
      "id": "cmd-gdrive-auth-logout",
      "path": "gdrive auth logout",
      "name": "logout",
      "short": "Remove stored credentials",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive auth login\ngdrive auth logout\ngdrive auth logout --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-auth-refresh",
      "path": "gdrive auth refresh",
      "name": "refresh",
      "short": "Refresh stored token",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive auth refresh\ngdrive auth refresh --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-auth-status",
      "path": "gdrive auth status",
      "name": "status",
      "short": "Show auth status",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive auth status\ngdrive auth status --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-auth-whoami",
      "path": "gdrive auth whoami",
      "name": "whoami",
      "short": "Show current Drive identity",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive auth whoami\ngdrive auth whoami --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-capabilities",
      "path": "gdrive capabilities",
      "name": "capabilities",
      "short": "Describe capabilities",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive capabilities --help",
      "flags": [
        {
          "name": "section",
          "type": "string",
          "usage": "Limit output to scopes, schemas, or commands"
        }
      ]
    },
    {
      "id": "cmd-gdrive-config",
      "path": "gdrive config",
      "name": "config",
      "short": "Inspect local configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-gdrive-config-explain",
      "path": "gdrive config explain",
      "name": "explain",
      "short": "Explain resolved configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive config explain --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-doctor",
      "path": "gdrive doctor",
      "name": "doctor",
      "short": "Run gdrive diagnostics",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive doctor\ngdrive doctor --help\ngdrive doctor --json",
      "flags": []
    },
    {
      "id": "cmd-gdrive-file",
      "path": "gdrive file",
      "name": "file",
      "short": "Manage Drive files",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-gdrive-file-delete",
      "path": "gdrive file delete",
      "name": "delete",
      "short": "Permanently delete a file",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive file delete --all --yes f1 f2\ngdrive file delete --help\ngdrive file delete f1 --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch permanent deletion"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm permanent deletion"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-download",
      "path": "gdrive file download",
      "name": "download",
      "short": "Download file bytes",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive file download\ngdrive file download f1 --out ./notes.txt\ngdrive file search --query notes --jsonl | gdrive file download --out ./notes.txt",
      "flags": [
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        },
        {
          "name": "out",
          "type": "string",
          "usage": "Output path. Omit to print content."
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-export",
      "path": "gdrive file export",
      "name": "export",
      "short": "Export a Google Docs file",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive file export\ngdrive file export f1 --mime-type application/pdf --out ./doc.pdf\ngdrive file export f1 --mime-type text/plain --out ./doc.txt",
      "flags": [
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        },
        {
          "name": "mime-type",
          "type": "string",
          "default": "text/plain",
          "usage": "Export MIME type"
        },
        {
          "name": "out",
          "type": "string",
          "usage": "Output path. Omit to print content."
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-get",
      "path": "gdrive file get",
      "name": "get",
      "short": "Get file metadata",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive file get\ngdrive file get f1\ngdrive file get f1 f2\ngdrive file search --query invoice --jsonl | gdrive file get",
      "flags": [
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-list",
      "path": "gdrive file list",
      "name": "list",
      "short": "List files",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive file list\ngdrive file list --folder d1\ngdrive file list --limit 10\ngdrive file list --parent d1 --query notes\ngdrive folder list --jsonl | gdrive file list --limit 10",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Folder selector"
        },
        {
          "name": "parent",
          "type": "string",
          "usage": "Alias for --folder"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Name/full-text query"
        },
        {
          "name": "trashed",
          "type": "bool",
          "usage": "Include trashed files"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-search",
      "path": "gdrive file search",
      "name": "search",
      "short": "Search files by name or text",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive file search\ngdrive file search --folder d1 --query notes\ngdrive file search --parent d1 --query notes\ngdrive file search --query \"quarterly plan\" --limit 5\ngdrive file search --query invoice\ngdrive file search --query project --limit 10",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Folder selector"
        },
        {
          "name": "parent",
          "type": "string",
          "usage": "Alias for --folder"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Name/full-text query"
        },
        {
          "name": "trashed",
          "type": "bool",
          "usage": "Include trashed files"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-trash",
      "path": "gdrive file trash",
      "name": "trash",
      "short": "Move a file to trash",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive file search --query old-notes --jsonl | gdrive file trash --all\ngdrive file trash --all f1 f2\ngdrive file trash --help\ngdrive file trash f1",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch trash"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-untrash",
      "path": "gdrive file untrash",
      "name": "untrash",
      "short": "Restore a file from trash",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive file search --query old-notes --trashed --jsonl | gdrive file untrash --all\ngdrive file untrash --all f1 f2\ngdrive file untrash --help\ngdrive file untrash f1",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch untrash"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-update",
      "path": "gdrive file update",
      "name": "update",
      "short": "Update file metadata or parents",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive file update --help\ngdrive file update f1 --add-parent d2 --remove-parent d1\ngdrive file update f1 --description \"Updated notes\"\ngdrive file update f1 --name renamed.txt",
      "flags": [
        {
          "name": "add-parent",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Folder selector to add as parent"
        },
        {
          "name": "description",
          "type": "string",
          "usage": "New description"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "New file name"
        },
        {
          "name": "remove-parent",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Folder selector to remove as parent"
        },
        {
          "name": "starred",
          "type": "bool",
          "usage": "Set starred"
        }
      ]
    },
    {
      "id": "cmd-gdrive-file-upload",
      "path": "gdrive file upload",
      "name": "upload",
      "short": "Upload a local file",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive file upload --help\ngdrive file upload --path ./notes.txt --folder d1 --name notes.txt\ngdrive folder search --query \"Project docs\" --jsonl | gdrive file upload --path ./notes.txt",
      "flags": [
        {
          "name": "description",
          "type": "string",
          "usage": "File description"
        },
        {
          "name": "folder",
          "type": "string",
          "usage": "Parent folder selector"
        },
        {
          "name": "mime-type",
          "type": "string",
          "usage": "Content MIME type"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "Drive file name"
        },
        {
          "name": "path",
          "type": "string",
          "usage": "Local file path"
        }
      ]
    },
    {
      "id": "cmd-gdrive-folder",
      "path": "gdrive folder",
      "name": "folder",
      "short": "Manage Drive folders",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-gdrive-folder-create",
      "path": "gdrive folder create",
      "name": "create",
      "short": "Create a folder",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive folder create --help\ngdrive folder create --name \"Project docs\"\ngdrive folder create --name Archive --parent d1",
      "flags": [
        {
          "name": "description",
          "type": "string",
          "usage": "Folder description"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "Folder name"
        },
        {
          "name": "parent",
          "type": "string",
          "usage": "Parent folder selector"
        }
      ]
    },
    {
      "id": "cmd-gdrive-folder-get",
      "path": "gdrive folder get",
      "name": "get",
      "short": "Get folder metadata",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive folder get\ngdrive folder get d1\ngdrive folder get d1 d2\ngdrive folder list --jsonl | gdrive folder get",
      "flags": []
    },
    {
      "id": "cmd-gdrive-folder-list",
      "path": "gdrive folder list",
      "name": "list",
      "short": "List folders",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive folder list\ngdrive folder list --limit 10\ngdrive folder list --query Project",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Folder name query"
        },
        {
          "name": "trashed",
          "type": "bool",
          "usage": "Include trashed folders"
        }
      ]
    },
    {
      "id": "cmd-gdrive-folder-search",
      "path": "gdrive folder search",
      "name": "search",
      "short": "Search folders by name",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive folder search\ngdrive folder search --query \"Project docs\"\ngdrive folder search --query archive --trashed\ngdrive folder search --query project --limit 10",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Folder name query"
        },
        {
          "name": "trashed",
          "type": "bool",
          "usage": "Include trashed folders"
        }
      ]
    },
    {
      "id": "cmd-gdrive-login",
      "path": "gdrive login",
      "name": "login",
      "short": "Authenticate with Google Drive",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive auth status\ngdrive login",
      "flags": []
    },
    {
      "id": "cmd-gdrive-logout",
      "path": "gdrive logout",
      "name": "logout",
      "short": "Remove stored credentials",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive auth login\ngdrive logout",
      "flags": []
    },
    {
      "id": "cmd-gdrive-permission",
      "path": "gdrive permission",
      "name": "permission",
      "short": "Manage Drive permissions",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-gdrive-permission-add",
      "path": "gdrive permission add",
      "name": "add",
      "short": "Add a permission",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive permission add --file f1 --type anyone --role reader --yes\ngdrive permission add --file f1 --type user --email user@example.com\ngdrive permission add --help",
      "flags": [
        {
          "name": "allow-discovery",
          "type": "bool",
          "usage": "Allow public/domain discovery"
        },
        {
          "name": "domain",
          "type": "string",
          "usage": "Domain for domain permission"
        },
        {
          "name": "email",
          "type": "string",
          "usage": "Email address for user/group permission"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        },
        {
          "name": "role",
          "type": "string",
          "default": "reader",
          "usage": "Permission role: reader|commenter|writer"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Permission type: user|group|domain|anyone (required)"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm creation of a public anyone permission"
        }
      ]
    },
    {
      "id": "cmd-gdrive-permission-list",
      "path": "gdrive permission list",
      "name": "list",
      "short": "List file permissions",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive file search --query notes --jsonl | gdrive permission list\ngdrive permission list\ngdrive permission list --file f1",
      "flags": [
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        }
      ]
    },
    {
      "id": "cmd-gdrive-permission-remove",
      "path": "gdrive permission remove",
      "name": "remove",
      "short": "Remove a permission",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive permission remove --file f1 --permission r1 --yes\ngdrive permission remove --file f1 r1 --yes\ngdrive permission remove --help",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch permission removal"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File selector"
        },
        {
          "name": "permission",
          "type": "string",
          "usage": "Permission selector"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm permission removal"
        }
      ]
    },
    {
      "id": "cmd-gdrive-profile",
      "path": "gdrive profile",
      "name": "profile",
      "short": "Manage provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-gdrive-profile-create",
      "path": "gdrive profile create",
      "name": "create",
      "short": "Create an unauthenticated provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive profile create --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-profile-delete",
      "path": "gdrive profile delete",
      "name": "delete",
      "short": "Delete a local provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive profile delete --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-profile-list",
      "path": "gdrive profile list",
      "name": "list",
      "short": "List provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive profile list --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-profile-rename",
      "path": "gdrive profile rename",
      "name": "rename",
      "short": "Rename a local provider profile",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive profile rename --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-profile-use",
      "path": "gdrive profile use",
      "name": "use",
      "short": "Set the default provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "gdrive profile use --help",
      "flags": []
    },
    {
      "id": "cmd-gdrive-resolve",
      "path": "gdrive resolve",
      "name": "resolve",
      "short": "Resolve a local ref, short id, or URL alias",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive resolve --help\ngdrive resolve <ref>",
      "flags": []
    },
    {
      "id": "cmd-gdrive-schema",
      "path": "gdrive schema",
      "name": "schema",
      "short": "Emit gdrive schema hints",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive schema\ngdrive schema --help\ngdrive schema file.get --out --json\ngdrive schema file.upload --input",
      "flags": [
        {
          "name": "in",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "input",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "out",
          "type": "bool",
          "usage": "Show output schema"
        }
      ]
    },
    {
      "id": "cmd-gdrive-version",
      "path": "gdrive version",
      "name": "version",
      "short": "Show gdrive version information",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "gdrive version --help",
      "flags": []
    }
  ]
}
