Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GEMINI_API_KEYNoGoogle Gemini API key, used for online image models (Nano Banana) and image-to-text. Can be set instead of pasting the key in the 'AI models' dialog.
OPENAI_API_KEYNoOpenAI API key, used for online image models (GPT Image) and image-to-text. Can be set instead of pasting the key in the 'AI models' dialog.
ANTHROPIC_API_KEYNoAnthropic API key, used for the built-in assistant (Claude with a key) and image-to-text. Can be set instead of pasting the key in the 'AI models' dialog.
STABILITY_API_KEYNoStability AI API key, used for online image models. Can be set instead of pasting the key in the 'AI models' dialog.
OPENROUTER_API_KEYNoOpenRouter API key, used for online image models. Can be set instead of pasting the key in the 'AI models' dialog.
REPLICATE_API_TOKENNoReplicate API token (FLUX and other models), used for online image models. Can be set instead of pasting the key in the 'AI models' dialog.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
project_createA

Create a document. preset: 1080p, 4k, square, instagram_post, story, youtube_thumbnail, a4_300dpi, a4_150dpi, web_banner, og_image; or width/height; or from_image= to start from a photo (canvas = photo size). path=<file.json> saves it (autosave after every edit). background can be 'transparent'.

project_openB

Open a pedit .json document, or a photo (becomes a new unsaved document of its size).

project_infoB

Document state: size, layers (top first) with ids, boxes, effects, masks. detail='full' adds all params.

project_saveC

Save the document (.json). With path: save as.

project_settingsD

Document name, background color ('transparent' allowed), dpi.

undoC

Undo the last edit.

redoC

Redo the last undone edit.

add_imageB

Image layer from a file (path) or an imported asset. fit: contain, cover, width, height, none (ignored if scale given). Without x/y it is centered. above= to insert right above it.

add_textB

Text layer. font: sans, serif, mono, display, handwriting, or a system font name/file. max_width>0 wraps lines. Without x/y it is centered; then align_layer to place it.

add_shapeC

Vector shape: rect (radius = rounded corners), ellipse, line, polygon (points relative to x,y). Colors accept #rrggbbaa for transparency.

add_fillB

Full-canvas fill: solid, linear gradient (angle 90 = left->right, 180 = top->bottom) or radial (center cx, cy as fractions). index=0 puts it at the bottom (a background).

add_adjustmentB

Adjustment layer on top: its filters change everything below it, non-destructively. One filter (type + params) or a chain effects=[{type, params}, ...]. See list_effects.

paint_strokeA

Brush stroke: polyline [[x,y],...] in document px on a paint layer (created if missing). erase=true erases previous strokes of that layer. Clone stamp: source=[x,y] is where to copy from for the first point (copies everything below the layer); heal=true = healing brush (matches the light and color of the destination).

set_layerC

Layer name, visibility, lock, opacity 0..1, clip (clipping mask onto the layer below), blend mode: normal, dissolve, darken, multiply, color_burn, linear_burn, darker_color, lighten, screen, color_dodge, add (linear dodge), lighter_color, overlay, soft_light, hard_light, vivid_light, linear_light, pin_light, hard_mix, difference, exclusion, subtract, divide, hue, saturation, color, luminosity; groups also pass_through.

set_transformB

Move/scale/rotate (degrees, clockwise)/flip a layer. width or height = target size on the canvas (keeps proportions). crop=[x,y,w,h] in SOURCE pixels of an image layer ([] removes it).

align_layerC

Align to the canvas: h left/center/right, v top/middle/bottom (null = leave), margin in px.

set_textC

Change a text layer's text or style.

set_shapeC

Change a shape layer (fill/stroke 'none' removes them).

set_fillC

Change a fill/gradient layer.

move_layerA

Reorder within its list: to=up/down/top/bottom, or index (0 = bottom). into= moves it inside a group; into="root" takes it out of its group.

group_layersC

Put layers (same level) into a new group. Groups have their own opacity, blend (default pass_through), mask and effects; an adjustment inside a non pass-through group affects only the group.

ungroupC

Dissolve a group: its layers go back in its place.

duplicate_layerC

Copy a layer (placed right above it).

remove_layerB

Delete a layer (undoable).

rasterize_layerB

Turn a text/shape/paint layer (with its effects and mask) into pixels.

merge_downC

Merge a layer into the one below.

flattenC

All visible layers into one image layer.

list_effectsA

Effect catalogue. Without name: names and one line each. With name: its parameters.

add_effectC

Filter or layer style on one layer (filters before the mask, styles after: shadow, stroke, glow).

update_effectC

Change an effect's params or switch it off/on. index = position in the layer's effects.

remove_effectC

Remove an effect from a layer.

move_effectC

Reorder effects (order matters: denoise before sharpen).

list_looksC

Ready-made looks for apply_look.

apply_lookB

Apply a look: as an adjustment layer on top (default) or as effects on one layer.

set_maskB

Layer mask (white = visible). kind rect/ellipse with box=[x,y,w,h] in document px, image with path (grayscale or alpha file, aligned to the layer content), or paint (to paint with mask_stroke; hide_all=true starts fully hidden). feather = soft edge px.

mask_strokeA

Paint on a layer's mask: mode hide or reveal, polyline [[x,y],...] in document px. Works on any mask (refine an AI cut-out); a layer without a mask gets a paint mask.

update_maskC

Invert, soften, weaken or move an existing mask.

remove_maskC

Remove a layer's mask.

crop_canvasB

Crop the canvas to a box (document px). Layers are kept whole: undoable without loss.

resize_canvasC

Change canvas size without scaling content. anchor: center, top, bottom_left, ...

expand_canvasB

Generative expand: add px on each side and fill the new borders (a new top layer masked to them). No prompt = classic fill (fine for sky, walls, plain backgrounds); with prompt or an AI service = generative.

resize_imageB

Scale the whole document (canvas and content), proportions kept: pass one side.

previewC

LOOK at the result: the real rendered image. box=[x,y,w,h] zooms on a detail (document px). layer= shows that layer alone. grid=true overlays a 10% grid labelled in document px.

analyze_imageB

Numbers about the image (or one layer, or a box): brightness, contrast, clipped shadows/ highlights, saturation, color cast, sharpness, dominant colors. Measure before correcting.

review_imageC

Check the document: text off-canvas or with low contrast, layers outside, blown highlights, upscaled images... each warning names the tool that fixes it. Not done while it warns.

ai_statusB

What AI is available here: background removal, inpaint backend, ComfyUI (generation, upscale), online services with a key (online.ready: service -> tasks) and the default one.

ai_servicesB

Online AI services (OpenAI, Gemini, Stability, OpenRouter, Replicate, Anthropic, Ollama, custom): which are ready, for which tasks (generate, edit, inpaint, describe, upscale, cutout), with which models. With service: set its models {task: model}, url, or default=true (used by backend="auto"). API keys are pasted by the user in the editor (AI models) or set as env vars, never here.

remove_backgroundB

AI cut-out as a layer MASK (the photo stays intact). keep=background inverts it. Models: isnet-general-use, u2net, u2net_human_seg (people), birefnet-general (best, slow). backend=stability uses the online service instead of the local model.

subject_boxC

Bounding box [x,y,w,h] of the main subject of an image layer, in document px.

inpaintA

Remove an object / fill an area: box=[x,y,w,h] document px, mask_path, or points=[[x,y],...] + size (a brush stroke: spot healing). No prompt = remove (classic fill). With prompt = generative fill (ComfyUI or an online service: backend=openai, gemini, stability, ...). The result is a patch on a NEW layer with a soft mask: move, fade or delete it like any layer.

generate_imageA

Text-to-image with the local ComfyUI or an online service (backend=openai, gemini, stability, openrouter, replicate), placed on a new layer (fit cover/contain).

edit_imageB

Image-to-image: redo an image layer (or a box of the picture, or all of it) following the prompt ("make it winter", "watercolor style"). strength 0..1: low keeps it, high reinvents it. The result is a NEW layer above, same place and mask; the original stays below.

describe_imageB

Image-to-text with a vision model (online with a key, or Ollama): describes the picture, a layer or a box, or answers question about it. Does not change the document.

upscaleB

More real pixels for an image layer (ComfyUI model, or backend=stability online, else Lanczos+sharpen). Its size on the canvas does not change.

auto_enhanceC

Measure and correct levels, white balance, vibrance, contrast. Adds normal, editable filters (an adjustment layer on top, or effects on layer=).

match_colorC

Make a layer's colors and tones match another layer (e.g. a pasted subject vs the background).

comfy_settingsC

Point pedit at a ComfyUI and choose its checkpoint/upscaler. Without args: current settings.

export_imageB

Write the image file (.png .jpg .webp .avif .tif). ONLY when the user asks for it. transparent=true keeps alpha (png/webp). box exports a region.

batchA

Many edits in ONE call and ONE undo step, all or nothing: [{"tool": "set_transform", "args": {...}}, ...]. look=true returns the preview too.

open_uiB

Open the web editor on THIS document (same in-memory document, live updates).

close_uiA

Stop the web editor started with open_ui.

report_issueC

Log what is broken/clumsy/missing (kind: bug, scomodo, sbagliato, manca, lento), then go on.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.8/5.0

Scored across 62 tools

Disambiguation5/5

Each tool targets a distinct resource or action, with clear separation between layer operations, effects, masks, canvas, AI, and project management. Overlaps are minimal and descriptions clarify usage (e.g., add_adjustment vs add_effect vs apply_look). Agents can reliably select the right tool.

Naming Consistency4/5

Mostly consistent snake_case with verb_noun or verb patterns (add_image, set_layer, list_effects). A few noun phrases (project_info, ai_status) and single verbs (undo, flatten) deviate slightly but remain readable and predictable.

Tool Count1/5

62 tools far exceed the typical 3-15 range and the 25+ threshold for 'too many', representing an extreme mismatch for a single MCP server despite the complex domain. The surface is overly broad and likely to overwhelm agents.

Completeness5/5

The tool set covers the full image editing lifecycle: project management, layers, effects, masks, canvas, AI features, export, and batch operations. Minor gaps like listing fonts or blend modes are negligible; core CRUD and advanced workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues