Phone
Space MCP tools in the Phone scope (phone). Reach these with a wks_live_ key over space-mcp or space-api.
Tools in the phone scope, callable over space-mcp (tools/call) or space-api (REST) with a wks_live_* key that grants phone.
control_call_campaign
Scope: phone:run
Pause, resume, or cancel a running/scheduled call campaign.
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes | |
action | pause | resume | cancel | yes |
create_call_campaign
Scope: phone:write
Create a DRAFT outbound call campaign: a Cloud Agent dials each contact in an audience. Requires (before it can start) a voice-enabled cloud_agent_id, an audience_id, and an active from_phone_number_id — none are required to draft. call_script_id is optional. Use list_cloud_agents / list_audiences / list_phone_numbers / list_call_scripts to discover ids.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
cloud_agent_id | string | Voice-enabled Cloud Agent that places the calls. | |
audience_id | string | Contact audience to dial. | |
from_phone_number_id | string | Active space number to dial from. | |
call_script_id | string | Optional call script to override opening line + goals per call. | |
max_concurrent | number | Simultaneous calls in flight (1–50, default 3). | |
retry_policy | object | { max_retries, retry_delay_minutes, retry_on: ['no_answer','busy','failed'] } | |
time_window | object | Optional { start_hour, end_hour, days:[0-6] } — dials are parked outside these hours (UTC). |
create_call_script
Scope: phone:write
Create a reusable call script a Cloud Agent follows on a voice call. opening_line is what the agent says first; instructions set tone/guardrails; goals are ordered objectives; end_action is what happens when the call wraps up. Supports {{merge_tags}} like {{contact.first_name}} and {{space.name}}. A call script is OPTIONAL for a call — the agent's own persona drives the call; a script layers a specific opening + goals + end action on top.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
description | string | When/why this script is used (internal note). | |
opening_line | string | What the agent says first when the call connects. | |
instructions | string | Tone, persona, guardrails for the call. | |
goals | object[] | Ordered objectives the agent should work through. | |
end_action | hang_up | transfer | send_sms | book_meeting | none | What to do once the call wraps up. | |
end_action_config | object | Action-specific config: transfer { phone_number }, send_sms { template_id | body }, book_meeting { calendar_event_type }. | |
default_agent_id | string | Optional Cloud Agent this script defaults to. | |
variables | object[] |
create_sms_campaign
Scope: phone:write
Create a DRAFT SMS campaign (broadcast or drip). A connected SMS-capable number is NOT required to draft — only to send. Defaults the sender to the space's first eligible number when one exists.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
campaign_type | broadcast | drip | ||
body | string | Broadcast message body. Supports {{merge_tags}}. | |
from_phone_number_id | string | Optional — defaults to the first SMS-capable space number. | |
audience_id | string | ||
enrollment_mode | one_shot | continuous | ||
trigger_audience_id | string | ||
opt_out_footer | boolean | ||
steps | object[] | Drip steps in order. |
create_sms_template
Scope: phone:write
Create a reusable SMS template. Supports {{merge_tags}} like {{first_name}}.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
body | string | yes | |
variables | object[] |
delete_call_script
Scope: phone:write
Delete a call script. Call campaigns referencing it keep running but lose the script override.
| Parameter | Type | Required | Description |
|---|---|---|---|
script_id | string | yes |
get_call_campaign
Scope: phone:read
Get one call campaign plus a sample of its per-contact dial runs (dispositions, durations).
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes |
get_call_recording
Scope: phone:read
Fetch a recorded call's playback URL (freshly signed, 1h) and its transcript when one exists. Pass the call id from list_call_history. Returns recorded:false when the call wasn't recorded.
| Parameter | Type | Required | Description |
|---|---|---|---|
call_room_id | string | yes | Call id from list_call_history. |
get_call_script
Scope: phone:read
Get one call script including its opening line, instructions, goals, and end-of-call action.
| Parameter | Type | Required | Description |
|---|---|---|---|
script_id | string | yes |
get_sms_campaign
Scope: phone:read
Get one SMS campaign, including its drip steps if it's a drip.
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes |
list_call_campaigns
Scope: phone:read
List outbound call campaigns in the space, optionally filtered by status.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | ||
limit | number |
list_call_history
Scope: phone:read
List recent calls in the space.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number |
list_call_scripts
Scope: phone:read
List reusable call scripts (voice scripts a Cloud Agent follows on a call) in the space.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number |
list_phone_numbers
Scope: phone:read
List active phone numbers in the space.
list_sms_campaigns
Scope: phone:read
List SMS campaigns (broadcasts + drip sequences) in the space.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | ||
limit | number |
list_sms_templates
Scope: phone:read
List reusable SMS templates in the space.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number |
make_call
Scope: phone:run
Place an outbound phone call handled live by a voice-enabled cloud agent in this space (consequential, billable — voice minutes charge the space wallet). The agent speaks with the callee in real time. Requires to (E.164). cloud_agent_id is optional when exactly one agent in the space owns a phone number. Use purpose to tell the agent why it is calling and what to accomplish.
| Parameter | Type | Required | Description |
|---|---|---|---|
to | string | yes | Destination phone number (E.164, e.g. +15551234567). |
cloud_agent_id | string | Cloud agent that makes the call. Optional when only one agent owns a number. | |
purpose | string | Why the agent is calling and what to accomplish — becomes the agent's call objective. | |
callee_name | string | Name of the person being called (optional). | |
from | string | Specific owned number to call from (optional; defaults to the agent's number). |
send_sms
Scope: phone:run
Send an SMS from a space number (consequential, billable). Requires to (E.164) and message.
| Parameter | Type | Required | Description |
|---|---|---|---|
to | string | yes | |
message | string | yes | |
from | string | Specific space number to send from (optional). |
send_sms_campaign
Scope: phone:run
Consequential + billable: schedule a broadcast SMS send (scheduled_at defaults to now) or start a drip. Requires a sender number, an audience, and message content.
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes | |
scheduled_at | string | ISO timestamp; omit to send ASAP. |
start_call_campaign
Scope: phone:run
Consequential + billable: launch a call campaign. Validates it has a voice-enabled agent, an audience, and an active sender number, then schedules it — the runner enrolls the audience and starts dialing on its next tick.
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes | |
scheduled_at | string | ISO timestamp; omit to start ASAP. |
update_call_campaign
Scope: phone:write
Edit a draft/paused/scheduled call campaign (agent, audience, sender, script, throttling, retry, time window).
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes | |
name | string | ||
cloud_agent_id | string | ||
audience_id | string | ||
from_phone_number_id | string | ||
call_script_id | string | ||
max_concurrent | number | ||
retry_policy | object | ||
time_window | object |
update_call_script
Scope: phone:write
Edit a call script. Passing goals REPLACES the full goal list.
| Parameter | Type | Required | Description |
|---|---|---|---|
script_id | string | yes | |
name | string | ||
description | string | ||
opening_line | string | ||
instructions | string | ||
goals | object[] | ||
end_action | hang_up | transfer | send_sms | book_meeting | none | ||
end_action_config | object | ||
default_agent_id | string | ||
variables | object[] |
update_sms_campaign
Scope: phone:write
Edit a draft/paused/scheduled SMS campaign. Passing steps REPLACES all drip steps.
| Parameter | Type | Required | Description |
|---|---|---|---|
campaign_id | string | yes | |
name | string | ||
body | string | ||
from_phone_number_id | string | ||
audience_id | string | ||
enrollment_mode | one_shot | continuous | ||
trigger_audience_id | string | ||
opt_out_footer | boolean | ||
steps | object[] |
update_sms_template
Scope: phone:write
Edit an SMS template (name, body, variables).
| Parameter | Type | Required | Description |
|---|---|---|---|
template_id | string | yes | |
name | string | ||
body | string | ||
variables | object[] |