Skip to main content
Glama

Start an upload

create_upload

Reserve an upload and get a presigned URL to PUT the bytes to. Send the returned upload_headers on that PUT exactly as given — they are signed into the URL, and a missing one is a 403, not a network failure. Follow with complete_upload once the PUT succeeds. Limits: images and audio up to 50 MB, video up to 250 MB. If this client cannot make an HTTP request of its own, or the PUT is refused, use request_upload_link (or import_media for a file at a URL).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "filename": "<filename>",
      "mime_type": "<mime_type>",
      "bytes": "<bytes>"
    },
    "name": "create_upload"
  }
}

Input Schema

NameRequiredDescriptionDefault
bytesYes
filenameYes
mime_typeYes
checksum_sha256No

Output Schema

NameRequiredDescriptionDefault
messageYes
upload_idYes
expires_atYes
upload_urlYes
upload_headersYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

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 (which only say this is a non-destructive, non-idempotent write). It discloses that upload_headers are signed into the URL, that a missing header surfaces as a 403 rather than a network error, and that limits are 50 MB for images/audio and 250 MB for video. These are exactly the operationally decisive failure modes an agent cannot infer from structured data.

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?

Front-loads the core action, then the critical header caveat, then the follow-up step, then limits, then fallbacks. Every sentence carries distinct operational information and there is no restatement of the name or title.

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?

Return shape is partly covered by the output schema, and the description still names the key returned artifact (upload_headers) and its required usage. For a four-parameter write tool in a two-step flow, the description supplies the sequencing, constraints, and failure routing an agent needs to complete the operation correctly.

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 0%, so the description carries the burden, and it only partially compensates: the size limits constrain the meaning of `bytes` by media type, but filename, mime_type, and especially the optional checksum_sha256 are never mentioned. The omission of checksum_sha256 is the notable gap, since an agent has no hint from either schema or description about when to supply it.

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: reserve an upload and return a presigned URL for a PUT. It also implicitly distinguishes itself from complete_upload, request_upload_link, and import_media by describing the two-step flow it starts, so an agent can pick it apart from siblings without opening a schema.

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 sequencing ('Follow with complete_upload once the PUT succeeds') and explicit exclusions with named alternatives ('If this client cannot make an HTTP request of its own, or the PUT is refused, use request_upload_link (or import_media for a file at a URL)'). The when-to-use and when-to-use-something-else decision is fully spelled out.

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