Below is the sample code which throws error when used in model builder and set input from other tool
class CombinedTool(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "CombinedLRTool" self.description = "CombinedTool" self.canRunInBackground = False self.params = arcpy.GetParameterInfo() def getParameterInfo(self): """Define parameter definitions""" in_tables = arcpy.Parameter( displayName="Input Layers", name="InputLayers", datatype="GPFeatureLayer", parameterType="Required", direction="Input") in_seg = arcpy.Parameter( displayName="Seg Layers", name="in_seg", datatype="GPValueTable", # parameterType="Optional", direction="Input") in_seg.columns = [["GPTableView", "layer"]] testvalue = arcpy.Parameter( displayName="Test Field", name="testvalue", datatype="GPString", direction="Input") params = [in_tables,in_seg,testvalue] return params def isLicensed(self): """Set whether tool is licensed to execute.""" return True def updateParameters(self, parameters): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parameter has been changed.""" lyrdscr = arcpy.Describe(parameters[1].value[0][0]) parameters[2].value = str([f.name for f in lyrdscr.fields]) return def updateMessages(self, parameters): """Modify the messages created by internal validation for each tool parameter. This method is called after internal validation.""" return def execute(self, parameters, messages): return