Skip to main content
Glama

Upload a photo to use as a generation reference

upload_reference_image

Stores a photo (imageBase64 or sourceUrl) in TASVR for use as a reference, optionally tagged with a role. Added to the library only when saveToLibrary is true.

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_reference_image"
  }
}

Input Schema

NameRequiredDescriptionDefault
roleNoWhat this photo is for (from list_reference_roles). Stored with the upload and returned; pass the same role in generate_image's references.
labelNoA short human-readable name, e.g. "Blue serum bottle" or "3/4 turn pose ref".
mimeTypeNoRequired if imageBase64 is a bare base64 string (not a data: URI, which already carries its own type).
sourceUrlNoAn externally-hosted image URL to fetch and re-host. Max 10MB, jpeg/png/webp/gif only.
imageBase64NoBase64-encoded image bytes, OR a full data URI ("data:image/png;base64,...."). Max 10MB decoded.
saveToLibraryNoAlso keep this image in the human's reference library. Default false. Only set true after the human has said they want to keep it — ask them first.

Output Schema

NameRequiredDescriptionDefault
refNo
urlYes
roleNo
referenceIdNo
savedToLibraryYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false, so the bar is lower. The description nonetheless adds genuinely useful behavior: the upload persists to TASVR storage regardless, but library persistence is gated on saveToLibrary — a side-effect distinction the annotations do not capture. It omits size/type limits and duplicate-handling behavior (relevant given non-idempotency), which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the storage destination and the library-gating condition front-loaded. Every clause carries distinct information an agent needs.

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?

With a full input schema, an output schema, and annotations, the description only needs to carry the semantics that structured fields cannot express — and it does that for library retention. The remaining gap is the absence of an explicit 'supply one of imageBase64/sourceUrl' constraint, since the schema marks zero required parameters.

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 coverage is 100%, including detailed per-parameter descriptions and enum lists, so the baseline is 3. The description reinforces that role is optional tagging and that saveToLibrary controls library retention, but it adds no format or syntax detail beyond the schema (mimeType requirement for bare base64, 10MB cap are schema-only).

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 gives a specific verb and resource ('Stores a photo ... in TASVR for use as a reference') and identifies both accepted input forms (imageBase64 or sourceUrl). It distinguishes itself reasonably from generate_image by framing the output as a stored reference, but it never names or contrasts with the close sibling save_reference_to_library, leaving some ambiguity about which tool handles an already-uploaded image.

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?

There is implicit guidance in the statement that the image is 'added to the library only when saveToLibrary is true', telling the agent the default is transient. However, there is no explicit when-to-use/when-not framing, no mention of the prerequisite that exactly one of imageBase64 or sourceUrl should be supplied (required params = 0), and no pointer to save_reference_to_library as the alternative for 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