Skip to main content
Glama

Seek by natural language

media.seek
Idempotent

Find the moments in a video, or in an edit as it renders, that match what you describe in plain words, so you go straight to them instead of watching it all. Name each criterion and say what a matching frame shows; you get back the stretches of time where each one holds, with the time and picture of the best frame in each. Use it to:

  • Check quality: find frames that are too dark or blown out, out of focus, black or blank (a gap in an edit), with a microphone or crew in shot, with text cut off at the edge, or with a caption over a face. With timeline_id it checks the edit as it renders, titles, effects and gaps included.

  • Watch efficiently: looking through a whole video costs you a picture for every moment. Seek judges the frames for you and says where things are, so you look only there: where the demo starts, where the speaker holds up the product, where the second location begins.

  • Pick shots: B-roll or a thumbnail moment that fits a description ("a wide shot of a city street at night", "she smiles straight at the camera with her eyes open").

  • Find changes: with with_previous, where the slide changes, someone walks in or the camera angle switches ("frame shows a different slide from previous").

  • Find room or trouble for overlays: where the lower third stays empty for a title, or where a logo, a licence plate or a face appears that needs a blur.

HOW TO WRITE CRITERIA. TypeSafe Jev, a fast judgment model (preview), judges each sampled frame on its own, as a picture named frame (about 512 px on its long edge; with with_previous also previous, the frame sampled before), and gives each criterion the probability that it is true. A criterion is a statement or a question about how the picture looks. Keep one judgment to a criterion, and say what shows rather than a verdict: not "bad lighting" but "the faces are too dark to make out their eyes"; not "a good thumbnail" but "a person looks straight at the camera with eyes open and mouth closed". Criteria that name no picture or state entry in backticks are asked about frame ("In frame: "); name frame, previous or your state entries yourself to judge them together ("frame shows the button line talks about"). Jev answers most accurately from examples: give {instructions, criteria: {true: "…", false: "…"}} with a case of each ({true: "the face is a dark silhouette against a bright window", false: "the face is evenly lit, a little dim"}). Detail too small to see at that size (fine print, slight softness) answers poorly; check it with render.frames at full size. READING THE RESULT. matches gives, per criterion, each run of consecutive samples at or above min_probability (default 0.5), with its start, end and best sample: peak_seconds, frame (for render.frames) and uri (a resource to read the picture). samples has every probability, for your own cut-off. A probability near 0.5 means Jev cannot tell, not that the thing is half there: reword a criterion that keeps landing there. asked shows the question each criterion became. COST. Each frame is one judgment however many criteria it carries, so ask everything you are looking for in one call (up to 32 criteria). Work in passes: every_seconds 2 to 5 over the whole video, then at_seconds around a match to find more exactly where it starts. Sampling sees only the frames it samples, so no match can't prove a one-frame defect (a flash, a black or dropped frame) absent: read every frame of a suspect stretch with render.frames, or measure black frames with qa.check. Up to 600 frames a call. Long-running: returns a task, or a job_id for job.get. media.analyze look asks typed questions (a choice, a score, a box) of every frame when you need measurements rather than moments; judge.ask judges one picture at once.

Input Schema

NameRequiredDescriptionDefault
stateNoText or JSON entries shown beside `frame` on every frame, by name, for criteria to refer to (a script line, what a term means)
criteriaYesName (yours, not shown to the model) to what a matching frame shows: a statement or question about the picture, or {instructions, criteria: {true, false}} to say what counts as yes and as no. Up to 32, each judged on every frame
media_idNoSeek in imported media (media seconds)
at_secondsNoSample exactly these times instead
timeline_idNoSeek in an edit as it renders (timeline seconds): gaps, cuts, titles and effects included
from_secondsNoStart sampling here. Default 0
every_secondsNoSample a frame this often. Default 1
until_secondsNoStop here. Default: the end
with_previousNoAlso show the frame sampled before, as `previous`, for criteria about change. The first sample is only shown as `previous`
idempotency_keyNo
min_probabilityNoA frame matches a criterion when its probability is at least this

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Goes well past the annotations: discloses that each frame is one judgment regardless of criterion count, caps of 32 criteria and 600 frames, the recommended two-pass sampling strategy, and that the call is long-running and returns a task or job_id. It also warns that ~0.5 means the model cannot tell rather than half-true, which is behavior an agent cannot infer from any structured field.

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 is front-loaded and the HOW TO WRITE CRITERIA / READING THE RESULT / COST headings make it scannable. The body is very long, though, with some lower-value sentences (the 'asked' field note, the model branding) that could be trimmed without loss.

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?

Despite an output schema existing, the definition still explains matches, samples and asked, and covers cost, limits, sampling blind spots and failure modes for a complex nested-parameter tool. An agent has everything needed to write criteria and interpret a null result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 91%, but the description still adds real meaning: the `frame`/`previous`/state-entry addressing convention, the {instructions, criteria:{true,false}} example form, how min_probability is applied, and how every_seconds versus at_seconds should be used across passes. That is interpretation guidance the schema does not carry.

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 and resource: find moments in a video or a rendering edit that match a plain-language description, returning time ranges and the best frame. It explicitly separates itself from media.analyze look, judge.ask, render.frames and qa.check, so an agent can route without opening sibling schemas.

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 bulleted 'Use it to' list gives five concrete situations (quality check, efficient review, shot picking, change detection, overlay clearance), each with example phrasing. It also states when NOT to rely on it (sampling cannot prove a one-frame defect; use render.frames or qa.check) and when a sibling is the better fit.

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.