Skip to main content
Glama

Field Service Business Platform by Doing Work

media_requestUpload

Get a signed upload URL for a job photo or video. Before you call this, look at the file and say what it shows in summary: plain words, findings, any text you can read (model and serial plates), measurements, and for video a transcript, key moments and the length. If what you see does not match what the worker said, tell the worker before you upload. If you cannot look at it, send summary.unable_to_analyze with a reason and the media is listed by media.needsSummary. Summaries stay inside the shop and are searchable with media.list q and search.global. Photos: JPEG, PNG, WebP, HEIC or TIFF (HEIC and TIFF are kept as sent, with a JPEG copy for viewing). Video: MP4, MOV or WebM, kept as sent, at most 100 MB and 10 minutes, never shared outside the shop. Declare the sha256 of the bytes you will send; the upload is rejected if they differ. Taken time, GPS location, heading and camera details are read from photos and kept for your shop. Copies shared outside the shop (share links, quote pages, PDFs) have that metadata removed.

Input Schema

NameRequiredDescriptionDefault
kindNoDefault photo
stageYes
job_idYes
sha256Yes
summaryYesWhat you saw in the file. Look at the photo or watch the video before you upload it. Send either summary (with generated_by) or unable_to_analyze, never both.
shows_interiorNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full behavioral burden and mostly meets it, disclosing the sha256 integrity check that rejects the upload on mismatch, size and duration caps, format handling (HEIC/TIFF preserved with a JPEG viewing copy), in-shop visibility, searchability, and EXIF retention plus stripping on external shares. The notable gap is the return side: no output schema exists, yet the description never says how long the signed URL lasts, what method or headers the upload expects, or what identifier comes back.

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?

The purpose is front-loaded and every sentence conveys operational information rather than filler. It is dense to the point of run-ons in a few places, and the enumeration of summary contents (text, measurements, transcript, key moments) partially duplicates the nested schema descriptions directly below it.

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?

For a six-parameter mutation with nested objects, no annotations and no output schema, the description covers the consequential behaviors an agent must know: integrity checking, limits, privacy handling and the unable-to-analyze fallback. It stops short of describing the upload handshake and response, which matters most precisely because there is no output schema to fall back on.

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?

At 33% schema coverage the description has to do real work, and it does for the hard parameters: sha256 is explained as a byte-level integrity declaration enforced at upload, and the extended summary requirements clarify what each finding field is for. Undocumented gaps remain for stage (before/during/after/other) and shows_interior, which appear in neither the schema descriptions nor the prose, plus job_id receives no explanation.

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 opening sentence gives a specific verb and resource: get a signed upload URL for a job photo or video. That is unambiguous about what the call produces. It does not explicitly contrast itself with nearby media tools (media_setSummary, media_saveMarkup, media_get), so it falls short of the sibling-differentiation bar for a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong preconditions are stated: look at the file first, report what it shows, flag mismatches with the worker's account before uploading, and use summary.unable_to_analyze when vision is unavailable. The guidance covers when to proceed and what to do instead within the same call. It does not route the agent among the other media tools (e.g., when to summarize later via media_setSummary versus at upload time), so it is not a full when/when-not/alternatives treatment.

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