← Editmamei Connect

What your assistant can do here

The 25 tools this server offers an AI assistant, editing in GIMP. You don't call them yourself: describe the edit, and the assistant picks them. Beta: tools can change without notice.

Try these first

Copy any of these into a chat that has Editmamei Connect connected, with a photo of your own. Most edits land on their own layer, so "undo that" or "make it subtler" works too. Results come back as download links.

Start here

Your assistant replies with an upload link. Open it, add your photo, then come back to the chat.

I want to edit a photo with Editmamei Connect. Send me an upload link.

What can you do with this photo?

Clean it up

Make it brighter and fix the colors.

All tools

Getting images in and out

gimp_pingtest connection to the GIMP session and report session-start discovery signals.
gimp_overvieworientation brief for the gimp_* tool surface — the headless workflow contract, curve laws (one filter per channel; re-edit by filter_id, don't stack), ledger-truth vs.
gimp_open_documentopen an image and return its image id — the id every other gimp_* tool keys on.
gimp_close_documentclose an image WITHOUT saving.
gimp_save_xcfsave the live document as .xcf — filters stay in place and re-editable (the working file, not the deliverable).
gimp_exportwrite a FLATTENED deliverable — every live filter is baked in, and ALL metadata (EXIF/XMP/IPTC/GPS, thumbnail) is stripped.
gimp_inspectread-only state reader.
gimp_checkpointdisk-backed checkpoints — the substitute for undo in a session that has none.
gimp_create_documentcreate a new, empty image from scratch — not from a file (that is gimp_open_document).
gimp_place_imageplace another uploaded photo into an open image as a NEW LAYER (compositing).
gimp_request_uploadGet a one-time way to send an image from the user's device to this remote GIMP server.

Adjustments and effects

gimp_add_adjustmentappend (or, with filter_id, re-edit in place) a NON-DESTRUCTIVE adjustment filter — stays live and re-editable; nothing bakes into pixels until gimp_export, and gimp_filter op=delete removes it again.
gimp_add_effectappend (or, with filter_id, re-edit in place) one of a small allow-listed set of GEGL effect filters — vignette, black_white, motion_blur, lens_blur, add_noise, drop_shadow, outline, outer_glow, surface_blur — the same non-destructive, re-editable, maskable filter mechanism gimp_add_adjustment uses, sharing the SAME stack: gimp_filter's op=list/set_visibility/delete manage this tool's filters exactly as it manages gimp_add_adjustment's.
gimp_filtermanage the live filter stack: op list | set_visibility | delete.
gimp_bakebake a layer's live filters into its own pixels without merging it into anything else — the layer survives as itself, just with no more re-editable filters; a text layer stays a text layer (baking never rasterizes one).

Layers and canvas

gimp_crop_documentcrop the canvas to an explicit rectangle (left, top, width, height in document pixels) — not a scale (that is gimp_resize_image).
gimp_resize_imagescale the whole image up or down — not a crop (that is gimp_crop_document).
gimp_transform_canvasop 'rotate' (arbitrary `degrees` — straighten — plus `expand`) | 'flip' (`orientation` horizontal/vertical).
gimp_layerlayer management.
gimp_canvasextend the canvas — grow it and reposition the existing content within the larger frame, never shrink (use gimp_crop_document for that; REFUSED outright when either dimension would be smaller than the current one, and REFUSED when neither dimension actually grows).
gimp_convert_image_modeconvert the image's base color mode, rgb <-> grayscale — an indexed image is refused outright as a source.

My looks (saved filter recipes)

gimp_lookManage your saved looks.

Checking the result

gimp_get_previewrender the image with live filters applied and return it as a JPEG so you can look at it — fast (~0.25-0.45s at 1024px).
gimp_get_histogramstatistics for several channels from ONE render: mean, median, 1st/5th/95th/99th percentiles, and a 256-bin histogram per channel (`bins[v]` = pixel count at value v, 0-255).
gimp_comparemode='before_after': proxy base (no filters) vs proxy+filters — whole image or a `region` — per-channel mean/percentile deltas, optionally with paired before/after preview images (include_previews).