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

# Agent editor

> The main place you work on an agent: role and prompt, first message, voice, transcription, tools, knowledge, settings and integrations.

After creating an agent you land in the **agent editor** - this is where
you configure everything that determines call quality. The editor is
organized into tabs.

## The Role tab (most important)

The heart of the agent. Here you set:

* The agent's **name, description and avatar**. The avatar is uploaded from
  your machine - click the pencil on the picture and pick an image (PNG, JPG,
  WEBP or SVG). It is cropped to a square, scaled down and stored with the
  agent, so it shows up everywhere the agent does: the app, the website widget
  and a shared link. Nothing has to be uploaded to a server and no URL is
  needed.
* The **system prompt** - full instructions: who the agent is, what it
  knows about the company, how it runs the conversation, what it must not
  do. The editor highlights `{{variables}}` and suggests their names when
  you type `{{`
  (see [Template variables](/en/voice-agent/template-variables)).
* The **first message** in two modes:
  * **Static** - the exact text spoken at the start,
  * **Dynamic** - an instruction for the LLM on how to generate the
    greeting (e.g. personalized with data from `initial_context`).
* **Who speaks first** - the agent opens the conversation, or waits for
  the caller to speak.
* **Improvement suggestions (AI)** - a panel with prompt improvement
  proposals generated from real calls. You review each suggestion and
  apply it with one click - nothing changes without your approval
  (see [Post-call analysis](/en/features/post-call-analysis)).

### Phonetic spelling (added automatically)

Whatever the agent generates goes straight into a speech synthesizer - and the
synthesizer reads "24/7" as "twenty four slash seven", spells "e.g." out letter
by letter, and only gets "0.4" right by accident. So the platform appends a
hard phonetic-spelling rule to **every** system instruction: numbers, amounts,
times and dates spelled out ("at nine o'clock", not "at 9:00"), no
abbreviations ("for example", not "e.g."), symbols as words ("at" for "@",
"dot" for "."), phone numbers and codes dictated in groups.

The rule is added at call time rather than to the prompt text, so:

* it also covers prompts written by hand or pasted in from elsewhere,
* it cannot be deleted by editing the prompt,
* you do not need to repeat it in your own instructions (and if you already
  have it there, it is not duplicated).

Tool arguments are the exception - a booking date reaches `book_appointment`
in its normal format, because nobody speaks it. The platform picks the
language of the rule (Polish or English) from the transcription language set
in the **Transcriber** tab.

## Saving

The whole editor has **one Save button** - the green one in the top right. It
saves everything at once: name, description, prompt, first message and the
settings on the other tabs. **⌘S** does the same. While you have unsaved edits
the header shows a yellow **Unsaved changes** marker.

<Note>
  The **Variables**, **Tools** and **Knowledge** tabs keep their own buttons
  ("Save variables", "Save tools", "Save documents"). That is not a duplicate -
  those three are stored separately from the agent configuration. Everything else
  goes through the header button alone.
</Note>

## The other tabs

| Tab | What you configure |
| - | - |
| **Voice** | The agent's voice (TTS) - see [Voice](/en/configurations/voice) |
| **Transcription** | Speech recognition (STT) and its timing - see [Transcription](/en/configurations/transcriber) |
| **Tools** | Actions invoked during the call - see [Tools](/en/voice-agent/tools) |
| **Variables** | The agent's template variables - see [Variables](/en/voice-agent/template-variables) |
| **Knowledge** | [Knowledge base](/en/features/knowledge-base) documents attached to the agent (RAG) |
| **Memory** | Personal assistant only - see [Personal assistant](/en/voice-agent/personal-assistant). The tab is hidden for every other agent |
| **Settings** | [Call limits](/en/billing/pricing#call-length-ceiling), voicemail detection, [call recording and the notice before the greeting](/en/features/data-retention#call-recording), interruption sensitivity, [backchanneling](/en/features/backchannel), ending phrases (a Polish agent built from a template hangs up on "do widzenia", "do usłyszenia", "do zobaczenia" and "dziękuję, to wszystko"; an English one on "goodbye" and "bye"), summary language |
| **Integrations** | Post-call SMS, CRM (HubSpot/Pipedrive), Slack, Zapier, email, [Cal.com](/en/integrations/calendar/calcom) bookings, [Google Sheets notes and lookups](/en/integrations/overview), [lead sources](/en/integrations/leads/lead-webhook) (website form, Google Ads, [new CRM contact](/en/integrations/leads/crm-leads)), [missed-call callbacks](/en/integrations/leads/missed-calls) |

The **Integrations** tab carries a search box and an **All / On / Off** filter
above the cards, so finding out what this agent has wired up does not mean
scrolling it. Cards that are off sit two to a row; the one you switch on spans
the full width along with its settings.

In the post-call SMS text, **Insert variable** offers a ready list of what will
be filled in, the counter under the box shows how many paid messages the text
costs, and **Suggest a text** drafts a few options from the agent's system
prompt - see
[The after-call SMS](/en/integrations/overview#the-after-call-sms).

## Duplicating an agent

The fastest way to build a second agent for the same company is to start from
the one that already works. In the **⋯** menu next to an agent - on the **Voice
agents** list and in the editor's sidebar - choose **Duplicate**. The copy opens
straight away.

Everything that defines how the agent behaves comes across: the prompts, the
voice, the transcription, the integrations, the in-call actions and the
collected variables.

<Note>
  The phone number and the embed token are **not** copied. A number answers for
  one agent, and a copy that claimed it would take the original off the air.
  Assign a number to the copy on the **Telephony** page (side menu) with
  **Assign to agent**, and enable its widget with its own embed snippet.
</Note>

## Testing

From the editor you can launch a **web call** (from the browser) or a
**phone call** right away - and after each call you'll see an AI analysis
and an execution trace that point out what to improve.

In the transcript - live and in the call history - every tool call is its own
card: the tool's name, whether it came back, and the time. Expanding the card
shows **Request** (the arguments the agent called it with) and **Response**
(what the tool returned). That is what answers "why did the agent say
it found nothing" - you can see what it searched for and what it got back. A
call that never came back stays in the transcript, marked as still running.

## What runs underneath

Under the hood, the agent is a graph of nodes (start, conversation stages,
ending). The flow canvas is **hidden in the app for now** - you don't need to
touch it, because templates and the editor configure the graph for you. To see
what actually happens underneath, and where the settings that used to live on
the canvas are configured today, see
[Conversation flow (under the hood)](/en/voice-agent/conversation-flow).


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