Agents
How to write an agent: the AI's role, greeting, fields to collect, FAQ, handoff rules, voice and speaking rate.
An agent decides what the AI says, what it collects and when it hands off to a person. One agent can serve many tenants. Create agents in the dashboard (Agents), with the API (POST /v1/agents) or over MCP (create_agent).
Conversations are in Japanese today, so the text you write (greeting, persona, labels, rules, FAQ) is in Japanese. Field keys and other identifiers are ASCII.
Shape#
{
"name": "Dental reception",
"config": {
"greeting": "お電話ありがとうございます。さくら歯科です。ご用件をお話しください。",
"persona": "落ち着いた丁寧な受付。1 回の発話は 2 文まで",
"fields": [
{ "key": "name", "label": "お名前", "required": true },
{ "key": "phone", "label": "折り返しの電話番号", "required": true, "type": "phone" },
{ "key": "purpose", "label": "ご用件", "required": true }
],
"handoff_when": ["人と話したいと言われた", "急な痛みや腫れがある"],
"closing": "承知しました。担当者から折り返しご連絡します。",
"closing_answered": "ほかにご不明な点があれば、またお電話ください。",
"faq": [
{ "q": "診療時間は", "a": "平日は 9 時から 18 時、土曜は 13 時までです。日曜・祝日は休みです。" }
],
"domain": "歯科医院",
"vocabulary": ["インプラント", "ホワイトニング", "定期検診"],
"voice": "Kore",
"speaking_rate": 1.15
}
}Fields#
| Field | Required | Description | Limit |
|---|---|---|---|
greeting |
yes | The first thing the AI says, read out as written | 300 chars |
persona |
yes | Role and manner of speaking (e.g. calm, polite receptionist; at most two sentences per turn) | 1,000 chars |
fields |
yes | What to collect (below) | 1–20 |
handoff_when |
yes | When to hand off to a person (below). May be an empty array | 20 items, 200 chars each |
closing |
yes | What the AI says when it has collected everything | 300 chars |
closing_answered |
What it says when an FAQ answer settled the call | 300 chars | |
faq |
Frequent questions [{ q, a }] |
50; q 200 chars, a 1,000 chars | |
domain |
Line of business (a hint for speech recognition) | 200 chars | |
vocabulary |
Industry terms and proper nouns (hints for speech recognition) | 200 items, 50 chars each | |
voice |
Voice name (below). Defaults to Aoede |
||
speaking_rate |
Speaking rate (below). Defaults to 1.15 |
||
tools |
Your API endpoints the AI can call during a call. See Tools | 10 | |
connectors |
Connections such as Google Calendar or Slack. See Connections | 10 |
Unknown keys are dropped. Invalid input returns 422 invalid_config with one entry per problem in details.
Fields to collect#
{ "key": "phone", "label": "折り返しの電話番号", "required": true, "type": "phone" }| Key | Description |
|---|---|
key |
Name in the call's fields. Starts with a lowercase letter; lowercase letters, digits and _, up to 40 chars. Must be unique |
label |
How the AI asks for it (up to 100 chars) |
required |
When true, the call does not finish until it is collected |
type |
text (default) or phone. Phone numbers are stored as digits only, and the AI asks again unless the number is 10 or 11 digits starting with 0 (Japanese numbers) |
The AI reads names and phone numbers back to confirm them; phone numbers are read in three groups.
Handoff rules#
When a rule matches, the AI ends the conversation right away (without asking for a name and so on) and the outcome is handoff. On the phone you then transfer the call to a person (Phone).
"handoff_when": ["人と話したいと言われた", "怒っている", "急な痛みや腫れがある", "聞き取れない状態が 2 回続いた"]Write rules as plain sentences. Avoid broad rules (such as "the caller asked a question"), or most calls will be handed off.
FAQ#
When asked, the AI answers using only these answers. Anything not written here is not guessed; the AI offers a callback instead. When an answer settles the call, the outcome is answered and the AI closes with closing_answered.
Outcomes#
When the AI ends the conversation, the call's outcome is set.
outcome |
When |
|---|---|
completed |
All required fields were collected; staff will call back |
answered |
An FAQ answer settled the call |
handoff |
A handoff rule matched (connect a person now) |
hangup |
The caller stayed silent, even after being asked again |
error |
The conversation was cut off, or the voice server failed |
Voices#
Pick one of Google's Chirp 3 HD Japanese voices by name. You can listen to each voice in the dashboard (Agents).
| Name | Gender | Character |
|---|---|---|
Aoede (default) |
Female | Breezy |
Kore |
Female | Firm |
Leda |
Female | Youthful |
Zephyr |
Female | Bright |
Autonoe |
Female | Bright |
Laomedeia |
Female | Upbeat |
Sulafat |
Female | Warm |
Vindemiatrix |
Female | Gentle |
Achernar |
Female | Soft |
Despina |
Female | Smooth |
Erinome |
Female | Clear |
Pulcherrima |
Female | Forward |
Gacrux |
Female | Mature |
Callirrhoe |
Female | Easy-going |
Charon |
Male | Calm and informative |
Puck |
Male | Upbeat |
Orus |
Male | Firm |
Alnilam |
Male | Firm |
Fenrir |
Male | Excitable |
Achird |
Male | Friendly |
Iapetus |
Male | Clear |
Umbriel |
Male | Easy-going |
Algieba |
Male | Smooth |
Algenib |
Male | Gravelly |
Rasalgethi |
Male | Informative |
Schedar |
Male | Even |
Zubenelgenubi |
Male | Casual |
Sadachbia |
Male | Lively |
Sadaltager |
Male | Knowledgeable |
Enceladus |
Male | Breathy |
Speaking rate#
1.0 is normal speed. On the phone that tends to feel slow, so the default is 1.15. Choose one of these values.
| Value | Speed |
|---|---|
0.85 |
Very slow |
0.9 |
Slow |
0.95 |
A little slow |
1.0 |
Normal |
1.05 |
Barely faster |
1.1 |
Slightly faster |
1.15 |
A little faster (default) |
1.2 |
Faster |
1.25 |
Quite fast |
1.3 |
Fast |
1.4 |
Very fast |
1.5 |
Fastest |
Languages#
Conversations are in Japanese today. More languages are coming.
Versions#
Updating an agent (PUT /v1/agents/{id}) creates a new version. Calls already in progress keep the version they started with; the next call uses the new one. Each call records the version it used (agent.version), and GET /v1/agents/{id}?version= returns that version's config.
PUT takes the whole config; partial updates are not supported.
Assigning to tenants#
A tenant's agent_id is the default agent for its calls. You can override it per call: <Parameter name="agent"> on the phone, or agent_id in POST /v1/sessions for Web and apps.
An agent used by a tenant cannot be deleted (409 in_use). Change the tenant's agent_id first.
Tips#
- Putting "at most two sentences per turn" (
「1 回の 発話は 2 文まで」 ) in personamakes the AI easier to follow on the phone. - Collect as few fields as you can. Many required fields make calls long.
- Put industry terms, product names and place names in
vocabularyfor steadier recognition. - To try an agent quickly, talk to it from the Web in the test environment.