Migrating from Function Node to Toolkit/MCP/Agent Nodes¶
Overview¶
The Function Node has been deprecated and is no longer available for creation in new pipelines starting from version 2.0.0 B2. While existing Function nodes in your pipelines will continue to function, we strongly recommend migrating to Toolkit, MCP, or Agent nodes to take advantage of improved functionality and ensure long-term compatibility.
Deprecation Notice
The Function Node is deprecated starting from release 2.0.1 and will be removed in a future release. Since version 2.0.0 B2, users can no longer create new Function nodes. Existing Function nodes in your pipelines will continue to function, but they display a warning icon with "Deprecated!" text in the node header and show a tooltip when hovered. Plan your migration accordingly.
What changed:
- Function Node is now deprecated and displays a warning icon with "Deprecated!" text in the node header
- Creating new Function nodes is no longer possible through the Add Node menu
- Existing Function nodes continue to function but should be migrated
- Toolkit Node, MCP Node, and Agent Node are the recommended replacements
- Hovering over the warning icon shows a tooltip with migration guidance
How to Identify Deprecated Function Nodes¶
Deprecated Function nodes are visually marked in the pipeline editor:
- Warning Icon: A yellow/orange warning triangle icon appears in the node header
- "Deprecated!" Text: Text next to the icon clearly indicates the deprecation status
- Tooltip: Hovering over the warning area shows: "This node is deprecated and will be removed in a future version. View Migration Guide" with a link to this guide
No Automatic Migration
There is no automatic migration from Function Nodes to Toolkit/MCP/Agent Nodes. You must manually replace Function Nodes in your existing pipelines following the steps in this guide.
What you need to do:
- Review pipelines containing Function nodes
- Choose the appropriate replacement: Toolkit, MCP, or Agent node
- Follow migration steps to update your workflow
- Test the migrated pipeline thoroughly
Why This Change Was Made
The Function Node has been deprecated in favor of more specialized and capable node types:
- Toolkit Node: Provides enhanced functionality for executing toolkit tools with structured output support and better configuration options
- MCP Node: Dedicated node for Model Context Protocol servers with specialized MCP tool handling
- Agent Node: Enables execution of AI agents with task-based instructions and enhanced capabilities
These replacement nodes provide clearer semantics, better maintainability, and enhanced functionality for different execution scenarios.
Migration Options¶
You have three supported replacements, each suited for different use cases:
Toolkit Node¶
For Standard Toolkit Operations
Toolkit Node is the recommended replacement when your Function node executes tools from standard ELITEA toolkits (Jira, GitHub, Confluence, etc.).
Choose Toolkit when:
- Your Function node uses tools from ELITEA toolkits
- You need structured output support
- You want enhanced configuration options for toolkit execution
- You're working with external service integrations
Best for: External API calls, service integrations, toolkit-based operations
Key Advantages:
- Full functionality coverage of deprecated Function Node for toolkits
- Structured output configuration support
- Enhanced input/output mapping capabilities
- Better toolkit tool management
MCP Node¶
For Model Context Protocol Servers
MCP Node is the recommended replacement when your Function node executes tools from MCP servers.
Choose MCP when:
- Your Function node uses MCP server tools
- You're working with Model Context Protocol integrations
- You need MCP-specific tool filtering and configuration
- You want dedicated MCP server support
Best for: MCP server integrations, Model Context Protocol operations
Key Advantages:
- Dedicated MCP server support
- MCP-specific tool filtering
- Enhanced MCP tool discovery
- Structured output for MCP operations
Agent Node¶
For AI Agent Execution
Agent Node is the recommended replacement when your Function node's logic can be better expressed as AI agent tasks or when you need intelligent decision-making.
Choose Agent when:
- Your Function node's behavior can be delegated to an AI agent
- You need intelligent task execution with natural language instructions
- You want to leverage pre-configured agents with specialized capabilities
- Your workflow requires LLM-based decision making
Best for: AI-driven tasks, intelligent workflows, agent orchestration
Key Advantages:
- Natural language task instructions
- Access to pre-configured agents
- Enhanced AI capabilities
- Flexible input mapping with task and chat_history support
Migration Steps: Function → Toolkit¶
Follow these steps to migrate a Function node that uses toolkit tools to a Toolkit node:
Step 1: Review the Existing Function Node
- Navigate to Pipelines in the main menu
- Open the pipeline containing the Function node
- Click the Configuration tab
- Select the Flow tab to view the pipeline flow diagram
- Locate the Function node - it will display with a warning icon and "Deprecated!" text in the node header
- Click on the Function node to open its configuration panel
- Review its current configuration:
- Toolkit: Note which toolkit is selected (e.g., "confluence_toolkit")
- Tool: Note which specific tool is selected (e.g., "read_page_by_id")
- Input: Review input state variables
- Output: Review output state variables
- Input Mapping: Document all parameter mappings
- Interrupt Settings: Note any interrupt configurations
Step 2: Add a Toolkit Node
- In the same Flow tab, click the Add Node button (+ icon)
- Select Toolkit from the node menu under Execution Nodes
- The new Toolkit node will appear on the canvas
- Position it near the deprecated Function node for easy comparison
Step 3: Configure the Toolkit Node
Configure the Toolkit node with the same toolkit and tool as your Function node:
- Click on the Toolkit node to open its configuration panel
- Set the Toolkit field:
- Select the same toolkit that was selected in the Function node
- Example: Select "confluence_toolkit" from the dropdown
- Set the Tool field:
- After selecting the toolkit, the Tool dropdown will appear
- Select the same tool that was used in the Function node
- Example: Select "read_page_by_id"
- Configure Input:
- Select the same input state variables that were used in the Function node
- Example: If Function node had
page_id,input, select those same variables
- Configure Output:
- Select the same output state variables that were used in the Function node
- Example: If Function node output to
page_content,messages, configure the same
- Set up Input Mapping:
- Recreate all parameter mappings from the Function node
- The Input Mapping section displays parameters required by the selected tool
- For each parameter, configure the same type and value as in the Function node:
- Variable: Direct state reference (e.g.,
page_id) - F-String: Formatted string with variables (e.g.,
Page ID: {confluence_page_id}) - Fixed: Static value (e.g.,
123456789)
- Variable: Direct state reference (e.g.,
- Configure Structured Output (if needed):
- Toolkit nodes support structured output configuration (Function nodes did not)
- Enable if you want to enforce a specific output schema
- Configure Interrupt Settings:
- Copy interrupt before/after settings from the Function node
- Example: Enable "Interrupt after" if it was enabled in the Function node
Step 4: Reconnect the Workflow
- Disconnect the incoming connection to the Function node:
- Click on the edge connecting to the Function node
- Press
Deleteor click the remove icon
- Connect the Toolkit node:
- Drag a connection from the previous node to the Toolkit node's input handle
- Example: Connect from "Data Input Node" to the new Toolkit node
- Connect the Toolkit outputs:
- Drag a connection from the Toolkit node's output handle to the next node in the workflow
- Example: Connect to "Results Processor Node"
- Verify all connections match the original Function node's flow
Before Migration:
Function Node → END
state:
input:
type: str
messages:
type: list
entry_point: Function 1
interrupt_after: []
nodes:
- id: Function 1
type: function
input:
- input
input_mapping:
page_id:
type: fixed
value: '3703049'
skip_images:
type: fixed
value: false
output:
- messages
structured_output: false
tool: read_page_by_id
toolkit_name: Confluence
transition: END
After Migration:
Toolkit Node → END
state:
input:
type: str
messages:
type: list
entry_point: Toolkit 1
interrupt_after: []
nodes:
- id: Toolkit 1
type: toolkit
input:
- input
input_mapping:
page_id:
type: fixed
value: '3703049'
skip_images:
type: fixed
value: false
output:
- messages
structured_output: false
tool: read_page_by_id
toolkit_name: Confluence
transition: END
Step 5: Remove the Deprecated Function Node
- Click on the Function node to select it
- Click the Delete icon (trash can) or press
Deletekey - Confirm the deletion
- The Function node is now removed from the pipeline
Step 6: Save and Test
- Click Save to save the pipeline configuration
- Navigate to the Execution tab
- Run the pipeline with test inputs
- Verify that:
- The Toolkit node executes the same tool as before
- Input/output handling works correctly
- All parameter mappings function as expected
- All workflow connections function properly
Migration Steps: Function → MCP¶
Follow these steps to migrate a Function node that uses MCP server tools to an MCP node:
Step 1: Review the Existing Function Node
- Navigate to Pipelines in the main menu
- Open the pipeline containing the Function node
- Click the Configuration tab
- Select the Flow tab to view the pipeline flow diagram
- Locate the Function node using an MCP server tool - it will display with a warning icon and "Deprecated!" text in the node header
- Click on the Function node to open its configuration panel
- Review its current configuration:
- Toolkit: Note which MCP server is selected (e.g., "GitHub MCP")
- Tool: Note which specific MCP tool is selected (e.g., "get_file_contents")
- Input: Review input state variables
- Output: Review output state variables
- Input Mapping: Document all parameter mappings
- Interrupt Settings: Note any interrupt configurations
Step 2: Add an MCP Node
- In the same Flow tab, click the Add Node button (+ icon)
- Select MCP from the node menu under Execution Nodes
- The new MCP node will appear on the canvas
- Position it near the deprecated Function node for easy comparison
Step 3: Configure the MCP Node
Configure the MCP node with the same MCP server and tool as your Function node:
- Click on the MCP node to open its configuration panel
- Set the Toolkit field:
- Select the same MCP server that was selected in the Function node
- MCP servers appear in the toolkit dropdown with "(MCP)" suffix
- Example: Select "GitHub MCP" from the dropdown
- Set the Tool field:
- After selecting the MCP server, the Tool dropdown will appear
- Select the same MCP tool that was used in the Function node
- Example: Select "get_file_contents" from available MCP tools
- Configure Input:
- Select the same input state variables that were used in the Function node
- Example: If Function node had
owner,repo,path, select those same variables
- Configure Output:
- Select the same output state variables that were used in the Function node
- Example: If Function node output to
file_content,messages, configure the same
- Set up Input Mapping:
- Recreate all MCP tool parameter mappings from the Function node
- The Input Mapping section displays MCP tool parameters
- For each parameter, configure the same type and value as in the Function node:
- Variable: Direct state reference (e.g.,
owner,repo,path) - F-String: Formatted string with variables (e.g.,
{repo_owner}/{repo_name}) - Fixed: Static value (e.g.,
ProjectAlitafor owner,projectalita.github.iofor repo)
- Variable: Direct state reference (e.g.,
- Configure Structured Output (if needed):
- MCP nodes support structured output configuration (Function nodes did not)
- Enable if you want to enforce a specific output schema for MCP responses
- Configure Interrupt Settings:
- Copy interrupt before/after settings from the Function node
- Example: Enable "Interrupt after" if it was enabled in the Function node
Step 4: Reconnect the Workflow
- Disconnect the incoming connection to the Function node:
- Click on the edge connecting to the Function node
- Press
Delete
- Connect the MCP node:
- Drag a connection from the previous node to the MCP node's input handle
- Example: Connect from "Repository Input Node" to the new MCP node
- Connect the MCP outputs:
- Drag a connection from the MCP node's output handle to the next node in the workflow
- Example: Connect to "Content Processor Node"
- Verify all connections match the original Function node's flow
Before Migration:
Function Node (MCP) → END
state:
file_content:
type: str
value: ''
file_path:
type: str
value: ''
input:
type: str
messages:
type: list
entry_point: Function 1
interrupt_after: []
nodes:
- id: Function 1
type: function
input:
- input
- file_path
input_mapping:
branch:
type: fixed
value: main
owner:
type: fixed
value: ProjectAlita
path:
type: variable
value: file_path
repo:
type: fixed
value: projectalita.github.io
output:
- messages
- file_content
structured_output: false
tool: get_file_contents
toolkit_name: MCP-GitHub
transition: END
After Migration:
MCP Node → END
state:
file_content:
type: str
value: ''
file_path:
type: str
value: tests.md
input:
type: str
messages:
type: list
entry_point: Mcp 1
interrupt_after: []
nodes:
- id: Mcp 1
type: mcp
input:
- input
input_mapping:
branch:
type: fixed
value: main
owner:
type: fixed
value: ProjectAlita
path:
type: variable
value: file_path
repo:
type: fixed
value: projectalita.github.io
output:
- file_content
- messages
structured_output: false
tool: get_file_contents
toolkit_name: MCP-GitHub
transition: END
Step 5: Remove the Deprecated Function Node
- Click on the Function node to select it
- Click the Delete icon (trash can) or press
Deletekey - Confirm the deletion
- The Function node is now removed from the pipeline
Step 6: Save and Test
- Click Save to save the pipeline configuration
- Navigate to the Execution tab
- Run the pipeline with test inputs
- Verify that:
- The MCP node executes the same MCP tool as before
- Input/output handling works correctly
- All MCP parameter mappings function as expected
- MCP server connection is maintained
- All workflow connections function properly
Migration Steps: Function → Agent¶
Follow these steps to migrate a Function node to an Agent node when the function's logic can be better expressed as an AI agent task:
Step 1: Analyze Function Logic for Agent Suitability
- Navigate to Pipelines in the main menu
- Open the pipeline containing the Function node
- Click the Configuration tab
- Select the Flow tab to view the pipeline flow diagram
- Analyze the Function node to determine if it's suitable for agent migration:
- Good candidates: Functions that perform complex reasoning, content generation, analysis, or decision-making
- Poor candidates: Simple deterministic tool calls, API operations, or direct data transformations
- Example good candidate: A Function node that processes user stories and generates summaries
- Example poor candidate: A Function node that simply calls
confluence_toolkit.read_page_by_idwith static parameters
Step 2: Add an Agent Node
- In the same Flow tab, click the Add Node button (+ icon)
- Select Agent from the node menu under Interaction Nodes
- The new Agent node will appear on the canvas
- Position it near the deprecated Function node for easy comparison
Step 3: Configure the Agent Node
Configure the Agent node to replicate the Function node's behavior using an AI agent:
- Click on the Agent node to open its configuration panel
- Set the Agent field:
- Select an appropriate agent from the dropdown that can perform the Function node's task
- Agents must be added to the pipeline first (Configuration > Toolkits > Add Agent)
- Example: Select "Content Analysis Agent" to replace a content processing Function node
- Configure Input:
- Select the input states that the agent needs
- Example: If the Function node used
user_data,context, select those state variables
- Configure Output:
- Select the output states where agent results should be stored
- Example: If the Function node output to
processed_result, configure the same
- Set up Input Mapping:
- Configure the agent task and parameters to replicate Function behavior
- Common Agent Parameters:
- task: The main instruction/prompt for the agent
- chat_history: Conversation history (messages array)
- Custom Variables: Agent-specific parameters
- Example Task Mapping:
task: | Analyze the following user data and provide insights: User Data: {input.user_data} Context: {input.context_info} Perform the same analysis that was previously done by the toolkit function. Provide: 1. Key findings from the data 2. Recommendations based on the analysis 3. Summary in the same format as before - Example Chat History Mapping:
- Configure Interrupt Settings:
- Copy interrupt before/after settings from the Function node
- Example: Enable "Interrupt after" if it was enabled in the Function node
Step 4: Reconnect the Workflow
- Disconnect the incoming connection to the Function node:
- Click on the edge connecting to the Function node
- Press
Delete
- Connect the Agent node:
- Drag a connection from the previous node to the Agent node's input handle
- Example: Connect from "Data Input Node" to the new Agent node
- Connect the Agent outputs:
- Drag a connection from the Agent node's output handle to the next node in the workflow
- Example: Connect to "Results Processor Node"
- Verify all connections match the original Function node's flow
Before Migration:
After Migration:
Step 5: Remove the Deprecated Function Node
- Click on the Function node to select it
- Click the Delete icon (trash can) or press
Deletekey - Confirm the deletion
- The Function node is now removed from the pipeline
Step 6: Validate and Test
- Click Save to save the pipeline configuration
- Navigate to the Execution tab
- Run the pipeline with test inputs
- Verify that:
- The Agent node produces equivalent results to the Function node
- Input/output handling works correctly
- Task instructions properly guide the agent
- All workflow connections function properly
- Compare outputs: Ensure agent results match expected Function node behavior
- Adjust task instructions: If results differ, refine the agent task prompt
Best Practices¶
Choosing the Right Replacement Node
Use Toolkit Node when:
- Function node executes standard ELITEA toolkit tools
- You need deterministic, repeatable tool execution
- Working with external service integrations (Jira, GitHub, Confluence)
- Parameter mapping is straightforward and well-defined
- You want structured output support
Use MCP Node when:
- Function node executes Model Context Protocol server tools
- Working with MCP server integrations
- You need MCP-specific tool filtering
- Your workflow requires MCP server connections
- You want dedicated MCP support
Use Agent Node when:
- Function node's logic involves reasoning or analysis
- Task can be expressed as natural language instructions
- You need LLM-based decision making
- Working with content generation or complex processing
- You want to leverage pre-configured AI agents
General Migration Tips
- Migrate One at a Time: Update and test one Function node before moving to the next
- Keep Both Temporarily: Test the new node before removing the deprecated Function node
- Document Changes: Note any differences in behavior for your team
- Review Connections: Ensure all incoming and outgoing connections are preserved
- Use YAML View: Check the YAML tab to verify configuration correctness
- Test Thoroughly: Always test migrated pipelines with various inputs to ensure correct behavior
- Version Control Migration: After migrating, save as a new version, test all flows, then update the main (latest) version
Configuration Best Practices
For Toolkit/MCP Nodes:
- Map All Required Parameters: Ensure all required parameters from the Function node are mapped
- Preserve Parameter Types: Use the same type (Variable, F-String, Fixed) as in the Function node
- Enable Structured Output: Take advantage of structured output support when needed
- Verify Tool Selection: Double-check that the correct toolkit and tool are selected
For Agent Nodes:
- Write Clear Task Instructions: Provide detailed, unambiguous task descriptions
- Include Context: Pass relevant context through chat_history or task parameters
- Test Task Prompts: Verify agent task instructions produce expected results
- Map Custom Variables: Configure any agent-specific custom variables appropriately
Example Best Practice:
# Toolkit Node - Good Practice
✔️ Good: Complete parameter mapping
toolkit: confluence_toolkit
tool: read_page_by_id
input_mapping:
page_id:
type: variable
value: confluence_page_id
expand:
type: fstring
value: "body.storage,version"
status:
type: fixed
value: current
# Toolkit Node - Poor Practice
✘ Avoid: Missing required parameters
toolkit: confluence_toolkit
tool: read_page_by_id
input_mapping:
# Missing page_id - will cause errors
expand:
type: fixed
value: body.storage
Troubleshooting¶
Toolkit/MCP Node Issues
Problem: Toolkit/MCP node doesn't execute the expected tool
Solutions:
- Verify the selected toolkit/MCP server matches the one from the Function node
- Check that the tool selection is correct
- Ensure input/output state configurations are correct
- Verify all required parameters are mapped in Input Mapping
- Review YAML configuration for syntax errors
Example Error:
Error: Tool 'read_page_by_id' not found in toolkit 'confluence_toolkit'
Solution: Ensure the toolkit name and tool name are correct. Check that the toolkit is properly configured and the tool exists.
Problem: Input Mapping parameters are missing or incorrect
Solutions:
- Review the Function node's original input mapping configuration
- Verify all required parameters are mapped
- Check that parameter types (Variable, F-String, Fixed) are appropriate
- Ensure state variables referenced in mappings exist
- Test with simplified mappings first, then add complexity
Example Error:
Error: Missing required parameter 'page_id' for tool execution
Solution: Add input mapping:
page_id:
type: variable
value: confluence_page_id
Problem: Structured output configuration causes errors
Solutions:
- Verify structured output schema is valid
- Check that output state variables can accommodate the structured format
- Test without structured output first, then add it incrementally
- Review schema format and requirements
Agent Node Issues
Problem: Agent node doesn't produce expected results
Solutions:
- Review and refine the task instructions
- Ensure task description is clear and detailed
- Verify the selected agent has appropriate capabilities
- Check that input parameters (task, chat_history) are correctly mapped
- Test agent separately to verify its behavior
Example Error:
Error: Agent produces incorrect output format
Solution: Refine task instructions to specify exact output format:
task: |
Analyze the data and provide results in this exact format:
1. Key Findings: [list]
2. Recommendations: [list]
3. Summary: [paragraph]
Problem: Agent task field is empty or not configured
Solutions:
- Ensure the task parameter is configured in Input Mapping
- Provide a clear, descriptive task instruction
- Use F-String format to include dynamic context:
task: "Process {input.data_type} data" - Verify task instructions guide the agent to replicate Function node behavior
Connection Issues
Problem: Connections are lost after migration
Solutions:
- Manually reconnect nodes after adding the replacement node
- Verify each handle connects to the correct target
- Check that incoming connection to the new node is established
- Save pipeline after verifying all connections
- Use YAML view to confirm connections are properly configured
Known Limitation
When replacing nodes that are followed by Decision, Condition, or Router nodes, connections may be lost. Document connections before migration (screenshots or YAML backup), then manually reconnect after replacement.
State Variable Issues
Problem: State variables not accessible in new node
Solutions:
- Verify input state variables are defined in pipeline state
- Check that state variable names match exactly
- Ensure state variables are populated before the node executes
- Review state configuration in YAML view
Comparison Table¶
| Feature | Function Node | Toolkit Node | MCP Node | Agent Node |
|---|---|---|---|---|
| Status | Deprecated (still works) | Active | Active | Active |
| Can Create New | No (since v2.0.0 B2) | Yes | Yes | Yes |
| Primary Use Case | Toolkit/MCP tool execution | Toolkit tool execution | MCP server tool execution | AI agent task execution |
| Structured Output | Not supported | Supported | Supported | Via agent configuration |
| Input Mapping | Basic | Enhanced | Enhanced | Enhanced (task-based) |
| Tool Selection | Toolkit + MCP | Toolkit only | MCP only | Agent selection |
| Best For | Legacy pipelines only | Service integrations, API calls | MCP server operations | AI-driven tasks, reasoning |
| Recommended | No - migrate away | Yes - for toolkit operations | Yes - for MCP operations | Yes - for agent tasks |
Related Documentation¶
Additional Resources
- Toolkit Node - Detailed Toolkit node documentation
- MCP Node - Model Context Protocol node documentation
- Agent Node - Agent node documentation
- Pipeline States - Understanding state variables used in pipelines
- Node Connectors - How to connect nodes in pipelines
- YAML Configuration - Complete YAML syntax reference
- Flow Editor - Visual pipeline editing interface







