What it does
Pass exactly one of photo_id (a single photo, returns {"photo_id", "adjustments"}) or photo_ids (a list, applies the same adjustments to each independently and returns {"results": [...], "applied", "failed"}, one entry per photo so a bad id in the list does not lose the rest of the batch). adjustments maps slider names to numbers, for example {"exposure": 20, "contrast": 10, "temperature": 5}. The sliders, all -100..100 with 0 meaning no change unless a range is given: light: exposure, contrast, highlights, shadows, whites, blacks colour: temperature, tint, vibrance, saturation, and per colour hsl_hue_<c>, hsl_sat_<c>, hsl_lum_<c> for c in red, orange, yellow, green, aqua, blue, purple, magenta presence: texture, clarity, dehaze detail: sharp_amount (0..150), sharp_radius (10..200), nr_luminance (0..100), nr_color (0..100) split toning: split_shadow_hue, split_highlight_hue (0..360), split_shadow_sat, split_highlight_sat (0..100), split_balance effects: vignette_amount, vignette_midpoint (10..90), grain_amount (0..100, film grain) looks: color_grade (a grade key from list_presets), color_grade_intensity (0..100), fx_preset (an experimental preset key from list_presets, or "none"), fx_amount (0..100), auto_color (0..100, Auto Color strength; see apply_auto_color), auto_color_mode ("color" or "contrast"), lut_name (a LUT from list_luts, or "none"), lut_strength (0..100) tone_curve_<luminance|red|green|blue>: a list of [x, y] points in 0..1 crop_x, crop_y, crop_w, crop_h (pixels) To crop by aspect ratio without pixel maths, use crop_photo; to change only part of the frame, use mask_adjust. Values are absolute slider positions, not deltas, and an analysed photo nobody has edited already sits at its scene preset's values: for a relative request ("a stop brighter" = exposure +50, "a bit warmer"), read the current value with get_photo_edits and add to it. Values are clamped to range and unknown names are rejected with the valid list. New values overwrite previous values per slider; other sliders keep their settings. The sliders run the Lightroom way: negative highlights recovers bright areas, exposure +50 is one stop. A photo edited on imagic's legacy engine is moved to the current one first, keeping its look, so these values mean the same on every photo.
Parameters
| Name | Type | Required |
|---|---|---|
photo_id |
int | None |
optional |
adjustments |
dict | None |
optional |
photo_ids |
list[int] | None |
optional |
Asking for it
You do not call this by name. You say what you want, and the agent picks the tool:
Apply the warm film look to every keeper in this folder and export JPEGs at quality 92.
The rest of the editing tools
Workflows that use it
- Batch edit RAW files with an AI agent — batch edit RAW files AI
Where it runs
On your machine. imagic's MCP server is a local process that your AI client starts; the photos never leave your disk and nothing is uploaded. That is true of every tool in the reference, including this one.
To call it you need an MCP client connected to imagic. Setup takes about three minutes for Claude Code, Cursor, VS Code, Codex, Gemini CLI and ten others.
Give your AI the whole pipeline
apply_adjustments is one of 30 tools in imagic Max. The free 500-export trial includes all of them.