---
title: "Call flow settings"
description: "Transfers, office hours, call, speech, welcome message, code actions, background audio and security settings."
---

> **For AI agents:** the complete documentation index is at [llms.txt](https://docs.trillet.ai/llms.txt). Append `.md` to any page URL for its markdown version.

{/* Generated by packages/mcp/scripts/gen-tool-reference.mjs from @trillet-ai/mcp v0.10.0. Do not edit by hand. */}

Transfers, office hours, call, speech, welcome message, code actions, background audio and security settings. 8 tools.

## `trillet_set_transfers`

**Set call transfers**

Replace the flow's transfer destinations (COMPLETE array; arrays replace wholesale). Transfers let the agent hand the call to humans: method warm (announce first), cold (blind), whisper, or agent (another AI flow). To let the model trigger them, also mention each transfer's friendly_name in the prompt. Set enableTransferInstructions true on settings when transfers exist (this tool does it automatically when the list is non-empty).

Flags: `writes` `destructive`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `transfers` | object[] | yes |  |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_office_hours`

**Set flow office hours**

Set the flow-level office hours (settings.OfficeHoursSettings, perDay shape with FULL day names). SEMANTICS: this DEFERS OUTBOUND calls to the next open slot (call shows as scheduled with pendingReason office_hours); it does NOT block inbound calls. To gate transfers by time use officeHoursRestriction/businessHoursRouting on the transfer instead.

Flags: `writes` `destructive` `idempotent`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `enabled` | boolean | yes |  |
| `timezone` | string | yes | IANA timezone, e.g. Australia/Melbourne |
| `per_day` | object (map) | yes | FULL day names as keys: \{"Monday": \{enabled, start "HH:MM", end "HH:MM"\}, ...\} |
| `blocked_dates` | string[] | no | ["YYYY-MM-DD"] Default: `[]`. |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_call_settings`

**Set call settings**

Update call behavior settings (deep-merges; only sent keys change). Covers silence handling, duration limits, voicemail detection, IVR navigation, recording, LLM cache, transcript redaction, and post-call analysis model.

Flags: `writes` `idempotent`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `end_call_on_silence` | number | no | Seconds of caller silence before ending |
| `silence_reminder_retries` | number | no |  |
| `max_call_duration` | number | no | Seconds (default 1800) |
| `max_call_duration_message` | string | no |  |
| `reminder_messages` | string[] | no |  |
| `post_call_analysis_model` | string | no | Default "gemini-2.5-flash" |
| `disable_metadata` | boolean | no | Stop auto-appending call metadata to in-call API requests (required for strict APIs) |
| `redact_transcription` | boolean | no |  |
| `enable_llm_cache` | boolean | no | CAUTION: also defers \{\{var\}\} substitution to speak-time |
| `voicemail_detection` | object | no |  |
| `ivr_handling` | object | no | Outbound IVR menu navigation. There is no separate dtmfSettings key; DTMF lives here. |
| `enable_recording` | boolean | no | settings.enableRecording (flow-level) |
| `enable_public_recording` | boolean | no |  |
| `customer_location` | string | no | IANA timezone used for time context and timestamps |
| `time_context_enabled` | boolean | no | Agent knows current date/time (on unless explicitly false) |
| `utilize_prior_calls_context` | boolean | no |  |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_speech_settings`

**Set speech settings**

Tune conversational feel: responsiveness (1-10, higher = replies faster), interruptionSensitivity (1-10, higher = easier for the caller to interrupt; 5.5 recommended), vadModel, preemptive generation, TTS pronunciation overrides, and welcome message behavior.

Flags: `writes` `idempotent`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `responsiveness` | number | no |  |
| `interruption_sensitivity` | number | no |  |
| `vad_model` | string | no | "stt" \| "default" \| "multilingualModel" |
| `enable_preemptive_generation` | boolean | no |  |
| `pronunciation` | object[] | no | TTS pronunciation overrides (how the agent SAYS words) |
| `welcome_message_interruptible` | boolean | no |  |
| `welcome_message_delay_ms` | number | no | 0-5000 ms |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_welcome_message`

**Set welcome message**

Set the greeting for inbound and/or outbound (and web test) calls. selected 'customMessage' speaks the exact text; 'aiFirst' lets the model generate from aiGreetingPrompt. NEVER also script a greeting inside the prompt (causes double greeting). Web/dashboard test calls use the Outbound greeting.

Flags: `writes` `idempotent`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `inbound_message` | string | no |  |
| `outbound_message` | string | no |  |
| `mode` | "customMessage" \| "aiFirst" | no | Default: `"customMessage"`. |
| `ai_greeting_prompt` | string | no | Only for mode aiFirst |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_code_actions`

**Set code actions (feature-gated)**

Replace the flow's code actions: Python functions the agent can run mid-call (\{name, description, code, variables[\{name,description\}]\}). FEATURE-GATED per workspace: non-whitelisted workspaces get the codeActions SILENTLY STRIPPED (the save returns 200 without them), this tool verifies persistence and reports if the workspace lacks access.

Flags: `writes` `destructive`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `code_actions` | object[] | yes |  |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_background_audio`

**Set background audio**

Set the flow's background audio (settings.backgroundNoise, deep-merges; only sent keys change): an ambient soundscape played under the whole call, a thinking sound while the model generates, and hold music during transfers, each with its own 0-1 volume. Use ambient_sound "none" to switch ambience off.

Flags: `writes` `idempotent`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `ambient_sound` | string | no | Ambient background sound: "none", "call_center.mp3", or "quiet_office.mp3" |
| `thinking_sound` | string | no | Sound played while the AI is thinking: "none" or "keyboard" |
| `hold_sound` | string | no | Hold music during transfers: only "none" is available (plays the platform Lobby Hold Music) |
| `ambient_volume` | number | no | Ambient volume 0-1 (default 0.5) |
| `thinking_volume` | number | no | Thinking-sound volume 0-1 (default 0.5) |
| `hold_volume` | number | no | Hold-music volume 0-1 (default 0.5) |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |

## `trillet_set_security_settings`

**Set security and access settings**

Update the flow's security, access and memory settings (deep-merges; only sent keys change). Covers HIPAA compliance (settings.security.hipaaCompliance; enabling it also turns call recording off, as the dashboard does), public access for demo links (settings.security.publicAccess), redirect-incoming-calls-to-a-human (settings.redirectToHuman: forwards inbound calls straight to a number, optionally gated by conditions), and identifier-based web demo memory (settings.identifierBasedWebDemoMemory; needs utilizePriorCallsContext on, see trillet_set_call_settings).

Flags: `writes` `idempotent`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `flow_id` | string | yes |  |
| `hipaa_compliance` | boolean | no | Enable HIPAA compliance. Enabling also disables enableRecording and enablePublicRecording. |
| `public_access` | boolean | no | Allow public (unauthenticated) access to this flow, e.g. for web demo links |
| `redirect_to_human` | object | no | settings.redirectToHuman (the dashboard's Redirect incoming calls section) |
| `identifier_based_web_demo_memory` | boolean | no | Remember web demo visitors by identifier across sessions (requires utilizePriorCallsContext) |
| `workspace_id` | string | no | Run this call in another workspace: its id or its name (see trillet_list_workspaces). Omit to use the default (TRILLET_WORKSPACE_ID, the workspace picked when the connector was approved, or the one set with trillet_switch_workspace). |
