Step Types

Agent Tools & Step Types

Pluggable modules that extend agent capabilities with actions like HTTP requests, email, file operations, browser automation, MCP calls, branching, and agent delegation.

Available Step Types

The platform supports a rich library of built-in step types. Each type is designed to handle a specific automation task with full error handling and logging.

LLM

LLM / Agent Step

Invoke an AI agent with a prompt, tools, and context. Returns structured reasoning and output.

{ "type": "llm", "prompt": "Analyze this data..." }
HTTP

HTTP Request

Make REST API calls with full support for headers, authentication, and response parsing.

{ "type": "http", "method": "GET", "url": "https://api.example.com" }
EMAIL

Email Automation

Send emails via SMTP or fetch emails using IMAP. Supports attachments and templates.

{ "type": "email", "to": "user@example.com", "subject": "Report" }
FILE

File Operations

Read, write, or delete files. Supports JSON, CSV, TXT, and binary formats.

{ "type": "file", "action": "write", "path": "/data/output.json" }
BROWSER

Browser Automation

Scrape websites, fill forms, take screenshots using headless Playwright.

{ "type": "browser", "action": "navigate", "url": "https://example.com" }
DELAY

Delay / Wait

Pause workflow execution for a specified duration or until a condition is met.

{ "type": "delay", "duration": 5000 }
DOCUMENT_QUERY

Document Query

Query a document in the knowledge base using RAG retrieval.

{ "type": "document_query", "documentId": "doc_123", "query": "..." }
MCP

MCP Tool Call

Call a tool exposed by an MCP server.

{ "type": "mcp", "serverId": "my-server", "toolName": "search" }
CONDITION

Condition

Branch execution based on a boolean expression with if_true and if_false paths.

{ "type": "condition", "operator": "==", "value": "200", "if_true": [...], "if_false": [...] }
SWITCH

Switch

Route execution to one of multiple cases based on a value.

{ "type": "switch", "cases": { "success": [...], "error": [...] } }
APPROVAL

Human Approval

Pause the workflow and wait for human approval before proceeding.

{ "type": "approval", "approvalMessage": "Approve this action?" }
AGENT_CALL

Agent Call

Delegate execution to a specialized AI agent.

{ "type": "agent_call", "agentId": "agent_001", "input": "..." }

Built-in Tool Integrations

In addition to step types, the platform registers 8 built-in tools through the dynamic tool registry. These tools run in a sandboxed child process with configurable timeouts and environment restrictions.

email

Send emails via SMTP using configured MAIL_HOST, MAIL_PORT, MAIL_USER, MAIL_PASS.

file

Read, write, append, and list files. Configurable FILE_BASE_DIR for sandboxing.

browser

Navigate pages, evaluate scripts, take screenshots using Puppeteer/Playwright.

github

Interact with GitHub APIs using GITHUB_TOKEN.

slack

Send messages to Slack using SLACK_WEBHOOK_URL.

discord

Send messages to Discord using DISCORD_WEBHOOK_URL.

hackerNews

Fetch top stories and comments from Hacker News.

sandbox

Execute arbitrary code in an isolated child process with UID/GID restrictions.

Building Custom Tools

You can extend the platform by writing custom tool executors in Node.js. Each tool must export a meta object and a run(step, context) function. The tool is registered automatically when placed in backend/src/tools/.