add_recipe_to_project
ChatGPTAdds an existing recipe to a project. The project may be in a different material family than the recipe.
archive_recipes
ChatGPTArchives the provided recipes and their child recipes. Fails if any of the recipes are locked. An optional reason can be provided for the archive.
associate_recipe_as_input
ChatGPTAssociates a recipe as an input (ingredient). When no existing input is specified, creates a new input or returns the existing association if one already exists. When an existing input is specified, associates it with the recipe; fails if that input is already associated with a different recipe. Use disassociate_recipe_as_input to remove an existing association first. Returns the input ID and whether a modification was made.
create_inputs
ChatGPTCreates new inputs (ingredients or process parameters) in the specified material families. Each input must belong to at least one material family. Optionally sets attribute values, a category, and field values on creation.
create_recipe
ChatGPTCreates a single recipe in the specified material family and workflow. If a matching recipe already exists, no new recipe is created and the existing recipe ID is returned. Returns the recipe ID.
create_recipe_link
ChatGPTCreates a directional link between two recipes of the specified type (child, control, user_link, or previous_experiment). Skips without error if the link already exists. A name is required for child and user_link types; control and previous_experiment links do not accept a name. Returns whether a modification was made.
disassociate_recipe_as_input
ChatGPTRemoves the input (ingredient) association from a recipe. If the recipe is not currently associated as an input, this is a no-op. Returns whether a modification was made.
get_current_user_info
ChatGPTReturns the user ID of the currently authenticated user. Requires a valid authenticated session. Takes no arguments.
get_input_names
ChatGPTReturns the ID and name of all non-archived inputs (ingredients and/or process parameters) in a material family. Can filter by type (ingredient vs parameter) using is_parameter. Paginated with a default and maximum limit of 20,000 results, ordered by input ID.
get_inputs_data
ChatGPTReturns detailed metadata for a list of inputs by their IDs, including attribute values, categories per material family, and subcategory tags. Also returns attribute definitions (name and quantity type) for all referenced attributes.
get_output_data
ChatGPTReturns detailed metadata for outputs in a material family, including quantity type, global category assignments, and associated units. Can filter by specific output IDs. Excludes archived outputs. Paginated with a default and maximum limit of 1,000 results, ordered by output ID. Also returns referenced global category and unit definitions.
get_output_names
ChatGPTReturns the ID and name of all non-archived outputs in a material family. Outputs represent measurement values of any type (numeric, text, curve, calculation, etc.). Paginated with a default and maximum limit of 20,000 results, ordered by output ID.
get_projects
ChatGPTLists non-archived projects the user has permission to access, optionally filtered by material family ID. Requires either allMaterialFamilies=true or a specific materialFamilyId; returns 400 if neither is set. Returns projects ordered by ID along with their associated phase definitions. Projects represent groupings of experiments, similar to folders in a directory structure.
get_recipe_links
ChatGPTRetrieves links between recipes, traversing up to the specified depth with a maximum depth of 20. Only returns immediate links at each traversal level. Optionally filters by link type. Results are limited to 500 links total; fails if this limit is exceeded.
get_recipe_metadata_data
ChatGPTRetrieves recipe metadata field definitions for a material family. Recipe metadata represents data associated with experiments that is not an input, output, or calculation (e.g. sample ID, location). Results are paginated with a default and maximum limit of 1000, ordered by metadata field ID. Optionally filters to specific metadata IDs.
get_recipe_names
ChatGPTReturns the ID and name of all non-archived recipes in the specified project, ordered by recipe ID. Archived recipes are excluded from the results.
get_recipes_data
ChatGPTRetrieves data for the requested experiments or project, including inputs, outputs, metadata, workflow steps, step relationships, tags, experiment groups, and lock status. Each step includes both recipeStepNumber (its stored position within its workflow step) and displayMixOrderNumber (the experiment editor's mix-order number). Paginated by experiment ID.
list_id_source
ChatGPTList id and label pairs for a given id source spec. Supports pagination via offset and limit and text search filtering via search_label.
lock_recipes
ChatGPTLocks experiments to prevent editing. Supports locking all data (inputs and measurements) or inputs only. Returns whether a modification was made.
remove_recipe_from_project
ChatGPTRemoves a recipe from a project.
remove_recipe_link
ChatGPTRemoves a directional link between two recipes of the specified type (child, control, user_link, or previous_experiment). If the link does not exist, the action is a no-op. Returns whether a modification was made.
set_input_category
ChatGPTSets or unsets the global category for an input within its material families. Pass a category_id to assign a category, or null to remove the current category. Optionally scope the update to specific material families via material_family_ids; if omitted, updates across all material families the input belongs to. Validates that the category exists. Requires SET_FIELD_VALUE access on the input entity.
set_input_subcategories
ChatGPTModifies the subcategory (tag) assignments for an input. Supports three update types: 'append' adds the specified subcategories without removing existing ones, 'override' replaces all subcategories with the specified set (archiving any not in the list), and 'remove' archives only the specified subcategories. Requires SET_FIELD_VALUE access on the input entity.
set_recipe_inputs
ChatGPTSets input values for experiments. Supports numeric, text, and categorical types. Validates that the recipe step belongs to the correct recipe. Supports setting actual values, associating lots (creating them if needed), and removing inputs. Writes all values to the first workflow step when no step is specified. Fails if both a numeric and string value are provided.
set_recipe_metadata
ChatGPTSets metadata values on a recipe identified by key. Accepts a list of metadata field-value pairs to populate on the recipe. Fails if any of the metadata fields are read-only.
set_recipe_outputs
ChatGPTSets output measurement values for experiments. Supports numeric, text, categorical, curve, color, and recipe-as-output types. Fails if both a numeric and string value are provided. Experiment number must be 1 or greater. Use resolve_output_conditions to obtain a condition ID when setting conditioned outputs. Supports configurable null behavior (do nothing, ensure output exists, or remove the output row).
set_recipe_tags
ChatGPTModifies tags on a recipe identified by key. Supports three update modes - append (adds tags to existing ones), override (replaces all tags with the provided set), or remove (removes the specified tags).
unarchive_recipes
ChatGPTRestores previously archived recipes, making them active again. Fails if any of the recipes are locked.
unlock_recipes
ChatGPTUnlocks previously locked experiments, making them editable again. Returns whether a modification was made.