LazyRoom MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_capabilitiesA | Manifest: operation categories/counts, edit-action types, mask types, formats, optional backends, security policy, workflows and error codes. Call once at the start of a session. |
| list_operationsB | Compact list of editing operations (id, title, group). Filter by category, ImageToolbox filter group (e.g. category='filter', group='blur') or keyword query (e.g. 'vignette', 'film grain', 'pixelate'). |
| describe_operationsA | Full documentation for 1-50 operation ids: parameters with types, ranges, units, defaults, JSON schema, whether it can be masked, and examples. |
| inspect_imageB | Metadata and measured style of an image file: tone (median lightness, black/white points, contrast), colour cast / estimated white balance, zone tints, saturation, grain, vignette, palette, descriptors. include_thumbnail returns a small preview image. |
| open_imageA | Open an image as a new non-destructive editing project. Returns project_id and state. |
| open_projectC | Open a saved .lazyroom project (e.g. one a human edited in the GUI). |
| get_project_stateB | Complete editing state: ordered steps with ids, params, masks, opacity, blend; undo/redo availability. |
| edit_projectA | Apply edit actions atomically (all-or-nothing, one undo step). Action shapes: {"type":"add","op":ID,"params":{...},"index"?,"mask"?,"opacity"?,"blend"?,"label"?} {"type":"add_group","steps":[{op,params,...}],"label"?,"mask"?,"opacity"?} {"type":"update","step_id":ID,"params":{...merged},"mask"?,"opacity"?,"blend"?,"enabled"?} {"type":"remove"|"duplicate","step_id":ID} {"type":"move","step_id":ID,"index":N} {"type":"toggle","step_id":ID,"enabled"?} {"type":"set_steps","steps":[...]} {"type":"clear"} Mask example: {"shapes":[{"type":"radial","center":[0.5,0.4],"radius":[0.3,0.35],"feather":0.6}, {"type":"luminance","min":0,"max":0.4,"mode":"intersect"}]} (types: all, rect, ellipse, radial, linear, polygon, brush, luminance, color, hue, skin, image, subject). |
| project_historyB | List history, undo/redo N steps, or revert to a history entry (revert is itself undoable). |
| render_previewA | Render the project (or an earlier version: 'original' or a history id) and return the preview image, per-step timings and result statistics. compare='side_by_side' shows before | after. |
| compare_versionsB | Metrics (ΔE, SSIM, PSNR, colour-distribution distance) between two versions + side-by-side image. |
| export_imageB | Render at full resolution and write a NEW file (originals are protected; existing files need overwrite=true). Formats: jpg png webp avif heic tif bmp gif jp2 qoi ico tga pdf. |
| save_projectB | Save the project as human-readable JSON (.lazyroom) that the GUI, CLI and other agents can open. |
| apply_to_fileB | One-shot: apply steps (or a preset id) to an image file and export, without keeping a project. |
| list_presetsC | Built-in semantic looks (e.g. warm-70s-film, teal-orange, vintage-polaroid, faded-analog, cool-urban, earthy-muted, warm-editorial-portrait, bw-classic) and user presets. Search by mood words. |
| apply_presetC | Add a preset as an editable group step (strength = group opacity 0..1). |
| save_presetB | Save a reusable preset from a project's pipeline or explicit steps. |
| delete_presetA | Delete a user preset. Destructive: ask the user first, then call with confirm=true. |
| analyze_styleB | Detailed photographic style measurements of a (reference) image incl. tone histogram and grain size. |
| match_styleA | Fit an editable grading pipeline (white balance, tone curve, 3-way colour grade, saturation, HSL, grain, vignette) that gives the project the look of a reference photo. matching='look' transfers the grade without copying scene content; 'exact' matches the reference statistics (same scene). strength=null uses a confidence-based strength. Returns the steps and a report: similarity, confidence, limitations. |
| plan_editB | Translate a natural-language request ('warm faded 70s film, muted greens, subtle grain') into editable steps using the built-in rule engine (or a configured local/remote LLM). Review, then apply. |
| start_batchA | Process files/folders/globs with one pipeline in the background. Returns job_id immediately; poll job_status. normalize equalises exposure/WB per image for consistent series; match_reference adds a per-image style match. Failures are isolated per file; a JSON report is written to output_dir. |
| job_statusA | Status/progress of a job (optionally wait up to wait_seconds), or all jobs when job_id is omitted. |
| cancel_jobB | Cancel a running job; finished outputs are kept. |
| list_toolsC | Utility tools that produce data or new files: palette, histogram, compare, duplicates, metadata read/write/strip, QR/barcode generate/read, OCR, split, stitch, collage, stack, HDR, focus stack, panorama, gradients, noise, animations, PDF, compress to size, ASCII, SVG trace, rename... |
| describe_toolC | Parameter schema and documentation of a utility tool. |
| run_toolB | Run a utility tool (see list_tools/describe_tool). Destructive tools require confirm=true in params. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| grade_photo | |
| match_reference | |
| batch_grade |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| manifest | Full capabilities manifest |
| agent-guide | How agents should use LazyRoom (workflows, conventions, examples) |
TDQS
Scored across 27 tools
The set has a clear layered architecture: discovery (get_capabilities/list_operations/describe_operations), project lifecycle (open/get_state/edit/history/render/export/save), style (analyze_style/match_style/presets), batch (start_batch/job_status/cancel_job), and a meta-tool layer (list_tools/describe_tool/run_tool). Most tools target a distinct resource+action, but a few pairs are easy to confuse: inspect_image vs analyze_style (both measure tone/colour/grain), and apply_preset vs match_style vs plan_edit all "add steps that create a look". The generic compare utility inside list_tools also overlaps compare_versions.
The dominant pattern is verb_noun (open_image, edit_project, render_preview, apply_preset, delete_preset, list_presets, match_style), which is easy to generalize from. Deviations are minor: two noun-phrase names (project_history, job_status) and an action/noun split in the batch family (start_batch, cancel_job, job_status). Readable throughout, just not perfectly uniform.
27 tools is heavy for a single server and sits above the comfortable 3-15 band. The count is partly mitigated by the meta-tool consolidation (list_tools/describe_tool/run_tool fold dozens of utilities into three entries), but the project/preset/style/batch surface still exposes a lot of individual endpoints an agent must choose among.
Coverage is broad: open (image or .lazyroom), inspect, edit atomically, history/undo/revert, preview, full-res export, save, presets CRUD, style analysis and matching, batch processing with progress/cancel, and a capabilities manifest. Remaining gaps are modest: no explicit close/discard/delete-project operation, and no direct 'add step by operation id without params lookup' shortcut, but agents can work around both.