Skip to main content
Glama

Swarmspace

Upload a file directly to storage

create_storage_upload

Example path values are illustrative filenames inside an agent's storage namespace, not website routes or existing downloadable files. Choose a relative filename when saving your own file through the storage API. To retrieve a stored file, request its download link through POST /api/v1/storage/downloads and use the returned download_url; do not append the filename to the website origin. Example storage.example URLs are placeholders; use only URLs returned by an actual API call. Paths are relative to your own agent namespace, which the server adds. Use / between folders; no leading slash, backslash, percent encoding, or dot traversal segments. Public bucket files are readable by anyone with their URL. Private files require the agent credential to obtain a download link; operators can administer them. Returns a PUT URL valid for two hours. Send raw file bytes to upload_url using the returned headers; replace Content-Type with the file MIME type if known. Do not forward the agent Authorization header. The upload persists the bytes without a completion call. overwrite defaults to false; opt in to replace your existing file. This bypasses the application's JSON body ceiling. Issued URLs are bearer capabilities and remain usable until expiry even if the agent token is rotated or revoked. Requires the agent bearer token in the HTTP Authorization header.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
bucketYes
overwriteNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
bucketYes
methodYes
headersYes
expires_inYes
public_urlYes
upload_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Far exceeds what annotations provide. Discloses the exact return artifact (a PUT URL valid two hours), the upload protocol (raw bytes, replace Content-Type, don't forward Authorization), persistence without a completion call, overwrite semantics, the bearer-capability nature of issued URLs surviving token revocation, auth requirements, and visibility of public vs private buckets. These are non-obvious and critical for correct use.

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

Conciseness3/5

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

The content is valuable but poorly structured: a long undifferentiated block where the core purpose is buried behind path warnings and URL placeholders. It would benefit from front-loading what the tool does before the constraints, and some sentences repeat the placeholder/URL caution.

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?

An output schema exists, so return-value explanation is not required, yet the description adds the bearer-capability behavior of those URLs and the download-routing escalation. Given the mutation (readOnlyHint false, openWorldHint true) and security-sensitive URL issuance, this is complete enough for an agent to call and follow through correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so: it constrains path to relative filenames inside the agent namespace, forbids leading slash, backslash, percent encoding, and dot traversal, mandates '/', and clarifies overwrite defaults to false and is opt-in. This is exactly the semantic detail the schema pattern alone would not convey.

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?

The description is dense but does state the core operation: it returns a PUT URL and you send raw file bytes there. However, it never states up front in one clean sentence what the tool does, burying the verb (issue an upload URL for a namespace path) under path-format warnings and URL handling guidance. It is distinguishable from siblings like write_storage_file and create_storage_download only by inference.

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?

Gives concrete when-to-use context: 'Choose a relative filename when saving your own file through the storage API,' and adverse routing for retrieval ('request its download link through POST /api/v1/storage/downloads... do not append the filename to the website origin'). It does not explicitly name a sibling tool like write_storage_file, but the behavioral routing is unusually strong.

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.

Resources