A single prompt agent runs the whole call from one prompt (general_prompt) and one list of functions (general_tools). It suits open conversations where the agent answers questions, collects a few details and takes an action: front desks, FAQ lines, simple booking and message taking.
The prompt and functions live on a Retell LLM resource. The agent points at it with response_engine: { "type": "retell-llm", "llm_id": "llm_..." }. A Retell LLM with no states is a single prompt agent.
Create one#
Open the create dialog#
On Agents, click Create an Agent. Under Type, choose Single prompt.
Pick a starting point#
With Engine on New from a template, choose Build from scratch or a template. Templates fill the prompt, voice, starter functions and post-call fields.
Create#
Click Create agent. The editor opens on a new draft.
To share one prompt between several agents, set Engine to Reuse an existing LLM and pick it. See Choose an agent type.
Write the prompt#
Type the prompt in the large editor. The editor:
- Highlights lines that start with
#as headings and highlights{{variables}}. - Offers an Insert variable list when you type
{{. The list holds your default dynamic variables and the common system variables. - Shows the character count and an estimated token count (characters divided by 4) in the footer.
A prompt that works well on the phone usually has sections for identity, style, the task, and rules for edge cases. See Prompt engineering for structure and examples.
Add functions#
Open Functions and click Add to give the agent tools. Every tool has a name (letters, numbers, _ and -, up to 64 characters) and a description that tells the model when to use it. The model decides when to call a function from the description and the prompt, so name the trigger in both places: "When the caller asks for billing, call transfer_to_billing."
See Functions and tools for each tool type.
What the model sees each turn#
Tried builds the system prompt from these parts, in this order:
- Your
general_prompt, with{{variables}}filled in. - A
## Handbooksection when any Agent Handbook option is on. - A short instruction about audio tags when expressive mode is on and the voice can perform them.
- The caller's contact memory when contact memory reading is on, unless your prompt already contains
{{contact_memory}}. ## Additional context for this callwhen context was added to a live call with Update live call.
When a knowledge base is attached, the passages retrieved for the current turn are added under ## Related Knowledge Base Contexts. The conversation history and the function definitions are sent with the prompt.
Fields#
These fields are on the Retell LLM. Set them in the editor, or with Create Retell LLM and Update Retell LLM.
| Field | Type | Default | Description |
|---|---|---|---|
general_prompt |
string | "" |
The prompt. |
general_tools |
array | [] |
Functions available for the whole call. |
begin_message |
string or null | null |
First line. null lets the model write it; "" waits for the caller. See Welcome message. |
start_speaker |
agent or user |
agent |
Who speaks first. |
begin_after_user_silence_ms |
integer or null | null |
When the user speaks first, the agent starts after this much silence. |
model |
string | gpt-5.6-terra |
The language model. See LLM options. |
model_temperature |
number 0 to 1 | 0 |
Randomness of replies. |
tool_call_strict_mode |
boolean | true |
Function arguments always match their JSON schema. |
knowledge_base_ids |
array | [] |
Attached knowledge bases. |
kb_config |
object | { "top_k": 3, "filter_score": 0.6 } |
Retrieval settings. |
default_dynamic_variables |
object | {} |
Values used when a call does not provide a variable. |
mcps |
array | none | MCP servers whose tools the agent can call. |
states, starting_state |
array, string | [], null |
Add states to make a multi-prompt agent. |
Example#
curl https://api.tried.com.au/create-retell-llm \
-H "Authorization: Bearer $TRIED_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-terra",
"general_prompt": "## Identity\nYou are Ava, the receptionist for {{business_name}}.\n\n## Task\nAnswer questions about opening hours and services. If the caller wants a person, call transfer_to_front_desk.",
"begin_message": "Hi, thanks for calling {{business_name}}. How can I help?",
"general_tools": [
{ "type": "end_call", "name": "end_call", "description": "End the call when the caller is done." },
{
"type": "transfer_call",
"name": "transfer_to_front_desk",
"description": "Transfer the caller to a person at the front desk.",
"transfer_destination": { "type": "predefined", "number": "+61290000001" }
}
],
"default_dynamic_variables": { "business_name": "Harbourside Dental" }
}'Then create the agent with response_engine: { "type": "retell-llm", "llm_id": "<llm_id from the response>" }.
Limits#
- A prompt can be up to 32,768 tokens, estimated as characters divided by 4. The count covers the general prompt, the welcome message, the functions and the largest state. Saving a larger prompt returns a 400 error that suggests moving reference material to a knowledge base.
- Prompts above 4,000 tokens raise the billed LLM cost in proportion: a 6,000 token prompt bills the LLM part at 1.5 times. It appears as an
llm_prompt_lengthline incall_cost.
Tips#
Keep facts that change, such as prices and opening hours, in a knowledge base or in dynamic variables. The prompt stays short and you can update the facts without a new version.
- Test each change in Test LLM before you publish. Edit a turn and rerun it to compare replies.
- When the prompt grows sections for different stages of the call, move to multi-prompt or a conversation flow.
- The model only knows the current time if you give it: add
{{current_time}}to the prompt.