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:
| Label | Meaning |
|---|---|
| Read Only | The tool reads data and does not change anything. |
| Modifies Data | The tool creates or changes data. Turned off when Read Only Access is on. |
| Destructive | The tool can overwrite or remove existing data. |
| Idempotent | Repeating 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.
| Argument | Type | Required | Description |
|---|---|---|---|
sourceChemicalStructures | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The entity type of the entity definition, from list_entity_definitions. |
definitionId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
nameContains | string | No | A 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
asyncJobId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
recipeIds | list of integer | Yes | The 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. |
calculationId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
target | object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entities to read. All requested entities must have this type. |
entityIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
materialFamilyId | integer | Yes | The material family id. Find it with the get_projects tool. |
inputIds | list of integer | No | Input ids to include. Find them with the get_input_names tool. Omit this field to include all active inputs. |
isParameter | boolean | No | Set 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.
| Argument | Type | Required | Description |
|---|---|---|---|
materialFamilyId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
materialFamilyId | integer | Yes | The 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. |
isParameter | boolean | No | Set 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
notebookId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
materialFamilyId | integer | Yes | The material family id. Find it with list_id_source and entity type material_family. |
outputIds | list of integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
materialFamilyId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
request | object | Yes | Whose 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
allMaterialFamilies | boolean | Yes | Whether to list projects from every material family. |
materialFamilyId | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
projectIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeIds | list of integer | Yes | The 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. |
calculationIds | list of integer | No | The 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
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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeIds | list of integer | Yes | The ids of the recipes to start from, at most 100. Find recipe ids with the list_id_source tool and entity type recipe. |
depth | integer | No | How 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. |
linkTypes | list of string | No | Return 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
materialFamilyId | integer | Yes | The material family to list metadata definitions from. Find its id with the list_id_source tool and entity type material_family. |
recipeMetadataIds | list of integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
projectId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeOutputIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
selection | object | Yes | Select every recipe in a project or select recipes by their ids. |
emptyInputBehavior | string | No | Controls 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. |
emptyOutputBehavior | string | No | Controls 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.
| Argument | Type | Required | Description |
|---|---|---|---|
skillName | string | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
asyncJobId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
configReference | string | Yes | The configuration reference name for the listing config |
attributeValues | list of AttributeValue | No | Attributes to pass to the configuration for parameterizing filters |
offset | integer | No | Used for pagination. Pagination is done based on the sorting of the config. |
limit | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | EntityType | No | |
configReference | string | Yes | The configuration reference name for the listing config |
attributes | object | No | Attributes to pass to the configuration for parameterizing filters |
offset | integer | No | Used for pagination. Pagination is done based on the sorting of the config. |
limit | integer | No | The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. |
additionalFilterConfigs | list of AdditionalFilterConfig | No | Advanced 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
spec | object | Yes | What to list: entities of one entity type, custom entities of one definition, or the options of one field option set. |
searchLabel | string | No | Text 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
entityType | string | Yes | The entity type whose selectable columns to discover. |
customEntityDefinitionId | integer | No | For custom_entity only, the definition id returned by list_entity_definitions or find_custom_entity_definition. |
nameContains | list of string | No | Substrings to match against column group names and option names. |
optionNameContains | string | No | A substring to match against option names. |
aggregateType | string | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
entityType | string | Yes | The entity type to query. Use the entity_type that you passed to listing_discover_columns. |
customEntityDefinitionId | integer | No | For custom_entity only, the definition id. Use list_entity_definitions or find_custom_entity_definition to get definition ids. |
columns | list of object | No | The columns to return, in order. Omit it to return the filter columns. |
filters | list of object | No | Conditions that every returned row meets. |
sorts | list of object | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to look up. |
query | object | Yes | How 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.
| Argument | Type | Required | Description |
|---|---|---|---|
spec | object | Yes | What to match the names against: entities of one entity type, custom entities of one definition, or the options of one field option set. |
names | list of string | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entities to name. All requested entities must have this type. |
entityIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The 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. |
entityTypes | list of string | No | Search 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.
| Argument | Type | Required | Description |
|---|---|---|---|
cursor | string | No | The nextCursor value from the previous page of this tool. Omit it or pass null to read the first page. |
query | string | Yes | A 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. |
keywords | list of string | Yes | Short 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. |
folderId | integer | No | Limit 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to comment on. |
entityId | integer | Yes | The id of the entity to comment on. Find entity ids with the list_id_source or lookup_entity tool. |
content | string | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
fileId | integer | Yes | The id of the uploaded file. |
folderId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
notebookId | integer | Yes | The id of the notebook to add the content to. Find notebook ids with the list_id_source tool and the notebook entity type. |
contents | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The id of the recipe to add to the project. Find recipe ids with the list_id_source tool and entity type recipe. |
projectId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
timeSeriesSegmentId | integer | Yes | The time series segment to add data to. Use a segment id that the user supplies. |
timeSeriesData | list of object | Yes | The data points to add, at most 100000. |
onConflict | string | No | What 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeIds | list of integer | Yes | The 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. |
reason | string | No | Why 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.
| Argument | Type | Required | Description |
|---|---|---|---|
equipmentId | integer | Yes | The equipment id. Find equipment ids with the list_id_source tool and an entity spec whose entity_type is equipment. |
materialFamilyIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id. Find recipe ids with the list_id_source tool and entity type recipe. |
inputId | integer | No | The input id to associate. Find input ids with list_id_source and entity type ingredient. Omit this field to create or reuse an input. |
showInListings | boolean | No | Set 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to use as a lot. Find recipe ids with the list_id_source tool and entity type recipe. |
ingredientId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The id of the recipe to move to another workflow. Find recipe ids with the list_id_source tool and entity type recipe. |
workflowId | integer | Yes | The 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. |
workflowVariantId | integer | No | A 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.
| Argument | Type | Required | Description |
|---|---|---|---|
definitionId | ObjectId | No | |
definitionKey | IdentifierKey | No | |
entityType | LimitedEntityType | Yes | |
entitiesToCreate | list of EntityToCreate | Yes | A list of the entities to create |
Create Entity Links
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.
| Argument | Type | Required | Description |
|---|---|---|---|
links | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputsToCreate | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to create the mix order on. Find recipe ids with the list_id_source tool and entity type recipe. |
recipeWorkflowStepIdentifier | object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of every entity to create or update. |
definitionId | integer | Yes | The 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. |
operations | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to create or update. |
definitionId | integer | Yes | The 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. |
fieldValues | list of object | Yes | The field values to set when the tool creates or updates the entity. |
entityKey | object | No | The 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. |
onCreateInitFieldValues | list of object | No | Field 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.
| Argument | Type | Required | Description |
|---|---|---|---|
materialFamilyId | integer | Yes | The material family to create the recipe in. Find it with the get_projects tool. |
workflowId | integer | Yes | The 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. |
name | string | No | The name of the new recipe. Omit it to use the default recipe name. |
projectId | integer | No | The project to create the recipe in. Find project ids with the get_projects tool. |
workflowVariantId | integer | No | The 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. |
definitionId | integer | No | The 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
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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeFromId | integer | Yes | The id of the recipe that the link starts from. Find recipe ids with the get_recipe_names tool. |
recipeToId | integer | Yes | The id of the recipe that the link points to. Find recipe ids with the get_recipe_names tool. |
link | object | Yes | The link type, with the link name for child and user_link links. |
Create Recipe 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.
| Argument | Type | Required | Description |
|---|---|---|---|
operations | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
materialFamilyId | integer | Yes | The id of the material family for the new recipes. Find material family ids with list_id_source and entity type material_family. |
recipeDefinitions | list of object | Yes | The recipes to create, in input order. The list can contain at most 100 definitions. |
projectId | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The id of the recipe to edit. Find recipe ids with the list_id_source tool and entity type recipe. |
recipeWorkflowStepIdentifier | object | Yes | The recipe workflow step to edit. |
existingInputs | string | No | Choose clear to remove every input and step from the recipe workflow step before the edits, so that the edits rebuild it. Defaults to keep. |
edits | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to grant permissions on. |
entityId | integer | Yes | The id of the entity to grant permissions on. Find entity ids with the list_entities or lookup_entity tool. |
permissionTypes | list of string | Yes | The permissions to grant: read, write, or both. |
allUsers | string | No | Choose include to also grant the permissions to all users. Defaults to exclude. |
userIds | list of integer | No | The 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. |
userGroupIds | list of integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
fileIds | list of integer | Yes | The ids of the files to parse together. |
uploaderId | integer | No | The 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. |
destination | object | Yes | Where 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to lock. Recipes are not supported; use the lock_recipes tool for recipes. |
entityId | integer | Yes | The id of the entity to lock. Find entity ids with the list_id_source or lookup_entity tool. |
unlockPermission | string | No | Choose 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.
| Argument | Type | Required | Description |
|---|---|---|---|
lockType | string | No | Choose all to lock inputs and outputs, or inputs_only to lock recipe inputs. |
recipeIds | list of integer | Yes | The recipe ids to lock, at most 100. Find recipe ids with the list_id_source tool and entity type recipe. |
unlockPermission | string | No | Choose locking_user to let only the locking user unlock, or any_user to let any user unlock. Defaults to locking_user. |
sampleMode | string | No | Choose include to lock child recipes that are test samples. Defaults to exclude. |
comments | string | No | An 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.
| Argument | Type | Required | Description |
|---|---|---|---|
operation | object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
userIds | list of integer | No | The 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. |
userGroupIds | list of integer | No | The ids of the user groups whose members to notify. Find user group ids with the lookup_entity tool for the user_group entity type. |
subject | string | Yes | The title of the notification. |
message | string | Yes | The body of the notification. |
display | object | Yes | Choose notification_only to post the notification, or in_app_notice to also show it as an in-app notice. |
entity | object | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The id of the recipe to remove from the project. Find recipe ids with the list_id_source tool and entity type recipe. |
projectId | integer | Yes | The 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
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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeFromId | integer | Yes | The id of the recipe that the link starts from. Find recipe ids with the list_id_source tool and entity type recipe. |
recipeToId | integer | Yes | The id of the recipe that the link points to. Find recipe ids with the list_id_source tool and entity type recipe. |
linkType | string | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to update. Find recipe ids with list_id_source and entity type recipe. |
recipeWorkflowStepIdentifier | object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
requestedConditions | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
triggerRefName | string | Yes | The ref name of the trigger to run. No tool lists triggers, so ask the user for the ref name. |
entity | object | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to update. The type must have a barcode field; other types fail. |
entityId | integer | Yes | The id of the entity to update. Find entity ids with the list_entities or lookup_entity tool. |
barcodeValue | string | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
scope | object | Yes | Where the permissions apply. |
permissionsTypes | list of string | Yes | The permission types to grant, remove, or keep. |
updateType | string | Yes | append 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. |
userIds | list of integer | No | The 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. |
userGroupIds | list of integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of every entity to update. |
operations | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to update. |
entityId | integer | Yes | The id of the entity to update. Find entity ids with the list_entities or lookup_entity tool. |
fieldValues | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity. Only file_folder_membership, a file in a folder, is supported. |
entityId | integer | Yes | The id of the file. Get file ids as [entity.id](http://entity.id) from a modify_file_system upsert_file operation. |
updateType | string | Yes | append 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. |
permissionUpdates | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputs | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputId | integer | Yes | The ingredient id to update. Find it with list_id_source and entity type ingredient. |
categoryId | integer | No | The global category id to set, or null to clear it. Find category ids with list_id_source using ingredient_category_all. |
materialFamilyIds | list of integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputId | integer | Yes | The ingredient id to update. Find it with get_input_names for a family id from get_projects. |
subcategoryIds | list of integer | Yes | The ingredient tag ids to apply. Find them with list_id_source using ingredient_tag. |
updateType | string | Yes | How 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputId | integer | Yes | The ingredient id to update. Find it with get_input_names for the material family id from get_projects. |
intermediateType | string | Yes | Choose 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.
| Argument | Type | Required | Description |
|---|---|---|---|
inputEdits | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The id of the recipe to update. Find recipe ids with the list_id_source tool and entity type recipe. |
recipeMetadata | list of object | Yes | The 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).
| Argument | Type | Required | Description |
|---|---|---|---|
updates | list of object | Yes | The 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).
| Argument | Type | Required | Description |
|---|---|---|---|
outputData | list of object | Yes | The 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).
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to update. Find recipe ids with the list_id_source tool and entity type recipe. |
updateType | string | Yes | How to update tags: append adds the listed tags, override replaces all current tags, and remove deletes only the listed tags. |
recipeTagIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to set the total on. Find recipe ids with the list_id_source tool and entity type recipe. |
value | string | Yes | The total quantity to set. |
quantityBasis | string | Yes | Whether value is a mass, moles, or volume total. |
recipeWorkflowStepIdentifier | object | No | The recipe workflow step to set the total on. Omit this field to set the total of the whole recipe. |
calculationId | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to update. |
entityId | integer | Yes | The id of the entity to update. Find entity ids with the list_entities or lookup_entity tool. |
values | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
job | object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeIds | list of integer | Yes | The 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. |
outputId | integer | Yes | The id of the output whose measurement rows to move. Find output ids with the get_output_names tool. |
newCondition | object | Yes | The output condition to move the rows to: type existing with an output_condition_id, or type definition with condition parameter values. |
oldOutputConditionId | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to move. Its definition must have a phase workflow. |
entityId | integer | Yes | The id of the entity to move. Find entity ids with the list_id_source or lookup_entity tool. |
transition | object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeIds | list of integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | The type of the entity to unlock. Recipes are not supported; use the unlock_recipes tool for recipes. |
entityId | integer | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeIds | list of integer | Yes | The recipe ids to unlock, at most 100. Find recipe ids with the list_id_source tool and entity type recipe. |
sampleMode | string | No | Choose 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.
| Argument | Type | Required | Description |
|---|---|---|---|
entityId | integer | Yes | The 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. |
entityType | string | Yes | The type of the entity. Use ingredient for an input. |
materialFamilyIds | list of integer | Yes | The material families to update. Find material family ids with the list_id_source tool and entity type material_family. |
updateType | string | Yes | append 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.
| Argument | Type | Required | Description |
|---|---|---|---|
outputId | integer | Yes | The id of the output to update. Find output ids with the get_output_names tool. |
conditionParameterId | integer | Yes | The 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. |
update | object | Yes | The 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. |
materialFamilyId | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
criteria | object | Yes | What 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. |
existingConditionMatchId | integer | No | The 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. |
name | string | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
upserts | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
optionSetId | integer | Yes | The 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. |
fieldOptions | list of object | Yes | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to update. Find recipe ids with list_id_source and entity type recipe. |
dataSource | object | Yes | The workflow step source. |
location | object | Yes | The location where the recipe workflow step is added. |
name | string | No | The name for the recipe workflow step. Omit this field to keep the current name. |
hasMixOrder | boolean | No | Enable 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. |
recipeWorkflowStepId | integer | No | The 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.
| Argument | Type | Required | Description |
|---|---|---|---|
recipeId | integer | Yes | The recipe id to update. Find recipe ids with list_id_source and entity type recipe. |
edits | list of object | Yes | The step relationship edits to apply. |
For further assistance, contact Uncountable support or consult the platform documentation.