--- title: "Protocol Definition" slug: "protocol-definition" updated: 2022-07-27T22:10:40Z published: 2022-07-27T22:10:40Z canonical: "code.tag.bio/protocol-definition" --- > ## Documentation Index > Fetch the complete documentation index at: https://code.tag.bio/llms.txt > Use this file to discover all available pages before exploring further. # Protocol Definition The `protocol_definition` is an object containing attributes to design the user interface of a protocol. ### name **usage: *required* - datatype: *string*** The text of the `name` attribute must be unique, as it is used to reference this specific protocol. ``` "name": "awesome_analysis" ``` ### title **usage: *required* - datatype: *string*** The `title` attribute is used as the label for the protocol on the protocol selection screen. ``` "title": "Awesome analysis" ``` ### visible **usage: *required* - datatype: *boolean*** The `visible` attribute determines whether the protocol is made available for use by the end user. ``` "visible": true ``` ### description **usage: *required* - datatype: *string*** The `description` attribute is intended to give an overview of what the protocol is analyzing. The `description` will appear in the protocol selection screen when the user hovers over the protocol tile and at the top of the selected protocol page. ``` "description": "Give an overview of the analysis." ``` ### thumbnail **usage: *optional* - datatype: *string*** The `thumbnail` attribute takes the URL of an image asset. The image is used as the label for the protocol on the protocol selection screen and as an icon within the protocol. ``` "thumbnail": "http://tag.bio/the_best_protocol_picture_ever.png" ``` ### asset **usage: *optional* - datatype: *string*** The `asset` attribute takes the filepath of an image asset from the *assets* project folder. The image is used as the label for the protocol on the protocol selection screen and as an icon within the protocol. ``` "asset": "the_best_protocol_picture_ever.png" ``` ### argument_sets **usage: *required* - datatype: *array*** The `argument_sets` attribute is designed to collect relevant argument references into an actionable protocol step. `argument_sets` also contain attributes which inform the client how to display the selection options to the user, while also making argument selections `mandatory` or `optional`. Protocol `arguments` allow protocol users the chance to select the collections, variables, and/or numeric values that will define attributes in the protocol. See the [Protocol Argument Reference](https://tagbio-developer-docs.document360.io/docs/protocol-argument-reference) for more details. ``` "argument_sets": [ "protocols/argument_sets/background_argument_set.json", "protocols/argument_sets/focus_argument_set.json" ] ``` ### hide_arguments **usage: *optional* - datatype: *boolean*** The `hide_arguments` attribute is set to false by default. When `true`, this attribute collapses all arguments that would be expanded due to default argument selections. ``` "hide_arguments": true ```