Skip to main content
Glama

write_attach_media

Destructive

Upload a local photo or video from your computer and attach it to a logged workout or custom exercise for media records.

Instructions

Upload a photo or video from this computer and attach it to a logged workout (up to 6) or to a custom exercise (one; replaces the old one). path is an absolute local path (~/ allowed). Only JPEG, PNG, WebP, GIF, MP4, MOV and WebM files are read. Photos lose their metadata first (location, camera, time, and anything appended after the image such as a motion-photo video; the orientation stays). A video is refused when it carries location data leap recognises (QuickTime and 3GPP location, Apple location keys, EXIF/XMP GPS tags, GoPro or Google GPS tracks); other vendor formats are not detected. Files are not resized: check the limits with read_media_usage. The app shows a small preview in lists, which it makes itself; leap cannot, so a file attached here shows a placeholder in lists until it is opened.

Input Schema

NameRequiredDescriptionDefault
pathYes
workoutIdNo
customExerciseIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint, openWorldHint), the description discloses substantial behavior: exact file types accepted, metadata stripping of photos, the specific video location-data refusal conditions, that files are not resized, and the app-side preview placeholder behavior. This is exactly the kind of context annotations cannot convey and is consistent with the destructive/read-write hints.

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-loaded with the core action, then organized into format, metadata, size, and preview concerns. It is dense with parentheticals and long, but nearly every sentence carries distinct, useful information rather than filler.

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 write tool with no output schema and minimal annotations, the description covers format constraints, metadata handling, refusal conditions, size behavior, and preview behavior well. It stops short of describing the response (e.g., returned media ID) and does not fully disambiguate the ID 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 description coverage is 0%, so the description must carry the burden. It fully explains 'path' semantics (absolute local path, ~/ allowed) but the two ID parameters (workoutId, customExerciseId) are only implied through the narrative rather than mapped explicitly. Partial compensation, so a mid score.

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?

The description opens with a specific verb+resource ('Upload a photo or video ... and attach it to a logged workout') and names the two distinct attachment targets, which cleanly separates it from sibling write tools like write_document or write_download_media. An agent can identify the operation without opening the schema.

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?

It states the two usage contexts and their cardinality rules (up to 6 for a workout, one for a custom exercise, replacing the old one) and routes the agent to read_media_usage to check limits. There is no explicit when-not guidance or naming of a sibling to use instead, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.