Skip to main content
Glama

Finish an upload started by upload_media

confirm_upload

Checks the file uploaded to an upload_media target and makes it usable. Returns the media url to pass to other tools, the file's size, its kind (video or image), its measured width and height and, for a video, duration_seconds. WHEN: right after the bytes moved (the curl printed a 2xx, or the user says they finished on the browser_upload_url page). It checks that the CONTENTS match the declared type and that the media is MEASURABLE (every later transform is priced from the measurement). A file that fails is refused and never added, and nothing is charged: re-encode to MP4, PNG or JPEG. IF IT SAYS NOTHING HAS BEEN UPLOADED YET, the bytes did not land. Curl route: read the body it printed (S3's own reason; a bare 000 means your environment cannot reach the storage host, so switch to browser_upload_url). Browser route: the user has probably not finished. DO NOT CALL upload_media AGAIN: say you are waiting (no link) and call this again when they are done. After a reported success, wait a few seconds and call once more. Costs no tokens; safe to call again on the same id. AFTER THIS the url works as any input of its kind (video or image).

Input Schema

NameRequiredDescriptionDefault
idYesThe `id` `upload_media` returned for this file.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the annotations: failure behavior (file refused, never added, nothing charged, re-encode to MP4/PNG/JPEG), cost ('no tokens'), return payload fields, and a concrete error-diagnosis path (bare '000' means storage host unreachable). The 'safe to call again' note sits alongside idempotentHint=false but is about safety/cost rather than state, so it reads as compatible context rather than a contradiction.

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?

Purpose and WHEN are front-loaded and nearly every sentence carries operational weight (route-specific failure handling, retry rule, cost). It is dense and somewhat long for a one-parameter tool, and the closing 'AFTER THIS the url works as any input of its kind' partly restates the earlier return-value sentence.

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, and the description fully compensates by enumerating returned fields (url, size, kind, width/height, duration_seconds for video). Combined with failure semantics and retry cadence, an agent has everything needed to call it correctly and interpret the result.

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 description coverage is 100% and the single `id` param is already documented as 'the id upload_media returned'. The description reinforces that provenance but adds no new syntax, format, or edge-case meaning beyond the schema, so the baseline of 3 applies.

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?

Opens with a specific verb + resource: 'Checks the file uploaded to an upload_media target and makes it usable.' It explicitly ties itself to the sibling upload_media as the second half of a two-step flow, so an agent can distinguish confirming from uploading without inspecting 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?

A dedicated WHEN clause states the exact trigger (curl printed 2xx, or user says the browser_upload_url page is done), plus retry timing ('wait a few seconds and call once more') and a negative rule ('DO NOT CALL upload_media AGAIN'). It also branches guidance by upload route (curl vs browser), which is exactly the decision an agent faces.

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.

Directories

Listed in ChatGPT · aicut

Last observed