← WebMCP Directory

Tool tree

invitedpeak.github.io

Developer ToolsTools verified
Website
A browser 3D modeling studio that AI agents drive through WebMCP tools. Watch the model take shape in the viewport.
Explore capabilities
    get_guideAnswer

    Read this first. Returns the studio workflow, coordinate conventions, and modeling tips for building good-looking assets with these tools.

    View tool JSON
    {
      "name": "get_guide",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read this first. Returns the studio workflow, coordinate conventions, and modeling tips for building good-looking assets with these tools.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/flevAgenticCAD/"
    }
    list_presetsAnswer

    List object types with their default parameters, material presets, lighting rigs, and camera view names.

    View tool JSON
    {
      "name": "list_presets",
      "kind": "answer",
      "impl": "imperative",
      "description": "List object types with their default parameters, material presets, lighting rigs, and camera view names.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/flevAgenticCAD/"
    }
    describe_sceneAnswer

    Inspect the whole scene: objects with world-space size and center, materials, lights, camera, and environment. Use detail "full" to include geometry parameters and hierarchy.

    View tool JSON
    {
      "name": "describe_scene",
      "kind": "answer",
      "impl": "imperative",
      "description": "Inspect the whole scene: objects with world-space size and center, materials, lights, camera, and environment. Use detail \"full\" to include geometry parameters and hierarchy.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "enum": [
              "summary",
              "full"
            ],
            "description": "Default \"summary\"."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    get_objectAnswer

    Full details for one object: parameters, transform, material, world bounds, children.

    View tool JSON
    {
      "name": "get_object",
      "kind": "answer",
      "impl": "imperative",
      "description": "Full details for one object: parameters, transform, material, world bounds, children.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    get_boundsAnswer

    World-space bounding box (min, max, size, center) of the given objects, or of the whole scene when ids is omitted.

    View tool JSON
    {
      "name": "get_bounds",
      "kind": "answer",
      "impl": "imperative",
      "description": "World-space bounding box (min, max, size, center) of the given objects, or of the whole scene when ids is omitted.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Object ids or names. Omit for the whole scene."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    capture_viewAction

    Quick snapshot of the live viewport exactly as the user sees it, including grid and selection. For a polished image use render.

    View tool JSON
    {
      "name": "capture_view",
      "kind": "act",
      "impl": "imperative",
      "description": "Quick snapshot of the live viewport exactly as the user sees it, including grid and selection. For a polished image use render.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "width": {
            "type": "integer",
            "description": "Output width in pixels. Default 800."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    create_primitiveAction

    Add a primitive solid. Types: box, rounded_box, sphere, cylinder, cone, torus, torus_knot, plane, capsule, icosahedron, dodecahedron, octahedron, tetrahedron, ring, prism. Each type has its own params (see list_presets); omitted params use defaults. Primitives are centered on their origin, so a box of height 1 spans y -0.5 to 0.5 before on_ground lifts it.

    View tool JSON
    {
      "name": "create_primitive",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a primitive solid. Types: box, rounded_box, sphere, cylinder, cone, torus, torus_knot, plane, capsule, icosahedron, dodecahedron, octahedron, tetrahedron, ring, prism. Each type has its own params (see list_presets); omitted params use defaults. Primitives are centered on their origin, so a box of height 1 spans y -0.5 to 0.5 before on_ground lifts it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "box",
              "rounded_box",
              "sphere",
              "cylinder",
              "cone",
              "torus",
              "torus_knot",
              "plane",
              "capsule",
              "icosahedron",
              "dodecahedron",
              "octahedron",
              "tetrahedron",
              "ring",
              "prism"
            ],
            "description": "Primitive type."
          },
          "params": {
            "type": "object",
            "properties": {},
            "description": "Type-specific dimensions, e.g. {\"width\":1,\"height\":2,\"depth\":0.5} for box or {\"radius\":0.4} for sphere."
          },
          "name": {
            "type": "string",
            "description": "Display name. Names are unique; a numeric suffix is added on collision."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z] in parent space. Y is up. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Euler rotation in degrees [x, y, z]. Default [0, 0, 0]."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "parent": {
            "type": "string",
            "description": "Id or name of a parent object (usually a group). Position and rotation are then relative to it."
          },
          "on_ground": {
            "type": "boolean",
            "description": "Lift the object so its lowest point sits on the ground plane. Defaults to true when position is omitted (except for tube and mesh, whose coordinates are absolute), false otherwise."
          },
          "visible": {
            "type": "boolean",
            "description": "Default true."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Default true."
          },
          "receive_shadow": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "type"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    create_latheAction

    Revolve a 2D profile around the Y axis. points are [radius, height] pairs from bottom to top; radius must be >= 0. Ideal for vases, bottles, bowls, chess pieces, knobs, and anything round. Use phi_length < 360 for a partial sweep (set the material double_sided).

    View tool JSON
    {
      "name": "create_lathe",
      "kind": "act",
      "impl": "imperative",
      "description": "Revolve a 2D profile around the Y axis. points are [radius, height] pairs from bottom to top; radius must be >= 0. Ideal for vases, bottles, bowls, chess pieces, knobs, and anything round. Use phi_length < 360 for a partial sweep (set the material double_sided).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "points": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2
            },
            "description": "Profile as [[radius, y], ...], at least 2 points, ordered bottom to top. Start and end at radius 0 for a closed solid."
          },
          "segments": {
            "type": "integer",
            "description": "Radial segments around the axis. Default 64."
          },
          "phi_start": {
            "type": "number",
            "description": "Start angle in degrees. Default 0."
          },
          "phi_length": {
            "type": "number",
            "description": "Sweep angle in degrees. Default 360."
          },
          "name": {
            "type": "string",
            "description": "Display name. Names are unique; a numeric suffix is added on collision."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z] in parent space. Y is up. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Euler rotation in degrees [x, y, z]. Default [0, 0, 0]."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "parent": {
            "type": "string",
            "description": "Id or name of a parent object (usually a group). Position and rotation are then relative to it."
          },
          "on_ground": {
            "type": "boolean",
            "description": "Lift the object so its lowest point sits on the ground plane. Defaults to true when position is omitted (except for tube and mesh, whose coordinates are absolute), false otherwise."
          },
          "visible": {
            "type": "boolean",
            "description": "Default true."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Default true."
          },
          "receive_shadow": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "points"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    create_extrudeAction

    Extrude a 2D polygon (with optional holes) into a solid. The shape is drawn in a plane and pushed along axis (default "y", so the polygon lies flat on the ground like a floor plan; use "z" for a shape that stands upright facing the camera). Optional rounded bevels. Good for brackets, plates, letters, gears, profiles, and building footprints.

    View tool JSON
    {
      "name": "create_extrude",
      "kind": "act",
      "impl": "imperative",
      "description": "Extrude a 2D polygon (with optional holes) into a solid. The shape is drawn in a plane and pushed along axis (default \"y\", so the polygon lies flat on the ground like a floor plan; use \"z\" for a shape that stands upright facing the camera). Optional rounded bevels. Good for brackets, plates, letters, gears, profiles, and building footprints.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "shape": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2
            },
            "description": "Outline polygon as [[x, y], ...] in counter-clockwise order, at least 3 points."
          },
          "holes": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 2,
                "maxItems": 2
              },
              "description": "One hole polygon."
            },
            "description": "Optional list of hole polygons, each [[x, y], ...]."
          },
          "depth": {
            "type": "number",
            "description": "Extrusion length. Default 0.2."
          },
          "axis": {
            "type": "string",
            "enum": [
              "x",
              "y",
              "z"
            ],
            "description": "Extrusion direction. Default \"y\"."
          },
          "bevel": {
            "type": "boolean",
            "description": "Round the edges. Default false."
          },
          "bevel_size": {
            "type": "number",
            "description": "Bevel inset. Default 0.02."
          },
          "bevel_thickness": {
            "type": "number",
            "description": "Bevel height. Default 0.02."
          },
          "bevel_segments": {
            "type": "integer",
            "description": "Default 3."
          },
          "curve_segments": {
            "type": "integer",
            "description": "Segments for curved outline sections. Default 12."
          },
          "name": {
            "type": "string",
            "description": "Display name. Names are unique; a numeric suffix is added on collision."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z] in parent space. Y is up. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Euler rotation in degrees [x, y, z]. Default [0, 0, 0]."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "parent": {
            "type": "string",
            "description": "Id or name of a parent object (usually a group). Position and rotation are then relative to it."
          },
          "on_ground": {
            "type": "boolean",
            "description": "Lift the object so its lowest point sits on the ground plane. Defaults to true when position is omitted (except for tube and mesh, whose coordinates are absolute), false otherwise."
          },
          "visible": {
            "type": "boolean",
            "description": "Default true."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Default true."
          },
          "receive_shadow": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "shape"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    create_tubeAction

    Sweep a circle along a 3D path: pipes, cables, handles, rails, wire frames. The path is smoothed with a Catmull-Rom spline unless curve is "linear".

    View tool JSON
    {
      "name": "create_tube",
      "kind": "act",
      "impl": "imperative",
      "description": "Sweep a circle along a 3D path: pipes, cables, handles, rails, wire frames. The path is smoothed with a Catmull-Rom spline unless curve is \"linear\".",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 3,
              "maxItems": 3
            },
            "description": "[[x, y, z], ...] with at least 2 points."
          },
          "radius": {
            "type": "number",
            "description": "Tube radius. Default 0.05."
          },
          "closed": {
            "type": "boolean",
            "description": "Join the end back to the start. Default false."
          },
          "curve": {
            "type": "string",
            "enum": [
              "catmullrom",
              "linear"
            ],
            "description": "Default \"catmullrom\"."
          },
          "tubular_segments": {
            "type": "integer",
            "description": "Default 64."
          },
          "radial_segments": {
            "type": "integer",
            "description": "Default 12."
          },
          "name": {
            "type": "string",
            "description": "Display name. Names are unique; a numeric suffix is added on collision."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z] in parent space. Y is up. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Euler rotation in degrees [x, y, z]. Default [0, 0, 0]."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "parent": {
            "type": "string",
            "description": "Id or name of a parent object (usually a group). Position and rotation are then relative to it."
          },
          "on_ground": {
            "type": "boolean",
            "description": "Lift the object so its lowest point sits on the ground plane. Defaults to true when position is omitted (except for tube and mesh, whose coordinates are absolute), false otherwise."
          },
          "visible": {
            "type": "boolean",
            "description": "Default true."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Default true."
          },
          "receive_shadow": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "path"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    create_gearAction

    A spur gear with trapezoidal teeth and an optional center hole. Lies flat (axis "y") by default; use axis "z" for a gear facing the camera.

    View tool JSON
    {
      "name": "create_gear",
      "kind": "act",
      "impl": "imperative",
      "description": "A spur gear with trapezoidal teeth and an optional center hole. Lies flat (axis \"y\") by default; use axis \"z\" for a gear facing the camera.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "teeth": {
            "type": "integer",
            "description": "Number of teeth. Default 12."
          },
          "outer_radius": {
            "type": "number",
            "description": "Radius to the tooth tips. Default 0.5."
          },
          "thickness": {
            "type": "number",
            "description": "Default 0.2."
          },
          "hole_radius": {
            "type": "number",
            "description": "Center bore radius, 0 for none. Default 0.1."
          },
          "tooth_depth": {
            "type": "number",
            "description": "Radial tooth height. Default is proportional to the pitch."
          },
          "axis": {
            "type": "string",
            "enum": [
              "x",
              "y",
              "z"
            ],
            "description": "Axis of rotation. Default \"y\"."
          },
          "name": {
            "type": "string",
            "description": "Display name. Names are unique; a numeric suffix is added on collision."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z] in parent space. Y is up. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Euler rotation in degrees [x, y, z]. Default [0, 0, 0]."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "parent": {
            "type": "string",
            "description": "Id or name of a parent object (usually a group). Position and rotation are then relative to it."
          },
          "on_ground": {
            "type": "boolean",
            "description": "Lift the object so its lowest point sits on the ground plane. Defaults to true when position is omitted (except for tube and mesh, whose coordinates are absolute), false otherwise."
          },
          "visible": {
            "type": "boolean",
            "description": "Default true."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Default true."
          },
          "receive_shadow": {
            "type": "boolean",
            "description": "Default true."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    create_meshAction

    Add raw triangle geometry: a flat positions array [x,y,z, x,y,z, ...] and optional indices (triples of vertex indices, counter-clockwise when seen from outside). Use this for shapes the other tools cannot make. Keep it under about 20k vertices.

    View tool JSON
    {
      "name": "create_mesh",
      "kind": "act",
      "impl": "imperative",
      "description": "Add raw triangle geometry: a flat positions array [x,y,z, x,y,z, ...] and optional indices (triples of vertex indices, counter-clockwise when seen from outside). Use this for shapes the other tools cannot make. Keep it under about 20k vertices.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "positions": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Flat vertex list, length a multiple of 3."
          },
          "indices": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Optional triangle index list, length a multiple of 3. Omit for unindexed triangles taken three vertices at a time."
          },
          "smooth": {
            "type": "boolean",
            "description": "Merge shared vertices and smooth normals. Default true. Set false for hard-edged shapes."
          },
          "name": {
            "type": "string",
            "description": "Display name. Names are unique; a numeric suffix is added on collision."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z] in parent space. Y is up. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Euler rotation in degrees [x, y, z]. Default [0, 0, 0]."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "parent": {
            "type": "string",
            "description": "Id or name of a parent object (usually a group). Position and rotation are then relative to it."
          },
          "on_ground": {
            "type": "boolean",
            "description": "Lift the object so its lowest point sits on the ground plane. Defaults to true when position is omitted (except for tube and mesh, whose coordinates are absolute), false otherwise."
          },
          "visible": {
            "type": "boolean",
            "description": "Default true."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Default true."
          },
          "receive_shadow": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "positions"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    create_groupAction

    Create an empty group, optionally moving existing objects into it (their world placement is preserved). Groups can be moved, rotated, scaled, and duplicated as one unit.

    View tool JSON
    {
      "name": "create_group",
      "kind": "act",
      "impl": "imperative",
      "description": "Create an empty group, optionally moving existing objects into it (their world placement is preserved). Groups can be moved, rotated, scaled, and duplicated as one unit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Group name."
          },
          "children": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Objects to move into the group."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Group origin. Default [0, 0, 0]."
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Degrees."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "parent": {
            "type": "string",
            "description": "Parent object for the group."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    update_objectAction

    Set properties of an object: name, absolute transform, geometry params (merged into the existing ones), material, visibility, shadows. For relative moves use transform_object.

    View tool JSON
    {
      "name": "update_object",
      "kind": "act",
      "impl": "imperative",
      "description": "Set properties of an object: name, absolute transform, geometry params (merged into the existing ones), material, visibility, shadows. For relative moves use transform_object.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          },
          "name": {
            "type": "string"
          },
          "params": {
            "type": "object",
            "properties": {},
            "description": "Geometry parameters to change, merged with the current ones, e.g. {\"radius\": 0.8}."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3
          },
          "rotation": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Degrees."
          },
          "scale": {
            "description": "Uniform number or [x, y, z]. Default 1.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          },
          "visible": {
            "type": "boolean"
          },
          "cast_shadow": {
            "type": "boolean"
          },
          "receive_shadow": {
            "type": "boolean"
          },
          "on_ground": {
            "type": "boolean",
            "description": "After other changes, drop the object onto the ground plane."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    transform_objectAction

    Move, rotate, or scale an object relative to its current state (in parent space).

    View tool JSON
    {
      "name": "transform_object",
      "kind": "act",
      "impl": "imperative",
      "description": "Move, rotate, or scale an object relative to its current state (in parent space).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          },
          "translate": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Offset to add to position."
          },
          "rotate": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Degrees to add to rotation."
          },
          "scale": {
            "description": "Multiplier: number or [x, y, z].",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 3,
                "maxItems": 3
              }
            ]
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    duplicate_objectAction

    Copy an object (with its children) one or more times, offsetting and rotating each successive copy. Makes linear arrays: count 5 with offset [1.2, 0, 0] gives a row.

    View tool JSON
    {
      "name": "duplicate_object",
      "kind": "act",
      "impl": "imperative",
      "description": "Copy an object (with its children) one or more times, offsetting and rotating each successive copy. Makes linear arrays: count 5 with offset [1.2, 0, 0] gives a row.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          },
          "count": {
            "type": "integer",
            "description": "Number of copies. Default 1."
          },
          "offset": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Added to the position for each successive copy. Default [0, 0, 0]."
          },
          "rotate_step": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Degrees added for each successive copy."
          },
          "name": {
            "type": "string",
            "description": "Base name for the copies."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    array_radialAction

    Arrange copies of an object evenly around an axis (bolt circles, spokes, petals, chair legs). The original stays; count minus one copies are added.

    View tool JSON
    {
      "name": "array_radial",
      "kind": "act",
      "impl": "imperative",
      "description": "Arrange copies of an object evenly around an axis (bolt circles, spokes, petals, chair legs). The original stays; count minus one copies are added.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          },
          "count": {
            "type": "integer",
            "description": "Total instances including the original."
          },
          "axis": {
            "type": "string",
            "enum": [
              "x",
              "y",
              "z"
            ],
            "description": "Rotation axis. Default \"y\"."
          },
          "center": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Center of the circle in parent space. Default [0, 0, 0]."
          },
          "rotate_copies": {
            "type": "boolean",
            "description": "Also rotate each copy to face outward. Default true."
          }
        },
        "required": [
          "id",
          "count"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    mirror_objectAction

    Mirror an object across a plane through the given coordinate (default the origin) perpendicular to axis. Keeps the original unless keep_original is false.

    View tool JSON
    {
      "name": "mirror_object",
      "kind": "act",
      "impl": "imperative",
      "description": "Mirror an object across a plane through the given coordinate (default the origin) perpendicular to axis. Keeps the original unless keep_original is false.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          },
          "axis": {
            "type": "string",
            "enum": [
              "x",
              "y",
              "z"
            ],
            "description": "Axis perpendicular to the mirror plane."
          },
          "at": {
            "type": "number",
            "description": "Coordinate of the mirror plane along axis. Default 0."
          },
          "keep_original": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "id",
          "axis"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    drop_to_groundAction

    Move objects straight down (or up) so their lowest point touches the ground plane. Omit ids to drop every top-level object.

    View tool JSON
    {
      "name": "drop_to_ground",
      "kind": "act",
      "impl": "imperative",
      "description": "Move objects straight down (or up) so their lowest point touches the ground plane. Omit ids to drop every top-level object.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Object ids or names."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    place_onAction

    Stack one object on top of another: its bottom lands on the target's top, centered over the target (plus an optional x/z offset).

    View tool JSON
    {
      "name": "place_on",
      "kind": "act",
      "impl": "imperative",
      "description": "Stack one object on top of another: its bottom lands on the target's top, centered over the target (plus an optional x/z offset).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object to move."
          },
          "target": {
            "type": "string",
            "description": "Object to rest on."
          },
          "offset": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 2,
            "maxItems": 2,
            "description": "[dx, dz] offset from the target center. Default [0, 0]."
          },
          "gap": {
            "type": "number",
            "description": "Vertical gap. Default 0."
          }
        },
        "required": [
          "id",
          "target"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    align_objectsAction

    Line objects up along one axis by their bounding boxes: align their min, center, or max to a world coordinate, or to the first object when "to" is omitted.

    View tool JSON
    {
      "name": "align_objects",
      "kind": "act",
      "impl": "imperative",
      "description": "Line objects up along one axis by their bounding boxes: align their min, center, or max to a world coordinate, or to the first object when \"to\" is omitted.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Two or more objects (or one object with an explicit \"to\")."
          },
          "axis": {
            "type": "string",
            "enum": [
              "x",
              "y",
              "z"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "min",
              "center",
              "max"
            ],
            "description": "Which edge of each box to align. Default \"center\"."
          },
          "to": {
            "type": "number",
            "description": "World coordinate to align to. Default: the first object's value."
          }
        },
        "required": [
          "ids",
          "axis"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    set_parentAction

    Move an object under another object (or to the top level with parent null). World placement is preserved.

    View tool JSON
    {
      "name": "set_parent",
      "kind": "act",
      "impl": "imperative",
      "description": "Move an object under another object (or to the top level with parent null). World placement is preserved.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Object id or name."
          },
          "parent": {
            "description": "Parent id/name, or null for top level.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    delete_objectsSensitive Action

    Delete objects and their children.

    View tool JSON
    {
      "name": "delete_objects",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete objects and their children.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Object ids or names."
          }
        },
        "required": [
          "ids"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    booleanAction

    Combine solids: union merges the target with the tools, subtract cuts the tools out of the target (holes, slots, pockets), intersect keeps only the overlap. The target becomes a baked mesh; the tool objects are removed unless keep_tools is true. Overlap the shapes slightly to avoid coplanar faces.

    View tool JSON
    {
      "name": "boolean",
      "kind": "act",
      "impl": "imperative",
      "description": "Combine solids: union merges the target with the tools, subtract cuts the tools out of the target (holes, slots, pockets), intersect keeps only the overlap. The target becomes a baked mesh; the tool objects are removed unless keep_tools is true. Overlap the shapes slightly to avoid coplanar faces.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "union",
              "subtract",
              "intersect"
            ]
          },
          "target": {
            "type": "string",
            "description": "Object that receives the result."
          },
          "tools": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "One or more objects used as cutters or additions."
          },
          "keep_tools": {
            "type": "boolean",
            "description": "Keep the tool objects (hidden) instead of deleting them. Default false."
          },
          "name": {
            "type": "string",
            "description": "Rename the result."
          }
        },
        "required": [
          "operation",
          "target",
          "tools"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    select_objectsAction

    Highlight objects in the user's viewport and inspector. Purely visual; use it to point at something you are discussing.

    View tool JSON
    {
      "name": "select_objects",
      "kind": "act",
      "impl": "imperative",
      "description": "Highlight objects in the user's viewport and inspector. Purely visual; use it to point at something you are discussing.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Object ids or names. Empty to clear the selection."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    create_materialAction

    Create a physically based material. Start from a preset (plastic, glossy_plastic, matte, clay, rubber, ceramic, metal, brushed_metal, chrome, steel, gold, copper, brass, glass, tinted_glass, frosted_glass, wood, velvet, emissive, wireframe) and override any property.

    View tool JSON
    {
      "name": "create_material",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a physically based material. Start from a preset (plastic, glossy_plastic, matte, clay, rubber, ceramic, metal, brushed_metal, chrome, steel, gold, copper, brass, glass, tinted_glass, frosted_glass, wood, velvet, emissive, wireframe) and override any property.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Material name."
          },
          "preset": {
            "type": "string",
            "enum": [
              "plastic",
              "glossy_plastic",
              "matte",
              "clay",
              "rubber",
              "ceramic",
              "metal",
              "brushed_metal",
              "chrome",
              "steel",
              "gold",
              "copper",
              "brass",
              "glass",
              "tinted_glass",
              "frosted_glass",
              "wood",
              "velvet",
              "emissive",
              "wireframe"
            ],
            "description": "Starting point."
          },
          "color": {
            "type": "string",
            "description": "Base color, hex."
          },
          "roughness": {
            "type": "number",
            "description": "0 mirror-smooth to 1 fully matte.",
            "minimum": 0,
            "maximum": 1
          },
          "metalness": {
            "type": "number",
            "description": "0 dielectric to 1 metal.",
            "minimum": 0,
            "maximum": 1
          },
          "opacity": {
            "type": "number",
            "description": "0 to 1. Below 1 turns on alpha blending.",
            "minimum": 0,
            "maximum": 1
          },
          "transmission": {
            "type": "number",
            "description": "0 to 1. Physically based glass; keep opacity at 1 and set roughness low.",
            "minimum": 0,
            "maximum": 1
          },
          "ior": {
            "type": "number",
            "description": "Index of refraction, 1 to 2.333. Glass is 1.5."
          },
          "thickness": {
            "type": "number",
            "description": "Volume thickness for transmission refraction, in scene units."
          },
          "clearcoat": {
            "type": "number",
            "description": "0 to 1. Lacquer layer on top of the base.",
            "minimum": 0,
            "maximum": 1
          },
          "clearcoat_roughness": {
            "type": "number",
            "description": "0 to 1.",
            "minimum": 0,
            "maximum": 1
          },
          "emissive": {
            "type": "string",
            "description": "Emissive color, hex. \"#000000\" for none."
          },
          "emissive_intensity": {
            "type": "number",
            "description": "Multiplier for emissive."
          },
          "sheen": {
            "type": "number",
            "description": "0 to 1. Velvet-like edge highlight.",
            "minimum": 0,
            "maximum": 1
          },
          "sheen_roughness": {
            "type": "number",
            "description": "0 to 1.",
            "minimum": 0,
            "maximum": 1
          },
          "sheen_color": {
            "type": "string",
            "description": "Hex."
          },
          "iridescence": {
            "type": "number",
            "description": "0 to 1. Thin-film color shift.",
            "minimum": 0,
            "maximum": 1
          },
          "flat_shading": {
            "type": "boolean",
            "description": "Faceted look; shows polygon faces."
          },
          "wireframe": {
            "type": "boolean",
            "description": "Draw edges only."
          },
          "double_sided": {
            "type": "boolean",
            "description": "Render back faces too (needed for open shapes like planes and lathes with partial sweep)."
          }
        },
        "required": [
          "name"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    update_materialAction

    Change properties of an existing material. Every object using it updates.

    View tool JSON
    {
      "name": "update_material",
      "kind": "act",
      "impl": "imperative",
      "description": "Change properties of an existing material. Every object using it updates.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Material id or name."
          },
          "name": {
            "type": "string",
            "description": "Rename."
          },
          "color": {
            "type": "string",
            "description": "Base color, hex."
          },
          "roughness": {
            "type": "number",
            "description": "0 mirror-smooth to 1 fully matte.",
            "minimum": 0,
            "maximum": 1
          },
          "metalness": {
            "type": "number",
            "description": "0 dielectric to 1 metal.",
            "minimum": 0,
            "maximum": 1
          },
          "opacity": {
            "type": "number",
            "description": "0 to 1. Below 1 turns on alpha blending.",
            "minimum": 0,
            "maximum": 1
          },
          "transmission": {
            "type": "number",
            "description": "0 to 1. Physically based glass; keep opacity at 1 and set roughness low.",
            "minimum": 0,
            "maximum": 1
          },
          "ior": {
            "type": "number",
            "description": "Index of refraction, 1 to 2.333. Glass is 1.5."
          },
          "thickness": {
            "type": "number",
            "description": "Volume thickness for transmission refraction, in scene units."
          },
          "clearcoat": {
            "type": "number",
            "description": "0 to 1. Lacquer layer on top of the base.",
            "minimum": 0,
            "maximum": 1
          },
          "clearcoat_roughness": {
            "type": "number",
            "description": "0 to 1.",
            "minimum": 0,
            "maximum": 1
          },
          "emissive": {
            "type": "string",
            "description": "Emissive color, hex. \"#000000\" for none."
          },
          "emissive_intensity": {
            "type": "number",
            "description": "Multiplier for emissive."
          },
          "sheen": {
            "type": "number",
            "description": "0 to 1. Velvet-like edge highlight.",
            "minimum": 0,
            "maximum": 1
          },
          "sheen_roughness": {
            "type": "number",
            "description": "0 to 1.",
            "minimum": 0,
            "maximum": 1
          },
          "sheen_color": {
            "type": "string",
            "description": "Hex."
          },
          "iridescence": {
            "type": "number",
            "description": "0 to 1. Thin-film color shift.",
            "minimum": 0,
            "maximum": 1
          },
          "flat_shading": {
            "type": "boolean",
            "description": "Faceted look; shows polygon faces."
          },
          "wireframe": {
            "type": "boolean",
            "description": "Draw edges only."
          },
          "double_sided": {
            "type": "boolean",
            "description": "Render back faces too (needed for open shapes like planes and lathes with partial sweep)."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    assign_materialAction

    Apply a material (existing id/name, or a preset optionally tinted with color) to one or more objects. Applies to every solid inside a group.

    View tool JSON
    {
      "name": "assign_material",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply a material (existing id/name, or a preset optionally tinted with color) to one or more objects. Applies to every solid inside a group.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Object ids or names."
          },
          "material": {
            "type": "string",
            "description": "Material id or name, or a preset name such as plastic, metal, gold, chrome, glass, wood, clay. See list_presets."
          },
          "color": {
            "type": "string",
            "description": "Hex color like \"#D9A441\". Combined with a preset it makes a tinted copy; alone it makes a plastic of that color."
          }
        },
        "required": [
          "ids"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    list_materialsAnswer

    List materials in the scene with their properties and which objects use them.

    View tool JSON
    {
      "name": "list_materials",
      "kind": "answer",
      "impl": "imperative",
      "description": "List materials in the scene with their properties and which objects use them.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/flevAgenticCAD/"
    }
    delete_materialSensitive Action

    Delete a material. Objects using it fall back to the default material.

    View tool JSON
    {
      "name": "delete_material",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete a material. Objects using it fall back to the default material.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Material id or name."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    set_lightingAction

    Replace all lights with a preset rig: studio (three-point studio rig with soft shadows. good default for product renders); soft (environment light only, with one faint shadow-casting sun. flat and forgiving); sun (hard warm sunlight with a cool sky fill. outdoor look); dramatic (one strong key from the side, deep shadows, little fill); none (no lights. only the environment map lights the scene). Tweak individual lights afterwards with update_light.

    View tool JSON
    {
      "name": "set_lighting",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace all lights with a preset rig: studio (three-point studio rig with soft shadows. good default for product renders); soft (environment light only, with one faint shadow-casting sun. flat and forgiving); sun (hard warm sunlight with a cool sky fill. outdoor look); dramatic (one strong key from the side, deep shadows, little fill); none (no lights. only the environment map lights the scene). Tweak individual lights afterwards with update_light.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "preset": {
            "type": "string",
            "enum": [
              "studio",
              "soft",
              "sun",
              "dramatic",
              "none"
            ]
          },
          "env_intensity": {
            "type": "number",
            "description": "Override the environment (image based) light strength, 0 to 3."
          }
        },
        "required": [
          "preset"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    add_lightAction

    Add a light. directional: parallel sunlight (intensity 1 to 5). point: bulb (intensity 20 to 300). spot: cone (intensity 50 to 400, angle in degrees). ambient and hemisphere: flat fill (0.2 to 2).

    View tool JSON
    {
      "name": "add_light",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a light. directional: parallel sunlight (intensity 1 to 5). point: bulb (intensity 20 to 300). spot: cone (intensity 50 to 400, angle in degrees). ambient and hemisphere: flat fill (0.2 to 2).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "directional",
              "point",
              "spot",
              "ambient",
              "hemisphere"
            ]
          },
          "name": {
            "type": "string",
            "description": "Display name."
          },
          "color": {
            "type": "string",
            "description": "Hex."
          },
          "intensity": {
            "type": "number",
            "description": "Directional lights: 1 to 5. Point and spot lights use candela-like values: 50 to 300 is typical at a few units away."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z]."
          },
          "target": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Point the light aims at (directional and spot)."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Shadows cost performance; keep to one or two lights."
          },
          "angle": {
            "type": "number",
            "description": "Spot cone half-angle in degrees."
          },
          "penumbra": {
            "type": "number",
            "description": "Spot edge softness 0 to 1."
          },
          "distance": {
            "type": "number",
            "description": "Point/spot falloff range; 0 for unlimited."
          },
          "ground_color": {
            "type": "string",
            "description": "Hemisphere light color from below, hex."
          },
          "visible": {
            "type": "boolean"
          }
        },
        "required": [
          "type"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    update_lightAction

    Change a light's color, intensity, position, target, shadows, or spot cone.

    View tool JSON
    {
      "name": "update_light",
      "kind": "act",
      "impl": "imperative",
      "description": "Change a light's color, intensity, position, target, shadows, or spot cone.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Light id or name."
          },
          "name": {
            "type": "string",
            "description": "Display name."
          },
          "color": {
            "type": "string",
            "description": "Hex."
          },
          "intensity": {
            "type": "number",
            "description": "Directional lights: 1 to 5. Point and spot lights use candela-like values: 50 to 300 is typical at a few units away."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "[x, y, z]."
          },
          "target": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Point the light aims at (directional and spot)."
          },
          "cast_shadow": {
            "type": "boolean",
            "description": "Shadows cost performance; keep to one or two lights."
          },
          "angle": {
            "type": "number",
            "description": "Spot cone half-angle in degrees."
          },
          "penumbra": {
            "type": "number",
            "description": "Spot edge softness 0 to 1."
          },
          "distance": {
            "type": "number",
            "description": "Point/spot falloff range; 0 for unlimited."
          },
          "ground_color": {
            "type": "string",
            "description": "Hemisphere light color from below, hex."
          },
          "visible": {
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    delete_lightSensitive Action

    Remove a light.

    View tool JSON
    {
      "name": "delete_light",
      "kind": "transact",
      "impl": "imperative",
      "description": "Remove a light.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Light id or name."
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    set_environmentAction

    Set the backdrop and ground for renders: background (gradient, solid color, or transparent), ground plane (invisible shadow catcher, solid plane, or a curved cyclorama backdrop), exposure, environment light strength, and shadows.

    View tool JSON
    {
      "name": "set_environment",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the backdrop and ground for renders: background (gradient, solid color, or transparent), ground plane (invisible shadow catcher, solid plane, or a curved cyclorama backdrop), exposure, environment light strength, and shadows.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "background": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "gradient",
                  "color",
                  "transparent"
                ]
              },
              "color": {
                "type": "string",
                "description": "Hex, for type \"color\"."
              },
              "top": {
                "type": "string",
                "description": "Hex, gradient center/top."
              },
              "bottom": {
                "type": "string",
                "description": "Hex, gradient edge/bottom."
              }
            }
          },
          "ground": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "none",
                  "shadow",
                  "solid",
                  "cyclorama"
                ],
                "description": "\"shadow\" shows only shadows on an invisible plane; \"cyclorama\" is a seamless studio sweep."
              },
              "color": {
                "type": "string",
                "description": "Hex, for solid and cyclorama."
              },
              "size": {
                "type": "number",
                "description": "Plane size. Default 30."
              },
              "y": {
                "type": "number",
                "description": "Ground height. Default 0."
              },
              "opacity": {
                "type": "number",
                "description": "Shadow darkness for type \"shadow\", 0 to 1. Default 0.35."
              }
            }
          },
          "exposure": {
            "type": "number",
            "description": "Tone mapping exposure. Default 1; 0.7 darker, 1.4 brighter."
          },
          "env_intensity": {
            "type": "number",
            "description": "Image based light strength, 0 to 3."
          },
          "shadows": {
            "type": "boolean",
            "description": "Enable shadows. Default true."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    set_cameraAction

    Move the camera. Use view (perspective, front, back, left, right, top, bottom, iso, three_quarter, low, high) and frame to fit the whole scene or specific objects, or set position/target/fov directly. Frame is applied first, then explicit values override.

    View tool JSON
    {
      "name": "set_camera",
      "kind": "act",
      "impl": "imperative",
      "description": "Move the camera. Use view (perspective, front, back, left, right, top, bottom, iso, three_quarter, low, high) and frame to fit the whole scene or specific objects, or set position/target/fov directly. Frame is applied first, then explicit values override.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "view": {
            "type": "string",
            "enum": [
              "perspective",
              "front",
              "back",
              "left",
              "right",
              "top",
              "bottom",
              "iso",
              "three_quarter",
              "low",
              "high"
            ],
            "description": "Named viewing direction."
          },
          "frame": {
            "description": "\"all\", an object id/name, or a list of them: fit these in view.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "padding": {
            "type": "number",
            "description": "Framing margin multiplier. Default 1.2; smaller is tighter."
          },
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Camera position."
          },
          "target": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3,
            "description": "Point the camera looks at."
          },
          "fov": {
            "type": "number",
            "description": "Vertical field of view in degrees. Default 38; 20 to 30 looks like a product shot."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    renderAction

    Render a polished image of the scene with shadows, environment lighting, and antialiasing. Optionally frame objects and pick a view first. Returns the image. The camera stays where the render was taken unless restore_camera is true. Keep width at or below 1600 for quick turnaround.

    View tool JSON
    {
      "name": "render",
      "kind": "act",
      "impl": "imperative",
      "description": "Render a polished image of the scene with shadows, environment lighting, and antialiasing. Optionally frame objects and pick a view first. Returns the image. The camera stays where the render was taken unless restore_camera is true. Keep width at or below 1600 for quick turnaround.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "width": {
            "type": "integer",
            "description": "Pixels. Default 1024."
          },
          "height": {
            "type": "integer",
            "description": "Pixels. Default 3:4 of width."
          },
          "view": {
            "type": "string",
            "enum": [
              "perspective",
              "front",
              "back",
              "left",
              "right",
              "top",
              "bottom",
              "iso",
              "three_quarter",
              "low",
              "high"
            ],
            "description": "Viewing direction for this render."
          },
          "frame": {
            "description": "\"all\", an object id/name, or a list: fit these before rendering.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "padding": {
            "type": "number",
            "description": "Framing margin. Default 1.2."
          },
          "transparent": {
            "type": "boolean",
            "description": "Transparent background (PNG). Default false."
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ],
            "description": "Default png. jpeg is smaller."
          },
          "quality": {
            "type": "number",
            "description": "JPEG quality 0.3 to 1. Default 0.92."
          },
          "supersample": {
            "type": "integer",
            "description": "1 or 2. Default 2 (renders at double size and downsamples)."
          },
          "restore_camera": {
            "type": "boolean",
            "description": "Put the camera back afterwards. Default false."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    render_turntableAction

    Render several views evenly spaced around the scene or given objects, at one elevation. Good for checking a model from all sides. Restores the camera afterwards.

    View tool JSON
    {
      "name": "render_turntable",
      "kind": "act",
      "impl": "imperative",
      "description": "Render several views evenly spaced around the scene or given objects, at one elevation. Good for checking a model from all sides. Restores the camera afterwards.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Number of views. Default 4, max 12."
          },
          "elevation": {
            "type": "number",
            "description": "Camera elevation in degrees above the horizon. Default 22."
          },
          "width": {
            "type": "integer",
            "description": "Pixels per image. Default 640."
          },
          "height": {
            "type": "integer",
            "description": "Default 3:4 of width."
          },
          "frame": {
            "description": "\"all\" or object ids/names.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "padding": {
            "type": "number",
            "description": "Default 1.2."
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ],
            "description": "Default jpeg."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    export_modelAction

    Export the scene (or selected objects) as a file the user downloads: glb (with materials, best for sharing), stl (for 3D printing), obj, or json (this studio's own format, reloadable with load_scene). Set download false to just get the size, or include_content true for json text.

    View tool JSON
    {
      "name": "export_model",
      "kind": "act",
      "impl": "imperative",
      "description": "Export the scene (or selected objects) as a file the user downloads: glb (with materials, best for sharing), stl (for 3D printing), obj, or json (this studio's own format, reloadable with load_scene). Set download false to just get the size, or include_content true for json text.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "glb",
              "stl",
              "obj",
              "json"
            ],
            "description": "Default glb."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Only these objects (world placement baked in). Omit for everything visible."
          },
          "filename": {
            "type": "string",
            "description": "Without extension. Default is the scene name."
          },
          "download": {
            "type": "boolean",
            "description": "Trigger a browser download for the user. Default true."
          },
          "include_content": {
            "type": "boolean",
            "description": "For json: return the document text in the result. Default false."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    load_sceneAction

    Replace the current scene with a studio JSON document (from export_model format json). The previous scene stays in undo history.

    View tool JSON
    {
      "name": "load_scene",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the current scene with a studio JSON document (from export_model format json). The previous scene stays in undo history.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "scene": {
            "description": "The document as a JSON object or string.",
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "scene"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    new_sceneAction

    Clear everything and start a fresh scene with the default studio lighting. The old scene stays in undo history.

    View tool JSON
    {
      "name": "new_scene",
      "kind": "act",
      "impl": "imperative",
      "description": "Clear everything and start a fresh scene with the default studio lighting. The old scene stays in undo history.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Scene name."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    set_scene_nameAction

    Rename the scene (used for export filenames).

    View tool JSON
    {
      "name": "set_scene_name",
      "kind": "act",
      "impl": "imperative",
      "description": "Rename the scene (used for export filenames).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "page": "/flevAgenticCAD/"
    }
    undoAction

    Undo the last change(s).

    View tool JSON
    {
      "name": "undo",
      "kind": "act",
      "impl": "imperative",
      "description": "Undo the last change(s).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "integer",
            "description": "Default 1."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    redoAction

    Redo the last undone change(s).

    View tool JSON
    {
      "name": "redo",
      "kind": "act",
      "impl": "imperative",
      "description": "Redo the last undone change(s).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "integer",
            "description": "Default 1."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }
    get_historyAnswer

    List recent changes, newest last.

    View tool JSON
    {
      "name": "get_history",
      "kind": "answer",
      "impl": "imperative",
      "description": "List recent changes, newest last.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Default 30."
          }
        }
      },
      "page": "/flevAgenticCAD/"
    }