Skip to main content
Glama

Create image upload link

create_upload_url

Get a one-time signed URL to upload a LOCAL image file straight from your machine — the bytes never pass through the model (the fix for files too big to inline as base64). Give the same slot + target as upload_image (slot "avatar" + entryId, or slot "scene" + scenarioId) and the filename (sets the image type). Returns { uploadUrl, method:"PUT", contentType, expiresInSeconds, howTo }. Then run: curl -X PUT --data-binary @ -H "Content-Type: " "" — the PUT response JSON has the hosted { url }. The URL is single-use and expires in 15 minutes. The image is resized to Lunafic’s sizes on upload, same as upload_image. The scenario COVER is editor-only and cannot be uploaded here.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slotYesavatar = entry/character avatar; scene = a playable image.
entryIdNoRequired for slot "avatar".
filenameYesOriginal filename (detects the image type; PNG/JPEG, GIF accepted).
scenarioIdNoRequired for slot "scene". Accepts the scenario (world) id OR its backing projectId.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the URL is single-use and expires in 15 minutes, that bytes never pass through the model, that the image is resized server-side like upload_image, and by giving the exact follow-up PUT invocation. The annotations only declare non-read-only/non-idempotent; the description supplies the real operational behavior.

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?

Front-loads purpose and the base64 rationale, then layers the return shape and the concrete curl step. The embedded command is long but earns its place for a multi-step tool; a couple of clauses could be tightened.

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?

No output schema exists, yet the description documents both the returned object ({ uploadUrl, method, contentType, expiresInSeconds, howTo }) and the follow-up PUT response ({ url }). Nothing an agent needs to complete the flow 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 baseline is 3, but the description adds the conditional coupling between slot and its target id (slot "avatar" + entryId, or slot "scene" + scenarioId) and notes filename sets the image type. That pairing guidance is useful beyond the per-field schema text, though it partly echoes it.

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?

States a specific verb+resource (get a one-time signed URL to upload a local image file) and explicitly distinguishes itself from the sibling upload_image by framing itself as the base64-overflow alternative. An agent can tell which tool to reach for without opening either schema.

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?

Gives an explicit when-to-use ('the fix for files too big to inline as base64', local files), names the sibling it parallels (upload_image), and states an exclusion ('the scenario COVER is editor-only and cannot be uploaded here'). Routing conditions are fully spelled out.

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