> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voiceblox.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting Nodes

> Handle types, connection validation rules, and auto-routing behavior.

# Connecting Nodes

Voiceblox enforces typed connections — not every node can connect to every other node. The rules are defined in `connectionRules.ts` and validated both in the UI and at runtime.

## Handle types

| Type | Color | Used for |
| - | - | - |
| `control` | Purple | Conversation step chain |
| `framework` | Blue | Start → Framework link |
| `context` | Green | Tools/context injection (MCP, Exa) |
| `llm` | Gray | LLM component wiring |
| `tts` | Gray | TTS component wiring |
| `stt` | Gray | STT component wiring |
| `persona` | Gray | Persona component wiring |
| `avatar` | Gray | Avatar component wiring |

## Connection rules

### Component → Framework

| Source node | Connects to | Handle |
| - | - | - |
| Persona | Framework | `persona_in` |
| LLM | Framework | `llm_in` |
| TTS | Framework | `tts_in` |
| STT | Framework | `stt_in` |
| Avatar | Framework | `avatar_in` |

### Conversation chain

| Source node | Target handle | Notes |
| - | - | - |
| Framework | Start `framework_in` | Starts the step chain |
| Start | Any step `in` | One outgoing connection |
| Burst | Any step `in` or Framework `transfer_in` | One outgoing connection |
| Open Talk | Any step `in` or Framework `transfer_in` | One outgoing connection |
| Timer | Any step `in` or Framework `transfer_in` | One outgoing connection |
| If/Else | Two targets: `true` and `false` handles | Cannot target Start, If/Else, or Categorize |
| Categorize | One target per category | Cannot target Start, If/Else, or Categorize |
| End | Webhook `in` | Optional, fires webhook before disconnect |
| Transfer | Framework `transfer_in` | One outgoing connection |

### Integration → Framework

| Source node | Connects to | Handle |
| - | - | - |
| MCP | Framework | `tools_in` (unlimited) |
| Exa | Framework | `tools_in` (unlimited) |

## Auto-routing

When you drag an edge from an output handle and release it on a target node (not a specific handle), Voiceblox automatically routes the connection to the correct handle using `findTargetRule()`. This works for all component nodes wiring into the Framework node.

## Validation

Invalid connections are rejected visually during drag. If a connection would violate the rules (wrong handle type, wrong source category, max connections exceeded), the edge snaps back and the connection is not created.

<Note>
  IfElse and Categorize nodes cannot immediately follow a Start node. You need at least one Burst, Open Talk, or Timer step between Start and a branching node.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.