Framesleuth
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VLM_URL | No | URL for the vision-language model server (OpenAI-compatible). Defaults to local Ollama. | |
| API_TOKEN | No | Optional bearer token required for all /v1 endpoints except /v1/healthz. Set for anything beyond single-user laptop. | |
| CODER_URL | No | URL for the coder model server (OpenAI-compatible). Defaults to local Ollama. | |
| WEBHOOK_URL | No | Optional URL to receive a POST notification when a job completes. | |
| WEB_ORIGINS | No | Allowed CORS origins for the HTTP API. Comma-separated list. Default includes the hosted demo site and local development origins. | |
| JOB_TIMEOUT_S | No | Hard per-job timeout in seconds. | |
| ASR_VAD_FILTER | No | Enable or disable voice-activity filtering in the audio transcript stage. Set to 'true' or 'false'. | |
| BUNDLE_TTL_DAYS | No | Number of days to retain completed analysis bundles before cleanup. | |
| CHROME_EXTENSION_IDS | No | Chrome extension IDs allowed to access the API via CORS. Comma-separated list. | |
| RETENTION_SWEEP_INTERVAL_S | No | Interval in seconds between periodic cleanup sweeps for expired bundles. | |
| FRAMESLEUTH_AUTO_INSTALL_BROWSER | No | Set to '0' to disable automatic download of Chromium for HTML rendering. Default '1'. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| analyze_videoA | Analyze any video and return the new report id. Works on any kind of video — a bug recording, a feature demo, a design walkthrough, a Loom, a phone capture — and distills it into a structured Context Bundle a coding agent can act on (fix a bug, add or change a feature, or build something new). Args:
path: Path to the video file (.mp4/.webm/.mkv/.mov/.avi).
repo_root: Repo to ground references against (pass the open workspace).
intent: The user's request to act on, e.g. "fix the save button that
hangs", "add a dark-mode toggle like the demo shows", or "build
this onboarding screen from the walkthrough". It is recorded on the
report and shapes the generated action prompt so the calling agent
does what the user actually asked.
skill: Built-in summary style — one of the names from Returns the report |
| list_skillsA | List built-in summary skills (names + descriptions) for |
| list_actionsA | List built-in action modes (names + descriptions) for |
| get_suggested_actionsA | Return the machine-readable next-step menu for a report. Each item is |
| renderA | Render a report as a shareable artifact.
|
| list_reportsA | List all available report ids (from any analyzed video). |
| get_reportA | Return the Context Bundle for a report id.
Typed as a |
| get_repro_stepsA | Return the numbered reproduction steps for a report. |
| get_error_evidenceB | Return the timestamped error evidence for a report. |
| get_timelineA | Return the merged event timeline for a report. |
| get_keyframe_imageA | Return a keyframe image for a report by its index. |
| get_video_gifA | Render an animated GIF preview of the video for a report. Useful for embedding a short looping preview in an issue, chat, or PR
description. |
| locate_in_codeA | Return code candidates already grounded in the bundle, or re-ground now.
|
| render_html_videoA | Render an HTML document (CSS / JS / canvas animation) to mp4/gif/webm. Use this to export a self-contained animated HTML page (e.g. one you just
designed) as a shareable clip. Captures the animation frame-by-frame
(full color, no dropped frames, no quality loss) and encodes a
color-correct H.264 MP4 / VP9 WebM / palette GIF — up to 4K, 5-60 fps.
Returns the absolute path to the encoded file, written under the bundle
directory. Requires the optional |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| fix_from_video | Emit a grounded action prompt — fix a bug, change a feature, or build new. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each tool targets a distinct resource or action: list_* for enumerating options, analyze_video for creation, get_* for specific report components, render for output formatting, and render_html_video for HTML-to-video conversion. Even the two visual retrieval tools (get_keyframe_image and get_video_gif) are clearly distinguished by static vs. animated output.
Most tools follow a clear verb_noun pattern (list_*, get_*, analyze_video, render_html_video). The main deviation is the bare verb 'render' which lacks an object, and 'locate_in_code' uses a prepositional structure, but overall the naming is predictable and readable.
With 14 tools, the server is well-scoped for a video analysis platform. Each tool serves a distinct purpose in the workflow—analysis, report retrieval, configuration enumeration, and rendering—without unnecessary bloat or redundancy.
The tool surface covers the full lifecycle from video analysis (analyze_video) through report retrieval (get_report, get_repro_steps, get_error_evidence, etc.) to output generation (render, render_html_video). It also provides supporting tools like list_skills, list_actions, and list_reports to avoid dead ends. No critical gaps are apparent.