1. Home
  2. Uncountable MCP Tool Reference

Uncountable MCP Tool Reference

Contents

This article lists every tool the Uncountable MCP server offers to connected AI clients, with each tool’s arguments. For connection steps, see Uncountable MCP Setup Guide.

The server offers 100 tools: 37 read only and 63 that modify data. Every tool call runs with the connected user’s account and permissions, so a tool can only read or change what that user can access in Uncountable.

💡 Controlling which tools are available: Admins can turn off individual tools, or turn on Read Only Access to offer clients only the read only tools. See the Configuring tools section of the Uncountable MCP Setup Guide.

Tool labels

Each tool is labeled with one or more of the following:

LabelMeaning
Read OnlyThe tool reads data and does not change anything.
Modifies DataThe tool creates or changes data. Turned off when Read Only Access is on.
DestructiveThe tool can overwrite or remove existing data.
IdempotentRepeating the same call with the same arguments has no additional effect.

Many read tools return results in pages. When a result includes nextCursor, pass it as cursor to read the next page.

Read only tools

Convert Chemical Formats

convert_chemical_formats · Read Only

Convert chemical structure strings (MOL v2000, MOL v3000, or SMILES formats) into the Uncountable internal format for use with other APIs such as set_input_attribute_values.

ArgumentTypeRequiredDescription
sourceChemicalStructureslist of objectYesThe chemical structures to convert, at most 100.

Describe Entity Definition

describe_entity_definition · Read Only

Explains what the entities of one entity definition hold: lists each field with its ref name, label, value type, allowed options, and what its ids refer to. Call it before you read, filter, or write the entities of an entity definition. Pass the entityType and definitionId from list_entity_definitions. A field that holds field options lists up to 40 of them. When a field has references, pass them as spec to match_id_source or list_id_source to resolve the ids that the field holds. It also lists the phases that an entity moves through, with the phase ids that transition_entity_phase takes. It ends with howTo, which names the calls that find, list, read, create, update, and move these entities.

ArgumentTypeRequiredDescription
entityTypestringYesThe entity type of the entity definition, from list_entity_definitions.
definitionIdintegerYesThe definitionId of the entity definition, from list_entity_definitions.

Find Custom Entity Definition

find_custom_entity_definition · Read Only

Finds which custom entity definition a name that the user mentions refers to, by matching the label or ref name of each permitted, non-archived definition. Use the returned definitionId with listing_discover_columns and listing_run_query for an entity_type=custom_entity query. Pass nameContains to match a label or ref name. Results are ordered by label and paged. Pass nextCursor as cursor to read the next page.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
nameContainsstringNoA case-insensitive substring to match against the definition label or ref name.

Get Analyze Results

get_analyze_results · Read Only

Returns how well a completed job’s models reproduce the outputs they were trained on, and how much each input influences each output. Accepts analyze and suggest jobs, since both train models. Fails if the job has not completed successfully. Requires an ML training license.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
asyncJobIdintegerYesThe id of a completed analyze or suggest job, as returned by the submit_async_job tool.

Get Column Calculation Values

get_column_calculation_values · Read Only

Retrieves the computed values for a single column calculation across multiple recipes. Returns the calculation quantity for each recipe, along with the associated recipe step, recipe input, and ingredient IDs.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
recipeIdslist of integerYesThe recipe ids to read calculation values for. Find recipe ids with the list_id_source tool and entity type recipe. Each page covers up to 50 of these recipes, ordered by recipe id. Pass the same recipe_ids with each cursor.
calculationIdintegerYesThe column calculation id to read. Find calculation ids with the get_recipe_calculations tool.

Get Current User Info

get_current_user_info · Read Only

Returns the user ID of the currently authenticated user. Requires a valid authenticated session. Takes no arguments.

Get Curve

get_curve · Read Only

Returns the x and y curve data for a recipe output or recipe input. Exactly one target (output or input) must be specified. Returns the curve values sorted by index.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
targetobjectYesThe recipe output or recipe input that holds the curve.

Get Entities Data

get_entities_data · Read Only

Retrieves field values for entities of the same type. All requested entities must share the same entity type.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entities to read. All requested entities must have this type.
entityIdslist of integerYesThe ids of the entities to read, at most 100. Find entity ids with the list_id_source or lookup_entity tool.

Get Input Data

get_input_data · Read Only

Returns detailed metadata for inputs (ingredients and/or process parameters) in a material family, including attribute values, global category assignments, and subcategory (tag) assignments. Can filter by specific input IDs or by type (ingredient vs parameter). Excludes archived inputs. Paginated with a default and maximum limit of 1,000 results, ordered by input ID.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
materialFamilyIdintegerYesThe material family id. Find it with the get_projects tool.
inputIdslist of integerNoInput ids to include. Find them with the get_input_names tool. Omit this field to include all active inputs.
isParameterbooleanNoSet true for process parameters or false for ingredients. Omit this field to include both.

Get Input Group Names

get_input_group_names · Read Only

Returns the ID and name of all input groups in a material family that are either owned by the requesting user or shared globally (no owner). Results are ordered by input group ID.

ArgumentTypeRequiredDescription
materialFamilyIdintegerYesThe material family id whose input groups to read. Find it with get_projects or list_id_source.

Get Input Names

get_input_names · Read Only

Returns 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.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
materialFamilyIdintegerYesThe id of the material family to list inputs from. Find material family ids with the get_projects tool, which returns the material family id of each project.
isParameterbooleanNoSet to true to list only process parameters, or false to list only ingredients. Omit it or pass null to list both.

Get Inputs Data

get_inputs_data · Read Only

Returns 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.

ArgumentTypeRequiredDescription
inputIdslist of integerYesThe ids of the inputs (ingredients or process parameters) to read, at most 100. Find input ids with the list_id_source tool and entity type ingredient.

Get Notebook Content

get_notebook_content · Read Only

Retrieves the structured content of a notebook by identifier key. Only exportable cell types are included: HTML text, tables (with text or image cells and optional styling), chemical structures (MOL 3000 or RXN 3000 format), equations, files, images, and reaction tables. Non-exportable cell types (charts, graphs, dashboards) and cells marked as excluded from export are omitted. Chemical structures that fail to convert are returned as chemical_structure_error entries with an error message. File and image entries include a key for each file.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
notebookIdintegerYesThe id of the notebook to read. Find notebook ids with the list_id_source or lookup_entity tool.

Get Output Data

get_output_data · Read Only

Returns 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.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
materialFamilyIdintegerYesThe material family id. Find it with list_id_source and entity type material_family.
outputIdslist of integerNoThe output ids to include. Find them with list_id_source and entity type output. Omit this field or pass an empty list to include all active outputs.

Get Output Names

get_output_names · Read Only

Returns 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.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
materialFamilyIdintegerYesThe id of the material family. Get this id from the get_projects tool.

Get Output Organization

get_output_organization · Read Only

Returns the output organization configuration (column and table definitions) for a given scope: material family, project, or user. Organization parameters define how outputs are grouped and sorted, and can be based on category, recipe input, or condition parameter.

ArgumentTypeRequiredDescription
requestobjectYesWhose organization settings to read: scope material_family takes a material family id, scope project takes a project id, and scope user takes a user id, a material family id, and an optional project id.

Get Projects

get_projects · Read Only

Lists 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.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
allMaterialFamiliesbooleanYesWhether to list projects from every material family.
materialFamilyIdintegerNoThe material family id to filter. Find it with get_projects_data or list_id_source.

Get Projects Data

get_projects_data · Read Only

Retrieves detailed data for a set of projects, including field values, phase definitions, and field metadata. Paginated to limit response size.

ArgumentTypeRequiredDescription
projectIdslist of integerYesThe ids of the projects to read. Find project ids with the list_id_source tool and entity type project.

Get Recipe Calculations

get_recipe_calculations · Read Only

Retrieves calculation values for the specified recipes. When specific calculations are requested, they are computed on-the-fly. Otherwise, not all calculations may be returned. Returns both the per-recipe calculation values and the calculation definitions.

ArgumentTypeRequiredDescription
recipeIdslist of integerYesThe ids of the recipes to read calculation values for, at most 100. Find recipe ids with the list_id_source tool and entity type recipe.
calculationIdslist of integerNoThe ids of the calculations to compute for each recipe. Omit it or pass null to read the stored calculation values of the recipes instead, which can leave out some calculations. The result lists the id and name of each calculation it returns.

get_recipe_links · Read Only

Retrieves 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.

ArgumentTypeRequiredDescription
recipeIdslist of integerYesThe ids of the recipes to start from, at most 100. Find recipe ids with the list_id_source tool and entity type recipe.
depthintegerNoHow many layers of links to follow from the given recipes, at most 20. The default of 1 returns only the direct links of the given recipes.
linkTypeslist of stringNoReturn and follow only links of these types: user_link (manual link), child (test sample), self, recipe_as_output (analytical sample), control, intermediate_recipe (used as a component), or previous_experiment (previous sample). Omit it or pass null to use links of every type.

Get Recipe Metadata Data

get_recipe_metadata_data · Read Only

Retrieves 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.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
materialFamilyIdintegerYesThe material family to list metadata definitions from. Find its id with the list_id_source tool and entity type material_family.
recipeMetadataIdslist of integerNoThe metadata definition ids to return. Find metadata ids with the get_recipes_data tool. Omit this value to return every definition.

Get Recipe Names

get_recipe_names · Read Only

Returns the ID and name of all non-archived recipes in the specified project, ordered by recipe ID. Archived recipes are excluded from the results.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
projectIdintegerYesThe id of the project to list recipes from. Find project ids with the get_projects tool.

Get Recipe Output Metadata

get_recipe_output_metadata · Read Only

Retrieves metadata values and their field definitions for the specified recipe outputs. Accepts at most 500 recipe output IDs. Returns metadata values (numeric or JSON) along with the non-archived metadata field definitions.

ArgumentTypeRequiredDescription
recipeOutputIdslist of integerYesThe recipe output ids to read metadata for, at most 500. Find recipe output ids with the get_recipes_data tool.

Get Recipes Data

get_recipes_data · Read Only

Retrieves 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.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
selectionobjectYesSelect every recipe in a project or select recipes by their ids.
emptyInputBehaviorstringNoControls whether empty recipe inputs are included in the returned result. Recipe inputs without values are considered empty. Note that recipe inputs whose behavior is INCLUDED are always returned regardless of this setting. Defaults to exclude_null.
emptyOutputBehaviorstringNoControls whether empty recipe outputs are included in the returned result. Empty recipe outputs are outputs added to the experiment that do not have a value associated with them. Defaults to exclude_null.

Get Skill

get_skill · Read Only

Loads step-by-step instructions (skills) for working with this account’s data: orienting yourself in what entity types exist, finding, filtering, counting and comparing entities, reading measurements and curves, and creating or editing entities. Call it with no arguments to list every skill with when to use it. Then call it with skillName to load the steps and worked examples of that skill, and follow them with the other tools. The available skill names are edit-entities, orient-in-account, and query-uncountable-data.

ArgumentTypeRequiredDescription
skillNamestringNoThe name of the skill to load. Omit it to list every skill with when to use it.

Get Suggest Results

get_suggest_results · Read Only

Returns the formulations a completed suggest job generated, each with the model’s predicted values for the spec’s goals. Fails if the job has not completed successfully. Requires an ML training license.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
asyncJobIdintegerYesThe id of a completed suggest job, returned by the submit_async_job tool.

List Aggregate

list_aggregate · Read Only

Queries aggregated data using a structured loading configuration. The referenced configuration must be an aggregation listing. Returns column metadata and aggregated row results.

ArgumentTypeRequiredDescription
configReferencestringYesThe configuration reference name for the listing config
attributeValueslist of AttributeValueNoAttributes to pass to the configuration for parameterizing filters
offsetintegerNoUsed for pagination. Pagination is done based on the sorting of the config.
limitintegerNoThe number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100.

List Entities

list_entities · Read Only

Lists entities using a structured loading configuration. Returns column metadata and entity results with their column values.

ArgumentTypeRequiredDescription
entityTypeEntityTypeNo
configReferencestringYesThe configuration reference name for the listing config
attributesobjectNoAttributes to pass to the configuration for parameterizing filters
offsetintegerNoUsed for pagination. Pagination is done based on the sorting of the config.
limitintegerNoThe number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100.
additionalFilterConfigslist of AdditionalFilterConfigNoAdvanced property: Additional filter configurations to apply to the listing. A maximum of 10 additional filter configs are supported.

List Entity Definitions

list_entity_definitions · Read Only

Finds out what data this account tracks: lists each entity type with its entity definitions, named the way this account names them. Call it first when the user asks what data exists or names a kind of entity that you do not recognize. Each definition has a definitionId. Pass it as customEntityDefinitionId to listing_discover_columns for entity type custom_entity. The result ends with nextSteps that name the tools to call next.

This tool takes no arguments.

List ID Source

list_id_source · Read Only

List id and label pairs for a given id source spec. Supports pagination via offset and limit and text search filtering via search_label.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
specobjectYesWhat to list: entities of one entity type, custom entities of one definition, or the options of one field option set.
searchLabelstringNoText to search for within the names. Omit it or pass null to list every name.

Listing Discover Columns

listing_discover_columns · Read Only

Finds the columns that the entities of one entity type can be read, filtered, and sorted by, such as their field values. Pass entity_type from the EntityType enum. For custom entities, pass custom_entity_definition_id from list_entity_definitions or find_custom_entity_definition. For recipes, measurement columns and calculations include only the user’s current material family, which the user selects in the web app. MCP tools cannot change it. Use name_contains or option_name_contains to narrow the catalog. Each option includes an opaque column token, the filter kinds that the column accepts, and a sortable flag. Copy the column token unchanged into listing_run_query, or pass the group name and option name, for example Experiment: Name, as its columnName. Results are paged by group. Pass nextCursor as cursor to read the next page.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
entityTypestringYesThe entity type whose selectable columns to discover.
customEntityDefinitionIdintegerNoFor custom_entity only, the definition id returned by list_entity_definitions or find_custom_entity_definition.
nameContainslist of stringNoSubstrings to match against column group names and option names.
optionNameContainsstringNoA substring to match against option names.
aggregateTypestringNoThe reverse relation aggregate family to discover.

Listing Run Query

listing_run_query · Read Only

Finds, counts, and compares entities of one type by their column values, without saving a listing. Name each column, filter, and sort column by its display name in columnName, or pass a column token from listing_discover_columns in column. listing_discover_columns is the precise path: it lists the exact names, column tokens, and filter kinds of each column. Omit columns to return the filter columns. Every returned row meets all filters, and totalResults counts the matching rows. Archived entities are excluded. Sort only on sortable columns. Results are paged with at most 100 rows per page. To read the next page, pass nextCursor as cursor with the same columns, filters, and sorts.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
entityTypestringYesThe entity type to query. Use the entity_type that you passed to listing_discover_columns.
customEntityDefinitionIdintegerNoFor custom_entity only, the definition id. Use list_entity_definitions or find_custom_entity_definition to get definition ids.
columnslist of objectNoThe columns to return, in order. Omit it to return the filter columns.
filterslist of objectNoConditions that every returned row meets.
sortslist of objectNoThe sort order of the rows. The first sort has the highest priority.

Lookup Entity

lookup_entity · Read Only

Looks up an entity by matching field values. Only text and ID field types are supported for matching. Returns the matched entity ID, or null if no match is found. Fails if multiple entities match. Excludes archived entities from results.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to look up.
queryobjectYesHow to match the entity: field_value matches one field value, and composite_field_values matches up to 3 field values together.

Match ID Source

match_id_source · Read Only

Match names to IDs using a given id source spec. Performs a reverse lookup, returning all matching IDs for each provided name. Accepts at most 10 names per request.

ArgumentTypeRequiredDescription
specobjectYesWhat to match the names against: entities of one entity type, custom entities of one definition, or the options of one field option set.
nameslist of stringYesThe exact names to match, at most 10.

Resolve Entity Ids

resolve_entity_ids · Read Only

Resolves entity IDs to their display names. All requested entities must share the same entity type.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entities to name. All requested entities must have this type.
entityIdslist of integerYesThe ids of the entities to name, at most 100. Find entity ids with the list_id_source or lookup_entity tool.

Search Entities

search_entities · Read Only

Finds what a name or value that the user mentions refers to: searches entity names and field values across every entity type at once, and returns each match with its entity type, entity id, and entity definition. Call it before you guess the entity type of a name, or when the user gives a value such as a code or a number instead of a name. Matching ignores case and extra spaces, and also finds similar spellings. The result ends with nextSteps that name the tools to call next.

ArgumentTypeRequiredDescription
textstringYesThe text to find in entity names and field values, from 3 to 200 characters. Matching ignores case and extra spaces, and also finds similar spellings of a name.
entityTypeslist of stringNoSearch only these entity types. Omit to search every entity type that list_entity_definitions lists and whose entities have names.

Search Files And Notebooks

search_files_and_notebooks · Read Only

Searches the text and the names of the files and notebooks that the user can read, and returns the best matches with the matched text, the entity type, the entity id, and a URL to open each match. Call it when the user asks what a file or notebook says, or asks for files or notebooks about a topic. Call search_entities instead to find an entity by its name or a field value. The result ends with nextSteps that name the tools to call next.

ArgumentTypeRequiredDescription
cursorstringNoThe nextCursor value from the previous page of this tool. Omit it or pass null to read the first page.
querystringYesA natural-language description of the content to find, in any language. Matches file and notebook text with the same meaning where the schema embeds that text.
keywordslist of stringYesShort words or phrases to match in names and text, for example a product code, a term from the question, and its synonyms. Each keyword is matched on its own, and a result needs to match only one keyword. Every word inside one keyword must match. At least 1 keyword. At most 10 keywords.
folderIdintegerNoLimit the search to files and notebooks in this folder or any of its subfolders. Omit it to search everything the user can read.

Tools that modify data

Add Entity Comment

add_entity_comment · Modifies Data

Adds a comment to an entity, creating the entity’s comment thread when one does not exist yet. Watchers of the entity and of its comment thread are notified. Comments are not idempotent: each call adds a new comment.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to comment on.
entityIdintegerYesThe id of the entity to comment on. Find entity ids with the list_id_source or lookup_entity tool.
contentstringYesThe text of the comment. Each call adds a new comment.

Add File To Folder

add_file_to_folder · Modifies Data

Deprecated. Use modify_file_system with an upsert_file operation instead.

ArgumentTypeRequiredDescription
fileIdintegerYesThe id of the uploaded file.
folderIdintegerYesThe id of the folder that receives the file. Use 1 for the top-level folder. Find folder ids with the lookup_entity tool (entity type file_folder) or in modify_file_system results.

Add Notebook Content

add_notebook_content · Modifies Data

Appends content cells to an existing notebook. Resolves the notebook by identifier key and requires SET_FIELD_VALUE permission on the notebook entity. Supports multiple content types: markdown text, HTML text, tables with styled cells, chemical structures (SMILES, Ketcher, MOL 2000/3000, RXN, SDF, CDX), equations, file attachments, images, and reaction tables with reactants/products/catalysts/solvents. Currently only supports appending to the first page of the notebook.

ArgumentTypeRequiredDescription
notebookIdintegerYesThe id of the notebook to add the content to. Find notebook ids with the list_id_source tool and the notebook entity type.
contentslist of objectYesThe content to add, in order. Each entry adds one or more cells after the last cell of the first page of the notebook.

Add Recipe To Project

add_recipe_to_project · Modifies Data · Idempotent

Adds an existing recipe to a project. The project may be in a different material family than the recipe.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe id of the recipe to add to the project. Find recipe ids with the list_id_source tool and entity type recipe.
projectIdintegerYesThe id of the project to add the recipe to. The project can be in a different material family than the recipe. Find project ids with the list_id_source tool and entity type project.

Add Time Series Data

add_time_series_data · Modifies Data · Destructive

Adds timestamp-value data points to a time series segment identified by key. Supports configurable conflict resolution when a data point already exists at the same timestamp: either overwrite the existing value or raise an error. Returns whether a modification was made.

ArgumentTypeRequiredDescription
timeSeriesSegmentIdintegerYesThe time series segment to add data to. Use a segment id that the user supplies.
timeSeriesDatalist of objectYesThe data points to add, at most 100000.
onConflictstringNoWhat to do when the segment already has a data point at the same timestamp: overwrite replaces its value, error fails the call. Defaults to error.

Archive Recipes

archive_recipes · Modifies Data · Destructive · Idempotent

Archives the provided recipes and their child recipes. Fails if any of the recipes are locked. An optional reason can be provided for the archive.

ArgumentTypeRequiredDescription
recipeIdslist of integerYesThe ids of the recipes to archive, at most 100. Their child recipes are archived too. Find recipe ids with the list_id_source tool and entity type recipe.
reasonstringNoWhy the recipes are archived. The reason is written to the audit log entry of the archive. Omit it or pass null to give no reason.

Associate Equipment Input

associate_equipment_input · Modifies Data · Idempotent

Create or return an input association for a piece of equipment within specified material families. The equipment is resolved via identifier key. Supports both direct invocation and async batch execution. Returns modification_made and result_id of the association.

ArgumentTypeRequiredDescription
equipmentIdintegerYesThe equipment id. Find equipment ids with the list_id_source tool and an entity spec whose entity_type is equipment.
materialFamilyIdslist of integerYesThe material families to add the new input to. This must be non-empty. It is ignored when the equipment already has an input. Find material family ids with the get_projects tool.

Associate Recipe As Input

associate_recipe_as_input · Modifies Data · Idempotent

Associates 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.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id. Find recipe ids with the list_id_source tool and entity type recipe.
inputIdintegerNoThe input id to associate. Find input ids with list_id_source and entity type ingredient. Omit this field to create or reuse an input.
showInListingsbooleanNoSet true to show the input in listings, or false to hide it.

Associate Recipe As Lot

associate_recipe_as_lot · Modifies Data · Idempotent

Creates a lot association between a recipe and an ingredient. The recipe becomes a lot for the specified ingredient. Returns whether a modification was made.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to use as a lot. Find recipe ids with the list_id_source tool and entity type recipe.
ingredientIdintegerYesThe ingredient id to associate. Find input ids with the list_id_source tool and entity type ingredient.

Clear Recipe Outputs

clear_recipe_outputs · Modifies Data · Destructive · Idempotent

Clears all output values and output metadata for a given recipe identified by key. Returns whether a modification was made.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id whose output values and metadata to clear. Find recipe ids with the get_recipe_names tool.

Convert Recipe Workflow

convert_recipe_workflow · Modifies Data · Destructive · Idempotent

Moves an existing recipe (experiment) to another workflow of its material family, and optionally applies a workflow variant of that workflow. The workflow steps of the recipe map to steps of the new workflow by name and step number, and the call fails when inputs or process parameters cannot map. The call replaces the step relationships of the recipe, and moves the recipe from the default product project of its old workflow to that of the new workflow. Fails when the recipe is locked, or is used as an ingredient or as a workflow variant. Find recipe ids with list_id_source and entity type recipe, and workflow ids with list_id_source and entity type workflow.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe id of the recipe to move to another workflow. Find recipe ids with the list_id_source tool and entity type recipe.
workflowIdintegerYesThe workflow to move the recipe to. The workflow must be in the material family of the recipe. Find it as workflowId in get_recipes_data results, or with the list_id_source tool and an entity spec whose entity_type is workflow.
workflowVariantIdintegerNoA workflow variant to apply to the recipe. The workflow variant must belong to the workflow. Omit it to use the workflow steps of the workflow. Find it with the list_id_source tool and an entity spec whose entity_type is workflow_variant.

Create Entities

create_entities · Modifies Data

Batch creates new entities of a specified type within a definition. Returns the list of created entity IDs and types.

ArgumentTypeRequiredDescription
definitionIdObjectIdNo
definitionKeyIdentifierKeyNo
entityTypeLimitedEntityTypeYes
entitiesToCreatelist of EntityToCreateYesA list of the entities to create

create_entity_links · Modifies Data · Idempotent

Creates manual links between existing entities of any type, for example from a task to a recipe (experiment). Each link goes from one entity to another entity. You must be able to edit each from entity and view each to entity. A link that already exists is skipped. Returns the links that the call created.

ArgumentTypeRequiredDescription
linkslist of objectYesThe manual links to create between existing entities.

Create Inputs

create_inputs · Modifies Data

Creates 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.

ArgumentTypeRequiredDescription
inputsToCreatelist of objectYesThe inputs to create, at most 100 per call.

Create Mix Order

create_mix_order · Modifies Data

Creates a mix order on a recipe workflow step. The recipe and workflow step are identified by their respective keys. Returns whether a modification was made.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to create the mix order on. Find recipe ids with the list_id_source tool and entity type recipe.
recipeWorkflowStepIdentifierobjectYesThe recipe workflow step to create the mix order on.

Create Or Update Entities

create_or_update_entities · Modifies Data · Destructive

Bulk variant of create_or_update_entity scoped to a single (entity_type, definition_key) — accepts up to 100 operations sharing that scope and applies them via batched primitive calls (one permission check + one set_field_values across updates, one create_entities across creates). Returns one AsyncBatchActionReturn per input, in the same order. Cross-operation batch_reference dependencies are not supported.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of every entity to create or update.
definitionIdintegerYesThe entity definition to create new entities with. Required even when every entity is an update, where it must exist but is not used. Find it with the list_id_source tool and the entity definition entity type.
operationslist of objectYesThe entities to create or update, from 1 to 100, each with its own key and field values. Results are returned in input order.

Create Or Update Entity

create_or_update_entity · Modifies Data · Destructive

Creates a new entity or updates an existing one. If the entity already exists, updates its field values. Otherwise, creates a new entity under the specified definition. Returns the entity ID and whether a modification was made.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to create or update.
definitionIdintegerYesThe entity definition to create the entity with. Required on update too, where it must exist but is not used. Find it with the list_id_source tool and an entity spec whose entity_type is entity_definition.
fieldValueslist of objectYesThe field values to set when the tool creates or updates the entity.
entityKeyobjectNoThe existing entity to update, by id or by ref name. Omit it to create a new entity. Fails when it matches no entity, and never creates one.
onCreateInitFieldValueslist of objectNoField values set only when the tool creates the entity, and ignored on update. On create they win over the other field values for the same field.

Create Recipe

create_recipe · Modifies Data

Creates 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.

ArgumentTypeRequiredDescription
materialFamilyIdintegerYesThe material family to create the recipe in. Find it with the get_projects tool.
workflowIdintegerYesThe workflow to create the recipe with. Find it as workflowId in get_recipes_data results, or with the list_id_source tool and an entity spec whose entity_type is workflow.
namestringNoThe name of the new recipe. Omit it to use the default recipe name.
projectIdintegerNoThe project to create the recipe in. Find project ids with the get_projects tool.
workflowVariantIdintegerNoThe workflow variant to create the recipe with. Find it with the list_id_source tool and an entity spec whose entity_type is workflow_variant.
definitionIdintegerNoThe recipe entity definition to create the recipe with. Omit it to use the default definition. Find it with the list_id_source tool and an entity spec whose entity_type is entity_definition.

create_recipe_link · Modifies Data · Idempotent

Creates 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.

ArgumentTypeRequiredDescription
recipeFromIdintegerYesThe id of the recipe that the link starts from. Find recipe ids with the get_recipe_names tool.
recipeToIdintegerYesThe id of the recipe that the link points to. Find recipe ids with the get_recipe_names tool.
linkobjectYesThe link type, with the link name for child and user_link links.

create_recipe_links · Modifies Data · Idempotent

Bulk variant of create_recipe_link scoped to a single link_type — accepts up to 100 link operations sharing that link_type and applies them via one batched primitive call. Returns one AsyncBatchActionReturn per input, in the same order. Cross-operation batch_reference dependencies are not supported.

ArgumentTypeRequiredDescription
operationslist of objectYesThe links to create, from 1 to 100. Each link has its own link type.

Create Recipes

create_recipes · Modifies Data

Creates multiple recipes in a material family, optionally with metadata values. Returns the created recipe IDs in corresponding order.

ArgumentTypeRequiredDescription
materialFamilyIdintegerYesThe id of the material family for the new recipes. Find material family ids with list_id_source and entity type material_family.
recipeDefinitionslist of objectYesThe recipes to create, in input order. The list can contain at most 100 definitions.
projectIdintegerNoThe id of the project for the new recipes. Find project ids with list_id_source and entity type project.

Disassociate Recipe As Input

disassociate_recipe_as_input · Modifies Data · Destructive · Idempotent

Removes 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.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe id of the recipe whose input ingredient association to remove. Find recipe ids with the list_id_source tool and entity type recipe.

Edit Recipe Inputs

edit_recipe_inputs · Modifies Data · Destructive

Applies a list of edits to inputs on a specific recipe workflow step. Supported edit types include clearing all inputs, upserting or adding inputs, updating annotations, setting lots, setting propagated percentages, changing basis, adding instructions, adding recipe steps, setting roles, and managing placeholders.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe id of the recipe to edit. Find recipe ids with the list_id_source tool and entity type recipe.
recipeWorkflowStepIdentifierobjectYesThe recipe workflow step to edit.
existingInputsstringNoChoose clear to remove every input and step from the recipe workflow step before the edits, so that the edits rebuild it. Defaults to keep.
editslist of objectYesThe edits to apply, in order.

Grant Entity Permissions

grant_entity_permissions · Modifies Data · Idempotent

Grants permissions on an entity. Only permissions that do not already exist are added. Returns whether any new permissions were granted.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to grant permissions on.
entityIdintegerYesThe id of the entity to grant permissions on. Find entity ids with the list_entities or lookup_entity tool.
permissionTypeslist of stringYesThe permissions to grant: read, write, or both.
allUsersstringNoChoose include to also grant the permissions to all users. Defaults to exclude.
userIdslist of integerNoThe users to grant the permissions to, at most 100. Find user ids with the list_id_source tool and entity type user, or your own id with the get_current_user_info tool.
userGroupIdslist of integerNoThe user groups to grant the permissions to, at most 100. Find user group ids with the list_id_source tool and entity type user_group.

Invoke Uploader

invoke_uploader · Modifies Data · Destructive

Processes one or more uploaded files through a configured uploader, parsing and writing the extracted data to a recipe destination. Resolves the uploader by its identifier key, or selects it by detection keyword and file extension when uploader_key is null. Requires READ_ALL permission on the uploader entity. The file_ids parameter is preferred; file_id is deprecated. Non-SDK users should use file_upload/external_create_file_record to upload files first. SDK users can use the client.upload_files() helper method. Supports async batch execution.

ArgumentTypeRequiredDescription
fileIdslist of integerYesThe ids of the files to parse together.
uploaderIdintegerNoThe id of the uploader to parse the files with, or null to pick the one uploader whose detection keyword and file extension match the files. A null fails unless exactly one uploader matches. No tool lists uploaders, so ask the user for the uploader id.
destinationobjectYesWhere to write the parsed data: a recipe, a project, a material family, or auto_match.

Lock Entity

lock_entity · Modifies Data · Idempotent

Locks an entity to prevent modifications. Recipe entity types are not supported and must use the dedicated lock_recipes endpoint instead. Attempting to lock an already locked entity is a no-op.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to lock. Recipes are not supported; use the lock_recipes tool for recipes.
entityIdintegerYesThe id of the entity to lock. Find entity ids with the list_id_source or lookup_entity tool.
unlockPermissionstringNoChoose locking_user to let only the locking user and admins unlock, or any_user to let any user unlock. Defaults to locking_user.

Lock Recipes

lock_recipes · Modifies Data · Idempotent

Locks experiments to prevent editing. Supports locking all data (inputs and measurements) or inputs only. Returns whether a modification was made.

ArgumentTypeRequiredDescription
lockTypestringNoChoose all to lock inputs and outputs, or inputs_only to lock recipe inputs.
recipeIdslist of integerYesThe recipe ids to lock, at most 100. Find recipe ids with the list_id_source tool and entity type recipe.
unlockPermissionstringNoChoose locking_user to let only the locking user unlock, or any_user to let any user unlock. Defaults to locking_user.
sampleModestringNoChoose include to lock child recipes that are test samples. Defaults to exclude.
commentsstringNoAn optional comment that describes why the recipes are locked.

Modify File System

modify_file_system · Modifies Data · Destructive

Perform a file system operation on folders and files. upsert_folder creates a new folder or updates an existing one (name, type, and parent folder), reparenting it when a different parent_folder_key is given. upsert_entity_folder resolves or creates the entity folder attached to an entity. upsert_file adds a previously uploaded file to a folder. upsert_file_version records a previously uploaded file as a new document version on an existing file.

ArgumentTypeRequiredDescription
operationobjectYesThe one file system operation to perform.

Push Notification

push_notification · Modifies Data

Send a notification to one or more users or user groups. Supports specifying a subject, message body, and optional entity link. Can optionally display as an in-app notice with custom configuration. Supports both direct invocation and async batch execution.

ArgumentTypeRequiredDescription
userIdslist of integerNoThe ids of the users to notify. Find user ids with the lookup_entity tool for the user entity type, or your own id with get_current_user_info.
userGroupIdslist of integerNoThe ids of the user groups whose members to notify. Find user group ids with the lookup_entity tool for the user_group entity type.
subjectstringYesThe title of the notification.
messagestringYesThe body of the notification.
displayobjectYesChoose notification_only to post the notification, or in_app_notice to also show it as an in-app notice.
entityobjectNoThe entity that the notification links to. You need edit access to it. Omit it to send a notification without a link.

Remove Recipe From Project

remove_recipe_from_project · Modifies Data · Destructive · Idempotent

Removes a recipe from a project.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe id of the recipe to remove from the project. Find recipe ids with the list_id_source tool and entity type recipe.
projectIdintegerYesThe id of the project to remove the recipe from. Find project ids with the list_id_source tool and entity type project.

remove_recipe_link · Modifies Data · Destructive · Idempotent

Removes 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.

ArgumentTypeRequiredDescription
recipeFromIdintegerYesThe id of the recipe that the link starts from. Find recipe ids with the list_id_source tool and entity type recipe.
recipeToIdintegerYesThe id of the recipe that the link points to. Find recipe ids with the list_id_source tool and entity type recipe.
linkTypestringYesThe link type: child, control, previous_experiment, or user_link

Remove Recipe Workflow Step

remove_recipe_workflow_step · Modifies Data · Destructive

Removes a recipe workflow step from a recipe, together with the inputs on that step. A recipe must keep at least one recipe workflow step, so removing the last one fails; in a batch, all removals from the same recipe count toward this limit. Returns the id of the removed recipe workflow step.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to update. Find recipe ids with list_id_source and entity type recipe.
recipeWorkflowStepIdentifierobjectYesThe recipe workflow step to remove. It must be a step of the recipe.

Resolve Output Conditions

resolve_output_conditions · Modifies Data · Idempotent

Resolves sets of condition parameter values to output condition IDs, creating new output conditions if they do not already exist. Each condition request contains a list of condition parameter ID and value pairs. Validates that all condition parameter IDs exist, that each value matches the parameter’s quantity type (numeric vs string), and that exactly one of value_numeric or value_string is provided per parameter. Requires READ_ALL access on all referenced condition parameter entities. Returns resolved output condition IDs in the same order as the request.

ArgumentTypeRequiredDescription
requestedConditionslist of objectYesThe output conditions to resolve, in the order to return them. The maximum is 100 requests.

Run Trigger

run_trigger · Modifies Data · Destructive

Executes a trigger script identified by ref name, optionally on a specific entity, and returns only after the trigger has fully completed. Requires admin user access; non-admin users receive a 403 error. Accepts either entity_identifier (preferred) or entity (deprecated) to specify the target entity, but not both. Returns whether any entities were modified by the trigger execution.

ArgumentTypeRequiredDescription
triggerRefNamestringYesThe ref name of the trigger to run. No tool lists triggers, so ask the user for the ref name.
entityobjectNoThe entity to run the trigger on. Omit it for a trigger that does not act on an entity.

Set Barcode

set_barcode · Modifies Data · Destructive · Idempotent

Sets the barcode value for an entity. Returns whether the new barcode value was set.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to update. The type must have a barcode field; other types fail.
entityIdintegerYesThe id of the entity to update. Find entity ids with the list_entities or lookup_entity tool.
barcodeValuestringYesThe barcode value to set. It replaces the entity’s current barcode.

Set Core Permissions

set_core_permissions · Modifies Data · Destructive · Idempotent

Grants, removes, or replaces core permissions for users or user groups at a specified scope. Scopes include: all_material_families, material_family, project, or recipe. Project and recipe scopes only support recipe-related permission types (read/write recipe, add recipe). Material family scopes do not accept individual user permissions (only user groups). Requires at least one user_id or user_group_id. Update types: ‘append’ grants the specified permissions (with implied permissions), ‘remove’ revokes them (including dependent permissions), ‘override’ replaces all permissions at the scope with the specified set.

ArgumentTypeRequiredDescription
scopeobjectYesWhere the permissions apply.
permissionsTypeslist of stringYesThe permission types to grant, remove, or keep.
updateTypestringYesappend grants the listed permission types and the types they imply, remove revokes them and the types that depend on them, and overwrite replaces the scope permissions of the listed users and groups with the listed types.
userIdslist of integerNoThe users to update. Pass user_ids, user_group_ids, or both. Find user ids with the list_id_source tool and an entity spec whose entity_type is user.
userGroupIdslist of integerNoThe user groups to update. Find user group ids with the list_id_source tool and an entity spec whose entity_type is user_group.

Set Entities Field Values

set_entities_field_values · Modifies Data · Destructive · Idempotent

Bulk variant of set_entity_field_values scoped to a single entity_type — accepts up to 100 (identifier_key, field_values) operations sharing that scope and applies them via batched primitive calls (one entity-resolution round-trip, one check_entity_list_permitted, one set_field_values across the aggregate). Returns one AsyncBatchActionReturn per input, in the same order. Cross-operation batch_reference dependencies are not supported.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of every entity to update.
operationslist of objectYesThe entities to update, from 1 to 100, each with its own field values.

Set Entity Field Values

set_entity_field_values · Modifies Data · Destructive · Idempotent

Sets field values on an entity. Returns whether the field values were modified.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to update.
entityIdintegerYesThe id of the entity to update. Find entity ids with the list_entities or lookup_entity tool.
fieldValueslist of objectYesThe field values to set. When a field appears more than once, the last value wins.

Set Entity Permission

set_entity_permission · Modifies Data · Destructive · Idempotent

Sets entity-level permissions (read, write, admin) on a specific entity for users, user groups, or every user. Currently supports file_folder_membership entities. Update types: ‘append’ grants the requested level if higher than existing, ‘remove’ revokes the specified level and downgrades to the level below (e.g., removing write leaves read), ‘override’ replaces all user and user group permissions with the specified set, and changes the all-users permission only when the request names the all-users recipient. Each user or user group may only appear once in the request, and the all-users recipient may appear at most once. The caller cannot modify their own permissions. Requires SET_FIELD_VALUE access on the target entity. Returns whether any modification was made.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity. Only file_folder_membership, a file in a folder, is supported.
entityIdintegerYesThe id of the file. Get file ids as [entity.id](http://entity.id) from a modify_file_system upsert_file operation.
updateTypestringYesappend grants a level when it is higher than the current one, remove revokes the level and keeps the level below it (removing write leaves read), and overwrite replaces all user and user group permissions and changes the all-users permission only when all_users is listed.
permissionUpdateslist of objectYesThe permission changes. List each user and user group at most once, and all_users at most once. You cannot change your own permissions.

Set Input Attribute Values

set_input_attribute_values · Modifies Data · Destructive · Idempotent

Sets attribute values on one or more inputs. Supports numeric, categorical/text, and PDF file attributes. For PDF attributes, provide exactly one file_id referencing a previously uploaded file; use create_file_record to obtain a file_id. Each (input_id, attribute_id) pair may only appear once in the request. Validates that each attribute ID exists and that the provided value type matches the attribute’s quantity type.

ArgumentTypeRequiredDescription
inputslist of objectYesThe inputs to set attribute values on.

Set Input Category

set_input_category · Modifies Data · Destructive · Idempotent

Sets 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.

ArgumentTypeRequiredDescription
inputIdintegerYesThe ingredient id to update. Find it with list_id_source and entity type ingredient.
categoryIdintegerNoThe global category id to set, or null to clear it. Find category ids with list_id_source using ingredient_category_all.
materialFamilyIdslist of integerNoThe material family ids to update. Find them with list_id_source and entity type material_family. Pass one or more ids to limit the update. Omit this value, pass null, or pass an empty list to update every family.

Set Input Subcategories

set_input_subcategories · Modifies Data · Destructive · Idempotent

Modifies 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.

ArgumentTypeRequiredDescription
inputIdintegerYesThe ingredient id to update. Find it with get_input_names for a family id from get_projects.
subcategoryIdslist of integerYesThe ingredient tag ids to apply. Find them with list_id_source using ingredient_tag.
updateTypestringYesHow to apply the tag ids. append adds them, override replaces all tags, and remove removes them.

Set Intermediate Type

set_intermediate_type · Modifies Data · Destructive · Idempotent

Sets whether an intermediate ingredient is treated as a final product or as a compound-as-intermediate. Setting to compound_as_intermediate enables compound-as-intermediate behavior; setting to final_product disables it. Requires SET_FIELD_VALUE access on the input entity.

ArgumentTypeRequiredDescription
inputIdintegerYesThe ingredient id to update. Find it with get_input_names for the material family id from get_projects.
intermediateTypestringYesChoose final_product to disable compound-as-intermediate behavior, or compound_as_intermediate to enable it.

Set Recipe Inputs

set_recipe_inputs · Modifies Data · Destructive · Idempotent

Sets input values for experiments. Supports numeric, text, and categorical types. Validates that the recipe step belongs to the correct recipe. Each entry edits one input on one recipe with a single operation: set the value (the actual value when set_actual_value is true, otherwise the set value), associate a lot (lot_recipe_id, created if the recipe is not already a lot), or remove the input (remove). A lot association targets the set value; combining it with set_actual_value fails. Writes all values to the first workflow step when no step is specified. Fails if both a numeric and string value are provided.

ArgumentTypeRequiredDescription
inputEditslist of objectYesThe edits to apply, at most 100 per call. Each entry edits one input on one recipe.

Set Recipe Metadata

set_recipe_metadata · Modifies Data · Destructive · Idempotent

Sets 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.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe id of the recipe to update. Find recipe ids with the list_id_source tool and entity type recipe.
recipeMetadatalist of objectYesThe metadata values to set on the recipe, one entry per metadata field. A field not listed is left unchanged, and setting a read-only field fails.

Set Recipe Output Annotations

set_recipe_output_annotations · Modifies Data · Destructive · Idempotent

Updates annotations on experiment outputs. Supports two modes per update – merge (adds annotations alongside existing ones) or replace (clears existing annotations first).

ArgumentTypeRequiredDescription
updateslist of objectYesThe measurement annotation edits to perform, at most 100.

Set Recipe Outputs

set_recipe_outputs · Modifies Data · Destructive · Idempotent

Sets 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).

ArgumentTypeRequiredDescription
outputDatalist of objectYesThe measurements to set, at most 100.

Set Recipe Tags

set_recipe_tags · Modifies Data · Destructive · Idempotent

Modifies 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).

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to update. Find recipe ids with the list_id_source tool and entity type recipe.
updateTypestringYesHow to update tags: append adds the listed tags, override replaces all current tags, and remove deletes only the listed tags.
recipeTagIdslist of integerYesThe tag ids to update. Find tag ids in get_recipes_data results.

Set Recipe Total

set_recipe_total · Modifies Data · Destructive · Idempotent

Sets the total quantity value in a given quantity basis for a recipe or a specific workflow step within it. Optionally associates a linked basis calculation. Returns whether a modification was made.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to set the total on. Find recipe ids with the list_id_source tool and entity type recipe.
valuestringYesThe total quantity to set.
quantityBasisstringYesWhether value is a mass, moles, or volume total.
recipeWorkflowStepIdentifierobjectNoThe recipe workflow step to set the total on. Omit this field to set the total of the whole recipe.
calculationIdintegerNoThe id of the basis calculation to link to the total. Find calculation ids with the get_recipe_calculations tool.

Set Values

set_values · Modifies Data · Destructive · Idempotent

Sets field values on an entity. Returns an empty response on success.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to update.
entityIdintegerYesThe id of the entity to update. Find entity ids with the list_entities or lookup_entity tool.
valueslist of objectYesThe field values to set, each with its field ref name and an optional table row.

Submit Async Job

submit_async_job · Modifies Data

Submits a machine learning job. Returns an async_job_id immediately. The job itself takes minutes, so read the async_job entity’s status field until it is no longer queued or in progress. Suggest and analyze jobs require an ML training license. Model exports require an ML license.

ArgumentTypeRequiredDescription
jobobjectYesThe job to submit. Set type to suggest, analyze, or export_model. For suggest, provide projectId, trainingSetId, specId, constraintSetId, and numExperiments. For analyze, provide projectId, trainingSetId, specId, constraintSetId, and predictorTypes. For export_model, provide predictiveModelId.

Swap Output Condition Parameters

swap_output_condition_parameters · Modifies Data · Destructive

Swap output condition parameters on recipes. Either specify recipe keys for targeted swaps or set swap_all to swap across all recipes in the project.

ArgumentTypeRequiredDescription
recipeIdslist of integerYesThe recipes whose measurement rows to move. Include every recipe that shares the measurement row. Locked recipes are skipped. Find recipe ids with the get_recipe_names tool.
outputIdintegerYesThe id of the output whose measurement rows to move. Find output ids with the get_output_names tool.
newConditionobjectYesThe output condition to move the rows to: type existing with an output_condition_id, or type definition with condition parameter values.
oldOutputConditionIdintegerNoThe id of the output condition the rows are under now. Find it as output_condition_id in get_recipes_data results. Omit it to move rows that have no condition.

Transition Entity Phase

transition_entity_phase · Modifies Data · Destructive

Transitions an entity from one workflow phase to another. Fails if no valid transition exists between the specified phases, or if multiple transitions exist for the same phase pair.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to move. Its definition must have a phase workflow.
entityIdintegerYesThe id of the entity to move. Find entity ids with the list_id_source or lookup_entity tool.
transitionobjectYesThe transition to perform: type phases with the current and target phase ids, or type transition with a phase transition id.

Unarchive Recipes

unarchive_recipes · Modifies Data · Idempotent

Restores previously archived recipes, making them active again. Fails if any of the recipes are locked.

ArgumentTypeRequiredDescription
recipeIdslist of integerYesThe ids of the archived recipes to restore, at most 100. Find archived recipe ids with the get_recipes_data tool, which lists the archived and active recipes of a project. The list_id_source and match_id_source tools return only active recipes.

Unlock Entity

unlock_entity · Modifies Data · Idempotent

Removes the lock from an entity, allowing modifications again. Recipe entity types are not supported and must use the dedicated unlock_recipes endpoint instead. Attempting to unlock an already unlocked entity is a no-op.

ArgumentTypeRequiredDescription
entityTypestringYesThe type of the entity to unlock. Recipes are not supported; use the unlock_recipes tool for recipes.
entityIdintegerYesThe id of the entity to unlock. Find entity ids with the list_id_source or lookup_entity tool.

Unlock Recipes

unlock_recipes · Modifies Data · Idempotent

Unlocks previously locked experiments, making them editable again. Returns whether a modification was made.

ArgumentTypeRequiredDescription
recipeIdslist of integerYesThe recipe ids to unlock, at most 100. Find recipe ids with the list_id_source tool and entity type recipe.
sampleModestringNoChoose include to unlock child recipes that are test samples. Defaults to exclude.

Update Entity Material Families

update_entity_material_families · Modifies Data · Destructive · Idempotent

Update the material family assignments for an entity. Use update_type to append, override, or remove material family associations. Prevents removing all material families from an entity.

ArgumentTypeRequiredDescription
entityIdintegerYesThe id of the entity to update. Find recipe metadata ids with get_recipe_metadata_data, and the ids of inputs, outputs, and the other entity types with list_id_source and an entity spec for that entity_type.
entityTypestringYesThe type of the entity. Use ingredient for an input.
materialFamilyIdslist of integerYesThe material families to update. Find material family ids with the list_id_source tool and entity type material_family.
updateTypestringYesappend adds the listed material families, overwrite replaces all current material families with the listed ones, and remove deletes only the listed ones. The entity must keep at least one material family.

Update Output Condition Parameter

update_output_condition_parameter · Modifies Data · Destructive · Idempotent

Adds, updates, or removes a condition parameter assignment on an output. Use update_type ‘append’ to add or update the requirement level (none, required, warning, prompt) for a condition parameter on the output; requirement_type is required for append. Use ‘remove’ to delete the condition parameter association. ‘override’ is not supported. Optionally scope to a specific material family; if omitted, creates a global setting. Resolves output, condition parameter, and material family via identifier keys.

ArgumentTypeRequiredDescription
outputIdintegerYesThe id of the output to update. Find output ids with the get_output_names tool.
conditionParameterIdintegerYesThe id of the condition parameter to add, update, or remove. Find condition parameter ids with the list_id_source tool and entity type condition_parameter.
updateobjectYesThe change to make: update_type append with a requirement_type and optional analytical_method_ids, or update_type remove to delete the condition parameter from the output.
materialFamilyIdintegerNoThe id of the material family to change the setting in. Find it with the get_projects tool. Omit it to change the global setting.

Upsert Condition Match

upsert_condition_match · Modifies Data · Destructive · Idempotent

Creates or updates a condition match record. Condition matches are used to set goals on outputs. Each call creates a new condition match — there is no idempotent behavior, so the same inputs will produce a new condition match with each invocation. Each condition parameter’s match_type selects how it is matched: range matches min_value/max_value bounds, eq matches exact numeric value(s) supplied in categorical_values (each as a string), eqCategorical matches exact categorical value(s) in categorical_values, and all matches any value. Returns modification_made and result_id of the created or updated condition match.

ArgumentTypeRequiredDescription
criteriaobjectYesWhat the condition match matches: criteria_type condition_parameters with condition parameter value matches, or criteria_type output_conditions with output condition ids. An update replaces the existing criteria.
existingConditionMatchIdintegerNoThe id of the condition match to update, from the result_id of an earlier upsert_condition_matches call. Omit it to create a new condition match.
namestringNoThe condition match name. Omit it to use a name generated from the criteria.

Upsert Condition Matches

upsert_condition_matches · Modifies Data · Destructive · Idempotent

Bulk variant of upsert_condition_match. Accepts a list of upsert arguments and applies them via a single batched database round-trip per bulk operation (insert, update, delete) through the shared upsert_condition_matches helper. Returns one AsyncBatchActionReturn per input in the same order.

ArgumentTypeRequiredDescription
upsertslist of objectYesThe condition matches to create or update. Each one sets its own criteria. Results are returned in input order.

Upsert Field Options

upsert_field_options · Modifies Data · Destructive · Idempotent

Create or update field options within an option set. The option_id field is what uniquely identifies each entry within the option set — provide the same option_id to update an existing option. Validates that no duplicate option_id values are provided within the request. Supports setting option labels, archived status, and subset assignments. Fields not provided on an existing option are left unchanged.

ArgumentTypeRequiredDescription
optionSetIdintegerYesThe field option set id. Find option set ids with the list_id_source tool and an entity spec whose entity_type is field_option_set.
fieldOptionslist of objectYesThe options to create or update. Each option_id can appear only once.

Upsert Recipe Workflow Step

upsert_recipe_workflow_step · Modifies Data · Destructive · Idempotent

Create or update a recipe workflow step on a recipe.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to update. Find recipe ids with list_id_source and entity type recipe.
dataSourceobjectYesThe workflow step source.
locationobjectYesThe location where the recipe workflow step is added.
namestringNoThe name for the recipe workflow step. Omit this field to keep the current name.
hasMixOrderbooleanNoEnable or disable mix order. Omit this field to keep the current setting. Setting this to false removes mix order and permanently deletes all recipe step field values on the step. This cannot be undone.
recipeWorkflowStepIdintegerNoThe recipe workflow step id to update. Omit this field to add a new step.

Upsert Step Relationships

upsert_step_relationships · Modifies Data · Destructive · Idempotent

Upsert step relationships on a recipe.

ArgumentTypeRequiredDescription
recipeIdintegerYesThe recipe id to update. Find recipe ids with list_id_source and entity type recipe.
editslist of objectYesThe step relationship edits to apply.

For further assistance, contact Uncountable support or consult the platform documentation.

Updated on November 5, 2026

Was this article helpful?