Skip to main content
Glama

quickS3

Create upload URL

create_upload_url
DestructiveIdempotent

Create a short-lived presigned upload URL (valid 15 minutes) for one object. You can then upload the file with an HTTP PUT to the returned url. The PUT must include every header in the headers field of the result, or the upload is rejected. For Azure Blob, the headers include x-ms-blob-type: BlockBlob.

Input Schema

NameRequiredDescriptionDefault
keyYesObject key to write, e.g. "reports/2026/q3.csv"
sizeYesFile size in bytes
bucketYesBucket name
overwriteNoAllow replacing an existing object (default false)
contentTypeNoContent type of the file, e.g. "text/csv"
connectionIdYesConnection ID from list_connections

Output Schema

NameRequiredDescriptionDefault
urlYes
methodYes
headersYes
maxBytesYes
expiresAtYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "expiresAt": {
      +      "type": "string"
      +    },
      +    "headers": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "maxBytes": {
      +      "type": "number"
      +    },
      +    "method": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url",
      +    "method",
      +    "headers",
      +    "expiresAt",
      +    "maxBytes"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is partly covered. The description adds real behavioral value beyond that: the 15-minute expiry, the hard requirement to send every returned header or the upload is rejected, and the Azure-specific x-ms-blob-type detail. It doesn't explain the overwrite/destructive consequence of replacing an existing object, which is a minor gap.

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?

Four sentences, front-loaded with the core purpose, then the upload procedure and the failure condition. Every sentence carries essential operational detail with no filler.

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?

An output schema exists, so return-value documentation isn't required, yet the description still explains the critical `headers` field the caller must echo back. The one omission is the destructive/overwrite behavior implied by overwrite and destructiveHint=true, which matters for a write tool.

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 description coverage is 100%, so the schema already documents all six parameters, making 3 the baseline. The description adds no per-parameter meaning (e.g., it doesn't clarify the overwrite flag's effect on existing objects) and instead elaborates on the output-side `headers` field.

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+resource ('Create a short-lived presigned upload URL... for one object') and immediately distinguishes it from the download/link siblings by naming the opposite direction (upload vs. download). An agent can tell this apart from create_download_link and create_share_link without opening any schema.

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 clear workflow context: create the URL, then HTTP PUT the file to the returned `url`, including all returned headers. It doesn't name alternatives or state exclusions (e.g., when to use create_share_link instead), but the intended usage is unambiguous and operational.

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