The tool does not provide any output if the parser is instantiated with the prog keyword. e.g. for foo.py that contains parser = argparse.ArgumentParser(description='A description', prog='some prog name') and running python foo.py --generate_cwl_tool > foo.cwl foo.cwl will be empty. If prog='some prog name' is removed, everything works fine.