Skip to main content
Glama

Upload an image

upload_image

Upload an image Subo hosts, for any image field. Subo downloads the image at url and returns its own hosted url; put that in image_url or thumbnail_url of a block, or the invitation image. Not needed for a link that will last: any https image link goes in an image field as it is. Use it for links that expire (a Discord attachment link stops working in a day) or may disappear. PNG, JPEG, GIF or WebP, within the community's plan size limit (too_large names the limit). Public https links only; KLIPY links are refused (put a KLIPY GIF's link in the field as it is).

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": {
      "url": "<url>"
    },
    "name": "upload_image"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesAn https link to a PNG, JPEG, GIF or WebP image on the public internet. Subo downloads it and hosts its own copy.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only cover the safety profile (non-read-only, non-idempotent, non-destructive, closed-world); the description adds real behavior: it downloads and re-hosts the file, accepts PNG/JPEG/GIF/WebP, is bounded by the plan size limit, and surfaces a `too_large` error. It omits things like rate limits or whether the hosted copy persists after block deletion, so not a 5.

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?

Effect and destination are front-loaded, then guidance, then constraints. Dense with several parentheticals and semicolons, but each sentence carries distinct information (return value, when-not, formats/limits, link restrictions) with no repetition.

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?

Single required parameter, no output schema — so the description must state the return value, and it does ('returns its own hosted `url`'). Combined with format, size-limit, and link-eligibility rules, an agent has everything needed to decide whether and how to call it.

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% and already documents `url` as an https link to a supported format, so baseline would be 3. The description still adds constraints absent from the schema: public internet only, and KLIPY links are refused — actionable rejection rules an agent cannot learn from the parameter definition.

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 opening sentence names a specific verb and resource ('Upload an image Subo hosts') and immediately states the effect: Subo downloads the image at `url` and returns its own hosted `url`. It also names where the result belongs (`image_url`/`thumbnail_url` of a block, invitation image), which no sibling tool does.

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?

Explicit when-not: 'Not needed for a link that will last: any https image link goes in an image field as it is.' Explicit when: expiring/may-disappear links such as Discord attachments. It even carves out a special case (KLIPY GIFs go in the field directly). Nothing is left to inference.

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.