Skip to main content
Glama
Svel26

Sigmatek LASAL MCP Server

by Svel26

apply_project_changes

Destructive

Run ordered CLASS 2 batch operations on LASAL projects: create/delete/rename networks and objects, manage connections, set init values, compile, and download.

Instructions

Run CLASS 2 batch engine operations that cannot be done by editing files directly: create/delete/rename networks, add/remove/rename objects, create/delete connections, set init values, configure tasks, compile, download. Kills CLASS 2 IDE before running.

Input Schema

NameRequiredDescriptionDefault
dry_runNoValidate operations without applying them.
lcp_pathNoAbsolute path to the .lcp file. Omit to use the currently selected project.
operationsYesOrdered list of operations. Batch engine types: create_network, delete_network, rename_network, duplicate_network, add_object, remove_object, rename_object, change_object_class, create_connection, delete_connection, set_init_value, delete_class, compile, download, set_task_order, set_task_time, set_task_cpu_core, set_multi_cpu_core, set_visualized_flag, set_comment_network, set_comment_object, set_network_options, reset_network_options, move_network_to_folder, set_parameter_value, set_compiler_version, copy_class, copy_network, replace_object, add_library, import_lcz, update_referenced, calculate_resources, mm_change_connection, mm_update_server_list, set_project_revision. File-level types (applied before the batch engine, no CLASS 2 API): create_class, add_project_file, clean_project.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.3.2
    • changedInput schema / properties / operations / description
      Previous value: -"Ordered list of CLASS 2 batch engine operations. Available types: create_network, delete_network, rename_network, duplicate_network, add_object, remove_object, rename_object, change_object_class, create_connection, delete_connection, set_init_value, delete_class, compile, download, set_task_order, set_task_time, set_task_cpu_core, set_multi_cpu_core, set_visualized_flag, set_comment_network, set_comment_object, set_network_options, reset_network_options, move_network_to_folder, set_parameter_value"New value: +"Ordered list of operations. Batch engine types: create_network, delete_network, rename_network, duplicate_network, add_object, remove_object, rename_object, change_object_class, create_connection, delete_connection, set_init_value, delete_class, compile, download, set_task_order, set_task_time, set_task_cpu_core, set_multi_cpu_core, set_visualized_flag, set_comment_network, set_comment_object, set_network_options, reset_network_options, move_network_to_folder, set_parameter_value, set_compiler_version, copy_class, copy_network, replace_object, add_library, import_lcz, update_referenced, calculate_resources, mm_change_connection, mm_update_server_list, set_project_revision. File-level types (applied before the batch engine, no CLASS 2 API): create_class, add_project_file, clean_project."
    • changedInput schema / properties / operations / items / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "name": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_network",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "name"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "deleteConnections": {
      -        "default": true,
      -        "type": "boolean"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "delete_network",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "name"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "newName": {
      -        "type": "string"
      -      },
      -      "oldName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "rename_network",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "oldName",
      -      "newName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "name": {
      -        "type": "string"
      -      },
      -      "newName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "duplicate_network",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "name",
      -      "newName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "className": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "add_object",
      -        "type": "string"
      -      },
      -      "visualized": {
      -        "default": true,
      -        "type": "boolean"
      -      },
      -      "x": {
      -        "default": 300,
      -        "type": "number"
      -      },
      -      "y": {
      -        "default": 300,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "className",
      -      "objectName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "deleteConnections": {
      -        "default": true,
      -        "type": "boolean"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "remove_object",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "network": {
      -        "type": "string"
      -      },
      -      "newName": {
      -        "type": "string"
      -      },
      -      "oldName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "rename_object",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "oldName",
      -      "newName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "className": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "change_object_class",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "className"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "fromClient": {
      -        "type": "string"
      -      },
      -      "fromObject": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "toObject": {
      -        "type": "string"
      -      },
      -      "toServer": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_connection",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "fromObject",
      -      "fromClient",
      -      "toObject",
      -      "toServer"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "clientName": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "delete_connection",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "objectName",
      -      "clientName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "channelName": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_init_value",
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "objectName",
      -      "channelName",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "className": {
      -        "type": "string"
      -      },
      -      "force": {
      -        "default": false,
      -        "type": "boolean"
      -      },
      -      "type": {
      -        "const": "delete_class",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "className"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "options": {
      -        "default": "RebuildAll",
      -        "enum": [
      -          "RebuildAll",
      -          "BuildChanges",
      -          "UserClassesOnly",
      -          "NoDebugInfo"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "compile",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "add_loader_anyway": {
      -        "default": false,
      -        "type": "boolean"
      -      },
      -      "connection": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "download",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "position": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "task": {
      -        "enum": [
      -          "realtime",
      -          "cyclicwork",
      -          "background"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_task_order",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "task",
      -      "position"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "task": {
      -        "enum": [
      -          "realtime",
      -          "cyclicwork",
      -          "background"
      -        ],
      -        "type": "string"
      -      },
      -      "time": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_task_time",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "task",
      -      "time"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "core": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "task": {
      -        "enum": [
      -          "realtime",
      -          "cyclicwork"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_task_cpu_core",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "task",
      -      "core"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "multiCore": {
      -        "type": "boolean"
      -      },
      -      "type": {
      -        "const": "set_multi_cpu_core",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "multiCore"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "isVisualized": {
      -        "type": "boolean"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_visualized_flag",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "isVisualized"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "comment": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_comment_network",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "comment"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "comment": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_comment_object",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "comment"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "network": {
      -        "type": "string"
      -      },
      -      "optionNames": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "resetAllOthers": {
      -        "default": false,
      -        "type": "boolean"
      -      },
      -      "type": {
      -        "const": "set_network_options",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "optionNames"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "network": {
      -        "type": "string"
      -      },
      -      "optionNames": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "type": {
      -        "const": "reset_network_options",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "optionNames"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "folder": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "move_network_to_folder",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "folder"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "network": {
      -        "type": "string"
      -      },
      -      "objectName": {
      -        "type": "string"
      -      },
      -      "parameterName": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "set_parameter_value",
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "network",
      -      "objectName",
      -      "parameterName",
      -      "value"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "deleteConnections": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "delete_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "newName": {
      +        "type": "string"
      +      },
      +      "oldName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "rename_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "oldName",
      +      "newName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "newName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "duplicate_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name",
      +      "newName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "add_object",
      +        "type": "string"
      +      },
      +      "visualized": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "x": {
      +        "default": 300,
      +        "type": "number"
      +      },
      +      "y": {
      +        "default": 300,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "className",
      +      "objectName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "deleteConnections": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "remove_object",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "newName": {
      +        "type": "string"
      +      },
      +      "oldName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "rename_object",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "oldName",
      +      "newName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "change_object_class",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "className"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "fromClient": {
      +        "type": "string"
      +      },
      +      "fromObject": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "toObject": {
      +        "type": "string"
      +      },
      +      "toServer": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_connection",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "fromObject",
      +      "fromClient",
      +      "toObject",
      +      "toServer"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "clientName": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "delete_connection",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "objectName",
      +      "clientName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "channelName": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_init_value",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "objectName",
      +      "channelName",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "type": "string"
      +      },
      +      "force": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "delete_class",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "className"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "options": {
      +        "default": "RebuildAll",
      +        "enum": [
      +          "RebuildAll",
      +          "BuildChanges",
      +          "UserClassesOnly",
      +          "NoDebugInfo"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "compile",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "add_loader_anyway": {
      +        "type": "boolean"
      +      },
      +      "connection": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "download",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "position": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "task": {
      +        "enum": [
      +          "realtime",
      +          "cyclicwork",
      +          "background"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_task_order",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "task",
      +      "position"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "task": {
      +        "enum": [
      +          "realtime",
      +          "cyclicwork",
      +          "background"
      +        ],
      +        "type": "string"
      +      },
      +      "time": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_task_time",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "task",
      +      "time"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "core": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "task": {
      +        "enum": [
      +          "realtime",
      +          "cyclicwork"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_task_cpu_core",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "task",
      +      "core"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "multiCore": {
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "set_multi_cpu_core",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "multiCore"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "isVisualized": {
      +        "type": "boolean"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_visualized_flag",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "isVisualized"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "comment": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_comment_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "comment"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "comment": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_comment_object",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "comment"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "optionNames": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "resetAllOthers": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "set_network_options",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "optionNames"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "optionNames": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "reset_network_options",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "optionNames"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "folder": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "move_network_to_folder",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "folder"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "parameterName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_parameter_value",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "parameterName",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "type": {
      +        "const": "set_compiler_version",
      +        "type": "string"
      +      },
      +      "version": {
      +        "description": "Compiler version string accepted by batch.SetCompilerVersion (e.g. 'C75').",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "version"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "description": "Class name to copy.",
      +        "type": "string"
      +      },
      +      "overwrite": {
      +        "default": true,
      +        "description": "Overwrite an existing class with the same name.",
      +        "type": "boolean"
      +      },
      +      "sourceProject": {
      +        "description": "Path to the SOURCE .lcp that contains the class.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "copy_class",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "sourceProject",
      +      "className"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "description": "Network name to copy.",
      +        "type": "string"
      +      },
      +      "overwrite": {
      +        "default": true,
      +        "description": "Overwrite an existing network with the same name.",
      +        "type": "boolean"
      +      },
      +      "sourceProject": {
      +        "description": "Path to the SOURCE .lcp that contains the network.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "copy_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "sourceProject",
      +      "network"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "checkObjectName": {
      +        "default": true,
      +        "description": "Verify the object name matches.",
      +        "type": "boolean"
      +      },
      +      "network": {
      +        "description": "Target network in this project.",
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "description": "Object in the target network to replace.",
      +        "type": "string"
      +      },
      +      "sourceNetwork": {
      +        "description": "Network in the source project that contains the replacement object.",
      +        "type": "string"
      +      },
      +      "sourceObject": {
      +        "description": "Replacement object name in the source project.",
      +        "type": "string"
      +      },
      +      "sourceProject": {
      +        "description": "Path to the SOURCE .lcp that contains the replacement object's network.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "replace_object",
      +        "type": "string"
      +      },
      +      "useSourceConnections": {
      +        "default": false,
      +        "description": "Adopt the source object's connections.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "sourceProject",
      +      "network",
      +      "objectName",
      +      "sourceNetwork",
      +      "sourceObject"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "library": {
      +        "description": "Library to add: path to a library .lcp or a registered library name.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "add_library",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "library"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "file": {
      +        "description": "Path to a .lcz class/network import bundle.",
      +        "type": "string"
      +      },
      +      "keepExistingLinked": {
      +        "default": false,
      +        "description": "Keep existing classes linked instead of replacing.",
      +        "type": "boolean"
      +      },
      +      "overwrite": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "import_lcz",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "file"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "scope": {
      +        "default": "classes",
      +        "description": "Refresh linked library classes or networks.",
      +        "enum": [
      +          "classes",
      +          "networks"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "update_referenced",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "outputPath": {
      +        "description": "Optional path for the resource export file.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "calculate_resources",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "newConnection": {
      +        "description": "New connection configuration name (address book).",
      +        "type": "string"
      +      },
      +      "station": {
      +        "description": "MultiMaster station name.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "mm_change_connection",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "station",
      +      "newConnection"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "file": {
      +        "description": "Optional path of a server list file to use.",
      +        "type": "string"
      +      },
      +      "station": {
      +        "description": "MultiMaster station name.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "mm_update_server_list",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "station"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "revision": {
      +        "description": "Project revision string (e.g. \"1.2\").",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_project_revision",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "revision"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "author": {
      +        "default": "lasal-mcp",
      +        "type": "string"
      +      },
      +      "backgroundTask": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "comment": {
      +        "type": "string"
      +      },
      +      "company": {
      +        "default": "Votech",
      +        "type": "string"
      +      },
      +      "cyclicTask": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "defBackgroundTime": {
      +        "default": "100 ms",
      +        "description": "Background task time, e.g. \"100 ms\".",
      +        "type": "string"
      +      },
      +      "defCyclicTime": {
      +        "default": "1 ms",
      +        "description": "Cyclic task time, e.g. \"1 ms\" (legacy project constants like cCyTb are not available on current compiler versions).",
      +        "type": "string"
      +      },
      +      "files": {
      +        "default": [],
      +        "description": "Class dependency files (.h/.cpp), optionally created.",
      +        "items": {
      +          "properties": {
      +            "content": {
      +              "description": "Optional latin1 content to write to the file.",
      +              "type": "string"
      +            },
      +            "global": {
      +              "description": "Header: set Global=\"true\" in <HeaderFiles>.",
      +              "type": "boolean"
      +            },
      +            "include": {
      +              "description": "Header: emit an #include in the class .st (default true for *.h).",
      +              "type": "boolean"
      +            },
      +            "path": {
      +              "description": "Path relative to the project (e.g. .\\Class\\PbLib\\C_PbLib.cpp) or absolute.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "path"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "folder": {
      +        "default": "IQ",
      +        "description": "Class browser folder under <ClassFolders>.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Class name ([A-Za-z_][A-Za-z0-9_]*).",
      +        "type": "string"
      +      },
      +      "realtimeTask": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "revision": {
      +        "default": "0.1",
      +        "type": "string"
      +      },
      +      "servers": {
      +        "default": [],
      +        "description": "Extra server channels (ClassSvr is always added).",
      +        "items": {
      +          "properties": {
      +            "initialize": {
      +              "default": false,
      +              "type": "boolean"
      +            },
      +            "name": {
      +              "description": "Server (channel) name.",
      +              "type": "string"
      +            },
      +            "retentive": {
      +              "default": false,
      +              "type": "boolean"
      +            },
      +            "type": {
      +              "default": "SvrCh_DINT",
      +              "description": "ST channel type (SvrCh_*, default SvrCh_DINT).",
      +              "type": "string"
      +            },
      +            "visualized": {
      +              "default": true,
      +              "type": "boolean"
      +            }
      +          },
      +          "required": [
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "create_class",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "global": {
      +        "default": false,
      +        "description": "Header: set Global=\"true\".",
      +        "type": "boolean"
      +      },
      +      "header": {
      +        "description": "Force registration in <HeaderFiles> even when the name does not end in .h.",
      +        "type": "boolean"
      +      },
      +      "path": {
      +        "description": "Existing file to register (relative to the project or absolute).",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "add_project_file",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "path"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "caches": {
      +        "default": true,
      +        "description": "Delete ProjectInternal/BrowserInfo.bin and LobInfo.bin.",
      +        "type": "boolean"
      +      },
      +      "deep": {
      +        "default": false,
      +        "description": "Also delete the generated .lcb and Network/ConfigObjects .lob/.lba (forces a full relink). Use to recover after a class was removed by deleting its folder instead of the batch delete_class operation.",
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "clean_project",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changed
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "default": false,
      +  "description": "Validate operations without applying them.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / operations / description
      Previous value: -"Ordered list of operations to apply. Each has a 'type' field. Channel ops (add/remove/rename_server, add/remove/rename_client) edit .st files directly and cascade to .lcn files. Network ops (create/delete/rename_network, add/remove/rename_object, create/delete_connection, set_init_value, delete_class) run via Lasal2.exe batch script."New value: +"Ordered list of CLASS 2 batch engine operations. Available types: create_network, delete_network, rename_network, duplicate_network, add_object, remove_object, rename_object, change_object_class, create_connection, delete_connection, set_init_value, delete_class, compile, download, set_task_order, set_task_time, set_task_cpu_core, set_multi_cpu_core, set_visualized_flag, set_comment_network, set_comment_object, set_network_options, reset_network_options, move_network_to_folder, set_parameter_value"
    • addedInput schema / properties / operations / items / oneOf
      Added value: +[
      +  {
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "deleteConnections": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "delete_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "newName": {
      +        "type": "string"
      +      },
      +      "oldName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "rename_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "oldName",
      +      "newName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "newName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "duplicate_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name",
      +      "newName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "add_object",
      +        "type": "string"
      +      },
      +      "visualized": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "x": {
      +        "default": 300,
      +        "type": "number"
      +      },
      +      "y": {
      +        "default": 300,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "className",
      +      "objectName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "deleteConnections": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "remove_object",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "newName": {
      +        "type": "string"
      +      },
      +      "oldName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "rename_object",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "oldName",
      +      "newName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "change_object_class",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "className"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "fromClient": {
      +        "type": "string"
      +      },
      +      "fromObject": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "toObject": {
      +        "type": "string"
      +      },
      +      "toServer": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_connection",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "fromObject",
      +      "fromClient",
      +      "toObject",
      +      "toServer"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "clientName": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "delete_connection",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "objectName",
      +      "clientName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "channelName": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_init_value",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "objectName",
      +      "channelName",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "className": {
      +        "type": "string"
      +      },
      +      "force": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "delete_class",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "className"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "options": {
      +        "default": "RebuildAll",
      +        "enum": [
      +          "RebuildAll",
      +          "BuildChanges",
      +          "UserClassesOnly",
      +          "NoDebugInfo"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "compile",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "add_loader_anyway": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "connection": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "download",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "position": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "task": {
      +        "enum": [
      +          "realtime",
      +          "cyclicwork",
      +          "background"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_task_order",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "task",
      +      "position"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "task": {
      +        "enum": [
      +          "realtime",
      +          "cyclicwork",
      +          "background"
      +        ],
      +        "type": "string"
      +      },
      +      "time": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_task_time",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "task",
      +      "time"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "core": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "task": {
      +        "enum": [
      +          "realtime",
      +          "cyclicwork"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_task_cpu_core",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "task",
      +      "core"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "multiCore": {
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "set_multi_cpu_core",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "multiCore"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "isVisualized": {
      +        "type": "boolean"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_visualized_flag",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "isVisualized"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "comment": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_comment_network",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "comment"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "comment": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_comment_object",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "comment"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "optionNames": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "resetAllOthers": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "set_network_options",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "optionNames"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "optionNames": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "reset_network_options",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "optionNames"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "folder": {
      +        "type": "string"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "move_network_to_folder",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "folder"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "network": {
      +        "type": "string"
      +      },
      +      "objectName": {
      +        "type": "string"
      +      },
      +      "parameterName": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "set_parameter_value",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "network",
      +      "objectName",
      +      "parameterName",
      +      "value"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. First observedv0.1.0

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the safety profile is partly covered. The description adds a genuinely non-obvious behavioral trait beyond the annotations: it kills the CLASS 2 IDE before running, which an agent must warn the user about. It stops short of describing failure/rollback behavior or whether the IDE is restarted afterward.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Only two sentences, but the long middle enumeration of operation types is redundant with the schema's own list. More importantly, the critical safety note ('Kills CLASS 2 IDE before running') is buried at the very end rather than front-loaded, which is poor structure for a destructive tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and only a single destructive annotation, so the description carries substantial burden for a 40+ operation batch tool. It omits ordering/failure semantics (schema notes 'Ordered list' but the description does not address partial-failure behavior) and never says what a successful run returns. Adequate but with clear gaps given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter and every operation variant. The description's operation enumeration largely restates what the operations schema already lists. Baseline 3 is appropriate; no additional syntax or format meaning is conveyed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Run CLASS 2 batch engine operations') and enumerates the resources it touches (networks, objects, connections, tasks, compile, download). It also frames itself against file editing ('cannot be done by editing files directly'), giving a boundary. However, it never names sibling tools like manage_class2 or run_class2_script to disambiguate the batch-engine path from the scripting path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an implied usage boundary – operations that cannot be done by editing files directly – which helps an agent decide. But there are no explicit when-not conditions, no named alternatives for the operations that CAN be done via file edits, and no prerequisites (e.g. target connection state) stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.