You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fixes, more handoff
* actually save files
* move handoff location
* add function name
* handoff tool top level
* properly link handoff docs from tools -> squads
Copy file name to clipboardExpand all lines: fern/squads.mdx
+19-17Lines changed: 19 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,7 +51,10 @@ We recommend using [Handoff Tools](/tools/handoff) to specify which destinations
51
51
"assistantId": "assistant-123",
52
52
"description": "Call this tool when the customer wants to talk about pricing"
53
53
}
54
-
]
54
+
],
55
+
"function": {
56
+
"name": "handoff_to_assistant_123"
57
+
}
55
58
}
56
59
]
57
60
},
@@ -94,7 +97,7 @@ To override the configuration of a saved assistant without modifying the underly
94
97
}
95
98
```
96
99
97
-
You may also define inline tools via assistant overrides through the `model` object (using `tools:append`), so that the assistant will only handoff if it is a part of this squad.
100
+
You may also define inline tools via `assistantOverrides`through the `tools:append` array, so that the assistant will only handoff if it is a part of this squad.
98
101
```json
99
102
{
100
103
"squad": {
@@ -111,22 +114,21 @@ You may also define inline tools via assistant overrides through the `model` obj
111
114
{
112
115
"assistantId": "saved-assistant-id",
113
116
"assistantOverrides": {
114
-
"model": {
115
-
"provider": "openai",
116
-
"model": "gpt-4o",
117
-
"tools:append": [
118
-
{
119
-
"type": "handoff",
120
-
"destinations": [
121
-
{
122
-
"type": "assistant",
123
-
"assistantId": "assistant-123",
124
-
"description": "Call this tool when the customer wants to talk about pricing"
125
-
}
126
-
]
117
+
"tools:append": [
118
+
{
119
+
"type": "handoff",
120
+
"destinations": [
121
+
{
122
+
"type": "assistant",
123
+
"assistantId": "assistant-123",
124
+
"description": "Call this tool when the customer wants to talk about pricing"
Copy file name to clipboardExpand all lines: fern/squads/handoff.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
2
title: Handoff Tool
3
3
subtitle: 'Transfer the call to another assistant.'
4
-
slug: tools/handoff
4
+
slug: squads/handoff
5
5
---
6
6
7
7
The handoff tool enables seamless call transfers between assistants in a multi-agent system. This guide covers all configuration patterns and use cases.
Copy file name to clipboardExpand all lines: fern/squads/silent-handoffs.mdx
+52-36Lines changed: 52 additions & 36 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,25 +1,25 @@
1
1
---
2
-
title: Silent Transfers
3
-
slug: squads/silent-transfers
2
+
title: Silent Handoffs
3
+
slug: squads/silent-handoffs
4
4
---
5
-
-**The Problem**: In traditional AI call flows, when transferring from one agent to another, announcing the transfer verbally can confuse or annoy callers and disrupt the conversation's flow.
6
-
-**The Solution**: Silent transfers keep the call experience _uninterrupted_, so the user doesn’t know multiple assistants are involved. The conversation flows more naturally, boosting customer satisfaction.
5
+
-**The Problem**: In traditional AI call flows, when handing off from one agent to another, announcing the handoff verbally can confuse or annoy callers and disrupt the conversation's flow.
6
+
-**The Solution**: Silent handoffs keep the call experience _uninterrupted_, so the user doesn’t know multiple assistants are involved. The conversation flows more naturally, boosting customer satisfaction.
7
7
8
8
If you want to allow your call flow to move seamlessly from one assistant to another _without_ the caller hearing `Please hold while we transfer you` here’s what to do:
9
9
10
10
1.**Update the Destination Assistant’s First Message**
11
11
- Set the assistant's `firstMessage` to an _empty string_.
12
12
- Set the assistant's `firstMessageMode` to `assistant-speaks-first-with-model-generated-message`.
13
13
14
-
2.**Update the Squad's assistant destinations messages**
15
-
- For every `members[*].assistantDestinations[*]`, set the `message` property to an _empty string_.
14
+
2.**Update the Squad's handoff messages**
15
+
- For every `members[*].model.tools/toolIds`, unset the `messages` property.
16
16
17
17
3.**Trigger the Transfer from the Source Assistant**
18
18
19
-
- In that assistant’s prompt, include a line instructing it to transfer to the desired assistant:
19
+
- In that assistant’s prompt, include a line instructing it to hand off to the desired assistant:
20
20
21
21
```json
22
-
trigger the transferCall tool with 'assistantName' Assistant.
22
+
trigger the 'handoff' tool with 'assistantName' Assistant.
23
23
```
24
24
25
25
- Replace `'assistantName'` with the exact name of the next assistant.
@@ -32,49 +32,65 @@ If you want to allow your call flow to move seamlessly from one assistant to ano
32
32
33
33
-**HPMA (Main Assistant)** is talking to the customer. They confirm the order details and then quietly passes the conversation to **HPPA (Payment Assistant)**.
34
34
-**HPPA** collects payment details without the customer ever hearing, `We’re now transferring you to the Payment Assistant.` It feels like one continuous conversation.
35
-
- Once payment is done, **HPPA**transfers the call again—this time to **HPMA-SA (Main Sub Assistant)**—which takes over final shipping arrangements.
35
+
- Once payment is done, **HPPA**hands off the call again—this time to **HPMA-SA (Main Sub Assistant)**—which takes over final shipping arrangements.
36
36
37
37
Everything happens smoothly behind the scenes!
38
38
39
39
## **Squad and Assistant Configurations**
40
40
41
-
Below are the key JSON examples you’ll need. These show how to structure your assistants and squads so they work together for silent transfers.
41
+
Below are the key JSON examples you’ll need. These show how to structure your assistants and squads so they work together for silent handoffs.
42
42
43
43
### **HP Payment Squad With SubAgent**
44
44
45
45
<Warning>
46
-
Make sure the `members[*].assistantDestinations[*].message` properties are set to an _empty string_.
46
+
Make sure the `members[*].model.tools.messages` properties are set to null or empty array.
@@ -160,7 +176,7 @@ Answer only questions related to the context.
160
176
3.Ask how many widgets the customer would like to purchase.
161
177
- Wait for the customer's response.
162
178
4.Confirm the order details with the customer.
163
-
- trigger the transferCall tool with Payment `HPPA` Assistant.
179
+
- trigger the handoff tool with Payment `HPPA` Assistant.
164
180
```
165
181
166
182
### **HPPA (Payment Assistant Prompt)**
@@ -200,7 +216,7 @@ any greetings or small talk.
200
216
3. Ask for the CVV number.
201
217
- Wait for the customer's response.
202
218
4. Confirm that the payment has been processed successfully.
203
-
- trigger the transferCall tool with Payment `HPMA-SA` Assistant.
219
+
- trigger the handoff tool with Payment `HPMA-SA` Assistant.
204
220
```
205
221
206
222
### **HPMA-SA (Main Sub Assistant Prompt)**
@@ -245,6 +261,6 @@ or small talk.
245
261
246
262
## **Conclusion**
247
263
248
-
By following these steps and examples, you can configure your call system to conduct **silent transfers** ensuring that callers experience a single, uninterrupted conversation. Each assistant does its job smoothly, whether it’s capturing payment, finalizing a shipping address, or collecting basic info.
264
+
By following these steps and examples, you can configure your call system to conduct **silent handoffs** ensuring that callers experience a single, uninterrupted conversation. Each assistant does its job smoothly, whether it’s capturing payment, finalizing a shipping address, or collecting basic info.
0 commit comments