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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
code
Python code of the block to be installed
str
Yes
Outputs
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
lists
A list of lists to concatenate together. All lists will be combined in order into a single list.
List[List[Any]]
Yes
Outputs
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
dictionary
The dictionary to check.
Dict[str, Any]
Yes
Outputs
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
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
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
Dictionary to lookup from
Input
Yes
key
Key to lookup in the dictionary
str | int
Yes
Outputs
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
list
The list to search in.
List[Any]
Yes
value
The value to search for.
Value
Yes
Outputs
error