Node reference
MZBase workflows are built from 222 node types. Each node is also an agent tool, an MCP tool and a mzb command where it makes sense. This reference is generated from the app’s node registry, so it matches the version you run.
In the workflow editor, the ? next to a field opens the help for that field and links to the matching section here.
Triggers
Section titled “Triggers”What starts the workflow: by hand, a schedule, a webhook, an event (10 nodes)
| Node reference | Type |
|---|---|
| On chat message Starts on each chat message from the AI Agents page or a chat app |
trigger.chat |
| Error trigger Starts when another workflow’s execution fails |
trigger.error |
| MZBase event Starts on an app event: mail received, account status changed, profile closed … |
trigger.event |
| Manual trigger Starts when you click Test workflow or run it |
trigger.manual |
| Schedule Starts on a schedule: every N minutes, daily at a time, or cron |
trigger.schedule |
| New Sheet row Starts when rows are added to a Google Sheet (checked every few minutes) |
trigger.sheetsRowAdded |
| Telegram message Starts when your bot receives a message |
trigger.telegram |
| Webhook Starts when an HTTP request reaches its URL |
trigger.webhook |
| Called by a workflow Starts when another workflow, an agent or MCP calls it |
trigger.workflow |
| Zalo OA event Starts when your Official Account receives a message or a follow |
trigger.zalo |
Branch, merge, loop, wait and stop (17 nodes)
| Node reference | Type |
|---|---|
| Tag execution Adds tags to this execution to find it later or send it signals |
execution.tag |
| Approval gate Pauses until a person approves or denies, with the items shown to them |
flow.approve |
| Catch errors Starts a branch with the items that failed in the workflow, a group or chosen steps |
flow.catch |
| Debug Shows a value in the Debug panel or on the step, and passes items on |
flow.debug |
| Run a workflow Runs another workflow, once or per item |
flow.executeWorkflow |
| Ask a person Pauses until someone picks one of the choices, with an optional form |
flow.humanInput |
| If Sends items to Yes or No by conditions |
flow.if |
| Loop over items Runs the loop steps once per item (or batch), then continues |
flow.loop |
| Merge Joins the items of two inputs |
flow.merge |
| No operation Passes items on unchanged |
flow.noOp |
| Rate limit Lets at most N items per key pass in a time window, across runs |
flow.rateLimit |
| Stop and error Fails the execution with a message |
flow.stopAndError |
| Subgraph A group of steps collapsed into one node |
flow.subgraph |
| Switch Sends items to one output per rule |
flow.switch |
| Wait Pauses for a time or until a moment |
flow.wait |
| Wait for approval Pauses until someone approves or denies in the app |
flow.waitForApproval |
| Wait for webhook Pauses until a resume URL is called |
flow.waitForWebhook |
Edit, filter, sort and reshape items; code; data tables (35 nodes)
| Node reference | Type |
|---|---|
| Compress Packs files into a zip or gzip archive |
compression.compress |
| Decompress Unpacks a zip or gzip archive into files |
compression.decompress |
| Encode / decode Base64, Base64URL, hex or URL encoding |
crypto.encode |
| Hash Hashes a value (MD5, SHA, BLAKE3) |
crypto.hash |
| HMAC Signs a value with a secret from a credential |
crypto.hmac |
| Random value Makes a UUID, a random string, number or bytes |
crypto.random |
| Aggregate Collects items into one list |
data.aggregate |
| Code Runs JavaScript over the items |
data.code |
| Compare datasets Compares two lists by key: only in A, only in B, same, different |
data.compareDatasets |
| Data table Reads the run’s data table or writes result rows |
data.dataTable |
| Date & time Formats, adds to or compares dates |
data.dateTime |
| Filter Keeps the items that match conditions |
data.filter |
| Limit Keeps the first or last N items |
data.limit |
| Random items Picks N random items, repeatable with a seed |
data.random |
| Remove duplicates Drops items with the same fields |
data.removeDuplicates |
| Rename keys Renames fields of each item |
data.renameKeys |
| Respond to webhook Sends the webhook’s HTTP response |
data.respondToWebhook |
| Edit fields Adds, renames or removes fields, or sets variables |
data.set |
| Sort Orders items by fields |
data.sort |
| Split out Turns a list field into separate items |
data.splitOut |
| Summarize Counts, sums, min / max by group |
data.summarize |
| Delete from data table Deletes the rows of a saved data table that match |
dataTable.delete |
| Query data table Reads rows of a saved data table |
dataTable.query |
| Save to data table Adds rows to a saved data table, or updates them by key |
dataTable.upsert |
| Convert to file Writes items to a CSV, Excel, JSON or text file |
file.convert |
| Extract from file Reads items from a CSV, Excel, JSON, text or PDF file |
file.extract |
| Extract from HTML Reads values from HTML with CSS selectors |
html.extract |
| HTML table to items Turns an HTML table into one item per row |
html.table |
| HTML to Markdown Converts HTML to Markdown text |
markdown.fromHtml |
| Markdown to HTML Converts Markdown text to HTML |
markdown.toHtml |
| Create QR code Makes a QR code image from text or a VietQR payment |
qr.generate |
| Read QR code Reads the QR codes of an image; 2FA setup codes become a TOTP secret |
qr.read |
| Format text Spintax, templates, regex, split, case, slugs and other text helpers |
text.format |
| JSON to XML Writes a JSON value as XML text |
xml.fromJson |
| XML to JSON Parses XML text into JSON |
xml.toJson |
Browser
Section titled “Browser”Drive the profile’s browser: pages, clicks, typing, extracting (38 nodes)
| Node reference | Type |
|---|---|
| Go back Goes back in the tab’s history |
browser.back |
| Block resources Blocks images, media, fonts or URLs to save proxy bandwidth |
browser.blockResources |
| Browse to warm up Reads, idles and follows safe links on the site or a list of sites for some minutes |
browser.browse |
| Capture response Reads a response the page receives from its API |
browser.captureResponse |
| Click Clicks an element |
browser.click |
| Clipboard Reads or writes the page clipboard |
browser.clipboard |
| Close tab Closes a tab |
browser.closeTab |
| Cookies Gets, sets or clears cookies |
browser.cookies |
| Detect a challenge Tells whether the page shows Cloudflare, Turnstile, reCAPTCHA, hCaptcha, a block page or a login form |
browser.detectChallenge |
| Handle dialog Accepts or dismisses alert, confirm and prompt dialogs |
browser.dialog |
| Download file Waits for a download and keeps the file |
browser.download |
| Drag and drop Drags one element onto another |
browser.dragDrop |
| Evaluate JavaScript Runs a JavaScript expression in the page |
browser.evaluate |
| Element exists? Branches on whether an element is on the page |
browser.exists |
| Extract Reads text, an attribute, HTML or a count from elements |
browser.extract |
| Switch frame Acts inside an iframe, or goes back to the page |
browser.frame |
| Page info The page’s URL and title |
browser.getInfo |
| Go to URL Opens a URL in the current tab |
browser.goto |
| Hover Moves the mouse over an element |
browser.hover |
| Idle like a person Waits without clicking or typing; the pointer drifts a little and the page scrolls now and then |
browser.idle |
| Loop elements Outputs one item per matching element, to act on each |
browser.loopElements |
| New tab Opens a new tab |
browser.newTab |
| Press key Presses a key or a shortcut |
browser.press |
| Read the page Scrolls through the page or an element at a reading pace, with pauses, until the end |
browser.read |
| Reload Reloads the page |
browser.reload |
| Screenshot Takes a screenshot as a file |
browser.screenshot |
| Run browser script Runs trusted JavaScript with the page, the browser context and vault-safe helpers; returns items |
browser.script |
| Scroll Scrolls the page or to an element |
browser.scroll |
| Scroll until Scrolls like a person until an element shows, the end, N times or a time |
browser.scrollUntil |
| Select option Picks an option of a select element |
browser.select |
| Page storage Gets, sets or clears localStorage and sessionStorage |
browser.storage |
| Switch tab Moves to another tab |
browser.switchTab |
| Type text Types text into a field like a person |
browser.type |
| Type secret Types a password from the vault without showing it |
browser.typeSecret |
| Upload file Puts a file into a file input |
browser.upload |
| Wait for Waits for an element, a URL, text or navigation |
browser.waitFor |
| Close profile Closes the execution’s browser profile |
profile.close |
| Open profile Starts a browser profile for the next browser steps |
profile.open |
Accounts
Section titled “Accounts”Log in, 2FA codes, account status (8 nodes)
| Node reference | Type |
|---|---|
| Fill login Types the account’s user name and password |
account.fillLogin |
| List accounts Accounts by platform, status or folder as items |
account.list |
| Mark account used Records that the account was used now |
account.markUsed |
| Pick account Takes the least recently used free account and holds it for this run |
account.pick |
| Save account Creates or updates a vault account with its login, 2FA, cookies and profile |
account.save |
| Set account status Sets the account’s status (live, checkpoint …) |
account.setStatus |
| Type 2FA code Types the account’s current 2FA code |
account.typeTotp |
| Update account Changes fields, status, tags or notes of an account |
account.update |
MZBase
Section titled “MZBase”Profiles, vault, proxies, media, mail and SMS codes (81 nodes)
| Node reference | Type |
|---|---|
| Solve captcha Solves a captcha through a solver service |
captcha.solve |
| List files Lists the files that match a pattern in an allowed folder |
file.list |
| Read file Reads a text, CSV, JSON or binary file from an allowed folder |
file.read |
| Write file Writes or appends text, lines or a binary to a file in an allowed folder |
file.write |
| Blur image Blurs an image or a part of it |
image.blur |
| Add border Adds a border and rounded corners |
image.border |
| Collage Joins several images into a grid |
image.collage |
| Convert image Converts an image to JPG, PNG or WebP |
image.convert |
| Crop image Cuts an image to a box or an aspect ratio |
image.crop |
| Image info Reads an image’s size and format |
image.info |
| Add logo to image Puts a logo or watermark on an image |
image.overlay |
| Resize image Changes an image’s size |
image.resize |
| Rotate image Rotates or flips an image |
image.rotate |
| Similar images Finds near-identical images with a perceptual hash |
image.similar |
| Add text to image Writes a caption on an image |
image.text |
| Mailbox token An access token of a mailbox |
mail.getToken |
| New email address Makes a new address on your mail domain |
mail.tempAddress |
| Wait for mail code Waits for a mail and reads the code in it |
mail.waitCode |
| Wait for mail link Waits for a mail and reads a link in it |
mail.waitLink |
| Download media Downloads a file from a direct URL |
media.download |
| Mark media used Records that a media file was used |
media.markUsed |
| Pick media Picks unused media files from the library |
media.pick |
| Save to media library Stores a file in the media library with folder and tags |
media.save |
| Make media unique Re-encodes an image or video so each copy differs |
media.uniquify |
| Send notification Notifies you in the app or through an alert channel |
notify.send |
| Back up app Saves an app’s data to a file or the media library (rooted phones) |
phone.backupApp |
| Clear app data Clears an app’s data and cache |
phone.clearAppData |
| Close phone Stops the phone opened earlier |
phone.close |
| Phone file Copies a file to or from the phone |
phone.file |
| Find image Finds a reference image on the phone screen |
phone.findImage |
| Find on screen Finds a screen element by text, ID or description |
phone.findText |
| Install app Installs an app from the library or an APK file |
phone.installApp |
| Press phone key Presses Home, Back, Enter and other keys |
phone.key |
| Open app or link Opens an app, or a deep link |
phone.launchApp |
| Read screen text Reads the text on the phone screen with AI vision |
phone.ocr |
| Open phone Starts an Android phone (if needed) and uses it for the next steps |
phone.open |
| Add media to gallery Copies an image or video into the phone gallery |
phone.pushMedia |
| Restore app Restores an app’s data from a backup (rooted phones) |
phone.restoreApp |
| Phone screenshot Captures the phone screen as an image |
phone.screenshot |
| Set GPS location Sets a mock GPS location on the phone |
phone.setGps |
| Phone shell command Runs a shell command on the phone |
phone.shell |
| Swipe Swipes from one point to another |
phone.swipe |
| Tap Taps the phone screen at a point (or long-presses it) |
phone.tap |
| Tap image Waits for a reference image on the screen and taps it |
phone.tapImage |
| Tap on text Finds a screen element and taps it |
phone.tapText |
| Type on phone Types text into the focused field |
phone.type |
| Uninstall app Removes an app from the phone |
phone.uninstallApp |
| Wait for screen element Waits until an element appears or disappears |
phone.waitFor |
| Clear profile cache Clears a profile’s cache and storage, optionally keeping cookies |
profile.clearCache |
| Delete profile Moves a profile to the Trash |
profile.delete |
| New fingerprint Gives a profile a new fingerprint, keeping its OS |
profile.newFingerprint |
| Clone profile Copies a profile, optionally with cookies and proxy |
profiles.clone |
| Create profile Creates a new browser profile |
profiles.create |
| Export cookies Saves a profile’s cookies as a file without opening it |
profiles.exportCookies |
| Import cookies Adds cookies to a profile without opening it |
profiles.importCookies |
| List profiles Profiles by folder, tag or search as items |
profiles.list |
| Move profile to folder Moves a profile into a folder |
profiles.setGroup |
| Set profile proxy Sets or removes a profile’s proxy |
profiles.setProxy |
| Set profile tags Adds, removes or replaces a profile’s tags |
profiles.setTags |
| Update profile Changes a profile’s tags, folder or notes |
profiles.update |
| Assign proxy Gives a proxy to a profile |
proxy.assign |
| Change proxy IP Asks a rotating proxy for a new IP |
proxy.changeIp |
| Check proxy Tests a proxy: IP, country, speed, alive |
proxy.check |
| Pick proxy Takes a free proxy and holds it for this run |
proxy.pick |
| Cancel SMS number Cancels a rented number that was not used |
sms.cancel |
| Rent phone number Rents a number for SMS verification |
sms.rentNumber |
| Wait for SMS code Waits for the SMS code of a rented number |
sms.waitCode |
| Generate password Makes a strong password and saves it in the vault; passes on a reference only |
vault.generatePassword |
| 2FA code The current 2FA code of an account (for APIs that need it) |
vault.getTotp |
| Video audio Adds music, changes the volume, mutes or extracts the audio |
video.audio |
| Compress video Makes a video smaller for a size, bitrate or platform |
video.compress |
| Join videos Joins videos one after another |
video.concat |
| Video frames Takes frames of a video at an interval |
video.frames |
| Video info Reads a video’s length, size and codecs |
video.info |
| Add logo to video Puts a logo or watermark on a video |
video.overlay |
| Reframe video Changes a video to 9:16, 1:1, 16:9 or 4:5 |
video.reframe |
| Slideshow video Makes a video from images |
video.slideshow |
| Video speed Speeds up or slows down a video |
video.speed |
| Burn subtitles Burns SRT or VTT subtitles into a video |
video.subtitles |
| Video thumbnail Takes one frame of a video as an image |
video.thumbnail |
| Trim video Cuts a part of a video |
video.trim |
Network
Section titled “Network”HTTP requests, SSH and terminal commands (7 nodes)
| Node reference | Type |
|---|---|
| HTTP request Calls an API or a URL |
http.request |
| SSH command Runs a command on an SSH host |
ssh.exec |
| Delete from storage Deletes a file from a storage connection |
storage.delete |
| Download from storage Downloads a file from a storage connection |
storage.download |
| List storage files Lists the files in a storage folder |
storage.list |
| Upload to storage Uploads a file to a storage connection |
storage.upload |
| Terminal command Runs a command on this computer |
terminal.run |
Chat, extract, classify and act on a page (15 nodes)
| Node reference | Type |
|---|---|
| AI agent on page Lets AI do bounded actions on the current page |
ai.act |
| AI agent Lets a model call tools, workflows and knowledge bases until it has an answer |
ai.agent |
| Agent run Hands the task to Claude Code or Codex and waits for its answer |
ai.agentRun |
| Answer from knowledge Answers a question from knowledge bases, with citations |
ai.answer |
| AI caption Writes a post caption for each account with AI |
ai.caption |
| AI chat Asks a model; optionally structured output |
ai.chat |
| AI classify Sends items to one output per label |
ai.classify |
| AI extract Pulls fields out of text or the page |
ai.extract |
| AI image Generates or edits an image with AI |
ai.image |
| AI memory Reads, adds to or clears a conversation memory |
ai.memory |
| Transcribe Turns speech in audio or video into text or subtitles |
ai.transcribe |
| Text to speech Turns text into spoken audio with AI |
ai.tts |
| Delete from knowledge base Removes documents from a knowledge base |
kb.delete |
| Add to knowledge base Splits text or a file into chunks and stores them for search |
kb.insert |
| Search knowledge base Finds the passages closest to a query |
kb.search |
Google Sheets, Telegram and Zalo OA (11 nodes)
| Node reference | Type |
|---|---|
| Send email (SMTP) Sends an email through your mail server, with item files attached |
mail.send |
| Append rows Adds the items as rows at the end of a Google Sheet |
sheets.appendRows |
| Clear range Clears the cells of a Google Sheet range |
sheets.clear |
| Read rows Reads rows of a Google Sheet as items |
sheets.readRows |
| Update rows Updates the rows whose match column equals the item’s value |
sheets.updateRows |
| Update or add rows Updates the rows whose match column equals the item’s value and adds the others |
sheets.upsertRows |
| Get Telegram updates Reads new messages sent to your bot |
telegram.getUpdates |
| Send Telegram file Sends a file from the item to a chat |
telegram.sendDocument |
| Send Telegram message Sends a text or photo message from your bot |
telegram.sendMessage |
| Get Zalo followers Lists the followers of your Official Account |
zalo.getFollowers |
| Send Zalo message Sends a text or image message to a follower of your Official Account |
zalo.sendMessage |