Skip to main content
Glama

ugreen_upload_file

Destructive

Upload a local file to a specified absolute path on a UGREEN NAS, with conflict handling, optional SHA-256 verification, and dry-run preview.

Instructions

把一个本地普通文件上传到指定 NAS 绝对路径。remote_path 以 / 结尾时沿用本地文件名;默认同名自动改名,replace 会覆盖。verify 核对 SHA-256;dry_run 仅预演,不上传内容。仅操作用户指定的对象;写操作失败后先查询当前状态,不自动重试。权限由绿联令牌与 NAS 账户决定。

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "local_path": "<local_path>",
      "remote_path": "<remote_path>"
    },
    "name": "ugreen_upload_file"
  }
}

Input Schema

NameRequiredDescriptionDefault
verifyNo
dry_runNo
local_pathYes
on_conflictNorename
remote_pathYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.2.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=false, and the description goes meaningfully beyond them: it pinpoints exactly what destruction means (replace overwrites, rename is the default), explains that dry_run transfers no bytes, declares permission dependency on the Ugreen token plus NAS account, and prescribes a failure-recovery sequence (query current state first, do not auto-retry). Return values, size limits, and partial-transfer behavior are still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six tight clauses, each carrying distinct information: destination semantics, conflict policy, integrity check, preview mode, permission scope, and failure protocol. The destination path rule is front-loaded and nothing is redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world write tool with five parameters at 0% schema coverage and no output schema, the description covers most of what an agent needs to call it safely. Remaining gaps are the 'skip' conflict mode, local_path details, and any hint about what a successful call returns, which the absence of an output schema makes slightly more costly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, and it largely does: it explains remote_path trailing-slash semantics (inherit local filename), the on_conflict default and what replace does, and the effect of verify and dry_run. The enum value 'skip' is never mentioned and local_path gets no explicit treatment beyond being the local file, leaving one and a half of five parameters underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: upload a *local* ordinary file to a specified NAS absolute path. The word 本地 ('local') implicitly distinguishes it from NAS-to-NAS siblings such as ugreen_copy_file and ugreen_move_file, and from ugreen_create_file/ugreen_write_file which create rather than upload. It stops short of naming any sibling explicitly, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Guidance is embedded rather than framed as when-to-use: dry_run is for preview without transferring, verify is for SHA-256 checking, and the default conflict policy is rename with replace as opt-in. It gives an operational policy (only touch user-specified objects, never auto-retry after a failed write) but never says when to pick a sibling like copy_file instead, nor 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.