Skip to main content
Glama

Upload an image

upload_image

Upload a PNG/JPEG up to 10 MB from a local path or public HTTPS URL to get an upload_id and signed URL for Clipwright video ads.

Instructions

An upload_id and a signed url for a PNG or JPEG up to 10 MB, from a local path (local server only) or a public https url (up to 20 seconds and 3 redirects). The url is signed for 24 hours; the upload_id lasts 365 days. Set aspect_ratio to match the picture. Remote server and a file on disk: create_upload. Free; 20 uploads per day, at most 30 url downloads per hour.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "upload_image"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNo
pathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.45.0
    • removedInput schema / properties / path / description
      Removed value: -"Absolute or cwd-relative path to a PNG or JPEG file; only on a server running on your machine"
    • removedInput schema / properties / url / description
      Removed value: -"Public https URL of a PNG or JPEG; the server downloads it"
  2. Changed1 schema field changedv0.39.0
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  3. Changed3 schema fields changedv0.33.0
    • changedInput schema / properties / path / description
      Previous value: -"Absolute or cwd-relative path to a PNG or JPEG file"New value: +"Absolute or cwd-relative path to a PNG or JPEG file; only on a server running on your machine"
    • addedInput schema / properties / url
      Added value: +{
      +  "description": "Public https URL of a PNG or JPEG; the server downloads it",
      +  "format": "uri",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "path"
      -]
  4. First observedv0.20.0

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: 10 MB cap, 20 second fetch timeout, max 3 redirects, 24-hour signed URL lifetime, 365-day upload_id lifetime, free tier, and rate limits of 20 uploads/day plus 30 URL downloads/hour. The annotations only say non-read-only and non-destructive; this description supplies the actual operational constraints an agent needs to avoid failures.

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?

Every clause is genuinely informative, but the sentence is front-loaded with return values rather than the action, and it crams limits, lifetimes, and alternatives into one run-on block. An agent must read the whole thing before learning it is an upload tool.

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?

Since there is no output schema, the description usefully describes the return (upload_id and signed URL) and its expiry. It covers limits and the sibling alternative. The stray aspect_ratio mention and the absence of any error/failure behavior keep it short of complete.

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 0%, so the description must carry the parameter burden; it does by explaining path is local-server-only and url is a public https resource with redirect/timeout limits. However, it references an aspect_ratio parameter that does not exist in the input schema, which is a mild inconsistency that could confuse an agent.

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 makes clear that this uploads a PNG/JPEG from either a local path or a public URL and returns an upload_id plus signed URL. It never opens with a verb phrase, starting instead with the return values, so the purpose has to be inferred from the middle of the sentence. Sibling create_upload is named, which helps distinguish it.

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 states that path works on local server only, that url must be public https, and explicitly routes 'remote server and a file on disk' to create_upload. It never states when not to use this tool in other cases (e.g. non-image files), but the alternative path is concrete.

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