Contenta Converter
Reference, version 9.0.41

Contenta Converter CLI and MCP reference

contenta is the command line of Contenta Converter, installed with the desktop app. contenta serve runs its MCP server for AI agents. This page lists every command, option, exit code and MCP tool.

contenta <command> [arguments] [options]
contenta convert photo.cr2 -o out --format jpg

Generated from contenta catalog, version 9.0.41. Every command also has --help. Older spellings of some commands and options still work, so existing scripts keep running, but this page and --help leave them out. The same reference is on GitHub: cli.md and mcp-server.md.

Commands

CommandWhat it does
contenta ai-transform <input>AI-powered image transformation via Google Gemini.
contenta batch <input-dir>Batch convert images in a directory. With --json, stdout is one result object {"type":"summary","success":true|false,"exitCode":N,"succeeded":N,...}. Add --progress for one line per finished output before it, {"type":"progress","file":NAME,"status":"done|skipped|failed","completed":N,"total":T} (the result object stays last): skip the lines that start with {"type":"progress".
contenta catalogPrint every CLI command and MCP tool as JSON (for AI agents, docs and the website).
contenta convert <input>Convert a single image file.
contenta effectsList all available image effects.
contenta formatsList supported input and output formats.
contenta info <file>Show format detection and metadata for an image file.
contenta pdf-album <files>...Create a PDF photo album from multiple images. During the trial the PDF always carries the trial watermark.
contenta pdf-merge <files>...Append multiple PDF files into a single PDF (page-level merge, no rasterization). During the trial the PDF always carries the trial watermark.
contenta profileSave, load, or validate conversion profiles.
contenta profile load <file>Load and display a profile from a JSON file.
contenta profile save <file>Save current options as a profile JSON file.
contenta profile validate <file>Validate a profile JSON file.
contenta register <email> <key>Register your license key.
contenta serveStart MCP server for AI agent integration.
contenta slideshow <files>...Create a video slideshow from images. During the trial the video always ends with the branding end card.
contenta statusShow license status, tools availability, and version info.
contenta watch <dir>Watch a directory and auto-convert new/changed images.

Output options

These options work the same way in the four ContentaSoft command lines. catalog and serve take none of them: catalog always prints JSON and serve keeps stdout for the MCP protocol.

OptionDescription
--jsonPrint one JSON object on stdout (success, exitCode, error, warnings, errors, outputs + the command's fields); nothing else goes to stdout.
--plainPlain text: no colours, no escape codes, ASCII tables. Automatic when stdout is a pipe or a file, or when NO_COLOR is set.
--quietPrint errors only.
--verboseVerbose output: details and, on an error, the stack trace.
--progressWith --json: before the result object, one line per finished item, {"type":"progress","file":NAME,"completed":N,"total":T}.

Exit codes

The same table in the four ContentaSoft command lines. --help ends with it and catalog lists it.

CodeNameMeaning
0okOK: everything asked for was done.
1unexpected_errorUnexpected error (a bug or a broken install); see the log.
2invalid_argumentsInvalid arguments: unknown option, missing or malformed value; nothing was done.
3input_not_foundInput not found or unreadable; nothing was done.
4partial_failurePartial failure: some items succeeded, some failed.
5all_failedAll failed: no item succeeded.
6license_refusedLicense or trial refused the run.
130cancelledCancelled (Ctrl+C).

JSON output

With --json a command prints one JSON object on stdout and nothing else; logs go to stderr. Every object has these keys, beside the fields of the command itself:

KeyMeaning
successtrue when the run did everything it was asked to do
exitCodethe process exit code (see Exit codes)
errorone sentence when the run failed, otherwise null
warningsnotes about the run that did not stop it
errorsone entry per item that failed (a batch keeps going)
outputsthe files the run wrote

Trial keys, present only when they apply:

KeyMeaning
trialWatermarkedthe output carries the trial watermark
trialExportthe output is a trial export
trialNoticeone sentence about the trial, for the user
freeFilesRemainingfree full-quality files left on this computer
buyUrlwhere to buy a licence

With --json --progress a long command first prints one progress line per finished item (NDJSON), then the result object last. A script that wants only the result skips the lines that start with {"type":"progress". Progress keys:

KeyMeaning
typealways "progress"
filethe file that finished
completeditems finished so far
totalitems in the run

Command reference

contenta ai-transform

AI-powered image transformation via Google Gemini.

contenta ai-transform <input> [options]
ArgumentDescription
<input>Input image file path.
OptionTypeDescription
--promptstringAI transformation prompt (required unless --remove-background).
--api-keystringGemini API key (or set GEMINI_API_KEY env var).
--modelstringModel tier: fast (default), pro or lite; or an explicit Gemini model ID.
--sizestringOutput size: 1K (default), 2K or 4K (lite makes 1K only).
--outputstringOutput file path.
--remove-backgroundbooleanRemove the background (no prompt needed; a given prompt is not used).
--bg-modestringBackground mode: white, transparent, custom.
--bg-colorstringCustom background color (hex #RRGGBB).

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta batch

Batch convert images in a directory. With --json, stdout is one result object {"type":"summary","success":true|false,"exitCode":N,"succeeded":N,...}. Add --progress for one line per finished output before it, {"type":"progress","file":NAME,"status":"done|skipped|failed","completed":N,"total":T} (the result object stays last): skip the lines that start with {"type":"progress".

contenta batch <input-dir> [options]
ArgumentDescription
<input-dir>Input directory.
OptionTypeDescription
--includestring[]Only files matching this pattern (e.g. *.jpg, or jpg;png); repeat the option or separate patterns with ';' or ','.
--excludestring[]Leave out files matching this pattern: a glob such as *.png or thumb_*, or text in the path below the folder; repeat the option or separate patterns with ';' or ','.
--recursivebooleanInclude subdirectories.
--workersintegerParallel workers (default: automatic, see WorkerPolicy).
--reportstringWrite a CSV report to this file: one row per output attempted, with the input, done/skipped/failed, the files written and the error.
--outputstringOutput directory.
--formatstringOutput format.
--qualityintegerQuality 1-100.
--resizestringResize to WxH.
--resize-modestringResize mode: fit, fill, stretch, longest-edge, shortest-edge, fit-with-background, crop-to-aspect (default: fit). fit-with-background fits the picture inside --resize and fills the rest with --background.
--background-colorstringColour around the picture with --resize-mode fit-with-background: white, black, grey, lightgrey or #RRGGBB (default: white). --resize 2000x2000 --resize-mode fit-with-background --background white makes white square product images.
--resize-percentintegerResize by percentage.
--dont-enlargebooleanDon't upscale smaller images.
--dpiintegerSet DPI.
--effectsstring[]Effects, separated by spaces or commas, each name or name:key=value (e.g. sepia,sharpen:window=5). Run 'contenta effects' for names and parameters.
--lutstringApply a 3D LUT (.cube file) to every image, after resize and the other effects. With --profile it is added to the profile, in place of the profile's own LUT if it has one.
--lut-strengthintegerHow much of the LUT to apply, 0 to 100 (default 100). Needs --lut, or a --profile that has a LUT.
--watermarkstringAdd a white text watermark (width = 10% of the image).
--watermark-positionintegerWatermark position 0-8 (default: 8 = bottom-right).
--watermark-opacityintegerWatermark opacity 0-100, 100 = fully visible (default: 70).
--copyrightstringCopyright metadata.
--creatorstringCreator metadata.
--filename-patternstringOutput filename pattern (default: {originalname}). Tokens: {originalname} {counter:3} {today} {datetime} {size} and the Batch Rename tokens {name} {ext} {date} {date:FORMAT} {time} {year} {month} {camera} {make} {lens} {iso} {aperture} {focal} {w} {h} {gps} {seq} {seq:N} {folder}, filled from the source photo ({date} = date taken, {today} = the run date).
--overwritebooleanOverwrite existing.
--skip-existingbooleanSkip an input whose output already exists (reported as skipped), so a re-run only converts what is missing.
--color-spacestringColor space: srgb, adobe-rgb, prophoto-rgb, preserve. srgb (the default) converts a source saved in another color space, such as an iPhone's Display P3; preserve leaves it as it is.
--png-compressionintegerPNG compression, zlib level 0-9 (0 = none/fastest, 9 = smallest; default 2).
--webp-losslessbooleanWebP lossless.
--jxl-losslessbooleanJXL lossless.
--preserve-metadatabooleanPreserve metadata.
--profilestringLoad profile from JSON.
--lens-correctionsbooleanApply the lens corrections a DNG carries (distortion, vignetting, shading; on by default; --lens-corrections false turns them off).
--titlestringSet title metadata.
--descriptionstringSet description metadata.
--keywordsstringSet keywords (comma-separated).
--rightsstringSet rights metadata.
--creator-citystringCreator city.
--creator-countrystringCreator country.
--creator-emailstringCreator email.
--creator-urlstringCreator URL.
--gpsstringGPS coordinates (lat,lon or lat,lon,alt).
--datetimestringDate/time override (ISO 8601).
--aspect-ratiostringCustom aspect ratio (e.g., 16:9).
--dpi-xintegerHorizontal DPI.
--dpi-yintegerVertical DPI.
--sizesstringEmit multiple sizes at once: pixels (16,32,48,64) or scale factors (1x,2x,3x).
--size-presetstringBuilt-in size set: favicon, appicon, srcset.
--base-sizeintegerBase edge in px that scale factors (Nx) multiply (default: 512).
--subfolder-modestringSubfolder mode: flatten, preserve, template.
--subfolder-patternstringSubfolder template pattern.
--backup-originalsbooleanBackup originals.
--backup-dirstringBackup directory.
--pdf-pageintegerConvert only this page (0-based: 0 is the first) of a multi-page PDF or TIFF. Without it every page is converted: one file each (name_page001.jpg, name_page002.jpg, ...), or one multi-page file when the output format is pdf or tiff.
--zip-outputbooleanAfter the batch, also pack every converted file into contenta-converter-images.zip in the output folder (the files stay in place; an existing archive of that name is replaced).
--zip-split-sizeintegerWith --zip-output: split into independent archives (contenta-converter-images_part2.zip, _part3...), each holding at most this many MB of files, every one opens on its own; a single larger file gets an archive to itself (default: 25).
--rename-patternstringAfter the batch, rename every converted file with the app's Batch Rename tokens: {name} {ext} {date} {date:FORMAT} {time} {year} {month} {camera} {make} {lens} {iso} {aperture} {focal} {w} {h} {gps} {seq} {seq:N} {folder}. The extension is kept; a name already taken gets _1, _2...
--white-balancestringRAW white balance: camera, auto, manual.
--color-temperatureintegerManual WB: temperature of the light the picture was taken in, in Kelvin (2000-10000, default 5500 = daylight; a lower value gives a cooler picture, a higher one a warmer picture).
--denoisingbooleanApply wavelet denoising during RAW decode (off by default).
--denoising-levelintegerDenoising threshold (0-1000, default 300); giving a level turns denoising on.
--sharpness-boostbooleanSharpen after RAW decode (on by default for RAW input, as in the app; --sharpness-boost false turns it off; off by default with --raw-16bit).
--color-boostbooleanApply saturation boost after RAW decode.
--contrast-boostbooleanApply contrast boost after RAW decode.
--exposurenumberRAW exposure compensation in stops (EV), -3.0 to 3.0, default 0: +1 doubles the light, -1 halves it.
--fast-raw-decodebooleanFaster RAW decode at half resolution when the output is at most half the size of the sensor image (slightly softer; for web and preview exports).
--raw-16bitbooleanDecode RAW at 16 bits per channel and write a 16-bit TIFF. Needs -f tiff and no effects, RAW boosts, watermark or embedded preview (they work on 8 bits per channel); otherwise the file is written with 8 bits and the result carries a warning. Turns the default RAW sharpening off.
--embedded-previewbooleanConvert the JPEG preview the camera stored in the RAW file instead of developing the RAW data: the fastest way, but the preview can be smaller than the full picture, already has the camera's look, and is 8-bit; white balance, denoising and exposure do not apply to it. A file without a preview is developed as usual.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta catalog

Print every CLI command and MCP tool as JSON (for AI agents, docs and the website).

contenta catalog

contenta convert

Convert a single image file.

contenta convert <input> [options]
ArgumentDescription
<input>Input image file path.
OptionTypeDescription
--outputstringOutput directory (default: same as input).
--formatstringOutput format (jpg, png, webp, tiff, bmp, gif, jxl, heic, avif, svg, pdf, ico).
--qualityintegerQuality 1-100.
--resizestringResize to WxH (e.g., 1920x1080).
--resize-modestringResize mode: fit, fill, stretch, longest-edge, shortest-edge, fit-with-background, crop-to-aspect (default: fit). fit-with-background fits the picture inside --resize and fills the rest with --background.
--background-colorstringColour around the picture with --resize-mode fit-with-background: white, black, grey, lightgrey or #RRGGBB (default: white). --resize 2000x2000 --resize-mode fit-with-background --background white makes white square product images.
--resize-percentintegerResize by percentage (1-100).
--dont-enlargebooleanDon't upscale smaller images.
--dpiintegerSet output DPI.
--effectsstring[]Effects, separated by spaces or commas, each name or name:key=value (e.g. sepia,sharpen:window=5). Run 'contenta effects' for names and parameters.
--lutstringApply a 3D LUT (.cube file) to every image, after resize and the other effects. With --profile it is added to the profile, in place of the profile's own LUT if it has one.
--lut-strengthintegerHow much of the LUT to apply, 0 to 100 (default 100). Needs --lut, or a --profile that has a LUT.
--watermarkstringAdd a white text watermark (width = 10% of the image).
--watermark-positionintegerWatermark position 0-8 (default: 8 = bottom-right).
--watermark-opacityintegerWatermark opacity 0-100, 100 = fully visible (default: 70).
--copyrightstringSet copyright metadata.
--creatorstringSet creator metadata.
--filename-patternstringOutput filename pattern (default: {originalname}). Tokens: {originalname} {counter:3} {today} {datetime} {size} and the Batch Rename tokens {name} {ext} {date} {date:FORMAT} {time} {year} {month} {camera} {make} {lens} {iso} {aperture} {focal} {w} {h} {gps} {seq} {seq:N} {folder}, filled from the source photo ({date} = date taken, {today} = the run date).
--overwritebooleanOverwrite existing files.
--skip-existingbooleanSkip an input whose output already exists (reported as skipped), so a re-run only converts what is missing.
--color-spacestringColor space: srgb, adobe-rgb, prophoto-rgb, preserve. srgb (the default) converts a source saved in another color space, such as an iPhone's Display P3; preserve leaves it as it is.
--png-compressionintegerPNG compression, zlib level 0-9 (0 = none/fastest, 9 = smallest; default 2).
--webp-losslessbooleanWebP lossless mode.
--jxl-losslessbooleanJXL lossless mode.
--preserve-metadatabooleanPreserve original metadata.
--profilestringLoad conversion profile from JSON file.
--lens-correctionsbooleanApply the lens corrections a DNG carries (distortion, vignetting, shading; on by default; --lens-corrections false turns them off).
--titlestringSet title metadata.
--descriptionstringSet description metadata.
--keywordsstringSet keywords metadata (comma-separated).
--rightsstringSet rights/usage terms metadata.
--creator-citystringSet creator city metadata.
--creator-countrystringSet creator country metadata.
--creator-emailstringSet creator email metadata.
--creator-urlstringSet creator URL metadata.
--gpsstringSet GPS coordinates (lat,lon or lat,lon,alt).
--datetimestringSet date/time override (ISO 8601).
--aspect-ratiostringCustom aspect ratio (e.g., 16:9).
--dpi-xintegerSet horizontal DPI.
--dpi-yintegerSet vertical DPI.
--sizesstringEmit multiple sizes at once: pixels (16,32,48,64) or scale factors (1x,2x,3x).
--size-presetstringBuilt-in size set: favicon, appicon, srcset.
--base-sizeintegerBase edge in px that scale factors (Nx) multiply (default: 512).
--subfolder-modestringSubfolder mode: flatten, preserve, template.
--subfolder-patternstringSubfolder template pattern (e.g., {year}/{month}).
--backup-originalsbooleanBackup original files before conversion.
--backup-dirstringBackup directory path.
--pdf-pageintegerConvert only this page (0-based: 0 is the first) of a multi-page PDF or TIFF. Without it every page is converted: one file each (name_page001.jpg, name_page002.jpg, ...), or one multi-page file when the output format is pdf or tiff.
--white-balancestringRAW white balance: camera, auto, manual.
--color-temperatureintegerManual WB: temperature of the light the picture was taken in, in Kelvin (2000-10000, default 5500 = daylight; a lower value gives a cooler picture, a higher one a warmer picture).
--denoisingbooleanApply wavelet denoising during RAW decode (off by default).
--denoising-levelintegerDenoising threshold (0-1000, default 300); giving a level turns denoising on.
--sharpness-boostbooleanSharpen after RAW decode (on by default for RAW input, as in the app; --sharpness-boost false turns it off; off by default with --raw-16bit).
--color-boostbooleanApply saturation boost after RAW decode.
--contrast-boostbooleanApply contrast boost after RAW decode.
--exposurenumberRAW exposure compensation in stops (EV), -3.0 to 3.0, default 0: +1 doubles the light, -1 halves it.
--fast-raw-decodebooleanFaster RAW decode at half resolution when the output is at most half the size of the sensor image (slightly softer; for web and preview exports).
--raw-16bitbooleanDecode RAW at 16 bits per channel and write a 16-bit TIFF. Needs -f tiff and no effects, RAW boosts, watermark or embedded preview (they work on 8 bits per channel); otherwise the file is written with 8 bits and the result carries a warning. Turns the default RAW sharpening off.
--embedded-previewbooleanConvert the JPEG preview the camera stored in the RAW file instead of developing the RAW data: the fastest way, but the preview can be smaller than the full picture, already has the camera's look, and is 8-bit; white balance, denoising and exposure do not apply to it. A file without a preview is developed as usual.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta effects

List all available image effects.

contenta effects

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta formats

List supported input and output formats.

contenta formats [options]
OptionTypeDescription
--inputbooleanShow input formats only.
--outputbooleanShow output formats only.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta info

Show format detection and metadata for an image file.

contenta info <file>
ArgumentDescription
<file>Image file path.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta pdf-album

Create a PDF photo album from multiple images. During the trial the PDF always carries the trial watermark.

contenta pdf-album <files>... [options]
ArgumentDescription
<files>Input image files.
OptionTypeDescription
--outputstringOutput PDF path.
--photos-per-pageintegerPhotos per page (1, 2, 4, 6, 8, 10, 12, 16, 24, 48).
--page-sizestringPage size: A4, Letter, Legal.
--orientationstringOrientation: Auto, Portrait, Landscape.
--backgroundstringBackground color (hex, e.g., #FF000000).
--background-imagestringBackground image path.
--background-modestringBackground image mode: stretch, center, tile.
--title-pagestringTitle page image path.
--title-page-modestringTitle page image mode: stretch, center, tile.
--show-filenamesbooleanShow filenames below photos.
--show-filenames-colorstringFilename label color (hex, e.g., #FFFFFFFF).
--embed-qualityintegerJPEG quality 1-100 for non-JPEG inputs (PNG, TIFF, RAW...); JPEG inputs are embedded unchanged.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta pdf-merge

Append multiple PDF files into a single PDF (page-level merge, no rasterization). During the trial the PDF always carries the trial watermark.

contenta pdf-merge <files>... [options]
ArgumentDescription
<files>Input PDF files (appended in argument order).
OptionTypeDescription
--outputstringOutput PDF path.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta profile

Save, load, or validate conversion profiles.

Subcommands: profile load, profile save, profile validate.

contenta profile load

Load and display a profile from a JSON file.

contenta profile load <file>
ArgumentDescription
<file>Profile JSON path to load.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta profile save

Save current options as a profile JSON file.

contenta profile save <file> [options]
ArgumentDescription
<file>Output profile JSON path.
OptionTypeDescription
--formatstringOutput format.
--qualityintegerQuality 1-100.
--resizestringResize to WxH.
--resize-modestringResize mode: fit, fill, stretch, longest-edge, shortest-edge, fit-with-background, crop-to-aspect (default: fit). fit-with-background fits the picture inside --resize and fills the rest with --background.
--background-colorstringColour around the picture with --resize-mode fit-with-background: white, black, grey, lightgrey or #RRGGBB (default: white). --resize 2000x2000 --resize-mode fit-with-background --background white makes white square product images.
--effectsstring[]Effects, separated by spaces or commas, each name or name:key=value (e.g. sepia,sharpen:window=5). Run 'contenta effects' for names and parameters.
--copyrightstringCopyright metadata.
--creatorstringCreator metadata.
--overwritebooleanOverwrite existing files.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta profile validate

Validate a profile JSON file.

contenta profile validate <file>
ArgumentDescription
<file>Profile JSON path to validate.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta register

Register your license key.

contenta register <email> <key>
ArgumentDescription
<email>Registration email.
<key>25-character license key.

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta serve

Start MCP server for AI agent integration.

contenta serve

contenta slideshow

Create a video slideshow from images. During the trial the video always ends with the branding end card.

contenta slideshow <files>... [options]
ArgumentDescription
<files>Input image files.
OptionTypeDescription
--outputstringOutput video file path.
--templatestringTemplate: tiktok, shorts, facebook-reels, snapchat, youtube, linkedin, twitter, instagram, pinterest.
--durationintegerDuration per slide in ms.
--transitionintegerTransition duration in ms.
--ken-burnsstringKen Burns mode: zoom-in, zoom-out, pan-left, pan-right, pan-up, pan-down, alternating, off.
--no-brandingbooleanDisable branding end card (registered copies only; during the trial the end card is always added).
--audiostringBackground audio file path (MP3, WAV, M4A).
--loop-audiobooleanLoop audio if shorter than video.
--formatstringOutput format: mp4, webm.
--qualityintegerCRF quality (0-51, lower = better).
--fpsintegerFrames per second.
--encoderstringVideo encoder: auto, libx264, h264_nvenc, h264_qsv, h264_amf.
--text-overlaystring[]Text overlay (format: text or slide:text:position).

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta status

Show license status, tools availability, and version info.

contenta status

Output options: --json, --plain, --quiet, --verbose, --progress.

contenta watch

Watch a directory and auto-convert new/changed images.

contenta watch <dir> [options]
ArgumentDescription
<dir>Directory to watch.
OptionTypeDescription
--includestring[]Only files matching this pattern (e.g. *.jpg, or jpg;png); repeat the option or separate patterns with ';' or ','.
--excludestring[]Leave out files matching this pattern (as batch --exclude: a glob such as *.png or thumb_*, or text in the path below the folder); repeat the option or separate patterns with ';' or ','.
--debounceintegerDebounce delay in ms.
--recursivebooleanWatch subdirectories.
--outputstringOutput directory.
--formatstringOutput format.
--qualityintegerQuality 1-100.
--profilestringLoad profile from JSON.
--white-balancestringRAW white balance: camera, auto, manual.
--color-temperatureintegerManual WB: temperature of the light the picture was taken in, in Kelvin (2000-10000, default 5500 = daylight; a lower value gives a cooler picture, a higher one a warmer picture).
--denoisingbooleanApply wavelet denoising during RAW decode (off by default).
--denoising-levelintegerDenoising threshold (0-1000, default 300); giving a level turns denoising on.
--sharpness-boostbooleanSharpen after RAW decode (on by default for RAW input, as in the app; --sharpness-boost false turns it off; off by default with --raw-16bit).
--color-boostbooleanApply saturation boost after RAW decode.
--contrast-boostbooleanApply contrast boost after RAW decode.
--exposurenumberRAW exposure compensation in stops (EV), -3.0 to 3.0, default 0: +1 doubles the light, -1 halves it.
--fast-raw-decodebooleanFaster RAW decode at half resolution when the output is at most half the size of the sensor image (slightly softer; for web and preview exports).
--raw-16bitbooleanDecode RAW at 16 bits per channel and write a 16-bit TIFF. Needs -f tiff and no effects, RAW boosts, watermark or embedded preview (they work on 8 bits per channel); otherwise the file is written with 8 bits and the result carries a warning. Turns the default RAW sharpening off.
--embedded-previewbooleanConvert the JPEG preview the camera stored in the RAW file instead of developing the RAW data: the fastest way, but the preview can be smaller than the full picture, already has the camera's look, and is 8-bit; white balance, denoising and exposure do not apply to it. A file without a preview is developed as usual.

Output options: --json, --plain, --quiet, --verbose, --progress.

Effects

Effect names for --effects and the MCP effects parameter, as contenta effects lists them.

EffectCategoryWhat it doesParameters
blackwhiteColorBlack & Whiter: 0 to 100 (default 30), g: 0 to 100 (default 59), b: 0 to 100 (default 11)
sepiaColorSepianone
colorbrightnesscontrastColorBrightness / Contrastbrightness: -100 to 100 (default 0), contrast: -100 to 100 (default 0), gamma: 0.1 to 5.0 (default 1.0), invert: true|false
lightenColorLightenlevel: 1 to 100 (default 30)
darkenColorDarkenlevel: 1 to 100 (default 30)
contrastColorContrast Only (maps to fastc 'colors')level: -100 to 100 (default 20)
colortoneColorColor Tonered: -100 to 100 (default 0), green: -100 to 100 (default 0), blue: -100 to 100 (default 0), saturation: 0 to 100 (default 50)
huesaturationColorHue / Saturationhue: -180 to 180 (default 0), saturation: -100 to 100 (default 0)
autocolorlevelColorAuto Color Levelnone
colorlevelColorColor Levelsinput_low: 0 to 255 (default 0), input_high: 0 to 255 (default 255), output_low: 0 to 255 (default 0), output_high: 0 to 255 (default 255), gamma: 0.1 to 5.0 (default 1.0), color_channel: 0 to 3 (default 0)
colorbalanceColorColor Balancepreserve_lum: true|false, tone_region: 0 to 2 (default 1), cyan_red: -100 to 100 (default 0), magenta_green: -100 to 100 (default 0), yellow_blue: -100 to 100 (default 0)
colortempColorColor Temperaturetemperature: -100 to 100 (default 0), 0 = unchanged, negative = cooler, positive = warmer
invertColorInvert Colorsnone
histogramequalizationColorHistogram Equalizationnone
saturationequalizationColorSaturation Equalizationnone
splashColorSplash (Color Keep)level: 0 to 100 (default 50)
posterizeColorPosterizelevel: 2 to 32 (default 6)
thresholdColorThresholdlevel: 0 to 255 (default 128)
solarizeColorSolarizelevel: 0 to 255 (default 128)
applylutColorApply a 3D LUT (.cube, in-process)path: a .cube file, strength: 0 to 100 (default 100)
autoenhanceEnhanceAuto-Enhance (in-process)strength: 0 to 100 (default 50)
clarityEnhanceClarity (in-process)amount: 0 to 100 (default 40)
dehazeEnhanceDehaze (in-process)amount: 0 to 100 (default 50)
aidenoiseEnhanceAI Denoise (in-process)strength: 0 to 100 (default 50)
blurBlur / SharpenBlurwindow: 1 to 30 (default 3)
sharpenBlur / SharpenSharpenwindow: 1 to 30 (default 3)
medianBlur / SharpenMedian Filterwindow: 1 to 10 (default 2)
refocusBlur / SharpenRefocus (Unsharp Mask)window: 1 to 20 (default 5)
motionblurBlur / SharpenMotion Blurspeed: 1 to 50 (default 10), angle: 0 to 360 (default 0)
radialblurBlur / SharpenRadial Blurlevel: 1 to 30 (default 5)
zoomblurBlur / SharpenZoom Blurlevel: 1 to 30 (default 5)
pencilsketchArtisticPencil Sketchpensize: 1 to 20 (default 3), rough: 0 to 100 (default 50)
oilpaintArtisticOil Paintpensize: 1 to 20 (default 4), rough: 0 to 100 (default 50)
embossArtisticEmbossangle: 0 to 360 (default 45)
oldphotoArtisticOld Photowindow: 1 to 20 (default 3)
glowArtisticGlowsoft: 1 to 30 (default 5), brightness: -50 to 50 (default 10), contrast: -50 to 50 (default -10)
softportraitArtisticSoft Portraitsoft: 1 to 30 (default 5), brightness: -50 to 50 (default 5), warm: 0 to 30 (default 10)
softedgeArtisticSoft Edgesoft: 1 to 30 (default 5)
noisyArtisticAdd Noiseamount: 1 to 50 (default 10), iscolor: true|false
mosaicDistortionMosaic / Pixelatesize: 2 to 80 (default 10)
shiftDistortionShiftlevel: 1 to 50 (default 10)
ribbonDistortionRibbonamplitude: 1 to 30 (default 10), frequency: 1 to 20 (default 5)
bulgeDistortionBulgelevel: -100 to 100 (default 40)
twistDistortionTwisttwist: -90 to 90 (default 30), size: 10 to 100 (default 50)
illusionDistortionIllusionlevel: 1 to 20 (default 5)
waveDistortionWavewavelength: 10 to 200 (default 40), amplitude: 1 to 50 (default 10)
rippleDistortionRipplelength: 10 to 200 (default 40), amount: 1 to 50 (default 10), type: sin|square
perspectiveCorrectionPerspective Correction (in-process)vertical: -100 to 100 (default 0), horizontal: -100 to 100 (default 0)
cropTransformsCrop image (in-process)left: 0 to 100, top: 0 to 100, right: 0 to 100, bottom: 0 to 100 (percent of the picture trimmed from each edge, default 0); or x, y, width, height: pixels from the top-left corner. The crop cuts the picture first and a resize then sizes what is left: both forms count on the picture BEFORE the resize (after a flip or rotate placed before the crop), so the rectangle is in pixels of the source, not of the resized output
flipTransformsFlip (in-process)direction: horizontal|vertical (default horizontal)
rotateTransformsRotate (in-process)angle: 0 to 360 (default 90)
watermarkTransformsText/image watermark (in-process)text, placement 0-8, transparency 0-100, font

MCP server

contenta serve exposes 13 tools over the Model Context Protocol (stdio, newline-delimited JSON-RPC 2.0; protocol versions 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05), so an AI agent such as Claude Code, Claude Desktop, Cursor or Codex can work on files on your PC. Server name: contenta-converter. Pass absolute paths to every tool.

{
  "mcpServers": {
    "contenta-converter": {
      "command": "contenta",
      "args": [
        "serve"
      ]
    }
  }
}

In Claude Code one command adds it: claude mcp add contenta-converter -- contenta serve. Stdout carries JSON-RPC only, ping is answered while a tool runs, notifications/cancelled stops a running call, and a tool that cannot do its job returns isError: true with a sentence that names the problem.

ToolTitleRead-onlyDestructiveIdempotentNetwork
ai_transformAI transform image (Gemini)noyesnoyes
batch_convertBatch convert imagesnononono
convert_imageConvert imagenononono
create_pdf_albumCreate PDF albumnoyesnono
create_slideshowCreate video slideshownoyesnono
detect_formatDetect image formatyesnoyesno
get_file_infoGet image file infoyesnoyesno
get_license_statusGet license and trial statusyesnoyesno
list_effectsList effectsyesnoyesno
list_formatsList supported formatsyesnoyesno
merge_pdfsMerge PDFsnoyesnono
read_metadataRead image metadatayesnoyesno
write_metadataWrite image metadatanoyesnono

Destructive: the tool can replace a file that already exists. Network: the tool uses the internet.

ai_transform

writes filescan replace filesuses the internet

AI transform image (Gemini). AI-powered image transformation via Google Gemini (edit, remove background, enhance). During the trial, results beyond the free clean outputs carry the trial watermark.

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the source image.
promptstringnoTransformation prompt describing what to do (e.g., 'Make it brighter'). Required unless remove_background is true.
api_keystringnoGoogle Gemini API key (or set GEMINI_API_KEY env var).
output_pathstringnoOutput file path (default: {name}_ai.{ext} next to input).
modelstringnoModel tier: fast (default), pro or lite; or an explicit Gemini model ID.
sizestringnoOutput size: 1K (default), 2K or 4K (lite makes 1K only). One of: 1K, 2K, 4K.
transparent_backgroundbooleannoRequest transparent background (PNG output).
remove_backgroundbooleannoRemove the background; no prompt needed (the CLI's --remove-background).
bg_modestringnoWith remove_background: white (default), transparent or custom. One of: white, transparent, custom.
bg_colorstringnoWith bg_mode custom: the background colour as #RRGGBB.

batch_convert

writes files

Batch convert images. Convert multiple images at once. Provide file paths or a directory. A multi-page PDF or TIFF converts every page: one output file per page, or one multi-page file when the output format is PDF or TIFF (pdf_page picks a single page); total counts outputs, inputs counts the files given.

ParameterTypeRequiredDescription
input_pathsarray of stringnoArray of absolute file paths to convert.
input_dirstringnoDirectory to scan for images (alternative to input_paths).
output_dirstringnoOutput directory.
overwritebooleannoReplace an output file that already exists (default: false, a new name is chosen instead).
skip_existingbooleannoLeave an input alone when its output already exists (reported as skipped), so a re-run only converts what is missing (default: false).
formatstringnoOutput format (jpg, png, webp, etc.)
qualityintegernoOutput quality. Range: 1 to 100.
resize_widthintegernoTarget width (alone: the height follows the aspect ratio). Minimum: 1.
resize_heightintegernoTarget height (alone: the width follows the aspect ratio). Minimum: 1.
resize_modestringnoResize mode: fit (default), fill, stretch, longest-edge, shortest-edge, fit-with-background, crop-to-aspect. fill, stretch, fit-with-background and crop-to-aspect need both resize_width and resize_height.
backgroundstringnoColour around the picture with resize_mode fit-with-background: white, black, grey, lightgrey or #RRGGBB (default: white). resize_width 2000 + resize_height 2000 + resize_mode fit-with-background + background white = white square product images.
effectsarray of stringnoEffects to apply in order, each name or name:key=value (e.g. ["sepia", "sharpen:window=5"]; a comma list "sepia,sharpen" works too). Names and parameters: list_effects. A crop cuts the picture BEFORE the resize (its x, y, width, height are pixels of the source; left, top, right, bottom are percent): the resize then sizes what is left. An unknown name fails the call before anything is converted.
lut_pathstringnoAbsolute path to a 3D LUT (.cube) applied to every image, after resize and the other effects (the CLI's --lut). A file that is missing or not a 3D .cube LUT fails the call before anything is converted.
lut_strengthintegernoHow much of the LUT to apply, 0-100 (default 100). Needs lut_path. Range: 0 to 100.
watermark_textstringnoText watermark drawn on every output in white, its width 10% of the image (the CLI's --watermark). Nothing is drawn without it.
watermark_positionintegernoWhere the watermark goes, 0-8 read left to right, top to bottom: 0 top-left, 1 top-centre, 2 top-right, 3 middle-left, 4 centre, 5 middle-right, 6 bottom-left, 7 bottom-centre, 8 bottom-right (default: 8). Range: 0 to 8.
watermark_opacityintegernoWatermark opacity 0-100, 100 = fully visible (default: 70). Range: 0 to 100.
lens_correctionsbooleannoApply the lens corrections a DNG file carries: distortion, vignetting, shading (default: true). No effect on other inputs.
pdf_pageintegernoMulti-page PDF or TIFF: convert only this page (0-based: 0 is the first page). Omit it to convert EVERY page: one output file each (name_page001.jpg, name_page002.jpg, ...), or one multi-page file when the output format is pdf or tiff; the result lists every file in outputs. Minimum: 0.
white_balancestringnoRAW input only. RAW white balance: camera, auto, manual (default: camera). One of: camera, auto, manual.
color_temperatureintegernoRAW input, white_balance manual. Manual WB: temperature of the light the picture was taken in, in Kelvin (2000-10000, default 5500 = daylight; a lower value gives a cooler picture, a higher one a warmer picture). Range: 2000 to 10000.
denoisingbooleannoRAW input only. Apply wavelet denoising during RAW decode (off by default).
denoising_levelintegernoRAW input only. Denoising threshold (0-1000, default 300); giving a level turns denoising on. Range: 0 to 1000.
sharpness_boostbooleannoRAW input only. Sharpen after RAW decode (on by default for RAW input, as in the app; false turns it off; off by default with raw_16bit).
color_boostbooleannoRAW input only. Apply saturation boost after RAW decode.
contrast_boostbooleannoRAW input only. Apply contrast boost after RAW decode.
exposurenumbernoRAW input only. RAW exposure compensation in stops (EV), -3.0 to 3.0, default 0: +1 doubles the light, -1 halves it. Range: -3 to 3.
fast_raw_decodebooleannoRAW input only. Faster RAW decode at half resolution when the output is at most half the size of the sensor image (slightly softer; for web and preview exports).
raw_16bitbooleannoRAW input only. Decode RAW at 16 bits per channel and write a 16-bit TIFF. Needs format tiff and no effects, RAW boosts, watermark or embedded preview (they work on 8 bits per channel); otherwise the file is written with 8 bits and the result carries a warning. Turns the default RAW sharpening off; a file written with 8 bits instead is named in the result's warnings.
embedded_previewbooleannoRAW input only. Convert the JPEG preview the camera stored in the RAW file instead of developing the RAW data: the fastest way, but the preview can be smaller than the full picture, already has the camera's look, and is 8-bit; white balance, denoising and exposure do not apply to it. A file without a preview is developed as usual (default: false).
workersintegernoParallel workers (default: automatic - one per logical CPU, 2x for JPEG downscales to half size or less, one per physical core for RAW batches on 8+ core CPUs). Minimum: 1.

convert_image

writes files

Convert image. Convert a single image to a different format with optional resize, effects, and metadata. A multi-page PDF or TIFF converts every page: one output file per page, or one multi-page file when the output format is PDF or TIFF (pdf_page picks a single page); the result lists every file in outputs.

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the source image.
output_dirstringnoOutput directory (default: same as input).
overwritebooleannoReplace an output file that already exists (default: false, a new name is chosen instead).
skip_existingbooleannoLeave an input alone when its output already exists (reported as skipped), so a re-run only converts what is missing (default: false).
formatstringnoOutput format: jpg, png, webp, tiff, bmp, gif, jxl, heic, avif, svg, pdf.
qualityintegernoOutput quality (default: 90). Range: 1 to 100.
resize_widthintegernoTarget width in pixels (alone: the height follows the aspect ratio). Minimum: 1.
resize_heightintegernoTarget height in pixels (alone: the width follows the aspect ratio). Minimum: 1.
resize_modestringnoResize mode: fit (default), fill, stretch, longest-edge, shortest-edge, fit-with-background, crop-to-aspect. fill, stretch, fit-with-background and crop-to-aspect need both resize_width and resize_height.
backgroundstringnoColour around the picture with resize_mode fit-with-background: white, black, grey, lightgrey or #RRGGBB (default: white). resize_width 2000 + resize_height 2000 + resize_mode fit-with-background + background white = white square product images.
effectsarray of stringnoEffects to apply in order, each name or name:key=value (e.g. ["sepia", "sharpen:window=5"]; a comma list "sepia,sharpen" works too). Names and parameters: list_effects. A crop cuts the picture BEFORE the resize (its x, y, width, height are pixels of the source; left, top, right, bottom are percent): the resize then sizes what is left. An unknown name fails the call before anything is converted.
lut_pathstringnoAbsolute path to a 3D LUT (.cube) applied to every image, after resize and the other effects (the CLI's --lut). A file that is missing or not a 3D .cube LUT fails the call before anything is converted.
lut_strengthintegernoHow much of the LUT to apply, 0-100 (default 100). Needs lut_path. Range: 0 to 100.
watermark_textstringnoText watermark drawn on every output in white, its width 10% of the image (the CLI's --watermark). Nothing is drawn without it.
watermark_positionintegernoWhere the watermark goes, 0-8 read left to right, top to bottom: 0 top-left, 1 top-centre, 2 top-right, 3 middle-left, 4 centre, 5 middle-right, 6 bottom-left, 7 bottom-centre, 8 bottom-right (default: 8). Range: 0 to 8.
watermark_opacityintegernoWatermark opacity 0-100, 100 = fully visible (default: 70). Range: 0 to 100.
copyrightstringnoCopyright metadata to embed.
creatorstringnoCreator metadata to embed.
preserve_metadatabooleannoPreserve original metadata (default: true).
white_balancestringnoRAW input only. RAW white balance: camera, auto, manual (default: camera). One of: camera, auto, manual.
color_temperatureintegernoRAW input, white_balance manual. Manual WB: temperature of the light the picture was taken in, in Kelvin (2000-10000, default 5500 = daylight; a lower value gives a cooler picture, a higher one a warmer picture). Range: 2000 to 10000.
denoisingbooleannoRAW input only. Apply wavelet denoising during RAW decode (off by default).
denoising_levelintegernoRAW input only. Denoising threshold (0-1000, default 300); giving a level turns denoising on. Range: 0 to 1000.
sharpness_boostbooleannoRAW input only. Sharpen after RAW decode (on by default for RAW input, as in the app; false turns it off; off by default with raw_16bit).
color_boostbooleannoRAW input only. Apply saturation boost after RAW decode.
contrast_boostbooleannoRAW input only. Apply contrast boost after RAW decode.
exposurenumbernoRAW input only. RAW exposure compensation in stops (EV), -3.0 to 3.0, default 0: +1 doubles the light, -1 halves it. Range: -3 to 3.
fast_raw_decodebooleannoRAW input only. Faster RAW decode at half resolution when the output is at most half the size of the sensor image (slightly softer; for web and preview exports).
raw_16bitbooleannoRAW input only. Decode RAW at 16 bits per channel and write a 16-bit TIFF. Needs format tiff and no effects, RAW boosts, watermark or embedded preview (they work on 8 bits per channel); otherwise the file is written with 8 bits and the result carries a warning. Turns the default RAW sharpening off; a file written with 8 bits instead is named in the result's warnings.
embedded_previewbooleannoRAW input only. Convert the JPEG preview the camera stored in the RAW file instead of developing the RAW data: the fastest way, but the preview can be smaller than the full picture, already has the camera's look, and is 8-bit; white balance, denoising and exposure do not apply to it. A file without a preview is developed as usual (default: false).
lens_correctionsbooleannoApply the lens corrections a DNG file carries: distortion, vignetting, shading (default: true). No effect on other inputs.
pdf_pageintegernoMulti-page PDF or TIFF: convert only this page (0-based: 0 is the first page). Omit it to convert EVERY page: one output file each (name_page001.jpg, name_page002.jpg, ...), or one multi-page file when the output format is pdf or tiff; the result lists every file in outputs. Minimum: 0.

create_pdf_album

writes filescan replace files

Create PDF album. Create a PDF photo album from multiple images with configurable layout. During the trial the PDF always carries the trial watermark.

ParameterTypeRequiredDescription
input_pathsarray of stringyesRequired. Absolute paths to images.
output_pathstringyesOutput PDF file path.
photos_per_pageintegernoPhotos per page: 1, 2, 4, 6, 8, 10, 12, 16, 24, 48 (default: 4).
page_sizestringnoPage size: A4, Letter, Legal (default: A4).
orientationstringnoOrientation: Auto, Portrait, Landscape (default: Auto).
embed_qualityintegernoJPEG quality for non-JPEG inputs; JPEG inputs are embedded unchanged (default: 85). Range: 1 to 100.

create_slideshow

writes filescan replace files

Create video slideshow. Create a video slideshow from multiple images with Ken Burns motion, transitions, and optional audio. During the trial the video always ends with the branding end card.

ParameterTypeRequiredDescription
input_pathsarray of stringyesRequired. Array of image file paths (minimum 2).
output_pathstringyesOutput video file path.
templatestringnoVideo template: tiktok (9:16), shorts (9:16), facebook-reels (9:16), snapchat (9:16), youtube (16:9), linkedin (16:9), twitter (16:9), instagram (1:1), pinterest (2:3). Default: youtube.
duration_msintegernoDuration per slide in milliseconds (default: 3000).
transition_msintegernoTransition duration in milliseconds (default: 800).
ken_burnsstringnoKen Burns mode: zoom-in, zoom-out, pan-left, pan-right, alternating, off. Default: zoom-in.
formatstringnoOutput format: mp4, webm (default: mp4).
qualityintegernoCRF quality (default: 23, lower = better). Range: 0 to 51.
audio_pathstringnoBackground audio file path.
add_brandingbooleannoAdd branding end card (default: true). Registered copies only: during the trial the end card is always added and false is ignored.

detect_format

read-onlyidempotent

Detect image format. Detect the image format of a file (RAW, HEIC, JXL, PSD, PDF, etc.)

ParameterTypeRequiredDescription
input_pathstringyesRequired. Absolute path to the image file.

get_file_info

read-onlyidempotent

Get image file info. Inspect an image file (the CLI's contenta info): real format, pixel size, DPI, file size, copyright and creator.

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the image file.

get_license_status

read-onlyidempotent

Get license and trial status. Get the license and trial state before converting: registered or trial, clean outputs left (freeFilesRemaining), and what outputs become after the clean ones (afterFreeFiles: watermark). nextOutput says what the next output will be: clean or watermark.

No parameters.

list_effects

read-onlyidempotent

List effects. List all available image effects with their parameters.

No parameters.

list_formats

read-onlyidempotent

List supported formats. List the image formats Contenta Converter reads (extension, category, decoder) and writes (the CLI's contenta formats).

ParameterTypeRequiredDescription
kindstringnoWhich list: input (formats read), output (formats written) or all (default). One of: all, input, output.

merge_pdfs

writes filescan replace files

Merge PDFs. Append multiple PDF files into a single PDF, in list order (page-level merge, no rasterization). During the trial the PDF always carries the trial watermark.

ParameterTypeRequiredDescription
input_pathsarray of stringyesRequired. Absolute paths to PDF files, appended in this order.
output_pathstringyesOutput PDF file path.

read_metadata

read-onlyidempotent

Read image metadata. Read EXIF, IPTC, and XMP metadata from an image file.

ParameterTypeRequiredDescription
input_pathstringyesRequired. Absolute path to the image file.

write_metadata

writes filescan replace files

Write image metadata. Write EXIF/IPTC/XMP metadata to an existing image file without conversion. Every field goes to XMP too, so WebP, HEIC and AVIF (no IPTC block) keep keywords, city and country. The file is read back: written lists the fields now in it, dropped any that are not, with the reason.

ParameterTypeRequiredDescription
input_pathstringyesRequired. Absolute path to the image file.
copyrightstringnoCopyright notice.
creatorstringnoCreator/photographer name.
titlestringnoImage title.
descriptionstringnoImage description/caption.
keywordsstringnoKeywords (comma-separated).
rightsstringnoRights/usage terms.
creator_citystringnoCreator city.
creator_countrystringnoCreator country.
creator_emailstringnoCreator email.
creator_urlstringnoCreator URL/website.
latitudestringnoGPS latitude (decimal degrees).
longitudestringnoGPS longitude (decimal degrees).
altitudestringnoGPS altitude in meters.
datetimestringnoDate/time override (ISO 8601).