3D CAD Converter
Reference, version 1.0.32

3D CAD Converter CLI and MCP reference

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

cadconvert <command> [arguments] [options]
cadconvert convert part.step -o part.stl --quality fine

Generated from cadconvert catalog, version 1.0.32. 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
cadconvert batch <input>Batch convert a folder of 3D files.
cadconvert catalogPrint every CLI command and MCP tool as JSON (for AI agents, docs and the website).
cadconvert convert <input>Convert a single 3D file.
cadconvert formatsList all supported 3D formats.
cadconvert info <file>Display information about a 3D file.
cadconvert register <email> <key>Register your license.
cadconvert serveStart MCP server for AI agent integration.
cadconvert statusShow the license and trial state: registered or trial, free conversions left, trial days left, and what exports become after the trial (Draft quality with a trial note).
cadconvert watch <input>Watch a folder and auto-convert new 3D files.

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

cadconvert batch

Batch convert a folder of 3D files.

cadconvert batch <input> [options]
ArgumentDescription
<input>Input folder.
OptionTypeDescription
--formatstringTarget format.
--reportstringWrite a CSV report of the batch to this file: one row per input with input and output file, formats, triangles before and after, output size, size budget, within budget yes/no, duration and result or error.
--outputstringOutput folder. Default: <input>_converted next to the input folder.
--includestring[]Only files matching this pattern, e.g. *.step or parts\*.stp; repeat the option or separate patterns with ';' or ','. A pattern with * or ? is matched against the file name and the path below the folder; other text is part of that path.
--excludestring[]Leave out files matching this pattern, e.g. *_old.step or archive; repeat the option or separate patterns with ';' or ','. Same matching as --include.
--recursivebooleanInclude subfolders (the default; -r false converts the folder itself only).
--workersintegerParallel workers (default: the number of processors).
--qualitystringMesh quality for STEP/IGES/BREP sources: a preset (draft, standard, fine, ultrafine) or a linear deflection in mm (0.1 = standard; lower = finer). Default: standard.
--angularstringAngular deflection in radians (0.5 = about 29 degrees; lower = smoother curves). Default: the preset's value (0.5 for standard and for a numeric --quality).
--repairbooleanRepair STEP/IGES/BREP surfaces before meshing: fixes broken edges and faces and closes small gaps. No effect on mesh sources (STL, OBJ ...)
--unitsstringTarget units (mm, cm, in, m, ft).
--binarybooleanBinary output for STL/PLY.
--up-axisstringRotate the model so this axis points up: y (game engines, glTF, three.js) or z (CAD, 3D printing). Default: unchanged. A STEP/IGES/BREP re-export cannot be rotated and says so.
--decimatestringReduce mesh sources (STL, OBJ, PLY, glTF, FBX, 3MF ...) to this share of their triangles: 0.25 or 25% keeps about a quarter. STEP/IGES/BREP are tessellated, not reduced - use --quality.
--max-sizestringglTF/GLB only: the largest file to write, in MB (5, 0.5 or 15MB; 1 MB = 1,000,000 bytes). A file over it is written again with fewer triangles until it fits, down to 5% of its triangles. One that still does not fit is written at the smallest size reached, reported as over budget, and the exit code is 4 (partial).
--profilestringStart from a saved conversion profile (JSON, as the app saves it in %APPDATA%\CadConverter\profiles). Options given on the command line override the profile's values.
--overwritebooleanReplace an output file that already exists.
--skip-existingbooleanLeave an input alone when its output file already exists, so a re-run only converts what is missing (a skipped file is not converted and costs no free conversion).

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

cadconvert catalog

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

cadconvert catalog

cadconvert convert

Convert a single 3D file.

cadconvert convert <input> [options]
ArgumentDescription
<input>Input 3D file.
OptionTypeDescription
--formatstringTarget format (stl, obj, step, iges, etc.)
--outputstringOutput file or folder. Default: next to the input, with the -f format's extension.
--qualitystringMesh quality for STEP/IGES/BREP sources: a preset (draft, standard, fine, ultrafine) or a linear deflection in mm (0.1 = standard; lower = finer). Default: standard.
--angularstringAngular deflection in radians (0.5 = about 29 degrees; lower = smoother curves). Default: the preset's value (0.5 for standard and for a numeric --quality).
--repairbooleanRepair STEP/IGES/BREP surfaces before meshing: fixes broken edges and faces and closes small gaps. No effect on mesh sources (STL, OBJ ...)
--unitsstringTarget units (mm, cm, in, m, ft).
--binarybooleanBinary output for STL/PLY.
--up-axisstringRotate the model so this axis points up: y (game engines, glTF, three.js) or z (CAD, 3D printing). Default: unchanged. A STEP/IGES/BREP re-export cannot be rotated and says so.
--decimatestringReduce mesh sources (STL, OBJ, PLY, glTF, FBX, 3MF ...) to this share of their triangles: 0.25 or 25% keeps about a quarter. STEP/IGES/BREP are tessellated, not reduced - use --quality.
--max-sizestringglTF/GLB only: the largest file to write, in MB (5, 0.5 or 15MB; 1 MB = 1,000,000 bytes). A file over it is written again with fewer triangles until it fits, down to 5% of its triangles. One that still does not fit is written at the smallest size reached, reported as over budget, and the exit code is 4 (partial).
--profilestringStart from a saved conversion profile (JSON, as the app saves it in %APPDATA%\CadConverter\profiles). Options given on the command line override the profile's values.
--overwritebooleanReplace an output file that already exists.
--skip-existingbooleanLeave an input alone when its output file already exists, so a re-run only converts what is missing (a skipped file is not converted and costs no free conversion).

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

cadconvert formats

List all supported 3D formats.

cadconvert formats [options]
OptionTypeDescription
--inputbooleanOnly the formats it reads (import).
--outputbooleanOnly the formats it writes (export).

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

cadconvert info

Display information about a 3D file.

cadconvert info <file>
ArgumentDescription
<file>3D file to inspect.

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

cadconvert register

Register your license.

cadconvert register <email> <key>
ArgumentDescription
<email>The email address the license was bought with.
<key>License key.

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

cadconvert serve

Start MCP server for AI agent integration.

cadconvert serve

cadconvert status

Show the license and trial state: registered or trial, free conversions left, trial days left, and what exports become after the trial (Draft quality with a trial note).

cadconvert status

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

cadconvert watch

Watch a folder and auto-convert new 3D files.

cadconvert watch <input> [options]
ArgumentDescription
<input>Folder to watch.
OptionTypeDescription
--formatstringTarget format.
--reportstringKeep a CSV report of this watch session in this file, rewritten after every file: one row per input with input and output file, formats, triangles before and after, output size, size budget, within budget yes/no, duration and result or error.
--outputstringOutput folder. Default: <input>_converted next to the watched folder.
--includestring[]Only files matching this pattern, e.g. *.step or parts\*.stp; repeat the option or separate patterns with ';' or ','. A pattern with * or ? is matched against the file name and the path below the folder; other text is part of that path.
--excludestring[]Leave out files matching this pattern, e.g. *_old.step or archive; repeat the option or separate patterns with ';' or ','. Same matching as --include.
--recursivebooleanInclude subfolders (the default; -r false converts the folder itself only).
--workersintegerParallel workers (default: the number of processors).
--qualitystringMesh quality for STEP/IGES/BREP sources: a preset (draft, standard, fine, ultrafine) or a linear deflection in mm (0.1 = standard; lower = finer). Default: standard.
--angularstringAngular deflection in radians (0.5 = about 29 degrees; lower = smoother curves). Default: the preset's value (0.5 for standard and for a numeric --quality).
--repairbooleanRepair STEP/IGES/BREP surfaces before meshing: fixes broken edges and faces and closes small gaps. No effect on mesh sources (STL, OBJ ...)
--unitsstringTarget units (mm, cm, in, m, ft).
--binarybooleanBinary output for STL/PLY.
--up-axisstringRotate the model so this axis points up: y (game engines, glTF, three.js) or z (CAD, 3D printing). Default: unchanged. A STEP/IGES/BREP re-export cannot be rotated and says so.
--decimatestringReduce mesh sources (STL, OBJ, PLY, glTF, FBX, 3MF ...) to this share of their triangles: 0.25 or 25% keeps about a quarter. STEP/IGES/BREP are tessellated, not reduced - use --quality.
--max-sizestringglTF/GLB only: the largest file to write, in MB (5, 0.5 or 15MB; 1 MB = 1,000,000 bytes). A file over it is written again with fewer triangles until it fits, down to 5% of its triangles. One that still does not fit is written at the smallest size reached, reported as over budget, and the exit code is 4 (partial).
--profilestringStart from a saved conversion profile (JSON, as the app saves it in %APPDATA%\CadConverter\profiles). Options given on the command line override the profile's values.
--overwritebooleanReplace an output file that already exists.
--skip-existingbooleanLeave an input alone when its output file already exists, so a re-run only converts what is missing (a skipped file is not converted and costs no free conversion).

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

MCP server

cadconvert serve exposes 5 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: cad-converter. Pass absolute paths to every tool.

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

In Claude Code one command adds it: claude mcp add cad-converter -- cadconvert 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
convert_cadConvert 3D/CAD filenoyesnono
detect_formatDetect 3D formatyesnoyesno
get_file_infoGet 3D file infoyesnoyesno
get_license_statusGet license and trial statusyesnoyesno
list_formatsList supported formatsyesnoyesno

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

convert_cad

writes filescan replace files

Convert 3D/CAD file. Convert a 3D CAD file (STEP, IGES) to mesh formats (STL, OBJ, PLY, FBX, glTF, 3MF) or between mesh formats. Mesh sources include VRML (.wrl, .vrml, gzip .wrz): VRML is read in metres (a 1 m cube is 1000 mm) and Y-up, as the specification says. The result's notes list what an option could not do on this route (a STEP source is tessellated, not reduced; a STEP re-export cannot be rotated).

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the source 3D file.
output_pathstringnoAbsolute path for the converted output file. Give this or output_dir.
output_dirstringnoAbsolute path of a folder: the output is written there, named after the input with the format's extension (format is then required). Give this or output_path.
formatstringnoOutput format: stl, obj, ply, gltf, glb, 3mf, dae, step, iges, fbx, vrml, off, brep. One of: stl, obj, ply, gltf, glb, 3mf, dae, step, iges, fbx, vrml, off, brep.
qualitystringnoMesh quality for STEP/IGES/BREP sources: a preset (draft, standard, fine, ultrafine) or a linear deflection in mm ("0.1" = standard; lower = finer, e.g. "0.001"). Default: standard. No effect on mesh sources (STL, OBJ ...): they keep their triangles.
angularnumber or stringnoAngular deflection in radians for STEP/IGES/BREP sources (0.5 = about 29 degrees; lower = smoother curves). Default: the preset's value (0.5 for standard and for a numeric quality).
unitsstringnoTarget units for conversion. One of: mm, cm, in, m, ft.
up_axisstringnoRotate the model so this axis points up: y (game engines, glTF, three.js) or z (CAD, 3D printing). Default: unchanged. A STEP/IGES/BREP re-export cannot be rotated and the result's notes say so. One of: y, z, unchanged.
decimatenumber or stringnoReduce mesh sources (STL, OBJ, PLY, glTF, FBX, 3MF ...) to this share of their triangles: 0.25 or "25%" keeps about a quarter. STEP/IGES/BREP sources are tessellated, not reduced - use quality instead; the result's notes say so.
max_size_mbnumber or stringnoglTF/GLB only: the largest file to write, in MB (5, 0.5, 15; 1 MB = 1,000,000 bytes). A file over it is written again with fewer triangles until it fits, down to 5% of its triangles. The result's withinBudget is true when the written file fits and false when it was written at the smallest size reached and is still over; outputBytes, trianglesBefore and trianglesAfter are what was measured.
repairbooleannoRepair STEP/IGES/BREP surfaces before meshing (fixes broken edges and faces, closes small gaps). No effect on mesh sources such as STL or OBJ.
binarybooleannoUse binary output for STL/PLY (default: true).
overwritebooleannoReplace an output file that already exists (default: the existing file is kept and the new one is written beside it as name (1)).
skip_existingbooleannoLeave the input alone when its output file already exists: nothing is converted and no free conversion is used; the result says skipped: true.

detect_format

read-onlyidempotent

Detect 3D format. Detect the 3D file format and check if it is supported for import/export.

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the 3D file.

get_file_info

read-onlyidempotent

Get 3D file info. Get metadata about a 3D file including format, parts, triangles, vertices, and bounding box.

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the 3D file.

get_license_status

read-onlyidempotent

Get license and trial status. Get the license and trial state before converting: registered or trial, free conversions left, trial days left, and what exports become after the trial (afterFreeFiles: draft_quality = Draft tessellation and a trial note in the file). nextOutput says what the next export will be: clean or draft_quality.

No parameters.

list_formats

read-onlyidempotent

List supported formats. List all supported 3D file formats with import/export capabilities.

No parameters.