Skip to main content
Glama

Request a pre-signed upload URL

request_media_upload_url
Destructive

Create a pre-signed upload URL for a new image; upload the image bytes directly to the returned URL.

Instructions

Rate limit: 20 requests / minute per shop. See Rate limiting.

Returns a pre-signed upload URL for uploading a new image. After receiving the response, PUT the image bytes directly to the uploadUrl.

Input Schema

NameRequiredDescriptionDefault
sizeNoSize of the file in bytes. Must match the `x-goog-content-length-range` header sent when uploading the bytes to `uploadUrl`.
accountNoExact private shop profile label; not a provider identity or authorization proof.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete current native JSON body; cannot mix with native body flags or payload_file.
fileNameNoName of the file
contentTypeNoMIME type of the file
output_fileYesAbsolute NEW owner-private receipt file; exclusive0600 creation, no overwrite. Upload/public-token URLs never enter ordinary output.
payload_fileNoAbsolute regular non-symlink native JSON body file, at most1MiB. Cannot mix with payload or body flags.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv3.0.0
    • changedInput schema / properties / confirm / description
      Previous value: -"Explicit approval for this exact provider effect or local private-file operation."New value: +"Set true only when the user asked for exactly this action."
  2. First observedv2.0.0

TDQS

B3.4/5.0
Behavior3/5

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

The rate limit (20 requests/minute per shop) is real behavioral context not present in the annotations, and the follow-up PUT step clarifies the two-phase flow. But annotations mark this destructiveHint=true, and the description never explains what is destroyed or reserved, nor does it disclose auth/permission prerequisites, so the mutation profile stays opaque.

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?

Short and largely waste-free, with the PUT-the-bytes instruction being the highest-value sentence. Minor structural flaw: the rate-limit callout leads the description ahead of the actual purpose, delaying the front-loaded answer to 'what does this do?'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, a nested payload object, no output schema, and openWorld access, the description is thin. Because there is no output schema, it should describe the response (the uploadUrl field and the x-goog-content-length-range header the schema's size parameter references), but that required-upload-header detail is left implicit.

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 size, fileName, contentType, account, confirm, payload, and output_file. The description adds no parameter-level meaning beyond what the structured fields provide, which is the baseline 3 case.

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?

States a specific verb and resource: returns a pre-signed upload URL for uploading a new image. This is clear and actionable, but it never distinguishes itself from close siblings such as request_digital_file_upload_url, upload_file, or save_media_image, leaving the agent to infer that 'image' versus 'digital file' is the dividing line.

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

Usage Guidelines3/5

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

The description gives useful downstream workflow guidance — PUT the image bytes directly to the uploadUrl — plus the rate limit. However, it offers no when-to-use/when-not guidance relative to sibling upload tools, so the agent must infer selection from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools