Skip to main content
Glama

Upload an image

upload_image
Idempotent

Put an image into the merchant's image library, re-hosted on the catalog's own storage with resized variants, and get back the URL to use in edit_catalog (addBlock with an image, editBlock with url, editProduct with main_image). Give either url — a publicly reachable image, fetched and copied — or base64 with its contentType. JPEG, PNG, WebP or GIF, up to 20 MB. The same picture uploaded twice lands once.

Input Schema

NameRequiredDescriptionDefault
urlNoA public image URL to copy
nameYesA name for the library, e.g. "Spring cover"
base64NoThe image bytes, base64 (no data: prefix)
contentTypeNoWith base64

Output Schema

NameRequiredDescriptionDefault
urlYesThe URL edit_catalog places the image with
nameYes
widthYes
fileIdYes
heightYes
variantsNoResized copies, by width

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds genuinely new behavior: server-side re-hosting with resized variants, supported formats, a 20 MB ceiling, and deduplication ('lands once'). It does not mention auth or rate limits, but that is a minor remaining gap against the annotation coverage.

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?

Three dense sentences, front-loaded with the action and its outcome, followed by input rules and constraints. Every clause carries information; the parenthetical list of edit_catalog call sites is directly actionable rather than filler.

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?

With an output schema covering the return value and full annotation coverage, the description supplies exactly what structured fields cannot: re-hosting behavior, dedupe semantics, format/size limits, input modality choice, and downstream consumption points. Nothing an agent needs to invoke this correctly is missing.

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 earns more: it clarifies that 'url' is fetched and copied and must be publicly reachable, that 'base64' pairs with 'contentType', and it states the format and size constraints. It also implies the url/base64 mutual exclusivity that the schema itself does not enforce via oneOf.

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?

The description opens with a precise verb and resource ('Put an image into the merchant's image library') and immediately adds the material outcome: re-hosting, resized variants, and a returned URL. It also names the downstream tools where the URL is consumed, so it is unmistakable against siblings like list_images.

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?

It clearly explains the two input paths ('Give either url ... or base64 with its contentType') and where the resulting URL is used (edit_catalog/addBlock, editBlock, editProduct). What's missing is an explicit exclusion or a pointer to list_images when the agent merely wants to see existing images.

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