Skip to main content
Glama
mcp-for-clo3d

mcp-for-clo3d

by ttiimmaacc

MCP for CLO3D

Control CLO3D from an AI assistant such as Claude, Codex or Cursor: ask in plain language and it inspects your project, builds and sews pattern pieces, manages fabrics, runs the simulation, takes pictures of the result and exports models, pattern PDFs and DXF files.

AI assistant  <-- MCP -->  MCP server (Python)  <-- files -->  CLO plug-in (native DLL)  -->  CLO3D

CLO stays fully usable while the plug-in listens in the background.

Before you start

You need:

What

How to check or get it

Windows 10 or 11 (64-bit)

The plug-in is a Windows DLL; macOS is not supported.

CLO3D 2025.2.236, exactly this version

CLO shows its version at the bottom left of its window (Version: 2025.2.236). The plug-in only works with the CLO build it was made for; for another version, build it yourself.

An MCP client

Claude Desktop, Claude Code, Codex, Cursor or any other app that supports MCP servers.

uv (runs the Python server and installs Python for you)

In PowerShell: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex", then open a new terminal. See docs.astral.sh/uv.

Git (uv uses it to fetch the server)

git-scm.com/download/win, or winget install Git.Git.

You do not need Visual Studio or CLO's SDK unless you build the plug-in yourself.

Related MCP server: CLO3D MCP Server

Setup

1. Download the plug-in

Download CloMcpPlugin.dll from the latest release. The release notes say which CLO version it is for (currently 2025.2.236). GitHub builds every release from this repository with CLO's official SDK, and each release lists the DLL's SHA-256 checksum.

2. Install it so CLO loads it at startup

  1. Close CLO.

  2. Copy CloMcpPlugin.dll into C:\Users\Public\Documents\CLO\Plugins\ (create the Plugins folder if it doesn't exist) and rename the copy to CloLibraryAPI_Plugin.dll. CLO loads a plug-in with exactly that name every time it starts.

    • If you cloned this repository, cpp_plugin\install_autostart.bat path\to\CloMcpPlugin.dll does the copy and rename for you (install_autostart.bat /remove undoes it).

    • If a CloLibraryAPI_Plugin.dll is already there, it belongs to another plug-in: keep a copy of it, because this replaces it.

  3. Start CLO. Nothing visible changes: the listener starts quietly in the background.

Open Plugins → Plug-in Manager → + ADD, choose a copy of CloMcpPlugin.dll that is outside the Plugins folder, give it a name and click OK. Plugins → Plug-in → &lt;your name&gt; then stops or starts the listener and shows its new state. Without the autostart copy, this menu entry alone also works, but CLO only loads it when you click it, so click it once per CLO session.

3. Check that it is running

Paste %TEMP%\clo3d_mcp into the File Explorer address bar and open status.json. It should say "state": "listening", and its ticks number should grow each time you reopen the file. If the folder or file is missing, see Troubleshooting.

4. Connect your AI assistant

Add the server to your MCP client. uvx downloads and runs it; there is nothing else to install.

Claude Code

claude mcp add clo3d -- uvx --from git+https://github.com/ttiimmaacc/mcp-for-clo3d.git mcp-for-clo3d

Claude Desktop: open Settings → Developer → Edit Config, add this to claude_desktop_config.json, then restart Claude Desktop:

{
  "mcpServers": {
    "clo3d": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ttiimmaacc/mcp-for-clo3d.git", "mcp-for-clo3d"]
    }
  }
}

Codex (~/.codex/config.toml)

[mcp_servers.clo3d]
command = "uvx"
args = ["--from", "git+https://github.com/ttiimmaacc/mcp-for-clo3d.git", "mcp-for-clo3d"]
tool_timeout_sec = 200   # simulations and exports can take up to 180 s

Connect only one client to CLO at a time, because they share the same request file.

5. Try it

With CLO open, describe the job the way you would to a colleague. The assistant works through the steps in CLO, looks at the result (it can capture the 3D window and draw the 2D pieces), and reports back. Some examples:

Check a garment

  • "Simulate this, then show me the front, back and side with the strain map on. Where is it pulling?"

  • "Check the sewing: are any seams twisted, with one side sewn in the opposite direction?"

Get a style ready for production

  • "Write 'CUT 1' and the piece name on every piece, nest them on 1400 mm wide fabric with 10 mm spacing, and tell me how long the marker is and how well the fabric is used." (CLO lays out one fabric at a time: switch fabrics in its Print Layout Editor to measure the next.)

  • "Export that marker as a 1:1 PDF for the plotter and the whole pattern as an AAMA DXF for our CAD system."

Build something from a spec

  • "Make a two-panel noren curtain, 1050 × 2020 mm finished, with 30 mm side hems, a 70 mm bottom hem and a star appliqué on front and back, hanging from a 32 mm rod." (examples/noren_curtain.py is this build as a script.)

  • "Topstitch every appliqué patch 4 mm in from its edge with 0.4 mm thread."

  • "Build a boxy reversible wool jacket, size M: shoulders 80 cm, chest 54 cm, back 64 cm, sleeves 76 cm from the collar, grey plaid outside and plain charcoal inside, overlocked edges and a split kangaroo pocket." (examples/workwear_jacket.py is this build as a script. The dropped shoulders still need a nudge with CLO's Move tool before draping, since the API has no free 3D move.)

Fabrics and presentation

  • "What fabrics does this project use, and what are their weights and thicknesses? Label them all 60% cotton / 40% linen."

  • "Export a GLB for the web shop and turntable images of the finished garment."

Good to know:

  • CLO's API has no undo, so ask the assistant to save a checkpoint before bigger changes.

  • For nesting, switch CLO to Printing Layout mode once per session (mode dropdown at the top right); the assistant will tell you when it needs this.

  • Some things CLO's API can't do at all, like folding cloth or placing pins; see Tools for what's covered and what isn't.

Or build the plug-in yourself

Needed for any CLO version other than the one the release was built for.

  1. Install Visual Studio Build Tools with the Desktop development with C++ workload.

  2. Download the CLO SDK that matches your CLO version from developer.clo3d.com/download.html (CLO 2025.2.236 → SDK v9.1.0, CLO_SDK_v2025.2.236_WIN.zip) and unzip it. CLO's SDK can't be redistributed, so it is not included here.

  3. Clone this repository, point CLO_SDK_DIR at the unzipped folder (the one containing CLOAPIInterface\) and build:

    set CLO_SDK_DIR=C:\path\to\CLO_SDK_v2025.2.236_WIN
    cpp_plugin\build.bat
    python cpp_plugin\check_runtime.py

    check_runtime.py confirms that every C++ runtime function the DLL imports exists in the runtime DLLs your CLO install ships, because CLO loads its own copies.

  4. Install cpp_plugin\dist\CloMcpPlugin.dll as in step 2.

Use the SDK for your exact CLO version. The plug-in calls CLO through C++ vtables. Headers from another CLO version put functions at different slots and call the wrong ones.

Tools

Area

Tools

Scene

get_project_info, new_project, open_file, save_project, get_garment_info, import_file

See the result

capture_3d: the 3D window from front, back, sides, 3/4 or top, returned to the assistant as images, optionally with CLO's strain or stress fit map. view_patterns: picture of the 2D pieces with every line numbered and seams coloured. set_fit_map

Collision objects

add_rod, add_box, list_collision_objects, remove_collision_object, import_collision_object, get_cloth_bounds. CLO keeps one avatar, so rods and boxes share one collision mesh, and they won't replace a human avatar unless asked

Hems & appliqué

add_hem: the turned-back layer of a hem as a strip on the reverse, sewn at the edge and the hem line (cloth cannot be folded this way: a fold angle only bends it about 20° even at full strength, however it is set). add_applique: a patch sewn where it sits, optionally with its reverse copy

Plotting & PDF

export_pattern_sheet (vector PDF at exactly 1:1, or PNG; pattern window or print layout; seam allowance, notches, grain lines, names, annotations...), nest_patterns and marker_report (marker length, width, utilisation per fabric, measured from the 1:1 layout), set_fabric_width, set_nesting (spacing, 1/2/4-way grain, fixed pieces), add_pattern_annotation, get_pattern_annotations, get_print_options. CLO's print layout exports one fabric at a time, and in a fresh CLO session the API's nesting only works after Printing Layout mode has been opened once; clo_ui_nest_all_fabrics / nest_patterns(allow_ui_click=True) click CLO's "Nest All Fabrics" through Windows UI Automation as a fallback

CAD / DXF

export_dxf: AAMA, ASTM or Gerber DXF without a dialog, read back as a check (piece names, sizes, quantities, outline boxes)

Topstitch styles

create_topstitch_style (stitch length, thread thickness, offset: CLO's API cannot set these, so a style saved from CLO once is copied with the values changed and imported; save several as named templates, e.g. an overlock), get_topstitch_style, set_topstitch_style (name, colour, lines)

Fabric details

get_fabric_info, set_fabric_information (name, content such as 60% cotton / 40% linen), set_fabric_physics (weight, thickness, stretch, shear, bending...; keeps colour, texture and name), export_fabric (.zfab), apply_fabric_json

Hanging on a rod

hang_on_rod: sews a header band to each panel's top edge, freezes it and lays a rod along it, so curtains, noren and banners hang reliably (the band stands in for the pocket; the rod lies against it). make_rod_pocket: a real folded pocket around the rod. Verified with a single 1000 × 1500 mm panel; with several panels it often fails to wrap

Checkpoints

save_checkpoint, list_checkpoints, restore_checkpoint: CLO's API has no undo, so save the scene before risky edits and reopen it if something goes wrong

CLO's dialogs & restart

Commands no longer hang on CLO's pop-ups. Dialogs that only report something (OK / Close) are answered and returned in the result's clo_dialogs; when one says the command failed (e.g. "Failed to read the Project file" while the API claims success) the command raises that error. A dialog that needs a decision, such as "File not saved. Do you want to save?", stops the command at once with its text and buttons: get_clo_dialog shows it, answer_clo_dialog clicks a button and returns the command's result. open_file and new_project take discard_unsaved. restart_clo saves the scene as a checkpoint, closes CLO, optionally installs a rebuilt plug-in, starts CLO, waits for the plug-in and reopens the scene (answering CLO's autosave prompt, as the checkpoint is newer). Windows only, through UI Automation

Geometry

get_pattern_geometry: pieces with numbered outline lines (length, endpoints), internal shapes, and every seam mapped to the lines it uses

Patterns

get_pattern_count, get_pattern_list, get_pattern_info, get_pattern_bounding_box, set_pattern_name, copy_pattern, delete_pattern, flip_pattern, create_pattern, mirror_pattern, unfold_pattern, move_pattern_2d

Sewing

sew_edges (two edges given by their end points, sewn in the direction given, so seams never twist), sew_lines (outline or internal-shape lines), add_topstitch, topstitch_all (every seam and/or free edge), list_topstitch_styles, set_seam_taping

Lines and shapes

add_internal_shape, offset_internal_line, convert_shape (internal ↔ base line), delete_point, delete_line

Piece state

set_pattern_state (freeze, strengthen, solidify, hide in 3D, layer, particle distance, grain), get_pattern_state, remove_all_pins

Elastic and shrinkage

set_elastic (on/off, strength, ratio, segment and total length), set_shrinkage

3D placement

get_arrangement_points, place_pattern (arrangement point, orientation, position, Flat/Curved), reset_arrangement, get_arrangement_list

Fabrics

get_fabric_list, add_fabric, replace_fabric, assign_fabric_to_pattern, set_fabric_color (front or back face), get_fabric_for_pattern, delete_fabric, set_fabric_texture, set_fabric_faces (a separate back face, e.g. double-faced cloth), apply_plaid (a woven plaid or tartan from its thread count, at its real repeat size, optionally with a plain back)

Avatar & pose

get_avatars, import_avatar, show_avatar, load_pose (a .pos file: pose only or with its position, feet to the ground), save_pose. CLO's API cannot bend joints, so pose the avatar in CLO once, save the pose, and load it from scripts

Export

export_obj, export_fbx, export_glb, export_gltf, export_thumbnail, export_snapshot, export_turntable, export_tech_pack

Simulation

simulate, set_simulation_quality

Colorways

get_colorways, set_current_colorway

Line-based tools take the line indices that get_pattern_geometry (or the view_patterns picture) shows. Checkpoints are saved next to the request files. CLO saves them like "Save As", so its open file becomes the checkpoint copy; save_checkpoint returns the original path to save back to. Restoring a large scene (avatar plus simulation data) can take a few minutes. The plug-in checks every pattern and line index before calling CLO, because CLO doesn't check them. Line-creating tools report how many internal shapes CLO actually created, because CLO creates nothing, without an error, for requests it can't do.

Not possible through CLO's API (2025.2): creating pins (they can only be removed), folding cloth or pleats (a fold angle on a line only bends the cloth about 20° even at full strength, whether set through the API, CLO's Property Editor or its Fold Arrangement tool), free 3D move or rotate of a piece (placement goes through avatar arrangement points), and editing or removing an existing seam. Two SDK functions exist but did nothing in CLO 2025.2 testing, so they aren't exposed: MovePatternPoint (points never move) and DistribueInternalLinesbetweenSegments (created nothing on any pair of lines). To hold pieces in place, freeze or strengthen them. For turned-back layers such as hems, use add_hem, which models the fold as a second layer.

How it works

The CLO side is a small C++ plug-in built on CLO's official SDK. It runs a timer on CLO's UI thread, so every request runs on the main thread between UI events, in roughly 50 ms.

  • The MCP server (src/clo3d_mcp) writes request.json to %TEMP%\clo3d_mcp (override with CLO3D_MCP_DIR) and waits up to 180 s for response.json. Both sides write to a temp file and rename it into place.

  • The plug-in (cpp_plugin/CloMcpPlugin.cpp) creates a hidden message-only window with a 50 ms timer. CLO's event loop dispatches the timer, so the plug-in reads the request, calls the CLO API on the main thread and writes the response. It never blocks CLO.

  • The plug-in pins itself in memory, because CLO loads the DLL to read its menu name and unloads it again during registration. Only one listener runs per CLO process.

  • Native faults inside a command are caught (built with /EHa) and returned as an error instead of taking CLO down.

  • To stop the listener without the menu, create an empty file named stop in the request folder.

Development

uv run --with pytest pytest          # server tests (mock plug-in)
cpp_plugin\test\build_tests.bat      # builds two stand-in hosts that load the real DLL outside CLO
python cpp_plugin\test\smoke_test.py # DLL + stand-in host + MCP client, end to end

host.exe loads the plug-in and runs a Win32 event loop. host_add.exe reproduces the Plug-in Manager's load → read name → unload sequence. Both use CLO's real CLOAPIInterface.dll with fake API objects, so you can test the plug-in and the MCP client without CLO.

Releases

.github/workflows/build.yml runs on every push and pull request. It downloads CLO's SDK from CLO's official link (checksum-pinned, never committed), builds the DLL, checks its imports against CLO's runtime export lists in cpp_plugin/clo_exports/<version>/, and runs the tests and smoke test. Pushing a tag publishes a release:

git tag v0.1.0
git push origin v0.1.0

To support a new CLO version, update CLO_VERSION, CLO_SDK_URL and CLO_SDK_SHA256 in the workflow. Then, on a machine with that CLO installed, run python cpp_plugin\check_runtime.py --write-exports cpp_plugin\clo_exports\<version> and commit the result.

Troubleshooting

  • %TEMP%\clo3d_mcp\status.json is missing: CLO didn't load the plug-in. Check that the file in C:\Users\Public\Documents\CLO\Plugins\ is named exactly CloLibraryAPI_Plugin.dll, that it matches your CLO version, and that you restarted CLO after copying it.

  • The client times out: check status.json. If ticks isn't rising, start the listener from Plugins → Plug-in (with the optional menu entry), or restart CLO (restart_clo does it for you, saving and reopening the scene).

  • uvx is not recognised: open a new terminal after installing uv, or restart your MCP client so it picks up the new PATH.

  • Rebuilding fails with LNK1104: cannot open file ...CloMcpPlugin.dll: CLO has the DLL loaded. Close CLO, or rename the loaded DLL (Windows allows renaming a file that's in use) and rebuild. CLO keeps using the old copy until it restarts. With autostart, run install_autostart.bat again after rebuilding, with CLO closed, or ask the assistant to restart_clo with install_plugin set to cpp_plugin\dist\CloMcpPlugin.dll.

  • CLO crashes when adding the plug-in, or calls do odd things: the SDK doesn't match your CLO version.

Credits and licence

Licensed under MIT; see LICENSE.

The Python MCP server began as Ubani-Studio/clo3d-mcp by Violet Sphinx (MIT). This project has since grown into a separate codebase: its Python CLO plug-in was replaced by a new native C++ plug-in, and most tools were added or rewritten.

CLO's SDK is not included and is not covered by this licence. See NOTICE.

Available Tools

104 tools
add_appliqueA

Add an appliqué patch on a piece, sewn to it where it sits (a new internal line on the base marks each sewn edge). Optionally the matching patch on the other side ("front and reverse patches"), sharing the same stitch line.

Args: pattern_index: Base piece. points: The patch outline in the base's 2D coordinates (mm), inside the piece. sewn_lines: Sew only the first N edges (points[0]->points[1] is edge 0); edges on the base's outline or a seam can stay free. Default: all edges. layer: Layer for the patch: 1 = the +z side, -1 = the -z side. reverse: Also add the same patch on the opposite layer. fabric_index: Fabric for the patch (default: the base's fabric). name: Name for the patch piece(s); " front"/" reverse" is added with reverse=True. place_flat: Place the patch Flat; set False and place it yourself on an avatar. reverse_layer: Layer for the reverse patch (default: -layer). Put it outside any hem strips it crosses (e.g. 3 over hems on 1 and 2).

Inputs: points (required), pattern_index (required), name, layer, +5 more.

add_boxA

Add a box that cloth collides with (a table, shelf, bed or window sill...).

Args: center: [x, y, z] centre in mm. size: [width_x, height_y, depth_z] in mm. replace_avatar: Allow replacing a human avatar in the scene.

Inputs: size (required), center (required), replace_avatar.

add_fabricB

Add a new fabric to the project from a .zfab or .jfab file.

Args: file_path: Absolute path to the fabric file (.zfab or .jfab).

Inputs: file_path (required).

add_hemA

Hem a straight edge: adds the turned-back layer as a strip covering the hem area on the reverse side, sewn along the edge and along a new hem line (cloth cannot be folded this way: a fold angle only bends it about 20 degrees, even at full strength). Gives the doubled fabric at the edge. The pattern's edge is the finished edge, so draw pieces at their finished size.

Args: pattern_index: Piece to hem. line_index: The straight outline line to hem (from get_pattern_geometry / view_patterns). width: Finished hem width in mm. layer: Layer for the hem strip: -1 = the -z side (towards the back camera), 1 = the +z side. Use the side opposite the garment's face. Where hems cross (a bottom hem and the side hems), put the later ones one layer further out (e.g. -2), like the real corner; on the same layer the overlapping strips crumple. fabric_index: Fabric for the strip (default: the piece's fabric). place_flat: Place the strip Flat, like a piece laid out without an avatar; set False and place it yourself for pieces on an avatar.

Inputs: width (required), line_index (required), pattern_index (required), layer, +2 more.

add_internal_shapeA

Draw an internal line or shape on a pattern (fold lines, darts, pocket placement...).

Args: pattern_index: Pattern to draw on. points: [[x, y], ...] or [[x, y, type], ...] in pattern coordinates (mm), inside the piece (CLO also accepts points outside it); type 0 = straight, 2 = spline curve, 3 = bezier curve. Use get_pattern_geometry for the piece's coordinates. closed: Connect the last point back to the first.

Inputs: points (required), pattern_index (required), closed.

add_pattern_annotationA

Write a note on a piece (cut quantity, fabric, size, "place on fold"...) at 2D (x, y) in the piece's coordinates; it prints on pattern sheets with show={"annotations": true}. With annotation_index, replace that note instead.

Inputs: x (required), y (required), text (required), pattern_index (required), +1 more.

add_rodA

Add a cylinder (curtain rod, rail, hanger bar...) that cloth collides with.

All rods and boxes form one collision object (CLO keeps a single avatar), placed exactly at the given coordinates. For curtains, make_rod_pocket does the whole job. Tested in CLO 2025.2: cloth passes through a thin rod unless its mesh is finer than the rod, so set the pieces' particle_distance to about a third of the diameter and use >= 30 mm.

Args: center: [x, y, z] centre in mm (see get_cloth_bounds for where the cloth is). length: Length in mm. diameter: Diameter in mm. axis: Direction of the rod: "x" (left-right), "y" (up-down) or "z" (front-back). replace_avatar: Allow replacing a human avatar in the scene.

Inputs: center (required), length (required), axis, diameter, +1 more.

add_topstitchA

Add topstitching either along a seam or along one pattern line.

Args: style_index: Topstitch style from list_topstitch_styles. seam_index: Topstitch this seam (from get_pattern_geometry). start_ratio: Where along the seam to start (0-1), with seam_index. end_ratio: Where along the seam to end (0-1), with seam_index. pattern_index: Topstitch a line of this pattern instead of a seam. line_index: The line to topstitch, with pattern_index.

Inputs: style_index (required), end_ratio, line_index, seam_index, +2 more.

answer_clo_dialogA

Click a button on the dialog open in CLO (see get_clo_dialog). If a command was stopped by the dialog, it carries on inside CLO and its result is returned here. Decisions that lose work (e.g. "No" to saving changes) are the user's to make.

Inputs: button (required).

apply_fabric_jsonA

Apply a .jfab file (CLO's JSON fabric format, see JFABSpec.json in the CLO SDK) to a fabric. Keys the file leaves out at the top level keep their values (colour, texture, content), but a "mapPhysical" block replaces the whole physical set: its missing keys reset to CLO's defaults, and a missing "qsFabricName" clears the name. set_fabric_physics handles this for you.

Inputs: file_path (required), fabric_index (required).

apply_plaidA

Make a plaid (tartan) texture from its stripe sequence and put it on a fabric. The same stripes run both ways; where two colours cross they mix in a twill, as in woven checks.

Args: fabric_index: Fabric to texture. sett: One repeat as [[colour, width_mm], ...], e.g. a grey/black workwear check: [["#1b1b1d", 45], ["#5d5d60", 6], ["#1b1b1d", 6], ["#5d5d60", 35], ["#8e8e90", 3], ["#5d5d60", 35]]. The repeat is the sum of the widths. px_per_mm: Image resolution. twill: Mix crossing colours along diagonals (woven look) instead of averaging them. back_color: For double-faced cloth, a plain back in this colour [r, g, b]. The back is separated before the plaid goes on: separated afterwards, it copies the plaid (tested in CLO 2025.2.236).

Inputs: sett (required), fabric_index (required), twill, px_per_mm, +1 more.

assign_fabric_to_patternA

Assign a fabric to a pattern piece.

Args: fabric_index: Zero-based index of the fabric. pattern_index: Zero-based index of the pattern piece. assign_option: 1=current colorway only, 2=all colorways (unlinked), 3=all colorways (linked).

Inputs: fabric_index (required), pattern_index (required), assign_option.

capture_3dA

Look at the garment: capture CLO's 3D window from one or more camera views.

Use after simulating or editing to check the result (e.g. twisted seams, pieces in the wrong place, fabric through the avatar). Moves CLO's 3D camera.

Args: views: Any of front, back, left, right, three_quarter_left, three_quarter_right, top, bottom, zoom_all, current (default: ["front"]). fit_map: "strain" or "stress" to show CLO's fit map in the capture (red = tight or overstretched), "off" to hide it, or omit to leave the display as it is.

Inputs: views, fit_map.

clo_ui_nest_all_fabricsA

Click "Nest All Fabrics" in CLO's Print Layout Editor (through Windows UI Automation), for when the print layout is empty: the API's nesting only works once CLO's own nesting has run. CLO must be in Printing Layout mode (the user switches it; CLO's mode menu cannot be driven this way). Returns the marker it produced.

Inputs: no named parameters.

convert_shapeC

Convert an internal shape to a base line ("base") or back ("internal").

Inputs: to (required), pattern_index (required), internal_shape (required).

copy_patternA

Duplicate a pattern piece at a given position.

Args: pattern_index: Zero-based index of the pattern piece to copy. x: X position offset for the copy (mm). y: Y position offset for the copy (mm).

Inputs: pattern_index (required), x, y.

create_patternA

Create a new pattern piece from vertex points.

Args: points: List of [x, y] or [x, y, type] coordinates in mm. Type: 0=straight (default), 2=spline, 3=bezier. Example: [[0,0], [100,0], [100,200], [0,200]]

Returns the new pattern_index and its outline lines (line_index, start, end, length), so you can sew, hem or topstitch without looking the piece up.

Inputs: points (required).

create_topstitch_styleA

Create a topstitch style with a given stitch length, thread thickness and offset from the stitched line (CLO's API cannot set these on a style, so a saved style file is copied with the values changed and imported). Returns its style_index for add_topstitch.

The stitch's shape and colour come from a template: a style saved from CLO once (select a topstitch in the Object Browser, set its Shape, e.g. Overlock, and colour in the Property Editor, click the save icon in its Topstitch row) and passed as template_path with a template name; later calls just name the template.

Args: name: Name for the new style. stitch_length_mm: Length of each stitch in mm (default: the template's). thread_thickness_mm: Thread thickness in mm (CLO shows it as Tex: 0.2 mm = 40 Tex). offset_mm: Distance of the stitching from the line or seam it follows, in mm. template: Which saved template to use, e.g. "default" or "overlock". template_path: A .sst saved from CLO, stored as this template (first time only).

Inputs: name (required), template, offset_mm, template_path, +2 more.

delete_fabricC

Delete a fabric from the project.

Inputs: fabric_index (required).

delete_lineC

Delete an outline line of a pattern.

Inputs: line_index (required), pattern_index (required).

delete_patternB

Delete a pattern piece from the project.

Args: pattern_index: Zero-based index of the pattern piece to delete.

Inputs: pattern_index (required).

delete_pointA

Delete an outline point (point n is the start point of line n; see get_pattern_geometry).

Inputs: point_index (required), pattern_index (required).

export_dxfA

Export the pattern as a DXF for CAD, plotters and cutters (no dialog). Returns the pieces read back from the file (name, size, quantity, outline box in mm) as a check.

Args: file_path: Absolute path ending in .dxf. format: "aama", "astm" or "gerber" (Gerber-flavoured AAMA). metric: Millimetres (True) or inches. box_per_piece: One bounding box per piece instead of one around all pieces. curves_to_straight: Convert curve points to straight points. optimize_curve_points: Drop curve points very close to others. without_grading: Leave grading out. without_baselines: Only the outlines, without base lines. remove_duplicate_notches: Remove duplicate notches. scale: Scale factor. rotate_degrees: Rotate the pieces.

Inputs: file_path (required), scale, format, metric, +7 more.

export_fabricB

Save a fabric as a .zfab file (CLO 2025.2 refuses .jfab here; the .fab inside is binary).

Args: fabric_index: Fabric to export. file_path: Absolute output path ending in .zfab.

Inputs: file_path (required), fabric_index (required).

export_fbxA

Export the garment as an FBX file.

Args: file_path: Absolute path for the exported .fbx file.

Inputs: file_path (required).

export_glbC

Export the garment as a GLB (binary glTF) file.

Args: file_path: Absolute path for the exported .glb file. options: Optional export options.

Inputs: file_path (required), options.

export_gltfB

Export the garment as a glTF file.

Args: file_path: Absolute path for the exported .gltf file. options: Optional export options.

Inputs: file_path (required), options.

export_objA

Export the garment as an OBJ file.

Args: file_path: Absolute path for the exported .obj file. options: Optional export options (bExportGarment, bExportAvatar, bThin, scale, etc.).

Inputs: file_path (required), options.

export_pattern_sheetA

Export the 2D pattern as a PDF (vector, exactly 1:1: verified in CLO 2025.2) or PNG, by the file's extension, for plotting or printing.

"print_layout" exports the marker of the fabric shown in CLO's Print Layout Editor (see marker_report): the page is the fabric width by the marker length. It needs the layout set up once in CLO (Printing Layout mode, Auto Nesting). "pattern" exports the pattern window.

Args: file_path: Absolute path ending in .pdf or .png. source: "print_layout" or "pattern". paper: a4, a3, b5, b4, letter, legal, tabloid, wide_24in, wide_36in, wide_44in, one_to_one or custom (then give width_mm and height_mm). Default: CLO's setting. The PDF stays one 1:1 page whatever the paper (tested with a4: no tiling), so tile it with your plotter or PDF software for small paper. landscape: Paper orientation. width_mm: Paper width for custom paper. height_mm: Paper height for custom paper. resolution_dpi: Resolution for PNG output. show: What to draw, e.g. {"seam_allowance": true, "notches": true, "grain_line": true, "pattern_name": true, "annotations": true}. Keys: outline, internal_lines, graphic_outline, baseline, notches, seam_allowance, symmetry_line, reference_line, pattern_name, annotations, line_length, grain_line, button_holes, seam_taping, measurements_2d, grading_size_name, nest_information, fabric_texture, pattern_texture, graphic_texture.

Inputs: file_path (required), show, paper, source, +4 more.

export_snapshotA

Save front, back, left and right images of the 3D window as PNG files.

To look at the garment yourself, use capture_3d instead (returns the images).

Args: file_path: Base path; files are saved as _front.png, _back.png, ...

Inputs: file_path (required).

export_tech_packB

Export a tech pack with JSON metadata and images.

Args: file_path: Absolute path for the tech pack output.

Inputs: file_path (required).

export_thumbnailB

Export a 3D viewport screenshot/thumbnail.

Args: file_path: Absolute path for the exported image file. width: Image width in pixels (default 512). height: Image height in pixels (default 512).

Inputs: file_path (required), width, height.

export_turntableC

Export a 360-degree turntable image sequence.

Args: file_path: Absolute path (directory or base name) for turntable images.

Inputs: file_path (required).

flip_patternA

Flip a pattern piece horizontally or vertically.

Args: pattern_index: Zero-based index of the pattern piece to flip. horizontal: True for horizontal flip, False for vertical flip.

Inputs: pattern_index (required), horizontal.

get_arrangement_listB

Get the list of arrangement points on the avatar.

Inputs: no named parameters.

get_arrangement_pointsA

List the avatar's arrangement points (needs an avatar in the scene) for place_pattern.

Inputs: no named parameters.

get_avatarsA

List avatars in the scene with names and genders.

Inputs: no named parameters.

get_clo_dialogA

The dialog open in CLO right now, if any: title, message and buttons. Commands answer CLO's acknowledge-only dialogs (OK / Close) themselves and list them in clo_dialogs; a dialog that needs a decision stops the command with its text and buttons instead of hanging.

Inputs: no named parameters.

get_cloth_boundsA

3D bounding box (mm) of the cloth: min/max [x, y, z]. CLO's 3D axes: Y is up, Z points towards the front view camera, X to the avatar's left. Use it to place rods and props and to check where a piece ended up (e.g. is this panel still on the rod?).

CLO only reports cloth once it has been simulated, and reports nothing while every piece is frozen: run simulate(1) with at least one piece unfrozen first. A flat new piece lies at its 2D (x, y) coordinates in the plane z = 200.

Args: region_min: Only count vertices inside this box: [x, y, z] lower corner. region_max: Upper corner [x, y, z] of that box. pattern_index: Only this pattern's vertices.

Inputs: region_max, region_min, pattern_index.

get_colorwaysA

Get a list of all colorways in the current project with names and which is active.

Inputs: no named parameters.

get_fabric_for_patternB

Get which fabric is assigned to a pattern piece.

Args: pattern_index: Zero-based index of the pattern piece.

Inputs: pattern_index (required).

get_fabric_infoC

A fabric's name, its information fields (content, classification, supplier...) and CLO's fabric info JSON.

Inputs: fabric_index (required).

get_fabric_listA

Get a list of all fabrics in the current project with their indices and names.

Inputs: no named parameters.

get_garment_infoA

Export and retrieve garment metadata as JSON, including pattern details, fabric assignments, and measurements.

Inputs: no named parameters.

get_pattern_annotationsC

The notes written on a piece, with their positions.

Inputs: pattern_index (required).

get_pattern_bounding_boxB

Get the bounding box (width/height) of a pattern piece.

Args: pattern_index: Zero-based index of the pattern piece.

Inputs: pattern_index (required).

get_pattern_countA

Get the total number of pattern pieces in the current project.

Inputs: no named parameters.

get_pattern_geometryA

Get pattern pieces with numbered outline lines, internal shapes and all seams.

Use this before sewing or editing lines: every line-based tool takes the line_index values listed here. Each line has its length (mm) and start/end points in 2D pattern coordinates. Each seam lists, for both sides, the pattern, optional internal shape, the lines it covers (coverage 1.0 = whole line) and where stitching starts and ends. "sewn_together" pairs those ends (side a's start is sewn to side b's start, end to end): if a left end is paired with a right end the seam is twisted; sew it again with one direction flipped. A pocket's fold-over seam deliberately pairs the strip's top edge with a lower line.

Args: pattern_index: Only return this piece and the seams touching it (default: all). include_points: Also return every point of every line (larger output).

Inputs: pattern_index, include_points.

get_pattern_infoB

Get detailed information about a specific pattern piece.

Args: pattern_index: Zero-based index of the pattern piece.

Inputs: pattern_index (required).

get_pattern_listA

Get a list of all pattern pieces with their indices and names.

Inputs: no named parameters.

get_pattern_stateC

Get a piece's layer, solidify state, grain direction, shrinkage and 3D arrangement.

Inputs: pattern_index (required).

get_print_optionsA

Current 2D export settings (paper, orientation, resolution and what is shown) for the pattern window ("pattern") or the print layout ("print_layout").

Inputs: source.

get_project_infoA

Get information about the current CLO3D project including name, path, version, and counts for patterns, fabrics, and colorways.

Inputs: no named parameters.

get_topstitch_styleB

A topstitch style's name, offset and per-line values as CLO's API reports them (stitch length and thread thickness are not readable through the API).

Inputs: style_index (required).

hang_on_rodA

Hang panels on a rod from a frozen header band: the reliable way to hang curtains, noren and banners (make_rod_pocket's folded pocket is not reliable with several panels).

Adds a band above each panel's straight top edge, sews it on, freezes it flat (it acts like a pin line) and lays a rod along it; the panels drape from the bands. The pocket does not wrap the rod in 3D: the rod lies against the band's rod_side face, so from the other side it looks like a rod pocket with the rod ends showing. Save a checkpoint first.

Args: pattern_index: The panel, or a list of panels sharing one rod; their top edges must be at the same height. band_height: Height of the band in mm, added above the top edge (so make the panels that much shorter for a given finished height). At least rod_diameter + 10. rod_diameter: Rod diameter in mm. rod_overhang: How far the rod extends past each side, in mm. settle_steps: Simulation steps to let the panels hang. rod_side: "front" (+z, towards the front camera) or "back" (-z). fabric_index: Fabric for the bands (default: each panel's own fabric).

Inputs: pattern_index (required), rod_side, band_height, fabric_index, +3 more.

import_avatarA

Load an avatar (.avt, .avac) into the scene, optionally with an arrangement file (.apf).

Inputs: file_path (required), apf_path.

import_collision_objectA

Import your own OBJ (e.g. a modelled curtain rail or furniture) as an object cloth collides with. Units are mm unless scale is set (e.g. 10 for a model in cm). It replaces the current avatar and any rods or boxes (CLO keeps a single avatar).

Args: file_path: Absolute path to the .obj file. keep_position: Keep the file's coordinates (False: CLO drops it onto the ground). scale: Scale factor applied on import.

Inputs: file_path (required), scale, keep_position.

import_fileB

Import a file into CLO3D. Auto-detects type from extension (.zprj, .zpac, .obj, .fbx, .avt, etc.).

Args: file_path: Absolute path to the file to import.

Inputs: file_path (required).

list_checkpointsA

List saved checkpoints, newest first.

Inputs: no named parameters.

list_collision_objectsA

The rods and boxes currently in the scene, with the index remove_collision_object takes.

Inputs: no named parameters.

list_topstitch_stylesA

List the topstitch styles in the project, for add_topstitch's style_index.

Inputs: no named parameters.

load_poseA

Pose the avatar from a .pos file (made and saved in CLO, or with save_pose). CLO's API cannot bend joints itself, so poses are built in CLO's pose tools and reused from files. Load the pose before placing garment pieces: arrangement points follow the avatar.

Args: file_path: The .pos file. pose_and_translation: Also apply the pose's position in the scene (default: pose only). bottom_to_ground: Stand the avatar's feet on the ground afterwards.

Inputs: file_path (required), bottom_to_ground, pose_and_translation.

make_rod_pocketA

Make a rod pocket along a panel's top edge and hang the panel on a rod (curtains, banners, flags). The panel needs a straight, horizontal top edge. Verified with one panel; with several panels a pocket often fails to wrap, so prefer hang_on_rod there.

Adds a pocket strip above the panel, sews it to the top edge and to a fold line, holds the panel still, places a rod just in front of the strip above the top edge (the folding strip wraps it; verified in CLO 2025.2) and lets the panel hang. Returns whether the cloth stays up at the ends and in the middle; the pocket can be fuller in places, so look at the result with capture_3d. Save a checkpoint first.

Args: pattern_index: The panel, or a list of panels sharing one rod (e.g. the two halves of a noren); their top edges must be at the same height. pocket_depth: Height of the pocket strip in mm (the tube is roughly 1.4x this around). rod_diameter: Rod diameter in mm. rod_overhang: How far the rod extends past each side of the panel, in mm. settle_steps: Simulation steps after releasing the panel. pocket_side: Only "front" (+z, towards the front camera) forms reliably in CLO 2025.2. For a curtain whose pocket belongs on the back, build it facing the "back" camera (decorative patches on layer -1). Keep patches on the pocket side below fold_y.

Inputs: pattern_index (required), pocket_side, pocket_depth, rod_diameter, +2 more.

map_cloth_to_patternsA

Work out which cloth vertices belong to which pattern, for get_cloth_bounds(pattern_index). Run while the pieces are still flat (after a few simulation steps, before draping).

CLO lists cloth vertices pattern by pattern, but its per-pattern counts are slightly off, so the boundaries are found from the flat layout. Freezing or unfreezing pieces reorders CLO's list (unfrozen pieces first) and changes the mesh; the map is then refused, so map again in the new state.

Inputs: no named parameters.

marker_reportA

Measure the marker shown in CLO's Print Layout Editor: which fabric it is, its length along the fabric, width, pieces, area and utilisation, from a 1:1 PDF export (path included for plotting). CLO exports one fabric at a time and the API cannot switch it; the result lists the other fabrics to switch to in CLO.

Inputs: no named parameters.

mirror_patternB

Create a symmetric (mirrored, linked) copy of a piece, optionally copying its sewing.

Inputs: pattern_index (required), with_sewing.

move_pattern_2dB

Move a piece in the 2D pattern window: to (x, y), or by (dx, dy).

Inputs: pattern_index (required), x, y, dx, +1 more.

nest_patternsA

Auto-nest the pieces in CLO's print layout and report the marker shown there: length along the fabric, width, pieces and utilisation (measured from the exported 1:1 layout; CLO's own fabric length value did not match the layout in testing).

In a fresh CLO session the API's nesting leaves the layout empty until CLO's Printing Layout mode has been opened once (tested: empty before the switch, working right after it and for the rest of the session, also back in Simulation mode). If it is still empty, allow_ui_click clicks "Nest All Fabrics" in CLO (needs Printing Layout mode); otherwise the error says what to do.

Args: buffer_spacing_mm: Space between pieces. fabric_index: With fabric_width_mm, set this fabric's width first. fabric_width_mm: Usable fabric width in mm. timeout_s: How long to wait for CLO's nesting to finish. allow_ui_click: Click CLO's "Nest All Fabrics" button when the layout is empty.

Inputs: timeout_s, fabric_index, allow_ui_click, fabric_width_mm, +1 more.

new_projectA

Create a new empty CLO3D project, clearing the current scene.

Args: discard_unsaved: Drop unsaved changes when CLO asks; otherwise it stops with an error.

Inputs: discard_unsaved.

offset_internal_lineA

Create internal lines parallel to an outline line (e.g. hem fold or pleat lines).

The offset must fit inside the piece; if CLO creates nothing, the tool returns an error (try reverse=True, a smaller distance, or a longer line).

Args: pattern_index: Pattern to draw on. line_index: Outline line to offset from. distance: Distance between lines in mm. count: Number of lines to create. reverse: Offset to the other side. extend: Extend the new lines to the piece outline.

Inputs: distance (required), line_index (required), pattern_index (required), count, +2 more.

open_fileB

Open a file in CLO3D. Supports .zprj, .zpac, .avt, .obj, .fbx formats.

Args: file_path: Absolute path to the file to open. discard_unsaved: Drop unsaved changes when CLO asks; otherwise it stops with an error.

Inputs: file_path (required), discard_unsaved.

place_patternA

Place a pattern piece in 3D on an avatar arrangement point.

CLO's API has no free XYZ move/rotate; placement goes through arrangement points. Run simulate afterwards to drape.

Args: pattern_index: Pattern to place. arrangement_index: Arrangement point from get_arrangement_points. orientation: Orientation value for the piece on the point. position_x: Position on the arrangement surface (set together with position_y/offset). position_y: Position on the arrangement surface. offset: Distance from the arrangement surface. shape_style: "Flat" or "Curved" (wrap around the body).

Inputs: pattern_index (required), offset, position_x, position_y, +3 more.

remove_all_pinsA

Remove every pin in the scene. (CLO's API can remove pins but not create them.)

Inputs: no named parameters.

remove_collision_objectA

Remove one rod or box (index from list_collision_objects); the others stay.

Inputs: index (required).

replace_fabricA

Replace an existing fabric with a new one from file.

Args: fabric_index: Zero-based index of the fabric to replace. file_path: Absolute path to the replacement fabric file (.zfab).

Inputs: file_path (required), fabric_index (required).

reset_arrangementA

Reset all pieces to their arrangement positions (undo draping).

Inputs: no named parameters.

restart_cloA

Close CLO and start it again, e.g. to load a rebuilt plug-in or recover from a hang.

The scene is saved first as the checkpoint "before_restart" and reopened afterwards. CLO is then ended without its own save prompt. If the scene cannot be saved (CLO not answering), nothing is closed unless discard_unsaved=True.

Args: save_first: Save the scene as checkpoint "before_restart" first. reopen: Reopen that checkpoint once CLO is back. install_plugin: Path of a plug-in DLL to install while CLO is closed (e.g. cpp_plugin/dist/CloMcpPlugin.dll); CLO only loads plug-ins at startup. discard_unsaved: Close even when the scene could not be saved. timeout_s: How long to wait for CLO and the plug-in to come back.

Inputs: reopen, timeout_s, save_first, install_plugin, +1 more.

restore_checkpointA

Reopen a checkpoint, replacing the current scene (unsaved changes are lost).

Afterwards CLO's open file is the checkpoint copy; save with save_project to the original_path returned here to keep working on the real file.

Inputs: name (required).

save_checkpointA

Save the whole scene so it can be restored later. CLO's API has no undo, so save one before risky edits (sewing, deleting lines, simulating). Reusing a name overwrites it.

CLO saves the checkpoint like "Save As", so its open file becomes the checkpoint copy. The result's original_path is the real file: save there with save_project when done.

Inputs: name.

save_poseA

Save the avatar's current pose as a .pos file, for load_pose later (e.g. after posing it in CLO). Without a path CLO writes it to its temporary folder; the path is returned.

Inputs: file_path.

save_projectA

Save the current CLO3D project as a .zprj file.

Args: file_path: Absolute path for the saved .zprj file.

Inputs: file_path (required).

set_current_colorwayA

Switch to a different colorway.

Args: colorway_index: Zero-based index of the colorway to activate.

Inputs: colorway_index (required).

set_elasticA

Set elastic on a pattern line (or all lines with line_index=-1). Only passed values change.

Args: pattern_index: Pattern to change. line_index: Outline line, or -1 for every line. enabled: Elastic on/off. strength: Elastic strength. ratio: Elastic strength ratio in percent. segment_length: Elastic segment length in mm. total_length: Elastic total length in mm.

Inputs: pattern_index (required), ratio, enabled, strength, +3 more.

set_fabric_colorA

Set the PBR base color of a fabric.

Args: fabric_index: Zero-based index of the fabric. r: Red channel (0-255). g: Green channel (0-255). b: Blue channel (0-255). face: "front", "back" or "side". The back and side only show their own colour once set_fabric_faces has separated them from the front.

Inputs: fabric_index (required), b, g, r, +1 more.

set_fabric_facesA

Give a fabric a back face of its own, for double-faced and reversible cloth (e.g. plaid on the front, solid charcoal on the back), or join it to the front again. Do this before texturing the front: a back separated afterwards copies the front's texture.

Args: fabric_index: Fabric to change. separate_back: True for its own back material and colour, False to use the front's. back_color: Optionally set the back's colour at the same time, [r, g, b] 0-255.

Inputs: fabric_index (required), back_color, separate_back.

set_fabric_informationA

Set a fabric's name and information fields, e.g. {"Content": "60% Cotton, 40% Linen"}. Field names are CLO's (see get_fabric_info). This is metadata only; the drape comes from the fabric's physical properties.

Inputs: fabric_index (required), name, information.

set_fabric_physicsA

Set all of a fabric's physical properties (how it stretches, bends and hangs), keeping its colour, texture and name. CLO cannot report a fabric's current values (only weight and thickness, via get_fabric_info), so every value is written: the defaults are CLO's documented defaults, not the fabric's own. Pass real values for a specific cloth, or keep a library fabric (add_fabric) whose physics were measured.

Args: fabric_index: Fabric to change. weight_gsm: Weight in g/m2. thickness_mm: Thickness in mm. stretch_weft: Stretch stiffness across the grain (weft); higher = less stretch. stretch_warp: Stretch stiffness along the grain (warp). shear: Shear stiffness (bias stretch). bending_weft: Bending stiffness across the grain; higher = stiffer, fewer folds. bending_warp: Bending stiffness along the grain. bending_bias: Bending stiffness on the bias. buckling_ratio: Buckling ratio (all directions). buckling_stiffness: Buckling stiffness (all directions). friction: Friction. internal_damping: Internal damping. content: Optionally also set the content label, e.g. "60% Cotton, 40% Linen". property_name: Name for this set of physical properties.

Inputs: fabric_index (required), shear, content, friction, +11 more.

set_fabric_textureC

Use an image (PNG, JPG) as a fabric's base texture.

Inputs: file_path (required), fabric_index (required).

set_fabric_widthB

Set a fabric's usable width (the marker width in the print layout), in mm.

Inputs: width_mm (required), fabric_index (required).

set_fit_mapA

Show CLO's fit map in the 3D window: "strain" (stretch %), "stress" (pressure) or "off".

Inputs: mode (required).

set_nestingC

Nesting settings for the print layout: spacing between pieces, which colourways get the result, and per piece how it may turn ("1-way": as cut, "2-way": also turned 180 degrees, "4-way": also 90 degrees) or a fixed [x, y] position.

Inputs: grain, colorways, pattern_index, fixed_position, +1 more.

set_pattern_nameA

Rename a pattern piece.

Args: pattern_index: Zero-based index of the pattern piece. name: New name for the pattern piece.

Inputs: name (required), pattern_index (required).

set_pattern_stateA

Set simulation state of a pattern piece. Only the values you pass are changed.

CLO's API cannot place pins; freeze or strengthen a piece to hold it in place instead.

Args: pattern_index: Pattern to change. frozen: Freeze (excluded from simulation, stays where it is). strengthened: Strengthen (stiffer, holds shape). solidified: Solidify. solidify_strength: Solidify strength. hidden_3d: Hide the piece in the 3D window. layer: Layer number (higher layers sit on top in collisions). particle_distance: Mesh particle distance in mm (smaller = finer mesh, slower). grain_degrees: Grainline direction in degrees.

Inputs: pattern_index (required), layer, frozen, hidden_3d, +5 more.

set_seam_tapingC

Turn seam taping on or off for one outline line of a pattern.

Inputs: line_index (required), pattern_index (required), enabled.

set_shrinkageA

Set a piece's fabric shrinkage as its size in percent: 100 = no shrinkage, 97 = shrinks 3 %.

Args: pattern_index: Pattern to change. width_percent: Width (weft) size in percent, 50-150. height_percent: Height (warp) size in percent, 50-150.

Inputs: pattern_index (required), width_percent, height_percent.

set_simulation_qualityA

Set the simulation preset: 0 Normal, 1 Animation (stable), 2 Fitting (accurate), 3 FAST (GPU).

Args: quality: Preset index. simulation_mode: 0 CPU, 1 GPU (defaults to GPU for preset 3, CPU otherwise).

Inputs: quality (required), simulation_mode.

set_topstitch_styleA

Rename a topstitch style, set its thread colour ([r, g, b] 0-255) or its number of parallel lines. For stitch length, thread thickness and offset use create_topstitch_style.

Inputs: style_index (required), name, color, number_of_lines.

sew_edgesA

Sew two outline edges by saying which points meet: from_a meets from_b and to_a meets to_b. The lines are found by their endpoints (2D pattern coordinates, mm, within 2 mm) and the stitch directions follow, so the seam cannot come out twisted (with sew_lines the direction flags are easy to get backwards).

Args: pattern_a: Piece of side A. from_a: One end of the edge on A, e.g. the neck point [x, y]. to_a: The other end on A, e.g. the shoulder point. pattern_b: Piece of side B. from_b: The point on B that meets from_a. to_b: The point on B that meets to_a.

Inputs: to_a (required), to_b (required), from_a (required), from_b (required), +2 more.

sew_linesA

Sew one line to another (segment sewing). Get line indices from get_pattern_geometry.

If the seam comes out twisted, sew it again with one direction flipped.

Args: pattern_a: Pattern index of side A. line_a: Line index on side A (outline line, or line of internal_shape_a). pattern_b: Pattern index of side B. line_b: Line index on side B (outline line, or line of internal_shape_b). direction_a: Stitch direction along line A (True = forward). direction_b: Stitch direction along line B (True = forward). internal_shape_a: Sew a line of this internal shape on A instead of the outline. internal_shape_b: Sew a line of this internal shape on B instead of the outline.

Inputs: line_a (required), line_b (required), pattern_a (required), pattern_b (required), +4 more.

show_avatarB

Show or hide the avatar.

Inputs: show.

simulateB

Run cloth simulation for a number of steps.

Args: steps: Number of simulation steps to run (default 100).

Inputs: steps.

topstitch_allA

Topstitch a whole garment in one go: every seam and/or every free outline edge (edges no seam uses: hems, front edges, cuffs, collar tops), e.g. the contrast edge stitching of a reversible or unlined jacket.

Args: style_index: Topstitch style (list_topstitch_styles, create_topstitch_style). seams: Stitch along every seam. free_edges: Stitch every free outline edge. pattern_indices: Only these pieces (default: all).

Inputs: style_index (required), seams, free_edges, pattern_indices.

unfold_patternB

Unfold a half pattern across one of its lines (e.g. the centre-front fold line).

Inputs: line_index (required), pattern_index (required), half_symmetry.

view_patternsA

Picture of the 2D pattern pieces with every outline line numbered and seams coloured.

Blue numbers are line_index values for sewing, elastic, topstitch and seam taping; "sN" marks lines sewn by seam N; grey lines are internal lines. Pieces on another layer (appliqué, hem strips) lie on their base piece and are labelled with their layer, +z or -z. Pair it with get_pattern_geometry for exact lengths and coordinates.

Args: pattern_index: Draw only this piece (default: all pieces).

Inputs: pattern_index.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 104 tools

    Disambiguation3/5

    Many tools have clear, distinct purposes, but several overlapping pairs exist (e.g., sew_edges vs sew_lines, add_topstitch vs topstitch_all, and multiple export/save variants). The detailed descriptions help, but with 104 tools the chance of misselection is significant.

    Naming Consistency4/5

    Almost all tools use snake_case with a verb_noun or verb_noun_phrase pattern (e.g., get_pattern_geometry, set_fabric_color, add_internal_shape). A few exceptions like marker_report, new_project, and clo_ui_nest_all_fabrics are minor deviations but still readable.

    Tool Count1/5

    104 tools is far beyond the 50-tool threshold for extreme mismatch. Even for a complex application like CLO3D, this count is excessive and likely overwhelms both agents and users.

    Completeness5/5

    The surface covers the full CLO3D lifecycle: project management, pattern creation/editing, fabric handling, sewing, simulation, avatars, collision objects, checkpoints, dialogs, and numerous export formats. Workarounds are provided for API limitations, leaving no obvious gaps.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language control of Blender 3D through MCP clients, allowing creation, modification, and manipulation of 3D models, animations, and scenes.
      301
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI-assisted garment design by letting Claude (or any MCP host) drive CLO3D — import projects, dress avatars, assign fabrics, simulate cloth, render, and export, all from a chat.
      14
      5
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      Enables an AI assistant to interact with CLO3D projects, including inspecting scenes, editing patterns, sewing, changing fabrics, simulating, taking snapshots, and saving checkpoints.
      48
      1
      MIT