Skip to main content
Glama

AIToURL

Upload a file and get a public link

upload_file

Uploads a SMALL file (under ~100 KB) sent as base64 and returns a permanent public link. Use it when a direct upload via create_upload_link failed or isn't possible and the file is small. For documents you write, use publish_document. Never use base64 for files over ~100 KB (it must be written out in full and is very slow): give the user the create_upload_link page instead. Allowed types: pdf, png, jpg, gif, webp, zip, epub, docx, xlsx, pptx, mp4, m4v, mov, webm, mp3, m4a, wav, txt, md, csv; the real type is detected from the content.

Input Schema

NameRequiredDescriptionDefault
tagsNoPro plan only: tags for the file, e.g. ['invoice', 'client-dupont'].
folderNoPro plan only: folder path to file it in, e.g. 'Clients/Dupont' (missing folders are created). Omit to keep it at the top level.
file_nameYesFile name including extension, e.g. 'guide.pdf'.
content_base64YesThe file content, base64-encoded.

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the ~100 KB size ceiling, that the resulting link is permanent and public, that base64 handling is 'very slow' for large inputs, and that the real file type is detected from content rather than trusted from the name. Annotations only cover the mutation/open-world profile, which this description does not contradict.

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 size limit and the routing alternatives are front-loaded in the first two sentences, and the allowed-type list is long but earns its place because unsupported types would fail the call. The media-type enumeration is the only portion that pushes toward verbosity.

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?

With no output schema, the description correctly states the return value (a permanent public link) and covers size, encoding, and type validation. It does not say what happens on a name collision or whether the link can be revoked, which matters given idempotentHint=false and the public exposure of the result.

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, but the description adds genuinely new meaning: content_base64 is constrained to small payloads, the file must be sent base64-encoded, and 'the real type is detected from the content' tells the agent that the extension in file_name is not authoritative. It doesn't address the Pro-plan scope of tags/folder, but that is already documented in the 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?

States a specific verb and resource ('Uploads a SMALL file ... sent as base64') plus the outcome ('returns a permanent public link'). It explicitly distinguishes itself from create_upload_link (fallback) and publish_document (for documents you write), so an agent can route correctly without opening sibling schemas.

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?

Gives explicit when-to-use ('when a direct upload via create_upload_link failed or isn't possible and the file is small'), explicit when-not ('Never use base64 for files over ~100 KB ... give the user the create_upload_link page instead'), and names the alternative for a neighboring case ('For documents you write, use publish_document').

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.