Decision guides
Quick guides for choosing between the most common pairs of SimplAI primitives.
Agent vs. Tool
Use an Agent when:
- The behaviour is goal-driven — the agent decides what to do next based on user input and intermediate results.
- You want autonomous tool selection — the agent picks which tools to call from a configured set.
- You need built-in capabilities like memory, reflection, citations, planning, sub-agents.
- You want a polished conversational surface out of the box.
Use a Tool when:
- The behaviour is deterministic — you know the exact step sequence.
- You want explicit control over inputs and outputs.
- You're building a callable function that another agent or system invokes.
- You need to chain it inside another Tool or Agent.
A common pattern: build deterministic capabilities as Tools, then let an Agent orchestrate them based on user intent.
Tool vs. Tool in Conversation mode
Use a default Tool (Conversation mode OFF) when:
- The Tool is called programmatically — by an API, another Agent, or a workflow.
- The caller expects a structured JSON response with multiple fields.
- The input is typed: text, number, file URL, JSON, options.
Use Conversation mode ON when:
- You're building a copilot / chat assistant / in-product helper.
- The input is a stream of user messages (Chat History).
- The output is one assistant reply per turn.
- You'd previously have built a separate AI Chain primitive (now unified into this mode).
Both modes share every intermediate node, branching, guardrail, versioning, and credits behaviour — only the Start Point and Final node differ.
Voice Agent vs. text Agent
Use a Voice Agent when:
- The end user speaks and listens (phone, mobile mic, web voice widget).
- You need interruption / barge-in handling.
- Time-to-first-speech matters more than richness of output.
- You want telephony (inbound or outbound calling).
Use a text Agent when:
- The surface is chat / email / SMS / any text-based UI.
- You need features that don't translate to voice: Browser Use, Artifacts, Reflection, Follow-up Messages.
Voice Agents are a separate resource from text Agents. A voice agent never appears in the Agents list.
Sync vs. Async vs. Realtime API (Voice Agents)
Sync — best for: low-latency interactions, conversational tools. Pipeline: STT → LLM → TTS, no queue. Tools must be in Sync mode.
Async — best for: tool-heavy or slower workflows, where waiting a beat is acceptable. Pipeline: STT → LLM → TTS routed through the dedicated voice priority queue.
Realtime API — best for: very low-latency, tool-light agents. Uses the OpenAI Realtime API instead of the STT → LLM → TTS pipeline. Constrains LLM / STT / TTS provider choice to OpenAI.
If you need the fastest possible TTFS with simple agents → Realtime API. If you need full control over providers / voices with low latency → Sync. If you have heavy orchestration that benefits from queueing → Async.
SDK vs. REST API
Use the SDK when:
- Your application is in Python.
- You need built-in handling of streaming, polling, retries, backoff, scheduling, bulk runs.
- You want typed exceptions and idiomatic interfaces.
Use the REST API when:
- You're integrating from a non-Python language without an SDK.
- You're doing a one-off integration or curl test.
- You're working from a low-code platform.
Sharing options for an agent
- Internal Marketplace — share with your tenant. Cloners can discover, try, and clone. See Templates & Marketplace → Sharing.
- Export / Import — share a config artifact across deployments / tenants / environments. See Studio → Import / Export.
- Deployment surfaces — expose the agent to end-users via API, Embed, Webhooks, A2A, or telephony. See Connections & Integrations.
The three aren't exclusive — most production agents use Deployment surfaces + Export/Import for environment promotion + Marketplace for internal reuse.