Skip to main content
Glama

Extract a frame

extract_frame
Idempotent

Take one frame of a video already in emero (an upload or a generation) and store it as a new lossless PNG. Returns a job:<uuid>#0 id for generate (reference_image_ids, start_frame_id, end_frame_id). The frame comes from emero's own stored file, which for an iPhone HDR upload is emero's SDR conversion, so a still made from it matches the clip's color. Always use this to make a still from a video for emero: never extract or tone-map frames in your own sandbox. Pass time_seconds or frame_number (0-based). Free.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "video_id": "<video_id>"
    },
    "name": "extract_frame"
  }
}

Input Schema

NameRequiredDescriptionDefault
video_idYesupload:<id>, upload:<id>#n or job:<uuid>#0 of a video.
project_idNoOpaque per-chat project id: "p-" plus 6 random letters and digits. Every chat is a new project. Mint one on your first emero call and pass that SAME id on every call in this chat. Never mint a second one in the same chat, even for a new topic, campaign or subject. Only when the user asks to continue an earlier project, reuse its id from get_emero_brain's project list.
frame_numberNo
project_nameNoShort human title for the project (2-5 words from the user request, e.g. "Perfume ad campaign"). Pass it on your first generate/ingest_url so the project is not left "Untitled". You may also rename at will later — pass an updated project_name (on a generate/ingest_url, or on set_settings with no other change) whenever the user asks, e.g. "call this project cats".
time_secondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, non-read-only behavior; the description adds cost ('Free'), the exact return shape ('job:<uuid>#0'), and the important caveat that iPhone HDR uploads are sourced from emero's SDR conversion. It does not state that a write is being performed or what happens on failure.

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 action and output artifact, then the return id, then the caveat and the directive. The middle sentence about returning a job id for generate is densely packed and slightly hard to parse, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/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 only says a job-style id is returned; it never tells the agent whether to poll check_generation or how long to wait, which matters for an async job id. Color/pixel semantics and cost are well covered, so the remaining gap is narrow but real.

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 coverage is 60%: video_id, project_id and project_name are richly documented in the schema, while frame_number and time_seconds carry no schema text. The description compensates by stating frame_number is 0-based and that the two are alternatives, which the schema does not express (no schema-level mutual exclusion).

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 ('Take one frame of a video already in emero') plus the output artifact ('a new lossless PNG'). It also distinguishes the tool from the agent's own sandbox extraction path, so an agent can separate it from siblings like generate or view without opening a 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?

Explicitly directs use for stills from videos and forbids DIY extraction/tone-mapping in the sandbox, which is a real when-to-use/when-not rule. It gives the selector between the two time parameters ('Pass time_seconds or frame_number (0-based)') but does not say which wins if both are supplied, nor when to prefer one.

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.