Skip to main content
Glama

remedia

Re-download attachments and embed images for archived messages, persist local paths, skip existing files, and retry failed downloads; long jobs continue in the background.

Instructions

Re-download media (attachments + embed images) for ALREADY archived messages and persist local paths (idempotent, skips existing files). Also retries entries whose earlier download failed (no local file).

Like capture(), long runs continue in the background: the call returns a {"status": "running", ...} summary after wait seconds at the latest and the download continues — call remedia() again for the same channel to fetch the final result.

Args: channel: channel ID or full URL. limit: only the N most recent messages (None = all). wait: seconds to wait synchronously before returning a running summary. Returns: Dict: {"channel_id", "messages_with_media", "media_entries"}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
waitNo
limitNo
channelYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does a good job: idempotency ('skips existing files'), retry semantics for failed downloads, and the async continuation contract after `wait` seconds, including re-invocation to collect the final result. It omits auth/permission requirements and any rate-limit or failure-mode detail.

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 core purpose, then the async contract, then Args/Returns. The Args section duplicates schema fields, but that duplication is warranted given the 0% schema description coverage. No wasted 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?

No output schema exists, so the description supplies the return dict keys ('channel_id', 'messages_with_media', 'media_entries') and explains the running-status case. Complete for correct invocation, though permissions and progress/pagination behavior for very large channels are unaddressed.

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 description coverage is 0%, so the description must define all three parameters, and it does: channel accepts an ID or full URL, limit takes the N most recent messages (None = all), and wait is the synchronous seconds before a running summary is returned. This meaningfully exceeds the bare schema types.

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 and resource ('Re-download media (attachments + embed images)') scoped to 'ALREADY archived messages', which implicitly distinguishes it from a first-time capture. The contrast with capture() is reinforced by the background-execution comparison.

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?

Clear usage context: run it over already-archived messages, and it doubles as a retry path for entries whose prior download failed. It does not explicitly frame when NOT to use it (e.g. 'use capture() for new messages'), so the alternative selection is left partly to inference.

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