For the complete documentation index, see llms.txt. This page is also available as Markdown.

Basic

Core utility blocks for storing values, printing output, file operations, type conversion, and basic data manipulation.

Add Memory

What it is

Add new memories to Mem0 with user segmentation

How it works

This block integrates with Mem0, a memory layer service that stores and retrieves information across conversations. When you add a memory, the content is stored with the user's context and can optionally be segmented by run or agent, allowing for scoped memory retrieval later.

The block accepts either plain text or structured message objects (like those from AI blocks). You can attach metadata to memories for better organization and filtering. Memories persist across workflow executions, enabling your agents to "remember" past interactions.

Inputs

Input
Description
Type
Required

content

Content to add - either a string or list of message objects as output from an AI block

Content

No

metadata

Optional metadata for the memory

Dict[str, Any]

No

limit_memory_to_run

Limit the memory to the run

bool

No

limit_memory_to_agent

Limit the memory to the agent

bool

No

Outputs

Output
Description
Type

error

Error message if the operation failed

str

action

Action of the operation

str

memory

Memory created

str

results

List of all results from the operation

List[Dict[str, str]]

Possible use case

Personalized Assistants: Store user preferences, past interactions, or learned information so your AI agent can provide personalized responses in future conversations.

Context Carryover: Save important details from one workflow run (like customer issues or project context) to reference in subsequent runs without asking the user again.

Knowledge Building: Accumulate facts and insights over time, creating a growing knowledge base that improves your agent's helpfulness with each interaction.


Add To Dictionary

What it is

Adds a new key-value pair to a dictionary. If no dictionary is provided, a new one is created.

How it works

This block adds one or more key-value pairs to a dictionary. If you don't provide an existing dictionary, it creates a new one. You can add entries one at a time using the key/value fields, or add multiple entries at once using the entries field.

The block outputs the updated dictionary with all new entries added. This is useful for building up structured data objects as your workflow progresses, collecting information from multiple sources into a single data structure.

Inputs

Input
Description
Type
Required

dictionary

The dictionary to add the entry to. If not provided, a new dictionary will be created.

Dict[str, Any]

No

key

The key for the new entry.

str

No

value

The value for the new entry.

Value

No

entries

The entries to add to the dictionary. This is the batch version of the key and value fields.

Dict[str, Any]

No

Outputs

Output
Description
Type

error

Error message if the operation failed

str

updated_dictionary

The dictionary with the new entry added.

Dict[str, Any]

Possible use case

Building API Payloads: Construct complex JSON objects by adding fields from different workflow branches before sending to an API.

Aggregating Form Data: Collect user inputs from multiple form fields into a single structured object for processing or storage.

Creating Configuration Objects: Build up settings or configuration dictionaries dynamically based on conditional logic in your workflow.


Add To List

What it is

Adds a new entry to a list. The entry can be of any type. If no list is provided, a new one is created.

How it works

This block appends items to a list or creates a new list if none is provided. You can add a single entry or multiple entries at once. The optional position parameter lets you insert items at a specific index rather than appending to the end.

Items can be of any type—strings, numbers, dictionaries, or other lists. This flexibility makes the block useful for building up collections of data as your workflow processes multiple items or accumulates results.

Inputs

Input
Description
Type
Required

list

The list to add the entry to. If not provided, a new list will be created.

List[Any]

No

entry

The entry to add to the list. Can be of any type (string, int, dict, etc.).

Entry

No

entries

The entries to add to the list. This is the batch version of the entry field.

List[Any]

No

position

The position to insert the new entry. If not provided, the entry will be appended to the end of the list.

int

No

Outputs

Output
Description
Type

error

Error message if the operation failed

str

updated_list

The list with the new entry added.

List[Any]

Possible use case

Collecting Search Results: Accumulate items from paginated API responses into a single list for batch processing or display.

Building Email Recipients: Gather email addresses from various sources into a recipient list before sending a message.

Aggregating Errors: Collect validation errors or warnings from multiple checks into a list for consolidated error reporting.


Agent Date Input

What it is

Block for date input.

How it works

This block provides a date picker input field for users interacting with your agent. When the agent runs, users see a calendar widget to select a date, which is then passed to your workflow in YYYY-MM-DD format.

The block is part of the Agent Input family, allowing you to collect structured input from users at runtime rather than hardcoding values. This makes your agents interactive and reusable for different scenarios.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Date input (YYYY-MM-DD).

str (date)

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Date result.

str (date)

Possible use case

Appointment Scheduling: Let users select a date for booking appointments, meetings, or reservations through your agent.

Report Generation: Allow users to specify a date range start or end point for generating custom reports.

Deadline Setting: Enable users to set due dates for tasks or projects when creating them through your workflow.


Agent Dropdown Input

What it is

Block for dropdown text selection.

How it works

This block provides a dropdown selection input for users interacting with your agent. You define the available options using placeholder_values, and users select one option from the list at runtime.

This is ideal when you want to constrain user input to a predefined set of choices, ensuring valid input and simplifying the user experience. The selected value is passed to downstream blocks in your workflow.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Text selected from a dropdown.

str

No

title

The title of the input.

str

No

description

The description of the input.

str

No

placeholder_values

Possible values for the dropdown.

List[Any]

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Selected dropdown value.

str

Possible use case

Service Selection: Let users choose from available service tiers (Basic, Pro, Enterprise) when configuring their request.

Language Selection: Allow users to select their preferred language from a list of supported options.

Category Filtering: Enable users to select a category (Sales, Support, Billing) to route their inquiry appropriately.


Agent File Input

What it is

Block for file upload input (string path for example).

How it works

This block provides a file upload input for users interacting with your agent. Users can upload files which are stored temporarily and passed to your workflow as a file path reference.

By default, the block outputs a file path string that other blocks can use to access the uploaded file. The optional base64 mode converts the file content to base64 encoding, though using file paths is generally recommended for better performance with large files.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Path or reference to an uploaded file.

str (file)

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

base_64

Whether produce an output in base64 format (not recommended, you can pass the string path just fine accross blocks).

bool

No

Outputs

Output
Description
Type

result

File reference/path result.

str

Possible use case

Document Processing: Accept PDF or Word documents from users for analysis, summarization, or data extraction.

Image Upload: Allow users to upload images for processing, resizing, or AI-based analysis.

Data Import: Enable users to upload CSV or Excel files to import data into your workflow for processing.


Agent Google Drive File Input

What it is

Block for selecting a file from Google Drive.

How it works

This block integrates with Google Drive to let users select files directly from their connected Drive account. The Google Drive file picker appears at runtime, allowing users to browse and select files without manually copying file IDs or URLs.

You can configure which file types to display (documents, spreadsheets, presentations) using the allowed_views option. The block outputs the selected file's metadata including its ID, name, and URL for use by other Google-integrated blocks.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

The selected Google Drive file.

GoogleDriveFile

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

allowed_views

Which views to show in the file picker (DOCS, SPREADSHEETS, PRESENTATIONS, etc.).

List["DOCS" | "DOCUMENTS" | "SPREADSHEETS" | "PRESENTATIONS" | "DOCS_IMAGES" | "FOLDERS"]

No

allow_folder_selection

Whether to allow selecting folders.

bool

No

Outputs

Output
Description
Type

result

The selected Google Drive file with ID, name, URL, and other metadata.

GoogleDriveFile

Possible use case

Document Workflow: Let users select a Google Doc to read, analyze, or append content to without knowing the file ID.

Spreadsheet Data Import: Allow users to pick a Google Sheet to import data from for processing or analysis.

File Organization: Enable users to select folders or files for bulk operations like moving, copying, or organizing content.


Agent Input

What it is

A block that accepts and processes user input values within a workflow, supporting various input types and validation.

How it works

It accepts a value from the user, along with metadata such as name, description, and optional placeholder values. The block then outputs the provided value.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

The value to be passed as input.

Value

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

The value passed as input.

Result

Possible use case

Collecting user preferences at the start of a personalized recommendation workflow.


Agent Long Text Input

What it is

Block for long text input (multi-line).

How it works

This block provides a multi-line text area input for users interacting with your agent. Unlike the short text input, this displays a larger text area suitable for paragraphs, descriptions, or any content that may span multiple lines.

The block is ideal for collecting longer-form content like messages, descriptions, or code snippets from users at runtime. The text is passed as-is to downstream blocks in your workflow.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Long text input (potentially multi-line).

str (long-text)

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Long text result.

str

Possible use case

Feedback Collection: Accept detailed user feedback, reviews, or comments that may require multiple paragraphs.

Content Submission: Let users submit articles, blog posts, or documentation content for processing or publication.

Query Input: Allow users to enter complex questions or prompts for AI processing that require detailed context.


Agent Number Input

What it is

Block for number input.

How it works

This block provides a numeric input field for users interacting with your agent. The input validates that the user enters a valid integer, preventing text or invalid values from being submitted.

This is useful when you need numeric parameters like quantities, counts, limits, or any integer value from users at runtime. The number is passed to downstream blocks for use in calculations or configurations.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Number input.

int

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Number result.

int

Possible use case

Quantity Selection: Let users specify how many items to process, order, or generate.

Pagination Control: Allow users to specify page numbers or result limits for data retrieval.

Threshold Setting: Enable users to set numeric thresholds or limits for alerts, filtering, or processing logic.


Agent Output

What it is

A block that records and formats workflow results for display to users, with optional Jinja2 template formatting support.

How it works

It accepts an input value along with a name, description, and optional format string. If a format string is provided, it attempts to apply the formatting to the input value before outputting it.

Inputs

Input
Description
Type
Required

value

The value to be recorded as output.

Value

No

name

The name of the output.

str

Yes

title

The title of the output.

str

No

description

The description of the output.

str

No

format

The format string to be used to format the recorded_value. Use Jinja2 syntax.

str

No

escape_html

Whether to escape special characters in the inserted values to be HTML-safe. Enable for HTML output, disable for plain text.

bool

No

advanced

Whether to treat the output as advanced.

bool

No

secret

Whether the output should be treated as a secret.

bool

No

Outputs

Output
Description
Type

output

The value recorded as output.

Output

name

The name of the value recorded as output.

Name

Possible use case

Presenting the final results of a data analysis workflow in a specific format.


Agent Short Text Input

What it is

Block for short text input (single-line).

How it works

This block provides a single-line text input field for users interacting with your agent. It's designed for brief text entries like names, titles, URLs, or short responses.

The input displays as a standard text field and passes the entered text to downstream blocks. Use this for collecting concise information that doesn't require multiple lines or extensive formatting.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Short text input.

str (short-text)

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Short text result.

str

Possible use case

Name Collection: Gather user names, company names, or project names for personalization.

Search Queries: Accept search terms or keywords from users to drive search functionality.

URL Input: Let users provide URLs for websites, APIs, or resources to process in your workflow.


Agent Table Input

What it is

Block for table data input with customizable headers.

How it works

This block provides a tabular data input interface for users interacting with your agent. Users can enter data in a spreadsheet-like table format with customizable column headers.

The table input is ideal for structured data entry where users need to provide multiple records with consistent fields. The block outputs the data as a list of dictionaries, with each row becoming a dictionary where column headers are keys.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

The table data as a list of dictionaries.

List[Dict[str, Any]]

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

column_headers

Column headers for the table.

List[str]

No

Outputs

Output
Description
Type

result

The table data as a list of dictionaries with headers as keys.

List[Dict[str, Any]]

Possible use case

Bulk Data Entry: Let users input multiple records at once, like a list of contacts with name, email, and phone columns.

Order Processing: Accept line items for an order with product, quantity, and price columns.

Task Lists: Allow users to submit multiple tasks with columns for title, assignee, and priority.


Agent Time Input

What it is

Block for time input.

How it works

This block provides a time picker input for users interacting with your agent. Users select a time (hours, minutes, and optionally seconds) which is passed to your workflow in HH:MM:SS format.

The time picker provides a user-friendly interface for selecting times without requiring users to type in a specific format. This ensures valid time values and improves the user experience.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Time input (HH:MM:SS).

str (time)

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Time result.

str (time)

Possible use case

Appointment Scheduling: Let users specify a time for meetings, calls, or appointments.

Reminder Setting: Allow users to set reminder times for notifications or alerts.

Shift Configuration: Enable users to define start or end times for work shifts or availability windows.


Agent Toggle Input

What it is

Block for boolean toggle input.

How it works

This block provides a boolean toggle (on/off switch) input for users interacting with your agent. Users simply click to toggle between true and false states, making yes/no decisions quick and error-free.

The toggle is ideal for binary choices like enabling features, confirming actions, or setting preferences. The boolean value is passed to downstream blocks for conditional logic.

Inputs

Input
Description
Type
Required

name

The name of the input.

str

Yes

value

Boolean toggle input.

bool

No

title

The title of the input.

str

No

description

The description of the input.

str

No

advanced

Whether to show the input in the advanced section, if the field is not required.

bool

No

secret

Whether the input should be treated as a secret.

bool

No

Outputs

Output
Description
Type

result

Boolean toggle result.

bool

Possible use case

Feature Flags: Let users enable or disable optional features in your workflow.

Confirmation Toggles: Require users to acknowledge terms, confirm destructive actions, or opt into notifications.

Mode Selection: Allow users to switch between modes like "test mode" vs "production mode" or "verbose" vs "quiet" output.


Block Installation

What it is

Given a code string, this block allows the verification and installation of a block code into the system.

How it works

This block allows dynamic installation of new block types into the system from Python code. The code is verified for safety and correctness before installation. Once installed, the new block becomes available for use in workflows.

This enables extensibility by allowing custom blocks to be added without modifying the core system, though it requires the code to follow the block specification format.

Inputs

Input
Description
Type
Required

code

Python code of the block to be installed

str

Yes

Outputs

Output
Description
Type

error

Error message if the block installation fails

str

success

Success message if the block is installed successfully

str

Possible use case

Custom Integrations: Install blocks that connect to proprietary or internal APIs not covered by built-in blocks.

Dynamic Workflows: Allow administrators to extend workflow capabilities without redeploying the entire system.

Experimental Features: Test new block implementations before formally adding them to the block library.


Concatenate Lists

What it is

Concatenates multiple lists into a single list. All elements from all input lists are combined in order.

How it works

The block iterates through each list in the input and extends a result list with all elements from each one. It processes lists in order, so [[1, 2], [3, 4]] becomes [1, 2, 3, 4].

The block includes validation to ensure each item is actually a list. If a non-list value (like a string or number) is encountered, the block outputs an error message instead of proceeding. None values are skipped automatically.

Inputs

Input
Description
Type
Required

lists

A list of lists to concatenate together. All lists will be combined in order into a single list.

List[List[Any]]

Yes

Outputs

Output
Description
Type

error

Error message if concatenation failed due to invalid input types.

str

concatenated_list

The concatenated list containing all elements from all input lists in order.

List[Any]

Possible use case

Paginated API Merging: Combine results from multiple API pages into a single list for batch processing or display.

Parallel Task Aggregation: Merge outputs from parallel workflow branches that each produce a list of results.

Multi-Source Data Collection: Combine data collected from different sources (like multiple RSS feeds or API endpoints) into one unified list.


Dictionary Is Empty

What it is

Checks if a dictionary is empty.

How it works

This block checks whether a dictionary has any entries and returns a boolean result. An empty dictionary (no key-value pairs) returns true, while a dictionary with any entries returns false.

This is useful for conditional logic where you need to verify if data was returned from an API, if user input was provided, or if a collection process yielded any results.

Inputs

Input
Description
Type
Required

dictionary

The dictionary to check.

Dict[str, Any]

Yes

Outputs

Output
Description
Type

error

Error message if the operation failed

str

is_empty

True if the dictionary is empty.

bool

Possible use case

Response Validation: Check if an API returned an empty response before processing data.

Input Verification: Verify that user-provided form data contains at least one field before submission.

Conditional Processing: Skip processing steps when no matching data was found in a search or filter operation.


File Store

What it is

Stores the input file in the temporary directory.

How it works

This block takes a file from various sources (URL, data URI, or local path) and stores it in a temporary directory for use by other blocks in your workflow. This normalizes file handling regardless of the original source.

The block outputs a file path that other blocks can use to access the stored file. The optional base64 output mode is available but file paths are recommended for better performance with large files.

Inputs

Input
Description
Type
Required

file_in

The file to store in the temporary directory, it can be a URL, data URI, or local path.

str (file)

Yes

base_64

Whether produce an output in base64 format (not recommended, you can pass the string path just fine accross blocks).

bool

No

Outputs

Output
Description
Type

error

Error message if the operation failed

str

file_out

The relative path to the stored file in the temporary directory.

str (file)

Possible use case

URL File Download: Fetch a file from a URL and make it available for local processing by other blocks.

Data URI Conversion: Convert base64-encoded data URIs (like from a web form) into accessible file paths.

File Normalization: Standardize file access across different input sources (URLs, uploads, local files) for consistent downstream processing.


Find In Dictionary

What it is

A block that looks up a value in a dictionary, list, or object by key or index and returns the corresponding value.

How it works

This block extracts a value from a dictionary (object) or list using a key or index. If the key exists, the value is output through the "output" pin. If the key is missing, the original input is output through the "missing" pin.

This enables safe data access with built-in handling for missing keys, preventing workflow errors when expected data isn't present. You can use string keys for dictionaries or integer indices for lists.

Inputs

Input
Description
Type
Required

input

Dictionary to lookup from

Input

Yes

key

Key to lookup in the dictionary

str | int

Yes

Outputs

Output
Description
Type

error

Error message if the operation failed

str

output

Value found for the given key

Output

missing

Value of the input that missing the key

Missing

Possible use case

API Response Parsing: Extract specific fields (like "data" or "results") from API response objects.

Configuration Access: Retrieve settings from a configuration dictionary by key name.

User Data Extraction: Pull specific user attributes (name, email, preferences) from a user profile object.


Find In List

What it is

Finds the index of the value in the list.

How it works

This block searches a list for a specific value and returns its position (index). If found, it outputs the zero-based index and sets "found" to true. If not found, it outputs the original value through "not_found_value" and sets "found" to false.

This enables conditional logic based on list membership and helps locate items for subsequent list operations like replacement or removal.

Inputs

Input
Description
Type
Required

list

The list to search in.

List[Any]

Yes

value

The value to search for.

Value

Yes

Outputs

Output
Description
Type

error