Skip to main content
Glama

upload_files

Destructive

Set files on a file input by CSS selector or intent, validating paths within the file root. Replaces current selection and returns status for review or blocking.

Instructions

Set files on a file input, chosen by a CSS selector or by an intent Jev resolves. With an intent and several file inputs, the choice goes through the gate first. Every path must exist and sit inside --file-root (default: the working directory; set it explicitly if the server runs from / or $HOME); the call replaces the input's current selection. Returns {files, status, reason, target, executed} — status "review" or "blocked" means nothing was set.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathsYes
intentNo
selectorNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation is known. The description adds valuable context: it replaces the input's current selection, requires paths to exist and sit inside --file-root, and explains that status 'review' or 'blocked' means nothing was set. This goes beyond the annotations.

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?

The description is compact and front-loaded with the core action. It packs a lot of behavioral detail into a few sentences. The return format is listed at the end, which is useful. Slightly dense but every sentence earns its place.

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?

Given the output schema exists, the description doesn't need to explain return values in depth, but it does list the return fields. The tool has 3 params, 1 required, and the description covers the key semantics. The gate behavior and file-root constraint are important context that is included. Minor gaps: no mention of what happens when selector matches multiple inputs, or how intent resolution works in detail.

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 compensate. It explains 'paths' (must exist, inside --file-root), 'intent' (resolved by Jev, goes through gate), and 'selector' (CSS selector). It doesn't detail the exact format of paths or how intent resolution works, but it adds meaning beyond the bare schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'Set files on a file input, chosen by a CSS selector or by an intent.' It clearly distinguishes the two selection mechanisms and explains the gate behavior for intents. This is specific enough to differentiate from siblings like fill_form or drag.

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

Usage Guidelines4/5

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

The description explains when to use this tool: to set files on a file input, with a selector or intent. It doesn't explicitly name alternatives or exclusions, but the context of file inputs is clear. The gate behavior for intents is a useful usage detail, though it doesn't say when NOT to use it.

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