Skip to main content
Glama

Zaps

Get upload links for local photos

upload_images

Call this FIRST when the photos are on the caller's machine rather than already on the web — our renderer fetches over the network and cannot read a local path. Simplest way: read each file and pass it in files as base64; the reply gives you a publicUrl per photo to hand straight to create_designs, with nothing else to run. If you would rather upload the bytes yourself, pass count instead and you get presigned links to PUT to. Costs nothing either way.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNoOnly when uploading the bytes yourself: how many links to mint.
filesNoThe photos themselves, base64 encoded. We store them and hand back a url each. Use this unless you have a reason not to.
mimeTypeNoThe images' media type, e.g. image/png or image/jpeg.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
howToYes
slotsNo
imageUrlsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=false and destructiveHint=false, so the safety profile is partly covered; the description adds the non-obvious constraint that the renderer cannot read local paths, that both paths are network-mediated, and that there is no cost. It does not say whether uploaded files persist, expire, or are scoped to a session, which is the main remaining behavioral unknown for a write tool.

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 the imperative 'Call this FIRST' and the reason, then walks the two paths in order of preference. Mostly tight, though 'Costs nothing either way' and the closing aside add little and could be trimmed.

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?

An output schema exists, so return values need no elaboration beyond the useful mention of publicUrl. The description covers the trigger condition, both invocation modes, the cost expectation, and the downstream handoff to create_designs — everything an agent needs to call this correctly.

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 adds real semantic value the schema does not: `files` and `count` are alternative modes rather than a combined payload, and each yields a different kind of answer (publicUrl per photo vs. presigned PUT links). That mutual-exclusivity explanation is exactly what prevents a malformed call.

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 concrete verb+resource (mint/get upload links for photos that live on the caller's machine) and immediately distinguishes itself from the rest of the toolset by naming create_designs as the downstream consumer. An agent can tell from the first sentence that this is the ingestion entry point, not a design-creation tool.

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 the explicit trigger (photos on the local filesystem, not already on the web, because the renderer fetches over the network), then lays out both modes and when to pick each: base64 `files` by default, `count` only if you want to PUT the bytes yourself. The 'Use this unless you have a reason not to' default plus the named next step (create_designs) leaves nothing 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.