Skip to main content
Glama

Request a File From the User

request_user_upload

Show the user an inline upload card so they can hand you a file from their device (image/font/audio/…) — it lands in the project's hosted assets and the card gives you the hosted publicUrl. This is the path for any file the user has: an image they attached in this chat (attachments never reach MCP servers — you see them through vision only, so the user re-picks the same file here), a file on their machine, or a user-provided file you hold but can't upload yourself (over the 3 MB inline cap with no S3 egress — the card uploads from their browser, which is never egress-blocked). Returns a jobId — poll get_job_status; it stays running until they upload, then returns the publicUrl to reference in code. When you show the card, tell the user in a sentence why you're asking — e.g. that you can see their image but the file itself doesn't reach Floot, so re-adding it here is a one-click step — and ask them to say "uploaded" when done in case your polling ends before they finish. For files you hold yourself, use upload_asset; for AI-generated imagery, use generate_image.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectIdYes
descriptionNoShown in the card — what you're asking for, e.g. "the logo image you attached".

TDQS

A4.7/5.0
Behavior5/5

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

Annotations are minimal (readOnlyHint, destructiveHint), but the description discloses extensive behavior: it returns a jobId, requires polling get_job_status, stays running until upload, and returns a publicUrl. It also explains technical constraints like the 3 MB inline cap and that browser uploads are never egress-blocked. This fully compensates for the sparse annotations and adds no contradiction.

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?

Despite its length, the description is tightly structured: it front-loads the core action, then systematically covers use cases, return behavior, user interaction guidance, and alternatives. Every sentence carries necessary information—there is no fluff. The density is justified by the interactive complexity of the tool.

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 the tool's interactive nature and lack of an output schema, the description covers all necessary context: return contract (jobId + publicUrl via polling), failure modes (3MB cap, egress), and user-communication requirements. It even addresses edge cases like attachments not reaching MCP servers. No information an agent needs to invoke and use this tool correctly is missing.

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

Parameters3/5

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

Schema coverage is 50%: only the 'description' parameter has a description, while 'projectId' has none. The tool description does not explicitly explain projectId's purpose or format beyond its name, relying on self-evident naming. It does provide guidance on crafting the description parameter (e.g., 'tell the user in a sentence why you're asking'), but it doesn't fully compensate for the missing projectId documentation. The marginal value is adequate, not exceptional.

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 clearly states the tool shows an inline upload card to obtain a file from the user, which lands in hosted assets and returns a publicUrl. It distinguishes itself from siblings by explicitly naming the alternative paths: 'For files you hold yourself, use upload_asset; for AI-generated imagery, use generate_image.' This makes the purpose and differentiation crystal clear.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance, enumerating three scenarios (attached images, local files, user-provided files that can't egress) and explicitly exclusions for upload_asset and generate_image. It also instructs the agent to explain to the user why the file is needed and to ask them to confirm completion. This is a model of usage clarity.

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

A3.6/5.0
Disambiguation4/5

Tools are mostly distinct, but there is some overlap among file-modifying tools (edit_file, write_file, apply_patch) and between run_code_in_vm and run_code_in_browser. Detailed descriptions and clearly scoped use cases help agents select correctly.

Naming Consistency4/5

Most tools follow a verb_noun snake_case pattern (create_project, list_files, execute_sql), but a few deviate (apply_patch, card_upload_asset, run_code_in_vm). Overall readable and predictable, with only minor inconsistencies.

Tool Count2/5

With 46 tools, the server exceeds the typical well-scoped range and approaches the extreme threshold. While the broad scope of a full development platform justifies many tools, this count may overwhelm agents and increase misselection risk.

Completeness4/5

The tool surface covers the full development lifecycle: project creation, file operations, database management, resource provisioning, deployment, testing, and debugging. Minor gaps exist (e.g., no delete_project or checkpoint management), but core workflows are well-supported.

Resources