Skip to main content
Glama

sftp_transfer

Transfers files between a preset SSH host and the local machine. Use get to download or put to upload; remote paths must match allowed prefixes and local paths stay under $HOME or /tmp.

Instructions

Transfer a file between the preset's SSH host and the local machine. direction must be "get" (download) or "put" (upload). The remote path must match the preset's sftp_allowed_paths prefixes; the local path must be under $HOME or /tmp. Always key-based auth, host-key verified. If the user previously approved a time-boxed window for this preset+action, the call proceeds without a new prompt and is recorded as 'windowed' in the audit log.

Input Schema

NameRequiredDescriptionDefault
localYes
remoteYes
directionYes"get" (download) or "put" (upload).
preset_nameYes

Output Schema

NameRequiredDescriptionDefault
bytesYes
localYes
remoteYes
directionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses always-on key-based auth, host-key verification, path sandboxing, and the approval/audit behavior where a pre-approved window lets the call proceed without a prompt and be logged as 'windowed'. It omits what happens to an existing local file (overwrite/abort) and any size limits, which keeps it from a 5.

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

Conciseness4/5

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

Four sentences, front-loaded with the core action, then constraints, then auth, then approval behavior — a sensible information order. The direction sentence duplicates the schema's own enum wording, which is mild waste.

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?

An output schema exists, so return values need not be explained, and the description covers the security-relevant behavior an agent needs before calling: auth model, path sandbox, and the no-prompt audit-window case. Destination overwrite semantics and error behavior on path rejection are the main gaps.

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

Parameters4/5

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

Schema coverage is only 25% (only direction is documented in the schema, and the description merely restates it), so the description must compensate — and it does, supplying the constraint semantics for remote (sftp_allowed_paths prefixes) and local ($HOME or /tmp) that the schema lacks entirely. Only preset_name is left implicit.

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?

Opens with a specific verb and resource: 'Transfer a file between the preset's SSH host and the local machine.' An agent immediately knows this is file movement, distinct from ssh_exec (command execution) or db_query. It stops short of naming a sibling to contrast with explicitly, so it stays at 4.

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?

Gives concrete hard constraints on when a call is valid: direction must be get or put, remote must match the preset's sftp_allowed_paths prefixes, local must be under $HOME or /tmp. It never says when to prefer this over ssh_exec or what to do if a path is rejected, so usage context is implied rather than stated.

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