- Toolkit Node - Execute ELITEA toolkit functions with direct parameter mapping
- MCP Node - Execute Model Context Protocol (MCP) server tools
- Code Node - Execute custom Python code in a secure sandbox
- Custom Node - Advanced manual JSON configuration for complex integrations
Toolkit Node
The Toolkit Node executes specific tools from ELITEA Toolkits with direct parameter mapping. It provides fast, deterministic execution without LLM overhead, making it ideal for scenarios where you know exactly which tool to call and how to configure its parameters.
- Execute ELITEA toolkit functions directly without LLM decision-making
- Call external APIs through toolkit integrations (Jira, GitHub, Slack, Confluence, etc.)
- Perform deterministic actions where the tool and parameters are known upfront
- Map pipeline state directly to tool parameters
- Chain multiple toolkit calls in sequence with precise control
Toolkit Nodes can use ELITEA Toolkits only (not MCPs). For MCP servers, use the MCP Node.
| Parameter | Purpose | Type Options & Examples |
|---|---|---|
| Toolkit | Select which ELITEA Toolkit contains the tool you want to execute | Toolkits - External service integrations Selection Process: 1. Select Toolkit from dropdown 2. Tool dropdown appears 3. Select specific tool Example: jira_toolkit |
| Tool | Select the specific tool/function to execute from the chosen toolkit | Dropdown populated with all available tools from selected toolkit jira_toolkit: create_issue, update_issue, search_issues, execute_generic_rq |
| Input | Specify which state variables the Toolkit node reads from | Default states: input, messagesCustom states: Any defined state variables Example: - project_id- issue_title- input |
| Output | Define which state variables the tool’s result should populate | Default: messagesCustom states: Specific variables Example: - jira_ticket_id- messages |
| Input Mapping | Map pipeline state variables to the tool’s required parameters (appears after tool selection) | F-String - Formatted string with variables Example: user_story_{ticket_id}_v{version}.mdVariable - Direct state reference Example: generated_contentFixed - Static value Example: production-reportsCategories: - Required parameters (must provide) - Optional parameters (can be null) |
| Structured Output | Enable parsing of tool output as structured data for state variable updates | Enabled (true): Tool output parsed as structured data Disabled (false): Tool output goes to messagesExample: true or false |
| Interrupt Before | Pause pipeline execution before this node | Enabled / Disabled |
| Interrupt After | Pause pipeline execution after this node for inspection | Enabled / Disabled |

The Input Mapping section dynamically displays only the parameters required by the selected tool. Each toolkit tool has different required and optional parameters. Select your tool first to see available mapping options.
- Map Required Parameters Correctly - Ensure all required parameters have proper mappings
- Use Appropriate Type for Each Parameter
- Variable: When value comes from state
- F-String: When you need dynamic interpolation
- Fixed: For static, unchanging values
- Handle Optional Parameters - Set optional parameters to
nullif not needed - Include Output Variables - Capture important results in output variables
- Use Interrupts for Debugging - Enable interrupts when testing new integrations
- Validate State Variables - Ensure input state variables exist before the Toolkit node executes
- Use Structured Output - Enable structured output when you need to extract specific fields from tool results
- Chain Toolkit Calls - Create workflows by sequencing Toolkit nodes
MCP Node
The MCP Node executes tools from Model Context Protocol (MCP) servers with direct parameter mapping. It connects to remote MCP servers via HTTP and provides access to their tools without LLM overhead.
- Execute MCP server tools directly with explicit parameter configuration
- Connect to remote MCP servers via HTTP/HTTPS
- Access specialized MCP tools (Playwright, GitHub, Figma, etc.)
- Map pipeline state directly to MCP tool parameters
- Enable/disable specific tools from MCP servers
MCP Nodes can use Model Context Protocol servers only. For ELITEA Toolkits, use the Toolkit Node.
| Parameter | Purpose | Type Options & Examples |
|---|---|---|
| MCP Server | Select which MCP server contains the tool you want to execute | MCPs - Model Context Protocol servers Selection Process: 1. Select MCP from dropdown 2. Tool dropdown appears 3. Select specific tool Example: GitHub-MCP |
| Tool | Select the specific tool/function to execute from the chosen MCP server | Dropdown populated with all available tools from selected MCP server filesystem_mcp: search_code, get_file_content, list_directorydatabase_mcp: query, insert, update |
| Input | Specify which state variables the MCP node reads from | Default states: input, messagesCustom states: Any defined state variables Example: - file_path- content- input |
| Output | Define which state variables the tool’s result should populate | Default: messagesCustom states: Specific variables Example: - file_content- messages |
| Input Mapping | Map pipeline state variables to the MCP tool’s required parameters (appears after tool selection) | F-String - Formatted string with variables Example: reports/{date}/summary.mdVariable - Direct state reference Example: file_contentFixed - Static value Example: /data/reportsCategories: - Required parameters (must provide) - Optional parameters (can be null) |
| Structured Output | Enable parsing of MCP tool output as structured data for state variable updates | Enabled (true): Tool output parsed as structured data Disabled (false): Tool output goes to messagesExample: true or false |
| Interrupt Before | Pause pipeline execution before this node | Enabled / Disabled |
| Interrupt After | Pause pipeline execution after this node for inspection | Enabled / Disabled |

MCP servers must be properly configured and connected before using the MCP Node. Ensure the MCP server is running and accessible via HTTP/HTTPS.
- Verify MCP Connection - Ensure the MCP server is connected and accessible before pipeline execution
- Map Required Parameters Correctly - MCP tools have specific parameter requirements
- Use Appropriate Type for Each Parameter
- Variable: When value comes from state
- F-String: When you need dynamic path/value interpolation
- Fixed: For static configurations
- Handle Errors - MCP server connection failures will stop pipeline execution
- Use Structured Output - Enable when extracting specific data from MCP tool results
- Test MCP Tools - Use the MCP test panel to verify tool functionality before using in pipelines
- Monitor Timeouts - Configure appropriate timeout values for MCP server connections
Custom Node
The Custom Node enables advanced manual JSON configuration for complex integrations. It provides full control via JSON-based configuration, allowing users to configure any available toolkit (Agents, Pipelines, Toolkits, MCPs) with custom parameters.
- Advanced manual configurations not available through standard node UI
- Complex toolkit integrations requiring custom JSON parameters
- Experimental features or beta toolkit capabilities
- Full parameter control for power users
- Custom agent/pipeline/toolkit configurations with specific requirements
Code Node
The Code Node enables secure execution of custom Python code within a sandboxed environment using Pyodide (Python compiled to WebAssembly). It provides full Python capabilities for data processing, calculations, and custom logic without accessing the host system.
- Execute custom Python logic for data transformation and processing
- Perform calculations that don’t require external tool integrations
- Process pipeline state with full programming control
- Implement business rules and conditional logic in Python
- Transform data formats between pipeline nodes
- Call external APIs directly from Python (with network access enabled)
- Install Python packages dynamically using micropip
| Parameter | Purpose | Type Options & Examples |
|---|---|---|
| Code | Python code to execute in the sandbox | Type: Fixed - Static code block Type: Variable - Code from state variable Type: F-String - Formatted code with variables Fixed Example: python<br />result = alita_state.get('value', 0) * 2<br />{"doubled": result}<br />Variable Example: yaml<br />code:<br /> type: variable<br /> value: python_code_variable<br />F-String Example: yaml<br />code:<br /> type: fstring<br /> value: "result = {threshold} * 2\n{\"output\": result}"<br /> |
| Input | State variables accessible to the code via alita_state dictionary | Default: input, messagesCustom: Any defined state variables Example: - raw_data- min_scoreAccess in code: alita_state.get('raw_data', []) |
| Output | State variables to populate with execution results | Default: messages (if omitted or includes messages)Custom: Specific variables (must exist in state) Example: - processed_data- countImportant: Only listed variables will be updated |
| Structured Output | Parse code output as structured data for state updates | Enabled (true): Code must return dictionary; keys matching output variables will update state Disabled (false): Output appended to messagesExample: true or falseSee detailed behavior below |
| Interrupt Before | Pause pipeline before code execution | Enabled / Disabled |
| Interrupt After | Pause pipeline after code execution for result inspection | Enabled / Disabled |

Basic Example: Simple Calculation
Basic Example: Simple Calculation
Advanced Example: Data Processing with Error Handling
Advanced Example: Data Processing with Error Handling
API Integration Example: External HTTP Calls
API Integration Example: External HTTP Calls
Package Installation Example: Using External Libraries
Package Installation Example: Using External Libraries
Conditional Logic Example: Business Rules
Conditional Logic Example: Business Rules
Alita Client Integration Example: Accessing Artifacts
Alita Client Integration Example: Accessing Artifacts
Without Output Variables (or includes With Specific Output Variables:Results populate the specified variables:With Structured Output:Return dictionary to update multiple variables:
messages):Results are added to messages array:- Sandbox: Pyodide (Python compiled to WebAssembly) provides secure isolation
- Standard Library: Full Python standard library available
- Package Installation: Use
import micropip; await micropip.install('package-name')for additional packages - Network Access: Enabled by default for external API calls (use
httpxinstead ofrequests) - Performance: Stateless execution by default for optimal performance; local caching reduces initialization time
- Limitations: File system access not supported; use
httpx.AsyncClientfor HTTP calls instead ofrequests
- Data Transformation: Clean and format data between nodes
- Validation: Verify data meets requirements before proceeding
- Enrichment: Add computed fields or external data
- Conditional Routing: Calculate which path to take next
- State Management: Transform state structure for downstream nodes
Best Practices
- Return Structured Data: When using
structured_output: true, always return dictionaries with keys matching output variables - Handle Errors Gracefully: Include try-except blocks to catch and return errors as part of the structured output
- Validate Input Data: Check state variables exist and have expected types before processing using
alita_state.get('var', default) - Use Descriptive Output Variables: Name output variables clearly (e.g.,
total_revenue,average_scoreinstead ofresult1,result2) - Keep Code Focused: Each Code Node should have one clear purpose - avoid combining multiple unrelated operations
- Document Complex Logic: Use Python comments to explain business rules, calculations, and non-obvious operations
- Test with Interrupts: Enable interrupts during development to review code execution results and debug issues
- Optimize Performance: Avoid heavy computations in frequently called nodes; use efficient data structures
- Use Async for HTTP: Use
httpx.AsyncClientfor HTTP requests (Pyodide compatible) instead ofrequests - Install Packages Carefully: Package installation adds latency; install only necessary packages
- Handle JSON Serialization: Ensure returned objects are JSON-serializable (native Python types, lists, dicts)
- Access Alita Client: Use
alita_clientwhen available for artifact operations and API interactions
Troubleshooting
Common Issues and SolutionsError: Deno is required for PyodideSandbox but is not installed
Error: Deno is required for PyodideSandbox but is not installed
Cause: The Deno JavaScript runtime is missingSolution: Install Deno and ensure it’s in your system PATH
Error: Object is not serializable
Error: Object is not serializable
Cause: Code returns non-JSON-serializable objects (classes, functions, etc.)Solution: Return only JSON-serializable types (str, int, float, bool, list, dict, None)
Error: ModuleNotFoundError: No module named 'package'
Error: ModuleNotFoundError: No module named 'package'
Cause: Required package not available in Pyodide environmentSolution: Install package using micropip (note: not all packages are compatible)Limitations: Some packages with C extensions may not work in Pyodide
Error: Output variables not updating
Error: Output variables not updating
Cause: Variables not listed in
output or structured_output is falseSolution:- Ensure
structured_output: true - List all target variables in
output - Return dictionary with matching keys
Error: httpx or network requests failing
Error: httpx or network requests failing
Cause: Using
requests library (not Pyodide compatible) or network disabledSolution: Use httpx.AsyncClient for HTTP callsExecution Nodes Comparison
| Feature | Toolkit Node | MCP Node | Code Node | Custom Node |
|---|---|---|---|---|
| Purpose | Execute ELITEA toolkit functions | Execute MCP server tools | Execute custom Python code | Advanced JSON configuration |
| Toolkit Types | ELITEA Toolkits | MCP Servers | N/A (Python sandbox) | Any (Toolkits, MCPs, Agents, Pipelines) |
| Tool Selection | Manual (user selects) | Manual (user selects) | N/A | Manual JSON config |
| Parameter Mapping | Explicit Input Mapping | Explicit Input Mapping | State via alita_state | Custom JSON |
| LLM Usage | No LLM | No LLM | No LLM | Depends on config |
| Configuration | UI-based parameter mapping | UI-based parameter mapping | Python code editor | JSON editor |
| Structured Output | Supported | Supported | Supported | Depends on config |
| Flexibility | Medium (predefined tools) | Medium (MCP tools) | Very High (full Python) | Very High (full JSON control) |
| Complexity | Medium | Medium | High (requires Python) | Very High (requires JSON expertise) |
| Performance | Fast (direct execution) | Fast (direct execution) | Fast (compiled sandbox) | Varies |
| Best For | ELITEA toolkit calls | MCP server integrations | Custom logic, calculations | Advanced custom integrations |
When to Use Each Node
Toolkit Node
Toolkit Node
Choose Toolkit Node when you:
- Need to call ELITEA toolkit functions (Jira, GitHub, Slack, Confluence, etc.)
- Know exactly which toolkit and tool to use
- Have straightforward parameter mapping
- Need fast, deterministic execution
- Want explicit control over toolkit execution
MCP Node
MCP Node
Choose MCP Node when you:
- Need to execute MCP server tools
- Have a configured MCP server connection
- Know exactly which MCP tool to call
- Have explicit parameter requirements
- Need direct MCP integration
Code Node
Code Node
Choose Code Node when you:
- Need custom Python logic
- Require data transformation or processing
- Implement business rules and calculations
- Call external APIs directly
- Have logic too complex for standard nodes
Custom Node
Custom Node
Choose Custom Node when you:
- Have advanced configuration requirements not supported by standard nodes
- Need full JSON control over toolkit configuration
- Work with experimental or beta toolkit features
- Require complex parameter structures
- Are a power user with specific custom needs
Deprecated Execution Nodes
The following execution nodes are deprecated and will be removed in a future release. Please migrate to the recommended alternatives:Function Node
Function Node
The Function node is deprecated and will be removed in an upcoming release.Migration: Use the Toolkit node for ELITEA toolkits or the MCP node for Model Context Protocol servers.Key Differences:
- Function Node → Toolkit Node: Direct replacement for ELITEA toolkit calls
- Function Node → MCP Node: Direct replacement for MCP server tool calls
- Identify whether your Function node uses an ELITEA Toolkit or MCP server
- Replace with Toolkit Node (for toolkits) or MCP Node (for MCPs)
- Copy Input Mapping configuration to new node
- Update YAML
typefield fromfunctiontotoolkitormcp - Test pipeline execution
Tool Node
Tool Node
The Tool node is deprecated and will be removed in an upcoming release.Migration: Use the Toolkit node for direct toolkit execution without LLM preprocessing.Key Differences:
- Tool Node uses LLM to select tools and generate parameters from natural language tasks
- Toolkit Node executes tools directly with explicit parameter mapping (faster, more reliable)
- Replace Tool Node with Toolkit Node
- Convert natural language task to explicit Input Mapping
- Manually map task parameters to tool parameters
- Update YAML
typefield fromtooltotoolkit - Remove
taskfield, keepinput_mapping - Test pipeline execution
- Nodes Overview - Understand all available node types
- Interaction Nodes - LLM and Agent nodes for AI-powered tasks
- Control Flow Nodes - Router, and Decision nodes
- States - Manage data flow through pipeline state
- Connections - Link nodes together
- YAML Configuration - See complete node syntax examples