[
  {
    "name": "describe_command",
    "arguments": {
      "id": "solid.box"
    },
    "result": {
      "id": "solid.box",
      "input": {
        "$defs": {
          "LengthExpr": {
            "anyOf": [
              {
                "exclusiveMaximum": 1000000000,
                "exclusiveMinimum": -1000000000,
                "type": "number"
              },
              {
                "maxLength": 4096,
                "minLength": 1,
                "pattern": "[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000]",
                "type": "string"
              }
            ],
            "description": "A length: a number in the design's length unit, or an expression such as \"w / 2\" or \"30 mm\"."
          },
          "Operation": {
            "description": "How the feature combines with existing bodies: new, join, cut or intersect. The others are aliases. Matching ignores case, spaces, '_' and '-'.",
            "enum": [
              "new",
              "join",
              "cut",
              "intersect",
              "new_body",
              "newbody",
              "new_component",
              "newcomponent",
              "union",
              "add",
              "subtract",
              "difference",
              "intersection"
            ],
            "type": "string"
          },
          "PointExpr3": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/$defs/LengthExpr"
                },
                "maxItems": 3,
                "minItems": 3,
                "type": "array"
              },
              {
                "properties": {
                  "x": {
                    "$ref": "#/$defs/LengthExpr"
                  },
                  "y": {
                    "$ref": "#/$defs/LengthExpr"
                  },
                  "z": {
                    "$ref": "#/$defs/LengthExpr"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ],
                "type": "object"
              }
            ],
            "description": "A point: [x, y, z] or {\"x\", \"y\", \"z\"}, each a number in mm or a length expression."
          },
          "StringList": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 10000,
                "type": "array"
              }
            ],
            "description": "A name, or a list of names."
          }
        },
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "description": "Add a box primitive.",
        "properties": {
          "body_name": {
            "default": null,
            "description": "The new body's name.",
            "type": [
              "string",
              "null"
            ]
          },
          "body_names": {
            "anyOf": [
              {
                "$ref": "#/$defs/StringList"
              },
              {
                "type": "null"
              }
            ],
            "description": "Names for the new bodies, in order."
          },
          "center": {
            "$ref": "#/$defs/PointExpr3",
            "description": "The box's centre, instead of `corner`."
          },
          "corner": {
            "$ref": "#/$defs/PointExpr3",
            "description": "The box's minimum corner. Default: the origin. When both `corner` and `center` are given,\n`corner` is used."
          },
          "height": {
            "$ref": "#/$defs/LengthExpr",
            "description": "Size along Z."
          },
          "length": {
            "$ref": "#/$defs/LengthExpr",
            "description": "Size along X."
          },
          "name": {
            "default": null,
            "description": "The feature's name in the timeline.",
            "type": [
              "string",
              "null"
            ]
          },
          "operation": {
            "anyOf": [
              {
                "$ref": "#/$defs/Operation"
              },
              {
                "type": "null"
              }
            ],
            "description": "How the box combines with existing bodies. Default: new."
          },
          "participants": {
            "anyOf": [
              {
                "$ref": "#/$defs/StringList"
              },
              {
                "type": "null"
              }
            ],
            "description": "The bodies taking part (the same as `targets` for a primitive)."
          },
          "targets": {
            "anyOf": [
              {
                "$ref": "#/$defs/StringList"
              },
              {
                "type": "null"
              }
            ],
            "description": "The bodies a join, cut or intersect works on. Default: the bodies the box meets."
          },
          "width": {
            "$ref": "#/$defs/LengthExpr",
            "description": "Size along Y."
          }
        },
        "required": [
          "length",
          "width",
          "height"
        ],
        "title": "BoxParams",
        "type": "object"
      },
      "label": "Box",
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "description": "What a feature command returns.",
        "properties": {
          "bodies": {
            "description": "Every body after the feature.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "changed_bodies": {
            "description": "Bodies that were there before and now have other geometry.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "created_bodies": {
            "description": "The bodies the feature made.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "feature": {
            "description": "The new feature's id.",
            "format": "uint64",
            "minimum": 0,
            "type": "integer"
          },
          "ms": {
            "description": "How long the feature took to evaluate, in milliseconds.",
            "format": "double",
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "description": "The new feature's name.",
            "type": "string"
          },
          "param_warnings": {
            "description": "In the warn parameter-check mode: what the call's parameters got wrong.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "removed_bodies": {
            "description": "Bodies that are gone.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warning": {
            "description": "A warning from the evaluation (a Boolean that needed a retry, a reference found again\nelsewhere), or `null`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "feature",
          "name",
          "bodies",
          "created_bodies",
          "changed_bodies",
          "removed_bodies",
          "warning",
          "ms"
        ],
        "title": "FeatureResult",
        "type": "object"
      },
      "params": "length, width, height: expr; corner?: [x,y,z] | center?: [x,y,z] (numbers in mm or length expressions; default: the origin); operation?, targets?: [body], name?, body_name?"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "file.new",
      "params": {
        "name": "MCP practice"
      }
    },
    "result": {
      "name": "MCP practice"
    }
  },
  {
    "name": "set_parameter",
    "arguments": {
      "name": "part_length",
      "value": "40 mm"
    },
    "result": {
      "display_value": 40,
      "errors": [],
      "expression": "40 mm",
      "name": "part_length",
      "recomputed": 0,
      "restored": 0,
      "value": 40
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "solid.box",
      "params": {
        "length": "part_length",
        "width": 30,
        "height": 10
      }
    },
    "result": {
      "bodies": [
        "Body1"
      ],
      "changed_bodies": [],
      "created_bodies": [
        "Body1"
      ],
      "feature": 1,
      "ms": 67.269635,
      "name": "Box1",
      "removed_bodies": [],
      "warning": null
    }
  },
  {
    "name": "inspect_design",
    "arguments": {
      "measure": true,
      "sketches": false
    },
    "result": {
      "active_sketch": null,
      "bodies": [
        {
          "area_mm2": 3800,
          "bbox": {
            "max": [
              40,
              30,
              10
            ],
            "min": [
              0,
              0,
              0
            ]
          },
          "center_of_mass": [
            20,
            15,
            5
          ],
          "edges": 12,
          "face_types": {
            "plane": 6
          },
          "faces": 6,
          "kernel": {
            "edges": 12,
            "faces": 6,
            "shells": 1,
            "vertices": 8
          },
          "name": "Body1",
          "vertices": 8,
          "visible": true,
          "volume_mm3": 12000
        }
      ],
      "dirty": true,
      "hidden_origin": [],
      "marker": 1,
      "metadata": {},
      "name": "MCP practice",
      "params": [
        {
          "comment": "",
          "error": null,
          "expression": "40 mm",
          "model": false,
          "name": "part_length",
          "unit": "mm",
          "value": 40
        }
      ],
      "path": null,
      "redo": 0,
      "revision": 6,
      "selection": [],
      "sketches": [],
      "timeline": [
        {
          "boolean_diagnostics": {
            "events": [],
            "truncated": false
          },
          "error": null,
          "id": 1,
          "ms": 67.269635,
          "name": "Box1",
          "rolled_back": false,
          "suppressed": false,
          "type": "BoxFeature",
          "warning": null
        }
      ],
      "undo": 2,
      "units": "mm"
    }
  },
  {
    "name": "set_parameter",
    "arguments": {
      "name": "part_length",
      "value": "50 mm"
    },
    "result": {
      "display_value": 50,
      "errors": [],
      "expression": "50 mm",
      "name": "part_length",
      "recomputed": 1,
      "restored": 0,
      "value": 50
    }
  },
  {
    "name": "inspect_design",
    "arguments": {
      "measure": true,
      "sketches": false
    },
    "result": {
      "active_sketch": null,
      "bodies": [
        {
          "area_mm2": 4600,
          "bbox": {
            "max": [
              50,
              30,
              10
            ],
            "min": [
              0,
              0,
              0
            ]
          },
          "center_of_mass": [
            25,
            15,
            5
          ],
          "edges": 12,
          "face_types": {
            "plane": 6
          },
          "faces": 6,
          "kernel": {
            "edges": 12,
            "faces": 6,
            "shells": 1,
            "vertices": 8
          },
          "name": "Body1",
          "vertices": 8,
          "visible": true,
          "volume_mm3": 15000
        }
      ],
      "dirty": true,
      "hidden_origin": [],
      "marker": 1,
      "metadata": {},
      "name": "MCP practice",
      "params": [
        {
          "comment": "",
          "error": null,
          "expression": "50 mm",
          "model": false,
          "name": "part_length",
          "unit": "mm",
          "value": 50
        }
      ],
      "path": null,
      "redo": 0,
      "revision": 8,
      "selection": [],
      "sketches": [],
      "timeline": [
        {
          "boolean_diagnostics": {
            "events": [],
            "truncated": false
          },
          "error": null,
          "id": 1,
          "ms": 15.249056000000001,
          "name": "Box1",
          "rolled_back": false,
          "suppressed": false,
          "type": "BoxFeature",
          "warning": null
        }
      ],
      "undo": 3,
      "units": "mm"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "file.save",
      "params": {
        "path": "<practice-folder>/mcp-box.solidcraft"
      }
    },
    "result": {
      "bytes": 2879,
      "name": "MCP practice",
      "path": "<practice-folder>/mcp-box.solidcraft"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "file.new",
      "params": {
        "name": "Reopen check"
      }
    },
    "result": {
      "name": "Reopen check"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "doc.open",
      "params": {
        "path": "<practice-folder>/mcp-box.solidcraft"
      }
    },
    "result": {
      "errors": 0,
      "features": 1,
      "name": "MCP practice",
      "path": "<practice-folder>/mcp-box.solidcraft"
    }
  },
  {
    "name": "inspect_design",
    "arguments": {
      "measure": true,
      "sketches": false
    },
    "result": {
      "active_sketch": null,
      "bodies": [
        {
          "area_mm2": 4600,
          "bbox": {
            "max": [
              50,
              30,
              10
            ],
            "min": [
              0,
              0,
              0
            ]
          },
          "center_of_mass": [
            25,
            15,
            5
          ],
          "edges": 12,
          "face_types": {
            "plane": 6
          },
          "faces": 6,
          "kernel": {
            "edges": 12,
            "faces": 6,
            "shells": 1,
            "vertices": 8
          },
          "name": "Body1",
          "vertices": 8,
          "visible": true,
          "volume_mm3": 15000
        }
      ],
      "dirty": false,
      "hidden_origin": [],
      "marker": 1,
      "metadata": {},
      "name": "MCP practice",
      "params": [
        {
          "comment": "",
          "error": null,
          "expression": "50 mm",
          "model": false,
          "name": "part_length",
          "unit": "mm",
          "value": 50
        }
      ],
      "path": "<practice-folder>/mcp-box.solidcraft",
      "redo": 0,
      "revision": 2,
      "selection": [],
      "sketches": [],
      "timeline": [
        {
          "boolean_diagnostics": {
            "events": [],
            "truncated": false
          },
          "error": null,
          "id": 1,
          "ms": 15.249056000000001,
          "name": "Box1",
          "rolled_back": false,
          "suppressed": false,
          "type": "BoxFeature",
          "warning": null
        }
      ],
      "undo": 0,
      "units": "mm"
    }
  },
  {
    "name": "set_parameter",
    "arguments": {
      "name": "part_length",
      "value": "40 mm"
    },
    "result": {
      "display_value": 40,
      "errors": [],
      "expression": "40 mm",
      "name": "part_length",
      "recomputed": 1,
      "restored": 0,
      "value": 40
    }
  },
  {
    "name": "inspect_design",
    "arguments": {
      "measure": true,
      "sketches": false
    },
    "result": {
      "active_sketch": null,
      "bodies": [
        {
          "area_mm2": 3800,
          "bbox": {
            "max": [
              40,
              30,
              10
            ],
            "min": [
              0,
              0,
              0
            ]
          },
          "center_of_mass": [
            20,
            15,
            5
          ],
          "edges": 12,
          "face_types": {
            "plane": 6
          },
          "faces": 6,
          "kernel": {
            "edges": 12,
            "faces": 6,
            "shells": 1,
            "vertices": 8
          },
          "name": "Body1",
          "vertices": 8,
          "visible": true,
          "volume_mm3": 12000
        }
      ],
      "dirty": true,
      "hidden_origin": [],
      "marker": 1,
      "metadata": {},
      "name": "MCP practice",
      "params": [
        {
          "comment": "",
          "error": null,
          "expression": "40 mm",
          "model": false,
          "name": "part_length",
          "unit": "mm",
          "value": 40
        }
      ],
      "path": "<practice-folder>/mcp-box.solidcraft",
      "redo": 0,
      "revision": 4,
      "selection": [],
      "sketches": [],
      "timeline": [
        {
          "boolean_diagnostics": {
            "events": [],
            "truncated": false
          },
          "error": null,
          "id": 1,
          "ms": 0.583238,
          "name": "Box1",
          "rolled_back": false,
          "suppressed": false,
          "type": "BoxFeature",
          "warning": null
        }
      ],
      "undo": 1,
      "units": "mm"
    }
  },
  {
    "name": "set_parameter",
    "arguments": {
      "name": "part_length",
      "value": "50 mm"
    },
    "result": {
      "display_value": 50,
      "errors": [],
      "expression": "50 mm",
      "name": "part_length",
      "recomputed": 0,
      "restored": 1,
      "value": 50
    }
  },
  {
    "name": "inspect_design",
    "arguments": {
      "measure": true,
      "sketches": false
    },
    "result": {
      "active_sketch": null,
      "bodies": [
        {
          "area_mm2": 4600,
          "bbox": {
            "max": [
              50,
              30,
              10
            ],
            "min": [
              0,
              0,
              0
            ]
          },
          "center_of_mass": [
            25,
            15,
            5
          ],
          "edges": 12,
          "face_types": {
            "plane": 6
          },
          "faces": 6,
          "kernel": {
            "edges": 12,
            "faces": 6,
            "shells": 1,
            "vertices": 8
          },
          "name": "Body1",
          "vertices": 8,
          "visible": true,
          "volume_mm3": 15000
        }
      ],
      "dirty": false,
      "hidden_origin": [],
      "marker": 1,
      "metadata": {},
      "name": "MCP practice",
      "params": [
        {
          "comment": "",
          "error": null,
          "expression": "50 mm",
          "model": false,
          "name": "part_length",
          "unit": "mm",
          "value": 50
        }
      ],
      "path": "<practice-folder>/mcp-box.solidcraft",
      "redo": 0,
      "revision": 6,
      "selection": [],
      "sketches": [],
      "timeline": [
        {
          "boolean_diagnostics": {
            "events": [],
            "truncated": false
          },
          "error": null,
          "id": 1,
          "ms": 15.249056000000001,
          "name": "Box1",
          "rolled_back": false,
          "suppressed": false,
          "type": "BoxFeature",
          "warning": null
        }
      ],
      "undo": 2,
      "units": "mm"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "file.save",
      "params": {
        "path": "<practice-folder>/mcp-box.solidcraft"
      }
    },
    "result": {
      "bytes": 2879,
      "name": "MCP practice",
      "path": "<practice-folder>/mcp-box.solidcraft"
    }
  },
  {
    "name": "export",
    "arguments": {
      "path": "<practice-folder>/mcp-box.step",
      "format": "step"
    },
    "result": {
      "bytes": 5000,
      "format": "Step",
      "path": "<practice-folder>/mcp-box.step"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "file.new",
      "params": {
        "name": "STEP reopen check"
      }
    },
    "result": {
      "name": "STEP reopen check"
    }
  },
  {
    "name": "execute",
    "arguments": {
      "command": "doc.open",
      "params": {
        "path": "<practice-folder>/mcp-box.step"
      }
    },
    "result": {
      "bodies": [
        "mcp-box"
      ],
      "component": 1,
      "component_name": "mcp-box",
      "errors": 0,
      "exporter": "SolidCraft",
      "exporter_up": "z",
      "features": 1,
      "occurrence": 2,
      "path": "<practice-folder>/mcp-box.step",
      "system": "SolidCraft",
      "warnings": []
    }
  },
  {
    "name": "inspect_design",
    "arguments": {
      "measure": true,
      "sketches": false
    },
    "result": {
      "active_sketch": null,
      "bodies": [
        {
          "area_mm2": 4600,
          "bbox": {
            "max": [
              50,
              30,
              10
            ],
            "min": [
              0,
              0,
              0
            ]
          },
          "center_of_mass": [
            25,
            15,
            5
          ],
          "edges": 12,
          "face_types": {
            "plane": 6
          },
          "faces": 6,
          "kernel": {
            "edges": 12,
            "faces": 6,
            "shells": 1,
            "vertices": 8
          },
          "name": "mcp-box",
          "vertices": 8,
          "visible": true,
          "volume_mm3": 15000
        }
      ],
      "dirty": true,
      "hidden_origin": [],
      "marker": 1,
      "metadata": {},
      "name": "mcp-box",
      "params": [],
      "path": null,
      "redo": 0,
      "revision": 3,
      "selection": [],
      "sketches": [],
      "timeline": [
        {
          "boolean_diagnostics": {
            "events": [],
            "truncated": false
          },
          "error": null,
          "id": 3,
          "ms": 0.115024,
          "name": "mcp-box",
          "rolled_back": false,
          "suppressed": false,
          "type": "BaseFeature",
          "warning": null
        }
      ],
      "undo": 0,
      "units": "mm"
    }
  }
]
