# Galaxy Tool XML File The XML File for a Galaxy tool, generally referred to as the "tool config file" or "wrapper", serves a number of purposes. First, it lays out the user interface for the tool (e.g. form fields, text, help, etc.). Second, it provides the glue that links your tool to Galaxy by telling Galaxy how to invoke it, what options to pass, and what files it will produce as output. If you find a bug please report it [here](https://github.com/galaxyproject/galaxy/issues/new). This document serves as reference documentation. If you would like to learn how to build tools for Galaxy, [Planemo](https://planemo.readthedocs.io/en/latest/writing.html) features a number of tutorials on building Galaxy tools that would better serve that purpose. ```{contents} Contents :depth: 1 :local: ``` ## ``tool`` The outer-most tag set of tool XML files. Attributes on this tag apply to the tool as a whole. ### Tool profile List of behavior changes associated with profile versions: #### 16.04 - Disable implicit extra file collection. All dynamic extra file collection requires a `discover_datasets` tag. - Disable `format="input"` and require explicit metadata targets (`metadata_source`, `format_source`). - Disable `interpreter` use `$__tool_directory__`. - Disable `$param_file` use `configfile`. - Disable default tool version of 1.0.0. - Use non zero exit code as default stdio error condition (before non-empty stderr). #### 18.01 - Use a separate home directory for each job. - Introduce `provided_metadata_style` with default `"default"` before `"legacy"`. #### 18.09 - References to other inputs need to be fully qualified by using `|`. - Do not allow provided but illegal default values. - Do not use Galaxy python environment for `manage_data` tools. #### 19.05 - Change default Python version from 2.7 to 3.5 #### 20.05 - json config files: - unselected optional `select` and `data_column` parameters get `None` instead of `"None"` - multiple `select` and `data_column` parameters are lists (before comma separated string) #### 20.09 - Exit immediately if a command exits with a non-zero status (`set -e`). - Assume sort order for collection elements. ### 21.09 - Do not strip leading and trailing whitespaces in `from_work_dir` attribute. - Do not use Galaxy Python virtual environment for `data_source` tools. `data_source` tools should explicitly use the `galaxy-util` package. ### 23.0 - Text parameters that are inferred to be optional (i.e the `optional` tag is not set, but the tool parameter accepts an empty string) are set to `None` for templating in Cheetah. Older tools receive the empty string `""` as the templated value. ### 24.0 - Do not use Galaxy python environment for `data_source_async` tools. - Drop request parameters received by data source tools that are not declared in `` section. ### Examples A normal tool: ```xml ``` A ``data_source`` tool contains a few more relevant attributes. ```xml