@bottobot/td-mcp
Version:
TouchDesigner MCP Server v2.8.0 - 21 MCP tools, 629 operators with clean parameter data, 69 Python API classes, 14 tutorials, 32 workflow patterns. Includes version system, experimental techniques KB, core tool enhancements, and experimental build support
946 lines • 28.1 kB
JSON
{
"id": "add_sop",
"name": "Add SOP",
"displayName": "Add SOP",
"category": "SOP",
"subcategory": "Generators",
"version": "",
"lastUpdated": "2025-08-07T07:49:56.158Z",
"sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Add_SOP.htm",
"url": "",
"description": "The Add SOP can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.",
"summary": "The Add SOP can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.",
"details": "",
"usage": "",
"tips": [],
"warnings": [],
"parameters": [
{
"id": null,
"name": "Points DAT",
"label": "Points DAT",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "Parameter of this operator. See operator description for details.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.152Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Named Attributes",
"label": "Named Attributes",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "namedattribs - Allows extra attributes to be defined in the above.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Delete Geometry, Keep Points",
"label": "Delete Geometry, Keep Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "keep - Use this option to remove any unused points. When checked, existing geometry in the input are discarded, but the polygons created by this are kept, as well as any points in the input.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Add Points",
"label": "Add Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "addpts - When On you can add individual points with position and weight of your choosing by using the parameters below.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Point",
"label": "Point",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point - Sequence of points to add\n\n\n\n point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -\n\n point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Position",
"label": "Position",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Weight",
"label": "Weight",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Method",
"label": "Method",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "method - - Specify to create polygons from the points by using a Group method or Pattern Method.\n\n group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "By Group",
"label": "By Group",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Group",
"label": "Group",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "group - Subset of points to be connected.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Add",
"label": "Add",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "add - - Optionally join subgroups of points.\n\n all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "All Points",
"label": "All Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "N",
"label": "N",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "inc - Increment / skip amount to use for adding points.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Closed",
"label": "Closed",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "closedall - Closes the generated polygons.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Polygons Table",
"label": "Polygons Table",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "polydat - to a containing polygon data. Accepts rows of polygons specified by point number in the first column. The second column indicates if the polygons are closed (1) or open (0).",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Polygon",
"label": "Polygon",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "Polygon parameter.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Pattern",
"label": "Pattern",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "poly0pattern - Create a fixed number of polygons by specifying a point pattern for each polygon. Enter connection lists here to add polygons. These consist of a list of point numbers to define the order in which the points are to be connected. The form is: {from}-{to}[:{every}][,{of}].\nExamples of Valid Connection Lists:\n\n1 2 3 4 - Makes a polygon by connecting point numbers 1,2,3,4.\n1 3-15 16 8 - All points from 3-15 are included.\n1-234 820-410 235-409 - Points from 1-820 are included, in the specified order.\n0-15:2 - Every other point from 0 to 15 is included.\n0-15:2,3 - Every 2 of 3 points are included (i.e. 0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15).\n!4 - Every point except 4 is included.\n!100-200 - Every point <100 and >200 is included.\n* - Include all points.\n9-0 - The first ten points are included in reverse order.\n!9-0 - All but the first ten points are included in reverse order.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Remove Unused Points",
"label": "Remove Unused Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "remove - Keep only the connected points, and discard unused points.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Compute Normals",
"label": "Compute Normals",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "normals - Creates normals on the geometry.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
}
],
"parameterGroups": {},
"codeExamples": [],
"pythonExamples": [],
"expressions": [],
"commonInputs": [],
"commonOutputs": [],
"relatedOperators": [],
"workflowPatterns": [],
"images": [],
"videos": [],
"assets": [],
"keywords": [
"add",
"sop",
"both",
"create",
"points",
"polygons",
"own,",
"used",
"existing",
"input."
],
"tags": [
"SOP",
"TouchDesigner",
"Add SOP"
],
"searchWeight": 1,
"contentHash": "",
"processingDate": "2025-08-07T07:49:56.158Z",
"processingVersion": "1.0.0",
"isValid": true,
"validationErrors": []
}