I am using ArcMap 10.5, but help pages I am referring are the same as in 10.7.
I am trying to make a GP tool within Python toolbox with kind of selection input: user selects features in ArcMap interactively.
I was reading Using the interactive feature and record input controls and found that it's possible for GP tool to have such kind of parameter. Quote: "The interactive feature input control gives you two methods for inputting features to a tool—either by clicking on a map display or by providing an existing dataset."
OK, so I checked what parameter types I can create here: Defining parameter data types in a Python toolbox and it seems that Feature Set (GPFeatureRecordSetLayer) is what I am looking for as description says: "Interactive features that draw the features when the tool is run.".
Here is my magic tool, but I do not see any way to "enter features interactively":
class AttachTool(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "Add attachments" self.description = "Adds the same file as attachment to multiple selected features" self.canRunInBackground = False def isLicensed(self): """Set whether tool is licensed to execute.""" return True def getParameterInfo(self): """Define parameter definitions""" paramInputFeatures = arcpy.Parameter( displayName="Input Features", name="in_feature_set", datatype="GPFeatureRecordSetLayer", # Interactive features that draw the features when the tool is run parameterType="Required", direction="Input", multiValue = True) paramInputFile = arcpy.Parameter( displayName="File to attach", name="in_file", datatype="DEFile", parameterType="Required", direction="Input") return [paramInputFeatures, paramInputFile] 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.""" 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): """The source code of the tool.""" arcpy.AddMessage('Just pretending to do something...') return Input field looks like this and I don't see how I should select features... 
PS. Copy on GeoNet: https://community.esri.com/thread/243774-arcpyparameter-how-to-create-the-interactive-feature-input-control