Proton Drive MCP
The Proton Drive MCP server gives you full control over your Proton Drive with end-to-end encryption intact, covering authentication, file management, sharing, trash, and local sync operations.
๐ Authentication & Info
Check auth status, log out, and retrieve CLI/SDK version info.
๐ File & Folder Management
List folder contents, create folders, upload local files/folders (with conflict strategies: skip, overwrite, or rename), download files/folders, move/rename items, and permanently delete files/folders.
๐ฅ Sharing & Collaboration
Check sharing status (members, roles, share URL), invite users by email with a role (viewer, editor, or admin), and revoke access.
๐๏ธ Trash Management
Move items to trash, list trash contents, restore items from trash, and permanently empty the trash.
๐ Local Sync Folder (requires PROTON_DRIVE_SYNC_PATH and desktop app running)
Read text files (up to 1 MB) and write/overwrite text files in the local sync folder, which the Proton Drive desktop app then syncs to the cloud.
๐ Privacy & Security
Zero credential exposure (OS keychain authentication), shell injection safe, and all cryptography is handled locally by the official Proton Drive CLI.
Provides tools for managing files and folders on Proton Drive, including listing, uploading, downloading, moving, deleting, sharing, and trash operations with end-to-end encryption.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Proton Drive MCPList files in /my-files"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
____ ____ ___ _____ ___ _ _ ____ ____ _____ _______
| _ \| _ \ / _ \_ _/ _ \| \ | | | _ \| _ \|_ _\ \ / / ____|
| |_) | |_) | | | || || | | | \| | | | | | |_) || | \ \ / /| _|
| __/| _ <| |_| || || |_| | |\ | | |_| | _ < | | \ V / | |___
|_| |_| \_\\___/ |_| \___/|_| \_| |____/|_| \_\___| \_/ |_____|
MCP server and CLI ยท Full Proton Drive control for Claude
Give Claude Desktop (or any MCP client) full access to your Proton Drive and Proton Photos: list folders, upload and download files, invite collaborators, manage sharing, handle trash, and manage photo albums โ all with end-to-end encryption intact. The same capabilities are available as a full CLI for scripting, backups, and cron.
What you get
Claude manages your Proton Drive โ list, upload, download, move, share, trash, restore
Proton Photos album management โ list albums, create/delete albums, add and remove photos
Full CLI โ same 38 operations, scriptable and pipeable, works in cron and shell scripts
100% CLI coverage โ every scriptable Proton Drive CLI command has a matching tool (verified against the CLI's own source;
auth loginis the one command excluded, since it's an interactive browser flow)Zero credential exposure โ auth is handled entirely by the official Proton Drive CLI; this MCP never touches your password or session token
Shell injection safe โ all CLI calls use
execFilewith discrete argument arrays, never string interpolationPrivacy-native โ end-to-end encryption is handled by Proton's own CLI; this server is just a thin MCP wrapper
Related MCP server: vulcan-file-ops
Privacy model
Your files travel: Proton Drive (cloud, E2E encrypted) โ Proton Drive CLI (local, decrypts) โ this MCP server (local) โ your AI client.
The Proton Drive CLI handles all cryptography locally. This MCP server calls the CLI as a subprocess and forwards results โ it never receives your password, never stores credentials, and never touches the raw encrypted data. Authentication state lives in your OS keychain (macOS Keychain, Windows Credential Manager, Linux libsecret), managed exclusively by the official Proton CLI.
If you use Claude Desktop with the default Anthropic API, file content you ask Claude to act on is sent to Anthropic per their privacy policy.
Prerequisites
1. Proton Drive CLI โ download from proton.me/download/drive/cli and add to your PATH.
2. Authenticate the CLI โ run once in your terminal:
proton-drive auth loginThis opens a browser for Proton's standard sign-in flow. Credentials are stored in your OS keychain โ not on disk, not in config files.
3. Node.js 20 or later โ node --version to check.
Install
Via npx (no install needed):
# Used directly in Claude Desktop config โ no global install required
npx -y proton-drive-mcpGlobal install:
npm install -g proton-drive-mcpConnect to Claude Desktop
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"proton-drive": {
"command": "npx",
"args": ["-y", "proton-drive-mcp"]
}
}
}Restart Claude Desktop. Check + โ Connectors โ proton-drive to confirm the server is connected.
Tip: Make sure
proton-drive auth loginhas been run at least once before starting Claude Desktop.
If installed globally
{
"mcpServers": {
"proton-drive": {
"command": "proton-drive-mcp"
}
}
}Try it: example Claude prompts
Backup a build artifact
"Upload ./dist/app-v2.zip to /my-files/Releases and tell me if it succeeded."
Morning file triage
"List everything in /my-files. Tell me what's larger than 10MB and what was modified most recently."
Share a folder with a colleague
"Share /my-files/Q2-Reports with alice@proton.me as editor. Add a message: 'Please review before Friday.'"
Offboarding
"Revoke bob@company.com's access from /my-files/Projects and /shared/Design. Confirm when done."
Automated download
"Download /my-files/contracts/nda-2026.pdf to ~/Documents/Legal/."
Trash cleanup
"List what's in the trash and empty it once I confirm."
CLI
proton-drive-cli <command> [args]Auth & info
proton-drive-cli auth status # probes /my-files; the CLI has no dedicated status command
proton-drive-cli auth logout # log out (clears OS keychain session)
proton-drive-cli version # CLI and SDK versionFiles & folders
proton-drive-cli list /my-files
proton-drive-cli list /my-files/Reports
proton-drive-cli info /my-files/report.pdf # full metadata, incl. revision details
proton-drive-cli mkdir /my-files/NewFolder
proton-drive-cli upload ./report.pdf /my-files/Reports
proton-drive-cli upload ./dist /my-files/Releases --file-conflict replace --folder-conflict merge
proton-drive-cli download /my-files/report.pdf ./local/report.pdf
proton-drive-cli download /my-files/Reports ./local/Reports --file-conflict rename --folder-conflict merge
proton-drive-cli rename /my-files/old-name.pdf new-name.pdf # in place, no move
proton-drive-cli move /my-files/old-name.pdf /my-files/new-name.pdf
proton-drive-cli copy /my-files/report.pdf /my-files/Archive
proton-drive-cli delete /trash/obsolete-draft.pdf --confirm # only works on items already in trash
# Machine-readable output (pipe-friendly)
proton-drive-cli list /my-files --json | jq '.[].name'Sharing
proton-drive-cli share status /my-files/Reports
proton-drive-cli share invite /my-files/Reports alice@pm.me editor
proton-drive-cli share invite /my-files/Reports bob@pm.me viewer --message "FYI"
proton-drive-cli share revoke /my-files/Reports alice@pm.me
proton-drive-cli share remove-all /my-files/Reports --confirm # strip every member + pending invite
proton-drive-cli share set-url /my-files/Reports --role viewer --expiration 2026-06-06
proton-drive-cli share remove-url /my-files/ReportsTrash
proton-drive-cli trash /my-files/old-draft.pdf # move to trash
proton-drive-cli trash list # see what's in trash
proton-drive-cli restore /my-files/old-draft.pdf # restore from trash
proton-drive-cli trash empty --confirm # permanently delete all trashed itemsPhotos
proton-drive-cli album list
proton-drive-cli album create "Summer 2026"
proton-drive-cli album update /albums/Summer2026 --name "Summer Trip"
proton-drive-cli album add-photo /albums/Summer2026 /photos/IMG_001.jpg
proton-drive-cli photo timeline
proton-drive-cli photo download /photos/IMG_001.jpg ./local/photos --conflict rename
proton-drive-cli photo upload ./camera-roll --conflict skipPipe and script
# Backup build output after CI
proton-drive-cli upload ./dist /my-files/Releases/$(date +%Y-%m-%d) --file-conflict rename --folder-conflict rename
# Download all contracts for audit
proton-drive-cli download /my-files/Contracts ./audit/contracts
# Nightly backup via cron
0 2 * * * proton-drive-cli upload ~/Documents /my-files/Backups/$(date +%Y-%m-%d) --conflict skip
# Check who has access before a team change
proton-drive-cli share status /my-files/ProjectsTool surface
Auth
drive_auth_status ยท drive_auth_logout ยท drive_version
Filesystem
drive_list ยท drive_info ยท drive_mkdir ยท drive_upload ยท drive_download ยท drive_rename ยท drive_move ยท drive_delete
Sharing
drive_share_status ยท drive_share_invite ยท drive_share_revoke ยท drive_share_remove_all ยท drive_share_set_url ยท drive_share_remove_url
Trash
drive_list_trash ยท drive_trash ยท drive_restore ยท drive_empty_trash
Local sync (requires PROTON_DRIVE_SYNC_PATH)
drive_read_file ยท drive_write_file
Copy
drive_copy
Invitations
drive_list_invitations ยท drive_invitation_accept ยท drive_invitation_reject ยท drive_share_leave
Photos
photos_list_albums ยท photos_create_album ยท photos_update_album ยท photos_delete_album ยท photos_list_album_photos ยท photos_add_to_album ยท photos_remove_from_album ยท photos_list_timeline ยท photos_download ยท photos_upload
Tool reference
Tool | Description | Key parameters |
| Check if authenticated (probes | โ |
| Log out (clear session) | โ |
| CLI and SDK version info | โ |
| List files and folders at a path |
|
| Get full metadata for one file/folder, including revision details |
|
| Create a new empty folder |
|
| Upload local file or folder |
|
| Download to local path |
|
| Rename in place, no move |
|
| Move and/or rename |
|
| Copy file or folder to another Drive location |
|
| Permanently delete an item already in trash โ ๏ธ |
|
| List items currently in trash | โ |
| Get sharing members and URL |
|
| Invite a user |
|
| Revoke one person's access |
|
| Remove every member + pending invitation at once โ ๏ธ |
|
| Create/update a public share link |
|
| Remove the public share link โ ๏ธ |
|
| Move to trash |
|
| Restore from trash |
|
| Permanently delete all trash โ ๏ธ |
|
| Read text file from local sync folder |
|
| Write text file to local sync folder โ ๏ธ |
|
| List pending sharing invitations received | โ |
| Accept a pending invitation |
|
| Reject a pending invitation โ ๏ธ |
|
| Leave a shared folder shared with you โ ๏ธ |
|
| List all Proton Photos albums | โ |
| Create a new empty album |
|
| Rename an album or change its cover photo |
|
| Delete an album โ ๏ธ |
|
| List photos in an album |
|
| Add a photo from your library to an album |
|
| Remove a photo from an album (keeps it in library) โ ๏ธ |
|
| List photos in your full library timeline |
|
| Download photos to a local folder |
|
| Upload local files directly into your Photos library |
|
โ ๏ธ Destructive tools require
confirmed: true. Usedrive_list_trashfirst so you know what will be deleted, then passconfirmed: trueto proceed.
Compared with other Drive MCPs
Capability | Generic S3/GDrive MCPs | proton-drive-mcp |
End-to-end encryption | No | Yes (via Proton CLI) |
Credential exposure | API keys in config | Zero โ OS keychain only |
Sharing & invitations | Rarely | Full (invite, revoke, status) |
Trash & restore | Rarely | Full |
CLI parity | No | Full CLI mirrors all MCP tools |
Shell injection safe | Varies | Yes โ |
Operational notes
drive_uploadpasses--skip-thumbnailsby default. Remove it from the subprocess args if you want WebP preview generation (requires Bun 1.3.14+ installed).drive_moveaccepts a full destination path (parent + new name) for a familiar interface, but the underlying CLI only has separatemove(change parent) andrename(change name) commands โ this MCP translates automatically, issuing one or both as needed.drive_deleteonly works on items already in/trashor/photos-trashโ the CLI rejects live paths. Trash an item first withdrive_trash, or usedrive_empty_trashto clear everything at once.drive_auth_statushas no native CLI equivalent โ it probes by resolving/my-filesand reports authenticated based on whether that succeeds.Paths are always Drive-absolute:
/my-files/folder/file.pdf. Relative paths are not supported.All calls include
--jsonautomatically, exceptdrive_version, whose underlying CLI command ignores--jsonand always prints plain text โ this MCP parses it directly.
Environment variables
Variable | Required | Description |
| Optional | Absolute path to your local Proton Drive sync folder root (e.g. |
| Optional | Override the |
Troubleshooting
"PROTON_DRIVE_SYNC_PATH is not set"
Add "PROTON_DRIVE_SYNC_PATH": "/absolute/path/to/your/Proton Drive" to your Claude Desktop MCP config env block. The path must point to the root folder that the Proton Drive desktop app syncs to.
"proton-drive CLI not found"
Download from proton.me/download/drive/cli and ensure the binary is in your PATH. Verify with which proton-drive.
"Not authenticated"
Run proton-drive auth login in your terminal. Auth state is stored in your OS keychain and persists across sessions.
Claude can't see the connector
Restart Claude Desktop fully after changing the MCP config. Check + โ Connectors โ proton-drive. The Proton Drive CLI must be in the PATH that Claude Desktop inherits (on macOS this may differ from your shell PATH โ use the full binary path in config if needed).
Upload fails on image files
The CLI generates WebP thumbnails by default using Bun's image API. If Bun isn't installed or doesn't support thumbnails on your platform, the MCP passes --skip-thumbnails to bypass this. No action needed.
Custom binary path
If the proton-drive binary is installed under a non-standard name or location, set PROTON_DRIVE_BIN in your environment:
PROTON_DRIVE_BIN=/usr/local/bin/proton-drive npx proton-drive-mcpOr in Claude Desktop config:
{
"mcpServers": {
"proton-drive": {
"command": "npx",
"args": ["-y", "proton-drive-mcp"],
"env": { "PROTON_DRIVE_BIN": "/usr/local/bin/proton-drive" }
}
}
}Windows PATH issues
Use the full path to the proton-drive.exe binary in your Claude Desktop config if npx can't find it:
{
"mcpServers": {
"proton-drive": {
"command": "C:\\path\\to\\proton-drive-mcp.cmd"
}
}
}Development
git clone https://github.com/googlarz/proton-drive-mcp.git
cd proton-drive-mcp
npm install
npm run build
npm testChangelog
See CHANGELOG.md for release history.
Contributing
Bug reports and pull requests welcome: github.com/googlarz/proton-drive-mcp/issues
License
MIT
Available Tools
38 toolsdrive_auth_logoutADestructiveIdempotent
Clear the stored Proton Drive session from the OS keychain. After logout all file and sharing operations will fail until the user runs proton-drive auth login again. Use on shared machines to prevent session persistence. Do not call during an active workflow โ it will break all subsequent drive_* calls. Idempotent: safe to call even if already logged out.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=true. Description adds context: clarifies that operations fail after logout, and explicitly states idempotency. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all essential. Core action is front-loaded. No wasted words. Clearly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with clear annotations, description fully covers purpose, usage, effects, and idempotency. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters. Baseline score of 4 is appropriate; description does not need to add parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'clear' and resource 'stored Proton Drive session'. It clearly states the tool's action and distinguishes it from siblings by noting that after logout all file and sharing operations fail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('on shared machines to prevent session persistence') and when not to use ('Do not call during an active workflow'). Also mentions the consequence (breaks subsequent drive_* calls) and idempotency, providing complete usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_auth_statusARead-onlyIdempotent
Check whether the Proton Drive CLI has an active authenticated session. Returns {authenticated: boolean}. The underlying CLI has no dedicated status command โ this probes by resolving /my-files, which makes a real (lightweight) call. Use before any file operation when you need to confirm the session is valid โ all other drive_* tools (except drive_version) require authentication. Does not expose the signed-in account's email โ the CLI provides no way to query it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds deeper behavioral context: it explains the underlying CLI has no dedicated status command, that probing by resolving /my-files makes a real (lightweight) call, and that it does not expose the account email. This goes beyond annotations and helps the agent anticipate side effects and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose/return, implementation detail (probe via /my-files), and usage guidance. It is front-loaded with the core purpose and avoids redundancy with schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 0-parameter tool with strong annotations and an explicit return description, this is fully complete. It covers what the tool does, how it works, when to use it, and a key limitation (no email exposure). No important context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (vacuously). The description adds no parameter detail because none exists. Per the rubric, 0 parameters yields a baseline of 4, and the description appropriately avoids inventing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Check whether the Proton Drive CLI has an active authenticated session.' It clearly distinguishes the tool from siblings by explaining it is the auth-status check, and it also specifies the return shape ({authenticated: boolean}). This is unambiguous and unique among the listed drive_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Use before any file operation when you need to confirm the session is valid โ all other drive_* tools (except drive_version) require authentication.' This states when to use it and implies when not to (before drive_version). It also notes the CLI lacks a dedicated status command, so the probing behavior is explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_copyA
Copy a file or folder to another location on Proton Drive. Requires authentication. The original is preserved โ this is not a move. Use drive_move when you want to relocate without keeping the original. Do not use to duplicate large folder trees without user awareness of the storage cost.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | Yes | Absolute remote Drive path of the file or folder to copy (must start with '/'). E.g. /my-files/report.pdf | |
| destinationPath | Yes | Absolute remote Drive path of the target parent folder (must start with '/'). E.g. /my-files/Archive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations (idempotentHint: false, destructiveHint: false) by adding that authentication is required, emphasizing the original is preserved (not a move), and warning about storage costs for large folder trees. These are valuable behavioral traits not present in the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each adding meaningful information: the core function, authentication, non-move behavior, and usage caution. It is front-loaded with the purpose and contains no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no output schema, the description covers purpose, usage, authentication, and a caution. It does not specify what happens if the destination path already exists or what the response format is, leaving a minor gap, but the overall context is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have comprehensive schema descriptions with examples, covering 100% of the schema. The tool description adds no additional parameter semantics, so the baseline score of 3 applies due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool copies a file or folder to another location on Proton Drive, using the specific verb 'copy' and resource. It explicitly differentiates from the sibling drive_move by stating 'the original is preserved โ this is not a move,' 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance: 'Use drive_move when you want to relocate without keeping the original' and a warning against duplicating large folder trees due to storage cost. This covers both when to use and when not to use, naming the alternative tool directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_deleteADestructive
Permanently delete a file or folder that is already in the Proton Drive trash โ irreversible. Requires authentication. The underlying CLI only allows permanent deletion of items already inside /trash or /photos-trash; it rejects live paths. Use drive_trash first to move a live item into trash, then pass its trash path here โ or drive_empty_trash to clear everything at once. Requires confirmed=true; always show the exact path to the user and get explicit confirmation before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path to permanently delete (must start with '/'). | |
| confirmed | Yes | Must be true. Confirms the user has acknowledged this deletion is permanent and cannot be undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses irreversibility, authentication requirements, rejection of live paths, the confirmed=true requirement, and instructs to always show the exact path and get explicit confirmation. These are significant behavioral traits not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and irreversibility flag, then covers prerequisites, alternatives, and safety. Every sentence adds value; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers the operation's purpose, prerequisites (must be in trash), alternatives, required confirmation, and safety signal. It is complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving baseline 3. The description adds meaning by clarifying that 'path' must be a trash path (not a live one) and that 'confirmed' must be true, plus the instruction to show the path to the user. This elevates the parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Permanently delete a file or folder that is already in the Proton Drive trash'. It clearly distinguishes from siblings like drive_trash (moves to trash) and drive_empty_trash (clears all trash) by scoping to already-trashed items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Use drive_trash first to move a live item into trash, then pass its trash path here โ or drive_empty_trash to clear everything at once.' It also states that live paths are rejected, and requires confirmed=true, providing clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_downloadA
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} count โ not the actual local path; construct it as localPath + the remote item's basename if you need it. 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).
| Name | Required | Description | Default |
|---|---|---|---|
| localPath | Yes | 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. | |
| remotePath | Yes | Absolute remote Drive path to download (must start with '/'). E.g. /my-files/report.pdf | |
| fileConflictStrategy | No | '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. | |
| folderConflictStrategy | No | '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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only openWorldHint in annotations, the description carries the full behavioral burden and fully delivers: it explains the destination-folder semantics, automatic folder creation, original-name preservation, recursive folder downloads, file/folder conflict defaults, version-specific behavior, and that the return value is {downloaded} not the path. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, the description is dense and every sentence earns its place: purpose, critical path semantics, example, recursion, conflict defaults, return-value caveat, and exclusions. Critical info is front-loaded before the caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and sparse annotations, the description is remarkably complete: authentication, path construction, recursive behavior, conflict strategy defaults, return type, version context, and clear routing to sibling tools. An agent has everything needed to call correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents localPath and conflict strategies well. The description still adds value with a concrete example (/my-files/report.pdf + /tmp/out โ /tmp/out/report.pdf) and clarifies that conflict strategies are set separately for files and folders with default 'skip'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Download a file or folder from Proton Drive to the local filesystem.' It clearly distinguishes itself from similar operations by explicitly naming drive_move and drive_read_file as alternatives for different tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance (downloading to local filesystem) and when-not-to-use guidance: '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).' It also notes the authentication requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_empty_trashADestructive
Permanently delete ALL items in the Proton Drive trash โ irreversible, no recovery. Requires authentication. Requires confirmed=true. Always call drive_list_trash first to show the user exactly what will be deleted, then ask for explicit confirmation. Do not call if the user only wants to delete specific items โ use drive_delete or drive_trash for individual files.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | Yes | Must be true. Confirms the user has reviewed the trash contents and acknowledged this action is permanent and irreversible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true; description adds critical details: irreversible, no recovery, and requires explicit confirmation. Provides workflow guidance beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action and constraints, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple tool with one parameter: covers purpose, prerequisites, safety, workflow, and alternatives. No output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description adds context that confirmed must be true after user review, reinforcing the safety requirement beyond the schema's 'Must be true'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it permanently deletes all trash items, is irreversible, and distinguishes from individual deletion tools like drive_delete and drive_trash.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (after listing trash and getting user confirmation) and when not to (for specific items, use siblings). Also lists prerequisites: authentication and confirmed=true.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_infoARead-onlyIdempotent
Get full metadata for a single Proton Drive file or folder, including latest revision details. Requires authentication. Returns the raw CLI node object โ richer than drive_list's trimmed per-item fields, but its exact shape is not guaranteed. Use when you need details drive_list doesn't return (e.g. revision info) for one specific known path. Do not use to enumerate a folder's children โ use drive_list instead.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path to inspect (must start with '/'). E.g. /my-files/report.pdf |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds valuable context: requires authentication and warns that 'the exact shape is not guaranteed.' This goes beyond safety/read-only to set return-format expectations, which is not conveyed by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: the first states the purpose, the second explains return richness and caveat, the third gives exclusion guidance. Each sentence earns its place, no redundancy, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only single-path tool with no output schema, the description covers all necessary context: what it does, when to use it, how the output behaves, and what not to use it for. It is fully self-contained for an agent to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single 'path' parameter, including a clear description with an example and format constraint. The tool description does not add further parameter specifics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Get full metadata for a single Proton Drive file or folder, including latest revision details.' It uses a specific verb (get) and resource (single file/folder) and explicitly differentiates from drive_list by noting it returns richer data ('raw CLI node object').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use: 'Use when you need details drive_list doesn't return (e.g. revision info) for one specific known path.' Also gives a clear when-not-to-use with an alternative: 'Do not use to enumerate a folder's children โ use drive_list instead.' This meets the highest standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_invitation_acceptA
Accept a pending Proton Drive sharing invitation. Requires authentication. Get the invitation uid from drive_list_invitations first. The shared folder becomes accessible in your Drive after accepting. Do not guess the uid โ always fetch it from drive_list_invitations.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Invitation UID from drive_list_invitations output. E.g. 'drive:abc123' or 'photos:xyz456'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, so the description adds value by stating authentication requirements, the outcome (folder becomes accessible), and the caution to always fetch the uid from drive_list_invitations. This goes beyond the annotation and gives useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the purpose, and every sentence serves a clear function: stating the action, mentioning authentication, giving instructions, and warning against guessing. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers prerequisites, authentication, outcome, and a caution. It doesn't explain error cases or edge conditions, but given the absence of an output schema and the low complexity, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the uid parameter as 'Invitation UID from drive_list_invitations output' with examples, providing 100% coverage. The description reinforces this by saying not to guess the uid, but it doesn't add new semantic information beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Accept a pending Proton Drive sharing invitation.' It uses a specific verb ('accept') and resource ('sharing invitation'), and it distinguishes itself from sibling tools like drive_invitation_reject and drive_list_invitations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool by instructing to get the invitation uid from drive_list_invitations first. It also warns against guessing the uid, reinforcing the prerequisite. It doesn't explicitly mention alternatives like reject, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_invitation_rejectADestructive
Reject a pending Proton Drive sharing invitation. Requires authentication. Get the invitation uid from drive_list_invitations first. The invitation is permanently declined โ the sender is not notified. Do not guess the uid โ always fetch it from drive_list_invitations.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Invitation UID from drive_list_invitations output. E.g. 'drive:abc123' or 'photos:xyz456'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description adds valuable context: the rejection is permanent, the sender is not notified, and authentication is required. This gives the agent a full understanding of the action's consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero redundancy: the first states the action, the second provides the prerequisite, and the third adds crucial side effects. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers purpose, prerequisite, and consequences. The destructiveHint annotation handles the safety profile, making the description complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the uid parameter, including its provenance and examples. The description reinforces the 'do not guess' rule but does not add new semantic meaning beyond what the schema states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Reject' with the resource 'pending Proton Drive sharing invitation,' making the tool's function unmistakable. It also distinguishes from sibling tools like drive_invitation_accept and drive_list_invitations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs the user to obtain the uid from drive_list_invitations first and warns against guessing the uid. This provides clear when-to-use and prerequisite guidance, with explicit exclusions for guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_listARead-onlyIdempotent
List the immediate children of a Proton Drive folder. Requires authentication. Returns [{name, path, type ('file'|'folder'), size?, modifiedAt?, mimeType?}]. Not recursive โ one directory level only. Use before drive_upload to confirm the destination exists, or before drive_download to verify the remote path. Do not use to list trash โ use drive_list_trash instead.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path to list (must start with '/'). E.g. /my-files or /my-files/Reports |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds behavioral context: requires authentication, returns a specific structure, clarifies non-recursive behavior. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place. Front-loaded with the core action and resource. No redundancy or filler. Efficiently conveys purpose, usage, return format, and alternatives in under 50 words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema), the description is complete. Explains return format, scope (non-recursive), gives concrete use cases, and directs to relevant siblings. No gaps for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'path' parameter. The description adds meaning: 'Absolute remote Drive path (must start with '/')' and provides examples like '/my-files' and '/my-files/Reports'. This goes beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List the immediate children of a Proton Drive folder' โ a specific verb ('List') and resource ('immediate children of a folder'). Differentiates from siblings by noting it is not recursive and does not list trash.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use: 'Use before drive_upload to confirm the destination exists, or before drive_download to verify the remote path.' Also states when not to use: 'Do not use to list trash โ use drive_list_trash instead.' Offers clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_list_invitationsARead-onlyIdempotent
List all pending sharing invitations from other Proton Drive users. Requires authentication. Returns [{uid, role, invitedByEmail, invitedAt?, nodeName, nodeType}]. Use the uid from this list to accept or reject with drive_invitation_accept / drive_invitation_reject. Do not use to list members of folders you own โ use drive_share_status instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds useful context: requires authentication and details the return structure including fields like uid, role, invitedByEmail, nodeType. It also clarifies the scope to 'pending' invitations. This goes beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, auth requirement, return format, and a workflow/differentiation note. The description is compact, front-loaded, and free of redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description fully covers what the agent needs: what it lists, auth needs, the return shape, and how the result should be used. It also clarifies edge cases (not for folder membership) to prevent misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds meaning by explaining the return structure, which is relevant since no output schema is provided. There are no parameter details to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List all pending sharing invitations from other Proton Drive users' with a specific verb and resource. It also distinguishes itself from siblings by explicitly directing users to drive_share_status for folder members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance for listing pending invitations and when-not-to-use with a named alternative ('Do not use to list members of folders you own โ use drive_share_status instead'). It also explains the workflow of using the returned uid with drive_invitation_accept/reject.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_list_trashARead-onlyIdempotent
List all files and folders currently in the Proton Drive trash. Requires authentication. Returns [{name, path, type, size?, modifiedAt?}]. Use before drive_restore to find a trashed item's exact path, or before drive_empty_trash to show the user what will be permanently deleted. Do not use to list active (non-trashed) files โ use drive_list instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds that it requires authentication and specifies the return format, going beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences that are all relevant, front-loaded with the main purpose. Slightly wordy but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool, the description covers purpose, return format, prerequisites, and usage context. No gaps given the absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in the schema, and schema coverage is 100%. Description adds no parameter info, but per guidelines, baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all files and folders currently in the Proton Drive trash' with a specific verb and resource, and distinguishes from siblings by explicitly noting not to use for active files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool (before drive_restore or drive_empty_trash) and when not to use it (use drive_list for active files).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_mkdirA
Create a new empty folder on Proton Drive. Requires authentication. Fails if the folder already exists or if the parent folder does not exist โ use drive_list to check first. Does not create intermediate directories; create each level separately. Do not use to upload files (use drive_upload) or to create nested folder trees in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path for the new folder (must start with '/'). E.g. /my-files/NewFolder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses authentication requirement, failure conditions (folder exists or parent missing), and behavior (no intermediate directories) beyond the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with purpose and authentication, then constraints; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and minimal annotations, the description fully covers preconditions, failures, and exclusions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema: clarifies that path must be absolute, starts with '/', provides example, and covers the single parameter's constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new empty folder on Proton Drive, distinguishes from sibling tools like drive_upload and explicitly mentions it does not create nested trees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (creating folders) and when-not-to-use (uploading files, creating nested trees in one call) with a suggestion to check existence via drive_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_moveA
Move or rename a file or folder on Proton Drive. Requires authentication. To rename: keep the same parent, change only the filename (e.g. /my-files/old.pdf โ /my-files/new.pdf) โ or use drive_rename directly. To move: provide a different parent folder. Fails if destinationPath is already occupied or if its parent folder does not exist. Do not use to copy a file while keeping the original (use drive_copy) or to download to local storage (use drive_download).
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | Yes | Absolute remote path of the file or folder to move (must start with '/'). | |
| destinationPath | Yes | Absolute remote destination path (must start with '/'). Parent folder must exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation (false), the description discloses that authentication is required, that the operation fails if the destination path is already occupied or its parent folder does not exist, and explains the exact rename/move mechanics. While it does not mention return values, there is no output schema and the provided context is sufficient for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured paragraph: it starts with the core action, then explores rename and move patterns with a concrete example, lists failure conditions, and closes with explicit 'do not use' alternatives. Every sentence serves a distinct purpose, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two parameters, both thoroughly documented in the schema, and no output schema, the description covers all necessary operational context: authentication prerequisite, usage modes (rename/move), failure conditions, and exclusions. An agent has enough information to select and invoke this tool correctly in any relevant scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though both schema parameters have descriptions (100% coverage), the tool description adds practical semantics that shape parameter usage: renaming requires keeping the same parent while changing the filename, moving requires a different parent. This clarifies how to construct sourcePath and destinationPath for each intended operation, exceeding what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Move or rename a file or folder on Proton Drive'), immediately clarifying the tool's core function. It also distinguishes itself from siblings by explicitly referencing drive_rename, drive_copy, and drive_download, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: details the rename scenario (same parent, change filename) versus the move scenario (different parent), and directs users to drive_rename for pure renames, drive_copy for copies, and drive_download for downloads. It also states a prerequisite (parent folder must exist) and failure conditions, giving clear operational boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_read_fileARead-only
Read the text contents of a file from the local Proton Drive sync folder. Requires the PROTON_DRIVE_SYNC_PATH environment variable to point to the root of the synced folder (e.g. /Users/alice/Proton Drive). The Proton Drive desktop app must be running and the file must be synced locally. Limited to text files up to 1 MB โ returns an error for binary files or larger files (use drive_download instead). Do not use for files not yet synced locally, binary files, or files over 1 MB โ use drive_download instead.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path of the file to read (must start with '/'). Mapped to the local sync folder. E.g. /my-files/notes.txt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds critical behavioral details: requires environment variable, synced local file, text only, size limit, and error handling for non-text or oversized files. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient and well-structured: first sentence states purpose, followed by prerequisites, constraints, and alternatives. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers all necessary context: what it does, prerequisites, limitations, and alternative tools. It is fully sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a clear description of the 'path' parameter. The tool description adds context about the environment variable and mapping to local folder, but does not significantly expand on parameter details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes exactly what the tool does: read text contents of a synced file. Distinguishes itself from the sibling drive_download by specifying it is only for text files under 1 MB.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (text files under 1 MB, synced locally) and when not to use (binary, over 1 MB, not synced), providing the alternative drive_download. Also lists prerequisites (env variable, app running).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_renameA
Rename a file or folder in place on Proton Drive, without moving it to a different parent folder. Requires authentication. Equivalent to calling drive_move with the same parent and a new filename, but cheaper โ one CLI call instead of drive_move's internal composition. Do not use to relocate to a different folder โ use drive_move for that (or when unsure which applies).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote path of the file or folder to rename (must start with '/'). | |
| newName | Yes | New filename (not a path โ just the name, e.g. 'report-v2.pdf'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'Requires authentication,' which is not in the annotations (only destructiveHint: false). It also discloses that the operation is in-place and cheaper than drive_move. However, it does not mention potential conflict behavior or error conditions; the sparse annotation means the description carries more burden, but the added context is still valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose, cost/equivalence, and explicit usage direction. It is front-loaded, concise, and free of redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter rename tool with no output schema, the description covers the core action, authentication, equivalence, and usage boundaries. It could mention what happens on overwrite or error, but the level of detail is adequate for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions (100% coverage). The description reinforces that newName is just the name and path is absolute, but it doesn't add semantic detail beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Rename a file or folder in place on Proton Drive, without moving it to a different parent folder.' It uses a specific verb and resource, and explicitly differentiates from drive_move by clarifying the in-place constraint and equivalency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage guidance: 'Do not use to relocate to a different folder โ use drive_move for that (or when unsure which applies).' It also explains when this tool is preferable ('cheaper โ one CLI call'), giving the agent explicit decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_restoreA
Restore a trashed file or folder back to its original Proton Drive path. Requires authentication. Use drive_list_trash first to find the item's current path in trash. Fails if the original parent folder no longer exists or if a new item with the same name was created at that path since it was trashed. Do not use for items not currently in trash โ it will return an error.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path of the item to restore, as shown in drive_list_trash output (must start with '/'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint: false annotation, it adds authentication requirement, failure cases, and that it restores to original path. Could mention return value but still strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences, front-loaded with purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, conditions, and limitations. Lacks explicit return value but sufficient for a simple restore tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description explains how to obtain the path parameter via drive_list_trash and that it must start with '/', adding value beyond the schema's description of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool restores a trashed file or folder to its original path, distinguishing it from sibling tools like drive_trash, drive_list_trash, and drive_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use drive_list_trash first, specifies that it only works for trashed items, and warns of failure conditions (missing parent folder, name conflict).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_trashADestructive
Move a file or folder to the Proton Drive trash. Requires authentication. The item disappears from its original path immediately but is not permanently deleted โ recover it with drive_restore or list it with drive_list_trash. Prefer this over drive_delete whenever permanent removal is not explicitly required by the user. Do not use when the item must be permanently gone immediately โ use drive_delete with confirmed=true instead.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path to move to trash (must start with '/'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses immediate removal from original path, non-permanent deletion, recoverability, and authentication requirement, adding value beyond the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with 4 sentences, front-loaded with the main action, and well-structured without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, no output schema, and annotations, the description covers all necessary context: behavior, prerequisites, and alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra parameter information beyond the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('move a file or folder to the Proton Drive trash') and distinguishes it from siblings like drive_delete and drive_restore, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool over drive_delete and when not to use it, including clear alternatives and recovery options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_uploadA
Upload a local file or folder to Proton Drive with end-to-end encryption. Requires authentication. For folders, uploads recursively and preserves directory structure. Returns {uploaded, skipped, failed} counts โ fails the call if failed > 0 (common causes: quota exceeded, destination path not found, permission denied). Conflict strategies are set separately for files and folders (CLI v0.8.0+) โ both default to 'skip'. Do not use to move files already on Drive (use drive_move) or to write text content directly (use drive_write_file if PROTON_DRIVE_SYNC_PATH is set). Ensure destination folder exists first with drive_list; create it with drive_mkdir if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| localPath | Yes | Absolute local filesystem path of the file or folder to upload (must start with '/'). | |
| remotePath | Yes | Absolute remote Drive destination folder path (must start with '/'). E.g. /my-files/Reports | |
| fileConflictStrategy | No | 'skip' leaves an existing remote file unchanged (default). 'create-new-revision' uploads as a new version of the existing file, keeping history. 'rename' adds a unique suffix to the uploaded file's name. 'replace' trashes the remote file and uploads the local copy in its place โ confirm with user first. | |
| folderConflictStrategy | No | 'skip' leaves an existing remote folder unchanged (default). 'merge' merges the uploaded folder's contents into the existing one. 'rename' adds a unique suffix to the uploaded folder's name. 'replace' trashes the remote folder and uploads the local copy in its place โ confirm with user first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include openWorldHint, so the description carries the full behavioral burden and succeeds. It discloses recursive folder upload, directory structure preservation, return counts, failure semantics (fails if failed > 0), common failure causes, default conflict strategies, and authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: core action, key behavior, return contract, failure modes, defaults, exclusions, and prerequisite steps. The description is dense but efficiently structured and front-loaded with the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description fully explains return values, error conditions, conflict handling, prerequisites, and alternatives. An agent has enough information to call it correctly and handle failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value above the schema by explaining that conflict strategies are configured separately, defaults to 'skip', and the overall effect on upload results. It does not need to restate the schema's parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Upload') and resource ('local file or folder to Proton Drive') and even specifies end-to-end encryption. It clearly distinguishes from sibling tools like drive_move and drive_write_file by naming exactly what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance and names alternatives: 'Do not use to move files already on Drive (use drive_move)' and 'use drive_write_file'. It also gives a prerequisite workflow: check destination exists with drive_list, and create with drive_mkdir if needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_versionARead-onlyIdempotent
Return the installed proton-drive CLI version and SDK version as {cli: string, sdk: string}. Does not require authentication โ use to confirm the correct binary is in PATH before other operations, or to diagnose compatibility issues. Do not use to check auth state; use drive_auth_status instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds value by noting that authentication is not required, which goes beyond the annotations. However, it does not elaborate further on behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, and no unnecessary words. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description provides sufficient information about the return value and usage. Combined with annotations, the tool definition is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (schema coverage 100% with empty properties). The description explains the return format, which adds meaning beyond the schema. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the installed proton-drive CLI and SDK versions as an object with specific keys {cli: string, sdk: string}. It distinguishes from other tools by specifying it does not require authentication and is not for auth state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: to confirm the correct binary is in PATH before other operations or diagnose compatibility issues. Also provides a clear exclusion: do not use for auth state, instead use drive_auth_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_write_fileADestructive
Write text content to a file in the local Proton Drive sync folder. Requires authentication. Requires the PROTON_DRIVE_SYNC_PATH environment variable to point to the sync folder root. The Proton Drive desktop app must be running to sync the written file to the cloud. Creates parent directories locally if they do not exist. Overwrites the file if it already exists โ confirm with the user before overwriting. Do not use for binary content or files that need to be uploaded without the desktop app running โ use drive_upload instead.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute remote Drive path of the file to write (must start with '/'). Mapped to the local sync folder. E.g. /my-files/notes.txt | |
| content | Yes | UTF-8 text content to write. The file will be created or overwritten. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds important behavioral context beyond annotations: confirms overwriting with user, creates parent directories locally, and requires desktop app. No contradiction with destructiveHint and openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with no wasted words; front-loaded with purpose, then prerequisites, behavior, and caveats in logical order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a 2-param tool without output schema: covers purpose, requirements, side effects, and usage boundaries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds context for path (mapped to local folder) and content (UTF-8), providing extra meaning over schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'write' and resource 'file' within the Proton Drive sync folder context, and it distinguishes from drive_upload by specifying not to use for binary content or without desktop app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions when to use (text content, with app running) and when not to (binary, without app) with the alternative drive_upload, plus prerequisites like authentication and environment variable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_add_to_albumA
Add a photo from your Proton Photos library to an album. Requires authentication. albumPath must start with /albums/; photoPath must start with /photos/. The photo must already exist in your library โ this does not upload new photos. Use photos_list_albums to find album paths.
| Name | Required | Description | Default |
|---|---|---|---|
| albumPath | Yes | Absolute path of the album. Must start with /albums/. E.g. /albums/Vacation 2024 | |
| photoPath | Yes | Absolute path of the photo in your library. Must start with /photos/. E.g. /photos/IMG_001.jpg |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint:false, so description carries some burden. It discloses requirements (authentication, path format, pre-existing photo) but does not mention what happens on failure (e.g., album not found, photo already in album) or whether the operation is idempotent. It clarifies a non-obvious behavioral trait (does not upload), but leaves other side effects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, front-loaded sentences. The first sentence states the core purpose; the second sets path constraints; the third clarifies a boundary and points to a helper tool. No redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-string-parameter tool with no output schema and minimal annotations, the description covers purpose, usage constraints, and a key behavioral caveat. It lacks explicit error-handling information but is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers both parameters with descriptions and examples (100% coverage), so baseline is 3. The description adds value by clarifying that photoPath must reference an existing library item and that the tool does not upload, plus suggesting photos_list_albums to discover albumPath. This enriches parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (add a photo) with source (library) and destination (album), distinguishing it from sibling tools like photos_remove_from_album or photos_create_album. The verb 'Add' and resource phrasing are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage conditions: requires authentication, path prefixes, photo must already exist (not for upload), and points to photos_list_albums for finding album paths. This effectively tells when to use and when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_create_albumA
Create a new empty photo album in Proton Photos. Requires authentication. Pass the album name (not a path) โ the album is created at /albums/. Fails if an album with that name already exists.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new album. E.g. 'Vacation 2024'. Must be non-empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint: false, so the description carries the transparency burden. It discloses authentication requirements, the exact creation path (/albums/<name>), the 'not a path' parameter constraint, and the duplicate-name failure behaviorโall beyond the annotation's minimal safety signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, and every clause adds value: auth, parameter format, creation location, and failure condition. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter create operation with no output schema, the description covers all essentials: what it does, how to pass the parameter, where it lands, failure mode, and authentication. It's fully complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'name', but the tool description adds valuable nuance: 'Pass the album name (not a path)' and explains the resulting path. This goes beyond the schema's example and non-empty constraint, enriching the parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Create a new empty photo album in Proton Photos') and clearly distinguishes from siblings like photos_list_albums and photos_delete_album. It also specifies 'empty' and 'new' to disambiguate from add/remove operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: requires authentication, expects a name not a path, and fails on duplicates. It doesn't explicitly name alternatives, but the context makes it obvious this is the creation tool among the sibling list. Slightly short of explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_delete_albumADestructive
Delete a Proton Photos album. Requires authentication and confirmed=true. By default refuses to delete an album that still contains photos โ pass force=true to override. By default photos are removed from the album but kept in your timeline โ pass save=true to explicitly preserve them in your timeline before deleting. albumPath must start with /albums/. Always show the user the album name and photo count (from photos_list_albums) before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | If true, save album photos to your timeline before deleting. Default false. | |
| force | No | If true, delete even if the album still contains photos. Default false. | |
| albumPath | Yes | Absolute path of the album to delete. Must start with /albums/. E.g. /albums/Vacation 2024 | |
| confirmed | Yes | Must be true. Confirms the user has acknowledged the deletion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses crucial behaviors: default refusal for albums containing photos, force override, default photo removal from album with timeline retention, and the save preservation option. This is rich context that substantially exceeds the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense. Each sentence addresses a distinct aspect (function, auth/confirmation, force, save, path constraint, user confirmation step). No fluff or repetition; structure is logical and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description is remarkably complete: it covers prerequisites, safety guards, behavioral nuances, parameter constraints, and a pre-call user confirmation step. It fully prepares an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage of parameter descriptions, but the description adds meaningful context: 'albumPath must start with /albums/' and clarifies force/save default behaviors (e.g., save=true overrides default removal). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Delete a Proton Photos album,' a specific verb+resource that clearly states the tool's function. It distinguishes itself from siblings like photos_add_to_album and photos_remove_from_album by targeting album deletion, not photo manipulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage conditions: requires authentication and confirmed=true, force=true to override default refusal for non-empty albums, and save=true to preserve photos. It also instructs to show the user album name and photo count from photos_list_albums before calling, and specifies albumPath format, offering clear when-to-use and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_downloadA
Download one or more photos from Proton Photos (timeline, an album, or shared-with-me) to a local folder. Requires authentication. Multiple timeline photos can share the same filename โ with conflictStrategy 'remove' or 'skip' only one copy survives locally; use 'rename' to keep all. Fails if any item fails to download. Do not use for regular Drive files โ use drive_download instead.
| Name | Required | Description | Default |
|---|---|---|---|
| photoPaths | Yes | One or more absolute photo paths to download (each must start with '/'). E.g. ['/photos/IMG_001.jpg'] | |
| localFolder | Yes | Absolute local destination folder (must start with '/'). Created if it does not exist. | |
| conflictStrategy | No | '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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only openWorldHint, so the description bears the behavioral burden and does well: it discloses the authentication requirement, the filename-collision consequence ('only one copy survives locally' with 'remove'/'skip'), and the all-or-nothing failure mode ('Fails if any item fails to download'). This meaningfully supplements the thin annotation set 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with zero filler, and the purpose is front-loaded in the first sentence. Each subsequent sentence earns its place: auth requirement, collision warning, atomic failure behavior, and sibling routing. Efficient and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only openWorldHint as an annotation, the description covers the critical decisions: source scope, destination, auth, conflict resolution, failure semantics, and tool routing. The only minor gap is the unspecified success return value, which is of low importance for a download operation whose observable outcome (files in a folder) is self-evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining why conflictStrategy matters: multiple timeline photos can share the same filename, and the survival consequence ties the enum options to real outcomes. This is semantic context the schema's per-parameter descriptions do not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+destination ('Download one or more photos from Proton Photos... to a local folder') and scopes the source explicitly (timeline, album, shared-with-me). The final sentence names the sibling it is not (drive_download), making the boundary unambiguous against the photos_upload and drive_download siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when not to use it ('Do not use for regular Drive files') and names the alternative ('use drive_download instead'). The source scoping (timeline, album, shared-with-me) further clarifies the intended context. No routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_list_album_photosARead-onlyIdempotent
List the photos in a Proton Photos album. Requires authentication. Returns [{nodeUid}] โ photo node UIDs. albumPath must start with /albums/. To add or remove photos, use their Drive path under /photos/ (not the nodeUid).
| Name | Required | Description | Default |
|---|---|---|---|
| albumPath | Yes | Absolute path of the album. Must start with /albums/. E.g. /albums/Vacation 2024 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds valuable context beyond that: authentication requirement, return format as [{nodeUid}], and a critical path constraint. It also warns that nodeUid is not suitable for add/remove operations, which is behavioral information not present in annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core action. Every sentence adds value: the first explains what it does, the second covers auth and return value, and the third provides an important constraint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one parameter and no output schema, the description is complete. It explains the return value format, the required path prefix, authentication, and a relevant warning about using Drive paths for mutations. The annotations and sibling context round out the picture, so there are no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter albumPath, and the schema already includes the description 'Must start with /albums/' and an example. The tool description repeats this constraint but does not add meaningful new parameter semantics beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List the photos in a Proton Photos album.' It specifies the resource (photos in an album) and distinguishes this from sibling tools like photos_list_albums (which lists albums, not their contents). The return format is also mentioned, further clarifying the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: requires authentication, albumPath must start with /albums/, and returns nodeUids. It also gives guidance about related operations ('To add or remove photos, use their Drive path under /photos/'), which implicitly tells the agent when not to use this tool for mutations. However, it does not explicitly state when to use this tool over alternatives, so it falls 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.
photos_list_albumsARead-onlyIdempotent
List all photo albums in Proton Photos. Requires authentication. Returns [{name, photoCount, isShared, creationTime?}]. Album paths are /albums/ โ use the name from this list to build paths for other album tools. Do not use to list regular Drive folders โ use drive_list instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly and idempotent. The description adds valuable behavioral context: requires authentication, return structure [{name, photoCount, isShared, creationTime?}], and path convention /albums/<name>. This goes beyond the annotations and helps the agent understand side-effects and output expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose, and every sentence provides essential information (purpose, return format, path convention, exclusions). No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read-only tool, the description fully covers the purpose, output format, prerequisites (auth), and integration with other album tools. It also prevents misuse by contrasting with drive_list. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema coverage is trivially 100%. The description adds meaning by explaining the return shape and path usage, which is useful even though there are no parameters to document. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all photo albums in Proton Photos' with a specific verb and resource. It distinguishes from siblings by specifying 'all photo albums' and later contrasting with regular Drive folders, making it unique among the tool list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: use the name from this list to build paths for other album tools, and explicitly warns against using it for Drive folders, directing to drive_list instead. This is a clear when-to-use vs alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_list_timelineARead-onlyIdempotent
List photos in your Proton Photos timeline (your full photo library, not scoped to an album). Requires authentication. Returns [{nodeUid}] by default โ pass loadDetails=true for full node metadata (slower; buffers the whole list in memory first). Use photos_download to download items by path, or photos_add_to_album to add them to an album.
| Name | Required | Description | Default |
|---|---|---|---|
| loadDetails | No | If true, fetch full node metadata for each photo instead of just its nodeUid. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, providing safety and idempotency. The description adds value by disclosing the default return format ('Returns [{nodeUid}] by default'), the optional behavior with loadDetails ('pass loadDetails=true for full node metadata'), and performance implications ('slower; buffers the whole list in memory first'). This goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the core purpose, then provides auth requirement, return format, parameter behavior, and alternatives. Every sentence adds necessary information with no redundancy. It is concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter), strong annotations, and absence of an output schema, the description adequately covers the essentials: what it lists, what it returns by default, what happens with loadDetails, authentication, and related tools. No critical information appears missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents loadDetails with its meaning and default. The description adds extra context by explaining the performance and memory trade-offs ('slower; buffers the whole list in memory first') and reiterates the default return format. This enhances the schema description, so a score above baseline is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List photos in your Proton Photos timeline' with the explicit caveat '(your full photo library, not scoped to an album)' which distinguishes it from album-scoped siblings like photos_list_album_photos. The verb 'List' and resource 'photos in your Proton Photos timeline' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: 'Use photos_download to download items by path, or photos_add_to_album to add them to an album.' It also clarifies the scope ('not scoped to an album'), implying when to choose this over album-specific listing tools. This is clear and directly addresses alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_remove_from_albumADestructive
Remove a photo from a Proton Photos album without deleting it from your library. Requires authentication. albumPath must start with /albums/; photoPath must start with /photos/. The photo is removed from the album only โ it stays in your timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| albumPath | Yes | Absolute path of the album. Must start with /albums/. E.g. /albums/Vacation 2024 | |
| photoPath | Yes | Absolute path of the photo in the album. Must start with /photos/. E.g. /photos/IMG_001.jpg |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important context beyond the destructiveHint annotation by clarifying that the destructive scope is limited to album membership, not library deletion. It also discloses the authentication requirement, which is valuable behavioral info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each adding value: purpose, authentication, and path constraints with behavioral effect. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers purpose, behavioral impact, prerequisites, and path constraints. It is complete enough for an agent to confidently select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full parameter descriptions, including path format constraints and examples. The tool description reinforces the path prefix requirements but does not add new semantic information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Remove a photo from a Proton Photos album' and clearly clarifies the scope by saying 'without deleting it from your library.' This differentiates it from sibling tools like photos_add_to_album and photos_delete_album.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 this tool (removing from an album while keeping the photo) and mentions the authentication requirement. However, it does not explicitly name alternative tools or state when not to use it, though the context implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_update_albumA
Rename an album or change its cover photo in Proton Photos. Requires authentication. At least one of name or coverPhotoUid must be provided. Use photos_list_album_photos to find a nodeUid to set as the cover.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the album. Omit to leave unchanged. | |
| albumPath | Yes | Absolute path of the album to update. Must start with /albums/. E.g. /albums/Vacation 2024 | |
| coverPhotoUid | No | nodeUid (from photos_list_album_photos) of the photo to set as the album cover. Omit to leave unchanged. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that authentication is required and clarifies that it's a partial update allowing either field, beyond the destructiveHint=false annotation. It does not contradict any annotations, and the annotation is minimal, so the description adds meaningful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no fluff. The purpose, constraints, and a usage hint are packed efficiently, front-loading the tool's primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity and full schema coverage, the description covers the purpose, required parameters, authentication, and how to obtain the cover photo. It lacks an explicit mention of return value, but that's not critical for an update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with clear descriptions for name, albumPath, and coverPhotoUid. The description adds no extra semantic detail beyond referring to these fields, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames an album or changes its cover photo, using specific verbs and a resource. It distinguishes from sibling tools like photos_create_album and photos_delete_album by specifying the exact mutation types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly notes the authentication requirement and the constraint that at least one of name or coverPhotoUid must be provided. It also directs users to photos_list_album_photos to discover nodeUid values, giving practical usage context, though it doesn't mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photos_uploadA
Upload one or more local photo or video files directly into your Proton Photos library (My Photos timeline). Requires authentication. Non-photo/video files are silently skipped. Folders are recursed but flattened into My Photos โ folder structure is not preserved. Never overwrites โ duplicates (matched by name + content hash) resolve to 'rename' or 'skip' only. Do not use for regular Drive files โ use drive_upload instead.
| Name | Required | Description | Default |
|---|---|---|---|
| localPaths | Yes | One or more absolute local paths to files or folders to upload (each must start with '/'). | |
| conflictStrategy | No | How to handle duplicate photos (matched by name + content hash). 'skip' leaves the existing photo unchanged (default); 'rename' uploads under a unique name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only openWorldHint in annotations, the description carries the behavioral burden and does so thoroughly. It discloses that non-photo/video files are silently skipped, folders are flattened, files are never overwritten, and duplicates are handled only via rename or skip.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. Each sentence adds distinct value: purpose, authentication, filtering, folder behavior, conflict resolution, and an explicit alternative. No wasted words or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter upload tool with no output schema, the description covers all essential operational context: file types, folder flattening, overwrite avoidance, duplicate handling, authentication, and the correct sibling alternative. Nothing critical needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond the schema: it clarifies localPaths refers to local photo/video files or folders, explains folder recursion and flattening, and defines the duplicate-matching logic as name + content hash for the conflictStrategy parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Upload one or more local photo or video files directly into your Proton Photos library.' It also explicitly distinguishes itself from drive_upload by saying not to use it for regular Drive files, so sibling confusion is avoided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit routing guidance: 'Do not use for regular Drive files โ use drive_upload instead.' Also states authentication requirements, file-type filtering, folder behavior, and duplicate resolution so an agent knows exactly when and how to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct, clearly defined purpose with explicit 'do not use' guidance preventing overlap (e.g., drive_list vs drive_list_trash vs drive_list_invitations). Descriptions consistently call out the exact scenarios each tool is for, making the boundaries unambiguous.
Tool names use a consistent drive_/photos_ prefix and mostly action-oriented verbs, but the verb-noun order varies: some are verb-first (drive_upload, drive_list_trash) while others are noun-first (drive_invitation_accept, drive_share_status, drive_auth_logout). This mixed pattern makes the naming less predictable.
With 29 tools, the set is larger than typical and crosses into the 'too many' range, even though each tool is distinct. The sharing and invitation group alone accounts for 7-8 tools, which could overwhelm agents and increase selection overhead.
The tool set provides thorough lifecycle coverage for files (list, read, write, upload, download, move, copy, delete, trash, restore), sharing (invite, revoke, leave, accept, reject), and photos (album CRUD and photo membership). Minor gaps existโno direct login tool and no role-update operation (must revoke and re-invite)โbut these are manageable workarounds, not dead ends.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Talk to your public-facing AI from any MCP client โ Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Proton Drive files, supporting operations like listing, reading, creating, and deleting files and folders.77316MIT
- AlicenseAqualityDmaintenanceMCP server that gives Claude Desktop and other desktop MCP clients filesystem powersโread, write, edit, and manage files like AI coding assistants.17869MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Proton privacy suite โ Mail, Pass, Drive, Calendar, and VPN. 36 tools for Claude and other MCP-compatible AI agents.18MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for iCloud Drive on macOS, enabling Claude to browse, read, search, tag, write, and trash files with safe defaults and automatic handling of iCloud placeholder files.191MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/googlarz/proton-drive-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server