CloudSee Drive MCP Server
The CloudSee Drive MCP server enables management of your CloudSee Drive (S3-backed cloud storage) through natural language via any MCP-compatible AI client.
Discover & Browse: List all available drives/buckets (
list_buckets); browse folder contents with pagination and sorting (browse_folder); recursively list all files (list_files); search files by keyword (search_files); view recently accessed/modified files (recent_files).Inspect & Share: Get detailed file metadata (
get_file_metadata) and S3 object tags (get_file_tags); generate short-lived pre-signed URLs for downloads (download_file) and time-limited shareable links (share_link).Upload & Organize: Upload local files of any size with multipart support (
upload_file), without overwriting existing files; check background upload status (upload_status); create new folders (create_folder); duplicate files in place (duplicate_file).Manage & Mutate (require two-step confirmation): Rename files/folders (
rename_file); move or copy objects within/across drives (move_file); permanently delete files/folders (delete_files); update file metadata and S3 tags (update_metadata); restore archived Glacier objects (restore_archived_file).
Safety & Privacy: Destructive operations are gated by client-side tool-permission prompts and a two-step confirmation pattern. All data processing is local; API credentials never leave your machine. Sharing uses temporary pre-signed URLs, not raw credentials. You can configure a default bucket via environment variables.
Allows management of files and folders in Amazon S3 buckets via the CloudSee Drive interface, including browsing, searching, uploading, downloading, sharing, renaming, moving, deleting, and updating metadata and tags.
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., "@CloudSee Drive MCP ServerSearch for files named 'budget' in my drive"
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.
CloudSee Drive MCP server
An open-source Model Context Protocol (MCP) server for CloudSee Drive β connect your CloudSee account (a browser interface for Amazon S3) to Claude Desktop and any MCP-compatible client, and manage your files in natural language.
Browse, search, download, share, upload, organize, and tag your CloudSee Drive files from your AI assistant β every destructive action must be approved through Claude Desktop's own tool-permission prompt before it runs.
π New here? The Installation, Commands & Testing Guide walks through install, configuration, every tool with examples, and how to test against a live API.
Quickstart (β5 minutes)
1. Get an API key
In the CloudSee Drive dashboard, create a public-API key. You'll receive a key id
(looks like AKIAβ¦) and a secret. Copy both β the secret is shown only once.
2. Add the server to Claude Desktop
Open Claude Desktop β Settings β Developer β Edit Config, and add a cloudsee-drive
entry under mcpServers (no install needed β npx fetches it on demand):
{
"mcpServers": {
"cloudsee-drive": {
"command": "npx",
"args": ["-y", "@webapper/cloudsee-drive-mcp"],
"env": {
"CLOUDSEE_API_KEY_ID": "<your key id>",
"CLOUDSEE_API_KEY_SECRET": "<your secret>",
"CLOUDSEE_API_BASE_URL": "https://drive-api.cloudsee.cloud"
}
}
}
}3. Restart Claude Desktop and try it
"List my CloudSee buckets, then show the most recent files."
That's it. The server runs locally on your machine; your API key never leaves it.
Related MCP server: AWS S3 MCP Server
Installation
Requires Node.js β₯ 20. No native dependencies β works on macOS, Linux, and Windows.
As a Claude Desktop extension (no config file)
The server is packaged as an MCP Bundle (.mcpb) β a one-click install that asks for your
API key in a form instead of making you edit JSON. Build one from this repo with:
npm run build:mcpb # β build/cloudsee-drive-<version>.mcpbPacking needs the MCPB CLI (npm i -g @anthropic-ai/mcpb); without it the script still stages
the bundle and prints the one command left to run. Open the resulting .mcpb with Claude
Desktop to install it.
As an npm package
npm install -g @webapper/cloudsee-drive-mcpor let npx fetch it on demand, as in the Quickstart above.
On macOS that command usually fails the first time with EACCES: permission denied, mkdir '/usr/local/lib/node_modules/@webapper'. That is npm's global prefix pointing at a directory
your user cannot write to β it is not specific to this package, and any system configured the
same way behaves the same. Either install with sudo, or point npm at a prefix you own:
npm config set prefix ~/.npm-global
export PATH="$HOME/.npm-global/bin:$PATH" # add to ~/.zshrc or ~/.bashrc to keep it
npm install -g @webapper/cloudsee-drive-mcpThe npx form in the quickstart above sidesteps this entirely β it needs no global install.
Configuration
All configuration is via environment variables (set them in the Claude Desktop env block,
or a local .env for development β see .env.example).
Variable | Required | Default | Description |
| β | β | Your CloudSee Drive API key id. |
| β | β | The matching API key secret. Never commit this. |
| β |
| API base URL. UAT: |
| β | β | Default drive (S3 bucket) for tool calls that omit |
| β |
|
|
| β |
| Per-request timeout in milliseconds. |
Tools
Most tools operate on one drive (an S3 bucket): pass bucketName, or set
CLOUDSEE_DEFAULT_BUCKET once and omit it. recent_files and list_buckets don't need a drive.
Tool | Description | Access |
| List the account's registered drives | read |
| List all files in a drive (recursive) | read |
| List a folder's contents (indexed view) | read |
| Find files/folders by name keyword | read |
| List recently used files | read |
| Get a file's metadata | read |
| Get a file's S3 tags | read |
| Get a temporary pre-signed download URL | download |
| Create a shareable, time-limited link | download |
| Upload a file β see Uploading | write |
| Progress of a large upload running in the background (stdio only) | write |
| Create a folder | write |
| Rename a file/folder | write Β· confirm |
| Move (or copy) a file/folder | write Β· confirm (move) |
| Duplicate a file | write |
| Permanently delete objects | delete Β· confirm |
| Update a file's metadata | write Β· confirm |
| Un-archive a Glacier object | write Β· confirm |
Uploading
upload_file has one name and two shapes, chosen by how the server is reached β you only
ever see the one that applies:
Running as | Argument | Who reads the bytes | Size |
stdio (this package, Claude Desktop / Claude Code) |
| The server, off your own disk | Any β over 8 MiB it uploads in 16 MiB parts |
hosted (a remote connector) |
| The bytes travel in the request | β€ 256 KB |
Files over 8 MiB upload in the background. An MCP client abandons a tool call after 60
seconds, so a large upload cannot be waited on β it would be reported as a timeout while it was
still succeeding. upload_file therefore returns an id straight away and keeps going; ask
upload_status for progress. The file is in the drive once that says completed. Parts go up
four at a time.
The upload lives in this server process, so quitting the MCP client cancels it.
The hosted shape exists because a remote server has no access to your disk, and a remote MCP client is normally blocked from uploading to storage itself. For anything larger than a few hundred kilobytes on a hosted connector, use the CloudSee web app.
Both shapes behave the same in two ways that matter:
Nothing is ever overwritten. If the name is taken, the file is stored with a timestamp appended (
report (30-07-2026 14:05).md) and the tool tells you the name it used.The content type comes from the file name, matching what storage signs the upload URL with. Passing your own would risk a signature mismatch, so the tool doesn't accept one.
Tip for
localPath: copy the name exactly. File names can contain characters that look like a plain space but aren't β macOS screen recordings, for instance, useU+202FbeforeAM/PM. When a file isn't found, the error points at the near match and names the character.
list_files ids are not stable β don't use them for mutation
list_files lists straight from storage and mints a new object id on every call. Never pass
that id to rename_file, move_file, update_metadata, or delete_files. Use search_files,
browse_folder, or recent_files instead β their StorageId is a persisted id from the search
index and stays stable across calls.
Destructive operations require confirmation
Tools marked confirm (delete, rename, move, update-metadata, restore) use two-step
confirmation: the first call returns a preview and makes no changes; the model must call
again with confirm: true to proceed. The two-step call itself is filled in by Claude, not by
you β it is not the actual approval gate.
The real gate is Claude Desktop's own tool-permission prompt, which appears before any tool call runs. Four things worth knowing about it:
Denying it genuinely stops the operation β the tool is never invoked with
confirm: true.Approving one destructive call does not approve a different one. Approving a
rename_filecall does not pre-approve a laterdelete_filescall β each call is gated independently."Allow for this task" is the prompt's default button, and once clicked it covers that tool for the rest of the current chat β later calls to the same tool in the same conversation won't prompt again. Choose "Allow once" to review every call individually.
This is still a client-side safety prompt β the CloudSee API authorizes every operation server-side; confirmation is not the security boundary.
Privacy Policy
Full text: PRIVACY.md Β· hosted copy
In short β the server is a conduit, not a destination:
What it processes. Only what a tool call needs: your API credentials (from the environment), and the file names, paths, metadata, tags or file contents involved in the operation you asked for.
What it stores. Nothing. There is no database, cache or log of your files; each request is handled in memory and forgotten. Diagnostics go to stderr with the secret redacted.
Who else sees it. Your AI client, which issues the tool calls, and the CloudSee Drive API / Amazon S3, which performs them. No analytics, no profiling, no model training, no resale.
Retention. None by this server. Files and account data live in CloudSee Drive under its own policy; downloads and shares are short-lived pre-signed URLs.
Contact. privacy@webapper.net Β· security reports per SECURITY.md.
Security
Your API key id + secret are read from the environment and held only in this local process. The server never logs the secret, never returns it in tool output, and never writes it to a file. All diagnostics go to stderr (stdout is the MCP transport).
File downloads/shares return short-lived pre-signed URLs, never long-lived account credentials. (A pre-signed URL embeds the temporary, scoped signing token that is inherent to S3 SigV4 presigning β it expires with the link.)
Rotating an API key issues a new key id and secret together and revokes the old id immediately β update both
CLOUDSEE_API_KEY_IDandCLOUDSEE_API_KEY_SECRETafter rotating; see GUIDE.md Β§8 Troubleshooting.Report vulnerabilities per
SECURITY.md. Never paste a real key/secret into an issue.
Status & known limitations
This wraps CloudSee Drive's public API (the /v1/* gateway).
Almost every tool needs a drive (
bucketName, orCLOUDSEE_DEFAULT_BUCKET). Without one, drive-scoped tools return a clear "specify a drive" message.list_bucketsreturns the drives your key can access β use it to discover drive names.browse_folder/search_filesuse the search-indexed view and can return empty for un-indexed content β uselist_filesfor a complete, reliable listing of a drive.Write/delete tools require an API key whose scopes include
drive:write/drive:delete. Admin-created keys carry these scopes; keys created under a User role are read/download-only, and the gateway denies out-of-scope calls with a clearinsufficient_scopemessage.rename_file,move_file(and copy) anddelete_filesare queued operations: the tool returns a queueRequestIdand the operation completes in the background, typically within 1β2 minutes β verify by listing.upload_filediffers by transport (see Uploading). Over stdio it takes a path and handles any size β one pre-signed PUT up to 8 MiB, multipart above that. On a hosted connector it takes the file's contents instead, capped at 256 KB.
Development
npm install
npm test # vitest: unit + toolβcontract drift tests
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run build # tsup β dist/ (ESM, with bin shebang)
npm run sync:contract # regenerate contract/registry.snapshot.json from the API seed
node scripts/smoke.mjs # build first; spawns the server and lists tools over MCPThe contract-drift test (test/contract/drift.test.ts) fails the build if any tool drifts
from the committed API contract snapshot β so tool schemas can't silently diverge from the
real /v1/* surface.
License
MIT Β© Webapper
Available Tools
18 toolsbrowse_folderBrowse folderARead-only
List the files and sub-folders inside a folder of a drive (the indexed view), with sorting and pagination. Requires the drive (bucketName). To filter by keyword use 'search_files'; for a complete, recursive file listing straight from storage use 'list_files'.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder path / prefix within the drive to list. Empty or omitted = the drive root. | |
| cursor | No | Opaque pagination cursor returned by a previous call. | |
| pageSize | No | Max items per page (1-200, default 50). | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. | |
| sortOption | No | Sort key, e.g. 'name_asc', 'name_desc', 'date_desc'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds meaningful context about the indexed view (implying potential staleness) and the dependency on bucketName. It also mentions sorting and pagination, which is beyond the annotation scope.
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, front-loaded with the core action, then providing usage alternatives. Every sentence contributes necessary information without unnecessary verbosity.
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 moderate complexity (5 params, no output schema), the description covers purpose, usage, prerequisites, and distinguishes from siblings. It adequately conveys that the result is a paginated list, though it omits error handling or default sort behavior, which would enhance completeness further.
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 detailed parameter descriptions, so the schema already defines all five parameters. The description only reinforces bucketName requirement, adding minimal semantic 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 clearly states the tool lists files and sub-folders in a folder, specifying it uses the indexed view with sorting and pagination. It distinguishes itself from siblings by naming search_files for keyword filtering and list_files for recursive storage listing.
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 guidance: requires bucketName, and directs users to search_files for keyword filtering and list_files for recursive direct storage listing. This clearly states when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderCreate folderA
Create a new folder at the given path in a drive. Requires the drive (bucketName). (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New folder name. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. | |
| parentPath | Yes | Parent folder/prefix in the drive. Empty = drive root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond annotations: "a denial means the API key lacks this tool's scope, not a tool failure." It also notes the need for bucketName. However, it does not disclose what happens if the folder already exists, whether the operation is idempotent (though annotations mark idempotentHint=false), or what the successful response contains. Annotations already declare readOnlyHint=false and destructiveHint=false, lowering the bar for extra disclosure, but some gaps remain.
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 two sentences, front-loaded with the core action. The first sentence states the purpose immediately; the second adds necessary prerequisite and error-context details without redundancy. Every clause contributes value, and there is no wasted 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?
The tool has a simple create-folder operation, no output schema, and annotations cover safety flags. The description explains the prerequisite (bucketName) and error interpretation, which is sufficient for basic usage. However, it does not mention the return value or behavior on duplicate folders, which would help the agent fully model the operation. Still, it is more complete than many tools at this complexity level.
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%, with each parameter (name, bucketName, parentPath) already described in the input schema. The description does not add semantic detail beyond what the schema provides, such as format constraints or examples. Baseline 3 is appropriate since the schema fully documents 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 the action: "Create a new folder at the given path in a drive." This is a specific verb+resource pairing that distinguishes it from sibling tools like upload_file or delete_files. The mention of 'given path' adds precision.
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 a key prerequisite: "Requires the drive (bucketName)," and explains the meaning of authorization denials. However, it lacks explicit when-to-use versus alternative tools, such as when to choose create_folder over upload_file or browse_folder. There is no mention of alternatives or conditions for non-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_filesDelete filesADestructive
Permanently delete one or more files/folders from a drive, each addressed by its exact object key plus its storage id (the StorageId field from search_files / browse_folder / recent_files β not from list_files). Queued: returns a RequestId per object and the deletes complete in the background, typically under 2 minutes β verify by listing until the objects disappear. Requires the drive (bucketName). Destructive and irreversible. Requires confirm=true. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to actually perform this mutating/irreversible action. If omitted or false, the tool returns a preview and makes no changes. | |
| objects | Yes | Objects to permanently delete (one queued request per object). | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint and readOnlyHint annotations, the description discloses queued asynchronous behavior (RequestId, background completion, ~2 minutes), the need to verify by listing, and RBAC denial semantics. This is rich context that significantly aids the agent.
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 dense, front-loaded with the core purpose, then detailing addressing, queuing behavior, and authorization. Every sentence contributes actionable information with no fluff.
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?
Despite no output schema, the description explains the return type (RequestId per object), how to confirm completion, and the meaning of authorization denial. It covers the tool's complexity comprehensively, addressing async behavior, prerequisites, and irreversibility.
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 reinforces and clarifies parameter usage, especially the storageId pitfall ('not from list_files') and the structure of objects array (one request per object). This adds practical guidance 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 clearly states the action: 'Permanently delete one or more files/folders from a drive' with specific details on object addressing. It is easily distinguished from sibling tools like rename_file, move_file, and duplicate_file.
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 for correct usage, including the exact source of storageId (from search_files/browse_folder/recent_files, not list_files), the need for bucketName, and confirm=true. It implicitly distinguishes from other file operations, though it does not explicitly list alternatives or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_fileDownload fileARead-only
Get a short-lived pre-signed download URL for a file. Requires the drive (bucketName). The URL is time-limited and grants read access to that one object β share it with care. Returns the URL; it does not load file bytes into the conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Object key (path) of the file to download, within the drive. | |
| storageId | No | Optional storage/index id. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. | |
| forceDownload | No | If true, the link forces an attachment download instead of inline view. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses that the URL is short-lived, grants read access to one object only, is time-limited, and returns the URL rather than the file bytes. This adds valuable behavioral context that the annotations do not cover.
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 two sentences, front-loaded with the primary action, and each sentence earns its place: the first states purpose and requirement, the second explains behavior and return value. 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 URL-returning tool, the description fully covers what it does, what it requires, what it returns, and the key behavioral nuance (does not load bytes). With readOnlyHint and detailed schema, no essential 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 input schema has 100% description coverage for all parameters, so the schema already explains filePath, storageId, bucketName, and forceDownload. The description adds no parameter-level meaning beyond stating that bucketName is required, which is already in the schema. Baseline 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 opens with a specific verb and resource: 'Get a short-lived pre-signed download URL for a file.' It clearly states the action and result, and distinguishes itself from siblings by noting it does not load file bytes into the conversation, differentiating from upload or content-fetching 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?
The description provides context (requires bucketName, URL is time-limited, share with care) but does not explicitly mention when to use this tool versus alternatives like share_link, nor does it state exclusion conditions beyond not loading bytes. The 'does not load file bytes' is more a behavioral fact than a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_fileDuplicate fileA
Create a copy of a file in the same location. Requires the drive (bucketName). (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| objectKey | Yes | Source object key to duplicate. | |
| storageId | No | Optional storage/index id. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate read/write and non-destructive nature. The description adds valuable context about server-side RBAC authorization and explains that a denial means missing scope, not a tool failure. However, it does not disclose naming conventions or behavior when a duplicate name exists.
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 two sentences, front-loaded with the core action, and includes only necessary context about requirements and authorization. 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?
The tool has no output schema, so the description should explain what the tool returns or what the copied file is named. It does not. While it covers purpose and auth behavior, the missing success-result info leaves a clear gap for a mutation 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 provides 100% parameter coverage, including descriptions for objectKey, storageId, and bucketName. The description only reiterates the bucketName requirement without adding new syntax or format details, so it stays at the baseline 3.
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 explicitly states 'Create a copy of a file in the same location', which is a specific verb+resource+location. It clearly distinguishes itself from siblings like move_file and rename_file by emphasizing same-location copying.
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 a clear prerequisite (requires bucketName) but provides no explicit guidance on when to use this tool versus alternatives like move_file or upload_file. Context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_metadataGet file metadataARead-only
Get detailed metadata for a single file or object (size, type, timestamps, storage class, and other attributes) by its object key. Requires the drive (bucketName).
| Name | Required | Description | Default |
|---|---|---|---|
| objectKey | Yes | Full object key (path) of the file within the drive. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a list of returned metadata fields (size, type, timestamps, storage class) beyond what annotations declare. However, the readOnlyHint and openWorldHint annotations already cover safety, and the description does not disclose potential error conditions (e.g., not-found behavior, permission requirements). It provides modest added context but not rich behavioral detail.
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 two sentences, tightly written, front-loaded with the primary action and clarifying scope. Every phrase earns its place without redundancy or fluff.
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 metadata tool with well-documented parameters and annotations, the description is sufficient. It lists key metadata attributes and the required context (bucketName). It slightly lacks behavioral expectations like error handling or return format, but the simplicity of the tool and rich schema make it adequately 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?
Schema description coverage is 100%, so the baseline is 3. The description adds the phrase 'by its object key' and 'Requires the drive', which loosely aligns with the schema, but it does not add new meaning beyond the already detailed schema descriptions for objectKey and bucketName. The schema carries the full parameter semantics.
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: 'Get detailed metadata for a single file or object' with specific attributes (size, type, timestamps, storage class). It distinguishes from siblings like get_file_tags (tags only) and list_files (multiple files), and the 'by its object key' qualifier clarifies the access method.
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 for when to use the tool: for a single file/object, requiring the object key and the drive (bucketName). It does not explicitly name alternatives or exclusions, but the 'single' scope and reference to the drive give enough guidance. The sibling tool names (e.g., list_files, search_files) are implicitly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_tagsGet file tagsARead-only
Get the S3 object tags (key/value pairs) attached to a file, by object key. Requires the drive (bucketName).
| Name | Required | Description | Default |
|---|---|---|---|
| objectKey | Yes | Full object key (path) of the file within the drive. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a read-safe operation and the output may depend on external factors. The description adds no further behavioral details beyond the purpose and the bucketName requirement; it does not mention error cases, empty results, or response format. With annotations covering safety, a neutral score is appropriate.
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 single, compact sentence that immediately states the action and the key requirement. There is no fluff or repetition; each phrase adds essential information. The structure is front-loaded and easy to parse.
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, the description covers the core purpose and a critical prerequisite. No output schema exists, but the description implies the return concept (tags). The annotations cover the safety profile, and the schema fully documents parameters. Minor missing details like what an empty tag set returns are non-essential for this 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 provides thorough descriptions for both parameters: objectKey defines the full path, and bucketName explains the drive naming and default behavior. The tool description only restates these concepts ('by object key', 'requires the drive'), adding no new meaning beyond the schema. Since schema coverage is 100%, the baseline of 3 is justified.
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: 'Get the S3 object tags (key/value pairs) attached to a file, by object key.' This is a specific verb (Get) and resource (S3 object tags), and the 'by object key' scope distinguishes it from the sibling get_file_metadata, which presumably retrieves broader metadata.
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: when you need to retrieve S3 object tags for a specific file identified by object key. It also notes the prerequisite of requiring the drive (bucketName), which helps the agent understand a necessary condition. It does not explicitly mention alternatives or exclusions, but the context is sufficient for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bucketsList drivesARead-only
List the drives registered to the authenticated CloudSee Drive account that the caller is allowed to see. Use this first to discover available drives before browsing or searching; the Name of a drive is the bucketName the other tools expect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint and openWorldHint, and the description adds meaningful context: results are filtered by caller permissions and the tool returns drive names used as identifiers elsewhere. This is useful behavioral detail beyond the annotation flags, though not exhaustive.
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 two sentences, front-loaded with the action, and every clause earns its place. It is both concise and well-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 simple list tool with no schema and strong annotations, the description provides sufficient context: what is listed, permission scoping, usage order, and a critical naming convention. No return schema is needed because the description explains the key output field.
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 does not need to explain parameters; it instead clarifies the output semantics (Name = bucketName), which is valuable for downstream tool usage.
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 'List' and identifies the resource as 'drives registered to the authenticated CloudSee Drive account that the caller is allowed to see,' clearly distinguishing it from sibling file-level tools like list_files and browse_folder.
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 instructs to use this tool first before browsing or searching, and explains that the returned 'Name' corresponds to the 'bucketName' expected by other tools. This provides direct guidance on when to use it and how it relates to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesList files in a driveARead-only
List the files in a drive straight from storage, recursively by default β the most reliable way to see what a drive actually contains. Requires the drive (bucketName). Returns names, sizes, storage classes and keys, with pagination. The object id in each result is regenerated on every call and must never be used for rename_file, move_file, update_metadata, or delete_files β use search_files, browse_folder, or recent_files for a stable StorageId instead.
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Recurse into sub-folders (default true). | |
| cursor | No | Opaque pagination cursor returned by a previous call. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, it discloses that object IDs are regenerated on every call and must not be used for certain operations, and describes recursion defaults and pagination. This adds essential behavioral context that annotations do not cover.
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 purpose, then parameter requirement, return values, and an important caveat about object ID stability. Each sentence carries critical information without redundancies, making it 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?
For a read-only listing tool with no output schema, the description covers return fields, pagination, recursion, bucket requirements, and a critical ID instability warning with explicit alternative tools. This is a thorough and self-contained context.
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 fully describes all three parameters (100% coverage), including defaults and required-conditions. The description mentions the bucket requirement and recursion default but adds no additional parameter-level detail, so baseline 3 applies.
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 lists files from storage, recursively by default, and explicitly distinguishes itself from siblings by noting it is 'the most reliable way to see what a drive actually contains' and by contrasting with search_files/browse_folder/recent_files for stable IDs.
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 clear usage context ('most reliable way to see what a drive actually contains') and gives explicit alternative tools for stable StorageId use. It lacks a broader 'when not to use' statement, but the guidance is specific enough for an agent to make a reasonable choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileMove or copy fileADestructive
Move (or copy, with asCopy=true) a file or folder to a new location, addressed by its exact object key plus its storage id (the StorageId field from search_files / browse_folder / recent_files β not from list_files). Queued: returns a RequestId and the operation completes in the background, typically under 2 minutes β verify by listing until the object appears at the destination. Requires the source drive (bucketName). A move removes the source and is destructive, so it requires confirm=true; a copy does not. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| asCopy | No | Copy instead of move (copy is non-destructive; the source is kept). | |
| confirm | No | Must be true to actually perform this mutating/irreversible action. If omitted or false, the tool returns a preview and makes no changes. | |
| isFolder | No | Set true for a folder. | |
| objectKey | Yes | Exact source object key as returned by a listing tool (folders keep their trailing slash). | |
| storageId | Yes | Storage/index id of the object β the StorageId field returned by the INDEXED listing tools (search_files, browse_folder, recent_files). NOTE: list_files reads straight from storage and returns a different id that will NOT work here. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. | |
| destinationPath | Yes | Destination folder prefix. | |
| destinationBucket | No | Target drive, if different from the source drive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing queued/asynchronous behavior (returns RequestId, completes in background, verify by listing), destructive nature of move vs copy, confirm requirement, RBAC authorization context, and that denials indicate scope issues. This adds rich operational context that annotations only hint at, fully informing the agent of side effects and 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 information-dense and front-loaded with the core function, then systematically covers addressing, async behavior, destructiveness, and auth. Every sentence earns its place, though it is slightly long and could be split into clearer paragraphs. Still, it avoids fluff and is well-organized.
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 8 parameters and no output schema, the description covers critical operational aspects: queued completion, verification method, destructive consequences, confirm flag semantics, and RBAC error interpretation. It also clarifies parameter sources and defaults, making the tool fully usable without external context. No significant gaps exist.
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 covers all parameters with descriptions (100% coverage), so baseline is 3. The description adds important semantic nuance beyond the schema: the storageId must come from search_files/browse_folder/recent_files and will NOT work from list_files, and confirm=true is required for actual execution while omitted/false yields a preview. These clarifications prevent misuse of parameters, elevating value above the schema alone.
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 explicitly states the tool moves (or copies) a file/folder to a new location, specifying the addressing method (exact object key + storage id). It clearly distinguishes move vs copy behavior and ties to sibling listing tools, leaving no ambiguity about the tool's primary function.
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 guidance on when to use (for move/copy operations) and critical prerequisites: requires confirm=true for destructive moves, correct storageId source, and bucketName. It implicitly differentiates from siblings by noting the storageId must come from indexed listing tools, not list_files, and explains queued background execution with verification instructions. Lacks explicit mention of alternative tools like duplicate_file or rename_file, so not a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_filesRecent filesARead-only
List the account's most recently accessed or modified files, newest first, with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (1-200, default 50). | |
| cursor | No | Opaque pagination cursor returned by a previous call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds useful ordering and pagination behavior, but doesn't go deeper into potential nuances like external modifications (covered by openWorldHint) or whether 'accessed' vs 'modified' is prioritized. No contradiction 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?
The description is a single, well-structured sentence that front-loads the action ('List'), resource ('files'), scope ('account's'), and key behavior (newest first, pagination). 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?
The tool is simple (list with pagination) and the description, combined with schema and annotations, is largely complete. However, with no output schema, the description doesn't hint at what fields are returned for each file, which could be useful but isn't strictly necessary for invoking 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 input schema provides complete descriptions for both limit and cursor, including default and constraints. The description only mentions 'pagination' generally, adding no semantic beyond the schema. Baseline 3 is appropriate given 100% 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 lists the account's most recently accessed or modified files, with a specific ordering (newest first) and pagination. This distinctly separates it from siblings like search_files (query-based) or browse_folder (navigational).
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 implies the appropriate context: when an agent needs recently accessed/modified files. It doesn't explicitly name alternatives or exclusions, but the distinct purpose (recently vs. by search or folder) provides clear enough guidance for a straightforward list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_fileRename file or folderADestructive
Rename a file or folder in a drive, addressed by its exact object key plus its storage id (the StorageId field from search_files / browse_folder / recent_files β not from list_files). Queued: returns a RequestId and the rename completes in the background, typically under 2 minutes β verify by listing until the new name appears. Requires the drive (bucketName). Destructive (changes the object's key). Requires confirm=true. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to actually perform this mutating/irreversible action. If omitted or false, the tool returns a preview and makes no changes. | |
| newName | Yes | New name. | |
| isFolder | No | Set true when renaming a folder. | |
| objectKey | Yes | Exact object key of the file or folder as returned by a listing tool (folders keep their trailing slash). | |
| storageId | Yes | Storage/index id of the object β the StorageId field returned by the INDEXED listing tools (search_files, browse_folder, recent_files). NOTE: list_files reads straight from storage and returns a different id that will NOT work here. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses queued behavior (returns RequestId, completes in background under 2 minutes), the need for confirm=true, and the RBAC/authorization nuance (denial means scope issue, not tool failure). This adds significant behavioral context that the annotations alone do not 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 four sentences and front-loads the core purpose. Each sentence adds meaningful information (addressing, queueing, destructiveness, auth). It is slightly dense and repeats the storageId caution that already exists in the schema, but overall it is efficient and well-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 mutating tool with no output schema, the description covers key aspects: how to address the object, queued async behavior, verification strategy, confirmation requirement, and auth context. It does not describe the preview return when confirm=false or error scenarios, but these are partially inferable from the schema and annotations. The description is sufficiently complete for 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?
Schema coverage is 100%, so the baseline is 3. The description reinforces the storageId distinction (from indexed tools, not list_files) and mentions required fields, but most parameter-level meaning is already present in the schema descriptions. The addition of queued behavior and confirm semantics is more behavioral than parameter-specific, so no strong uplift beyond baseline.
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 'Rename a file or folder in a drive' with a specific verb and resource, and immediately clarifies the addressing scheme (exact object key plus storage id). It distinguishes from sibling tools like move_file and duplicate_file by focusing on key renaming, and explicitly notes the storage id source differs from list_files, eliminating ambiguity.
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 when-to-use context: it explains the storage id must come from indexed listing tools, not list_files, and says to verify by listing until the new name appears. It also states prerequisites (drive/bucketName) and the confirm requirement. However, it does not explicitly contrast with alternatives like move_file or duplicate_file, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_archived_fileRestore archived fileADestructive
Begin restoring an archived (S3 Glacier) object so it can be downloaded. Requires the drive (bucketName). This is Glacier un-archiving β NOT recovery of a deleted file β and may incur retrieval cost and take minutes to hours. Requires confirm=true. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days to keep the restored copy available. | |
| confirm | No | Must be true to actually perform this mutating/irreversible action. If omitted or false, the tool returns a preview and makes no changes. | |
| objectKey | Yes | Object key of the archived (Glacier) object to restore. | |
| storageId | No | Optional storage/index id. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. | |
| retrievalTier | No | Glacier retrieval tier (default Standard). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as destructive and non-read-only, but the description adds critical context: confirm=true is required, the operation incurs retrieval cost, may take minutes to hours, and RBAC denials are scope errors rather than tool failures. It also clarifies this is Glacier un-archiving, not file recovery. No contradiction 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?
The description is four sentences, front-loaded with action and resource. Each sentence earns its place: action, prerequisite, clarification/cost/time, and confirmation/auth behavior. There is no filler or redundant restating of the title or schema.
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?
The description covers prerequisites, side effects, cost, latency, auth behavior, and the mutating nature requiring confirmation. The only gap is that with no output schema, it does not mention what the tool returns (e.g., job status or async tracking), which would be useful for an operation that takes minutes to hours. Overall, it is quite complete for selection and 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?
The input schema already covers all six parameters with 100% description coverage, so the baseline is 3. The description adds value by emphasizing the bucketName prerequisite and the confirm=true gate, reinforcing critical parameters beyond their schema descriptions. It does not redundantly restate each parameter, making it useful emphasis rather than repetition.
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 and resource: 'Begin restoring an archived (S3 Glacier) object so it can be downloaded.' It further distinguishes itself with 'NOT recovery of a deleted file,' clearly separating it from deletion/recovery tools. The purpose is unambiguous and distinct from sibling tools like download_file or delete_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 describes when to use: to restore an archived object for download. Provides exclusions ('NOT recovery of a deleted file'), states required prerequisites (bucketName, confirm=true), and warns of cost/time implications. This gives clear decision-making guidance beyond simply naming the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesSearch filesARead-only
Search for files and folders by name keyword within a drive (the indexed view). Requires the drive (bucketName). Returns matches with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder within the drive to search under. Empty = drive root. | |
| query | Yes | Keyword to match against file and folder names. | |
| cursor | No | Opaque pagination cursor returned by a previous call. | |
| pageSize | No | Max items per page (1-200, default 50). | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint/openWorldHint annotations by clarifying that the search operates on 'the indexed view' (implying results may not be a real-time filesystem scan) and that pagination is used. It does not contradict annotations and provides useful information about scope and output style.
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 short sentences with no redundancy or filler. The first sentence gives the core purpose, the second states a key dependency, and the third notes pagination. Every sentence carries information, and it is well 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 search tool with no output schema, the description covers the core function, the indexed nature, the requirement on bucketName, and pagination. It does not specify the exact structure of matches, but the tool is not complex enough to demand more; the gaps are minor given the schema richness.
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 all parameters are already documented with descriptions. The text reinforces that bucketName is required and indicates the search is name-based, but it does not add meaningfully to the schema descriptions (e.g., no examples, no default behavior beyond what's stated). Meets the baseline for high 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 immediately states the tool's verb ('Search'), target resource ('files and folders'), and scope ('within a drive (the indexed view)'), with a distinctive qualifier that separates it from sibling tools like list_files or browse_folder. It also explicitly notes the pagination behavior, making the core function unmistakable.
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 implies when to use the tool (searching by name keyword) and notes a prerequisite (requires bucketName), but it does not explicitly contrast it with alternatives such as list_files or browse_folder. There is no 'use this instead of X' guidance, so it stays at implied usage rather than explicit recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_metadataUpdate file metadataADestructive
Update a file's metadata (category / description / project) and tags in a drive, addressed by its storage id (the StorageId field from search_files / browse_folder / recent_files β not from list_files). Destructive: this SETS the full state β omitted metadata fields and omitted tags are cleared. Requires the drive (bucketName) and confirm=true. Note: the update rewrites the object in place (S3 copy) β its ETag changes (and may change format) and LastModified is set to the update time; ETag-keyed caches and sync tools will see the object as new. Objects larger than 5 GiB are updated via multipart copy. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | The COMPLETE desired tag set for the object. Existing tags are replaced; omitting this clears all tags. | |
| confirm | No | Must be true to actually perform this mutating/irreversible action. If omitted or false, the tool returns a preview and makes no changes. | |
| metadata | No | Metadata to set. Full overwrite: a field left out here is CLEARED on the object. | |
| storageId | Yes | Storage/index id of the object β the StorageId field returned by the INDEXED listing tools (search_files, browse_folder, recent_files). NOTE: list_files reads straight from storage and returns a different id that will NOT work here. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing full-state overwrite semantics (omitted fields are cleared), the in-place S3 copy rewriting the object, ETag and LastModified changes, multipart copy for >5 GiB objects, and RBAC denial meaning scope rather than failure. This is exceptional behavioral transparency.
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 conveys a distinct, operational fact: the resource and id source, destructive overwrite behavior, required confirm/bucket, ETag/LastModified side effects, large-object multipart handling, and RBAC error interpretation. No filler or repetition; the most important destructive warning 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 complex mutating tool with 5 parameters and nested objects, the description covers all key caller needs: correct id, required bucket, confirm guardrail, full-overwrite semantics, side effects relevant to caches and sync, large-object limitation, and auth error interpretation. No output schema exists, but return values are not critical for correctness here because the preview/commit behavior is already documented in the 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?
Schema coverage is 100%, so description-level parameter help is less critical. The description still adds value by explicitly stating that omitted metadata fields and omitted tags are cleared and that bucketName plus confirm=true are required. It reinforces the destructive full-overwrite semantics and the storageId source, complementing the schema definitions.
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 operation: updating a file's metadata (category / description / project) and tags. It also specifies the exact identifier to use (storageId from indexed listing tools) and distinguishes this from list_files, which returns an incompatible id. This makes the tool easy to select and differentiate from 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?
The description gives important context about which id source to use and requires confirm=true and bucketName. It does not explicitly name alternative tools for reading metadata or for other file operations, but the id-source note effectively prevents misuse with list_files and provides enough situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload fileA
Upload a file into a folder of a drive. The file is read from the machine running this server β which, over this connection, is your own machine β so pass its path. Requires the drive (bucketName). Files up to 8 MiB are sent in one piece; larger ones are split into parts automatically. If the name is already taken, a timestamped name is used instead, so an existing file is never overwritten. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | No | Name to store the file as. Defaults to the local file's name. | |
| localPath | Yes | Path to the file to upload, on the machine running this server. Copy the name exactly β invisible characters in a file name are a common cause of 'not found'. | |
| bucketName | No | The CloudSee drive (S3 bucket) name to operate in, e.g. 'max-2778abc0' β find it in the CloudSee dashboard. Required unless CLOUDSEE_DEFAULT_BUCKET is configured on the server. | |
| storageClass | No | Optional S3 storage class (e.g. STANDARD, INTELLIGENT_TIERING). | |
| destinationFolder | No | Destination folder/prefix in the drive. Omit or empty = drive root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior beyond annotations: files are read from the local machine, files up to 8 MiB are sent in one piece while larger ones are split, existing files are never overwritten because a timestamped name is used, and auth failures indicate an API key scope problem rather than a tool malfunction. This is exactly the kind of behavioral detail an agent needs.
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 dense but every sentence earns its place: scope, source location, size handling, collision behavior, and auth semantics are all covered without redundancy. The main action 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 tool with five parameters and no output schema, the description covers the important operational details: path semantics, bucket requirement, size thresholds, collision policy, and auth failure interpretation. It does not explain what the tool returns or how an agent would track an upload via the sibling upload_status tool, which is a minor gap.
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 extra value beyond the schema by explaining that localPath refers to the server's machine and cautioning about invisible characters, by telling users where to find bucketName in the CloudSee dashboard, and by noting that fileName defaults to the local file's name. This goes beyond simple schema repetition.
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 and resource: 'Upload a file into a folder of a drive.' It clearly differentiates this from the sibling tools by focusing on the act of uploading a local file to a drive, while leaving listing, downloading, and metadata operations to those other 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?
It gives clear practical context: the file must be read from the machine running the server, the bucketName is required unless a default is configured, and file size determines multi-part behavior. However, it does not explicitly name alternatives such as upload_status or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_statusCheck a background uploadARead-only
Report progress on an upload started by 'upload_file' that was too large to finish inside one tool call. Give it the id upload_file returned, or omit the id to list every tracked upload. States are running, completed and failed; a file is only in the drive once its upload reports completed. This reads progress held in this server process and makes no API call, so it is safe to poll. (Write access is authorized server-side by the public API's RBAC β a denial means the API key lacks this tool's scope, not a tool failure.)
| Name | Required | Description | Default |
|---|---|---|---|
| uploadId | No | The id returned by upload_file. Omit to list every upload this server has tracked, newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that the tool reads progress held in the server process and makes no API call, making it safe to poll. It also explains that RBAC denials reflect API key scope, not tool failure, which prevents misinterpretation of errors.
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 tightly-packed sentences cover purpose, input, behavior, state semantics, safety, and error interpretation. Every sentence contributes meaningful information, and the most important usage guidance appears at the beginning.
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, the description partially compensates by enumerating the possible states and their meaning. It does not specify the exact response shape or whether progress percentages, timestamps, or other details are returned, but for a simple status-checking tool with one optional parameter, the provided context is nearly sufficient.
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 fully documents uploadId, including the instruction to omit it to list all tracked uploads. The description essentially restates the schema's parameter guidance, adding no substantially new semantics, so the baseline of 3 applies.
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 purpose: report progress on an upload started by 'upload_file' that was too large to finish in one call. This distinguishes it from the many file-list and metadata siblings, and the title reinforces the same function without being the sole source of meaning.
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 explicitly tells the agent when to use the tool, what input to provide (the uploadId returned by upload_file), and what happens if omitted (list every tracked upload). It also gives the key behavioral rule: a file is only in the drive once its upload reports completed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v2.0.2- Changed
upload_file4 fields changed- removed
Input schema / properties / contentTypeRemoved value: -{ - "description": "MIME type. Defaults to application/octet-stream.", - "type": "string" -} - changed
Input schema / properties / destinationFolder / descriptionPrevious value: -"Destination folder/prefix in the drive. Empty = drive root."New value: +"Destination folder/prefix in the drive. Omit or empty = drive root." - changed
Input schema / properties / localPath / descriptionPrevious value: -"Path to the local file to upload (absolute, or relative to the server's working directory)."New value: +"Path to the file to upload, on the machine running this server. Copy the name exactly β invisible characters in a file name are a common cause of 'not found'." - changed
Input schema / requiredPrevious value: -[ - "localPath", - "destinationFolder" -]New value: +[ + "localPath" +]
- Added
upload_status
17 tool updates
v1.0.0- First observed
browse_folder - First observed
create_folder - First observed
delete_files - First observed
download_file - First observed
duplicate_file - First observed
get_file_metadata - First observed
get_file_tags - First observed
list_buckets - First observed
list_files - First observed
move_file - First observed
recent_files - First observed
rename_file - First observed
restore_archived_file - First observed
search_files - First observed
share_link - First observed
update_metadata - First observed
upload_file
TDQS
Most tools have clearly distinct purposes and are well-described. Minor overlaps exist between download_file/share_link (both create pre-signed URLs) and get_file_metadata/get_file_tags (both deal with object attributes), but the descriptions differentiate their specific uses.
The majority of tools follow a consistent verb_noun snake_case pattern (e.g., search_files, list_buckets, delete_files). The only deviation is 'recent_files', which uses an adjective instead of a verb, but this is a minor inconsistency that does not impede readability.
17 tools is slightly above the ideal 3-15 range but still appropriate for a full-featured drive API that covers browsing, searching, uploading, downloading, metadata management, and archive operations. Each tool addresses a distinct need, so the count feels justified rather than excessive.
The toolset provides comprehensive coverage of core drive operations, including CRUD for files/folders, metadata and tag management, sharing, and archive restoration. The most notable gap is the absence of a tool to update file content (overwrite), but this is not a common requirement for a drive MCP server and can be worked around via upload_file.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give Claude only the Google Drive files you choose. Every action logged.
Search, browse, and read your Dropbox files. Find documents by name or content, list folders, andβ¦
Manage files and folders directly from your workspace. Read and write files, list directories, creβ¦
Securely search and manage workspace context files for AI agents and teams.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Google Drive file operations (search, read, create, download, etc.) through natural language, compatible with Claude.ai's Drive connector.182MIT
- AlicenseAqualityDmaintenanceEnables browsing S3 buckets and objects, and generating secure presigned URLs for downloads and uploads, through natural language commands in MCP clients like Claude Desktop.3133MIT
- AlicenseAqualityCmaintenanceEnables advanced file system operations such as file read/write, directory management, search, archiving, and file watching through natural language.16192MIT
- AlicenseNot gradedqualityDmaintenanceEnables management of Google Drive files, Docs, Sheets, and Slides through natural language using MCP, with support for file operations, search, and shared drives.20MIT
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/webapper-services/cloudsee-drive-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server