Skip to main content
Glama

Send file

send_file

Save a text file to the user's phone Downloads folder. Use this when the user asks you to write something out for them to keep on their phone — notes, a generated report, code, a log — rather than just replying inline. The file is delivered via Reflecto's servers: the content briefly passes through Reflecto in plaintext before being encrypted to the phone (this is NOT end-to-end encrypted, unlike device-to-device mirroring). Content is capped around 128KB — well under what a person would call a large file, since the whole file must be sent as this call's argument.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contentYesUTF-8 text content of the file. Non-empty, at most 128KB (server-enforced) — the practical ceiling is far lower, since this tool call must carry the whole file as an argument.
filenameYesDestination filename, written into the phone's Downloads folder. Must end in an allowed plain-text/code extension (server-enforced) — never .html/.svg, which render and execute if tapped.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
byte_lengthYesUTF-8 byte length of the content that was sent.
document_idYesServer-minted document id.

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: content passes through Reflecto's servers, is NOT end-to-end encrypted, and has a practical size ceiling because the whole file must be sent as the call's argument. It also warns that .html/.svg files are disallowed because they can render or execute when tapped. This far exceeds what the annotations alone reveal.

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?

Every sentence earns its place: purpose, usage context, privacy/security behavior, and size constraint. The information is front-loaded and each clause adds new, operationally relevant detail without padding or tautology.

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

Completeness5/5

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

Given annotations, a rich input schema, and an output schema, the description is complete for an agent to decide when and how to invoke the tool. It covers the core action, the user-facing use case, transport/privacy caveats, file size limits, and filename restrictions. Nothing essential for correct invocation is missing.

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 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining the delivery mechanism, the practical size ceiling for the content argument, and the security implications of the filename destination. This is valuable reinforcement rather than mere repetition.

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: 'Save a text file to the user's phone Downloads folder.' It also clarifies the intended use case with concrete examples (notes, reports, code, logs) and contrasts it with 'replying inline,' making the tool's role clear even among siblings.

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 explicitly says when to use this tool: 'when the user asks you to write something out for them to keep on their phone.' It also gives a when-not signal via the 128KB cap ('well under what a person would call a large file'). It stops short of naming a specific alternative sibling, so it misses the highest bar for explicit alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose: reminders (remind_me/cancel_reminder), approvals (request_approval/check_reply), notifications (send_notification), files (send_file), device info (list_devices), shared items (get_shared_items), and phone locating (find_my_phone). No two tools overlap in action or resource.

Naming Consistency5/5

All nine tools follow a consistent snake_case verb_noun pattern, e.g., cancel_reminder, send_notification, list_devices. There are no deviations or mixed conventions.

Tool Count5/5

Nine tools is well-scoped for a phone-communication server. Each tool addresses a distinct functional need without redundancy or bloat, making the set feel purposeful and easy to navigate.

Completeness5/5

The surface covers the essential lifecycle for its domain: scheduling and canceling reminders, requesting and polling approvals, sending notifications and files, reading user-shared items, listing devices, and locating the phone. No obvious gaps or dead ends exist.

Resources