> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Twilio

The Twilio connector lets your AI agent act in each user's Twilio account. Each user connects their own Twilio username and password once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 61 tools.

**Authentication:** Basic Auth
**Categories:** Communication, Automation
**Tools:** 61: 31 read, 22 write, 8 destructive
**Users sign in with:** Username and password
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=TWILIO)

## What you can do

- **Send and manage messages**: send SMS and MMS, list and fetch messages and their media, and redact or delete them
- **Make and control calls**: place outbound calls, redirect or end live calls, and look up call history
- **Run conferences**: dial in, mute, hold, or remove participants and end or update live conferences
- **Verify users**: send one-time codes by SMS, call, or email and check the codes users enter
- **Manage phone numbers**: search available local, mobile, and toll-free numbers, then buy, configure, or release them
- **Work with conversations**: create conversations, add participants, and send, list, or delete messages in them

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Twilio connection

   In **AgentKit > Connections**, create a Twilio connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   **Console steps with screenshots:**

   Connect Twilio to Scalekit using your Account SID and Auth Token. Scalekit stores these credentials securely and injects them into every tool call — your agent code never handles them directly.

   1. ### Get your Account SID and Auth Token

      - Log in to the [Twilio Console](https://console.twilio.com).
      - On the **Account Dashboard**, scroll down to the **Account Info** section.
      - Copy your **Account SID** (starts with `AC`).
      - Click **Show** next to **Auth Token** to reveal it, then copy it.

      > Image: Twilio Account Dashboard showing Account SID and Auth Token

   2. ### Create a connection in Scalekit

      - In the [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**.
      - Search for **Twilio** and click **Create**.
      - Enter your **Account SID** in the **Account SID** field.
      - Enter your **Auth Token** in the **Auth Token** field.
      - Click **Save** and note the **Connection name** — use this as `connection_name` in your code.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'twilio_account_get',
  toolInput: {},
  connector: 'twilio',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="twilio_account_get",
    tool_input={},
    connection_name="twilio",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `twilio_account_get`

Get Account · Read-only

Retrieve details of a Twilio account by its SID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `twilio_accounts_list`

List Accounts · Read-only

List accounts and subaccounts belonging to the current Twilio account, optionally filtered by friendly name or status.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `friendly_name` (`string`, optional): Only return accounts matching this exact friendly name.
- `page_size` (`integer`, optional): The number of accounts to return per page.
- `status` (`string`, optional): Only return accounts with this status. One of: `active`, `suspended`, `closed`.

Example input: `{}`

### `twilio_applications_list`

List Applications · Read-only

List TwiML Applications on the account, optionally filtered by friendly name.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `friendly_name` (`string`, optional): Only return applications matching this exact friendly name.
- `page_size` (`integer`, optional): The number of applications to return per page.

Example input: `{}`

### `twilio_available_numbers_local`

Search Available Local Numbers · Read-only

Search for available local phone numbers that can be purchased in a given country.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `country_code` (`string`, required): The ISO 3166-1 alpha-2 country code to search for numbers in.
- `area_code` (`string`, optional): Filter by area code.
- `contains` (`string`, optional): A pattern to match phone numbers against. Use * for wildcards.
- `sms_enabled` (`string`, optional): Filter for numbers that are SMS-capable.
- `voice_enabled` (`string`, optional): Filter for numbers that are voice-capable.

Example input: `{"country_code":"<country_code>"}`

### `twilio_available_numbers_mobile`

Search Available Mobile Numbers · Read-only

Search for available mobile phone numbers that can be purchased in a given country.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `country_code` (`string`, required): Two-letter country code (e.g., GB, DE).
- `area_code` (`string`, optional): Filter by area code.
- `contains` (`string`, optional): A pattern to match phone numbers against. Use * for wildcards.
- `sms_enabled` (`string`, optional): Only return SMS-capable numbers.
- `voice_enabled` (`string`, optional): Only return voice-capable numbers.

Example input: `{"country_code":"<country_code>"}`

### `twilio_available_numbers_toll_free`

Search Available Toll-Free Numbers · Read-only

Search for available toll-free phone numbers that can be purchased in a given country.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `country_code` (`string`, required): The ISO 3166-1 alpha-2 country code to search for numbers in.
- `area_code` (`string`, optional): Filter by area code.
- `contains` (`string`, optional): A pattern to match phone numbers against. Use * for wildcards.

Example input: `{"country_code":"<country_code>"}`

### `twilio_balance_get`

Get Account Balance · Read-only

Get the current account's balance and currency.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `twilio_call_get`

Get Call · Read-only

Retrieve details of a specific phone call by its SID, including status, duration, and pricing information.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The unique identifier of the Call resource to retrieve.

Example input: `{"call_sid":"<call_sid>"}`

### `twilio_calls_list`

List Calls · Read-only

Retrieve a list of phone calls made to and from the account, with optional filtering by number, status, and date.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `end_time` (`string`, optional): Filter by calls started on or before this date (YYYY-MM-DD format).
- `from_number` (`string`, optional): Filter by the phone number that initiated the call.
- `page_size` (`integer`, optional): The number of results to return per page. Maximum is 1000.
- `start_time` (`string`, optional): Filter by calls started on or after this date (YYYY-MM-DD format).
- `status` (`string`, optional): Filter by call status. Values: queued, ringing, in-progress, completed, busy, failed, no-answer, canceled.
- `to` (`string`, optional): Filter by the phone number that received the call.

Example input: `{}`

### `twilio_conference_get`

Get Conference · Read-only

Retrieve details of a specific conference by its SID, including status, friendly name, and region.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `conference_sid` (`string`, required): The unique identifier of the Conference resource to retrieve.

Example input: `{"conference_sid":"<conference_sid>"}`

### `twilio_conference_participant_get`

Get Conference Participant · Read-only

Retrieve details of a single participant in a Twilio conference.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The SID of the participant's call.
- `conference_sid` (`string`, required): The SID of the conference the participant belongs to.

Example input: `{"call_sid":"<call_sid>","conference_sid":"<conference_sid>"}`

### `twilio_conferences_list`

List Conferences · Read-only

Retrieve a list of conferences for the account, with optional filtering by name, status, date, and pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `date_created` (`string`, optional): Filter conferences created on this date (YYYY-MM-DD format).
- `friendly_name` (`string`, optional): Filter conferences by their friendly name.
- `page_size` (`integer`, optional): The number of results to return per page. Maximum is 1000.
- `status` (`string`, optional): Filter by conference status. Values: init, in-progress, completed.

Example input: `{}`

### `twilio_conversation_get`

Get Conversation · Read-only

Retrieve the details of a specific Twilio Conversation by its SID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation to retrieve.

Example input: `{"conversation_sid":"<conversation_sid>"}`

### `twilio_conversation_messages_list`

List Conversation Messages · Read-only

List all messages in a Twilio Conversation. Optionally control the sort order and page size.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation to list messages for.
- `order` (`string`, optional): The sort order of messages. One of: asc, desc.
- `page_size` (`integer`, optional): The number of messages to return per page.

Example input: `{"conversation_sid":"<conversation_sid>"}`

### `twilio_conversation_participants_list`

List Conversation Participants · Read-only

List all participants in a Twilio Conversation.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation to list participants for.
- `page_size` (`integer`, optional): The number of participants to return per page.

Example input: `{"conversation_sid":"<conversation_sid>"}`

### `twilio_conversations_list`

List Conversations · Read-only

List all Twilio Conversations. Optionally filter by state and control page size.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_size` (`integer`, optional): The number of conversations to return per page.
- `state` (`string`, optional): Filter conversations by state. One of: active, inactive, closed.

Example input: `{}`

### `twilio_lookup_phone_number`

Lookup Phone Number · Read-only

Look up information about a phone number, such as formatting, carrier, line type, and caller name, using Twilio Lookup.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `phone_number` (`string`, required): The phone number to look up, in E.164 format.
- `fields` (`string`, optional): Comma-separated list of data packages to include, e.g. line_type_intelligence, caller_name, sim_swap.

Example input: `{"phone_number":"<phone_number>"}`

### `twilio_message_get`

Get Message · Read-only

Retrieve the details of a specific message by its SID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `message_sid` (`string`, required): The unique identifier of the message to retrieve

Example input: `{"message_sid":"<message_sid>"}`

### `twilio_message_media_list`

List Message Media · Read-only

Retrieve a list of media resources associated with a specific message.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `message_sid` (`string`, required): The SID of the message to list media for
- `page_size` (`integer`, optional): Number of media resources to return per page (1-1000, default 50)

Example input: `{"message_sid":"<message_sid>"}`

### `twilio_messages_list`

List Messages · Read-only

Retrieve a list of messages associated with your Twilio account, with optional filtering by recipient, sender, or date sent.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `date_sent` (`string`, optional): Filter by date sent (YYYY-MM-DD format)
- `from_number` (`string`, optional): Filter by messages sent from this phone number in E.164 format
- `page_size` (`integer`, optional): Number of messages to return per page (1-1000, default 50)
- `to` (`string`, optional): Filter by messages sent to this phone number in E.164 format

Example input: `{}`

### `twilio_messaging_services_list`

List Messaging Services · Read-only

Retrieve a list of all Messaging Services associated with your Twilio account.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_size` (`integer`, optional): Number of Messaging Services to return per page (1-1000, default 50)

Example input: `{}`

### `twilio_phone_number_get`

Get Phone Number · Read-only

Retrieve details of a specific incoming phone number by its SID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `phone_number_sid` (`string`, required): The SID of the incoming phone number to retrieve.

Example input: `{"phone_number_sid":"<phone_number_sid>"}`

### `twilio_phone_numbers_list`

List Phone Numbers · Read-only

List all incoming phone numbers on the Twilio account.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `friendly_name` (`string`, optional): Filter by friendly name of the phone number.
- `page_size` (`integer`, optional): Number of results to return per page.
- `phone_number` (`string`, optional): Filter by phone number in E.164 format.

Example input: `{}`

### `twilio_queues_list`

List Queues · Read-only

List call queues on the account, used with TwiML's  and  verbs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_size` (`integer`, optional): The number of queues to return per page.

Example input: `{}`

### `twilio_recording_get`

Get Recording · Read-only

Retrieve details of a specific call recording by its SID, including duration, status, and source.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `recording_sid` (`string`, required): The unique identifier of the Recording resource to retrieve.

Example input: `{"recording_sid":"<recording_sid>"}`

### `twilio_recordings_list`

List Recordings · Read-only

Retrieve a list of call recordings for the account, with optional filtering by call SID, date, and pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, optional): Filter recordings by the Call SID they are associated with.
- `date_created` (`string`, optional): Filter recordings created on this date (YYYY-MM-DD format).
- `page_size` (`integer`, optional): The number of results to return per page. Maximum is 1000.

Example input: `{}`

### `twilio_usage_records_list`

List Usage Records · Read-only

Retrieve usage records for a Twilio account, optionally filtered by category and date range.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `category` (`string`, optional): The usage category to filter by (e.g., sms, calls, phonenumbers).
- `end_date` (`string`, optional): The end date for the usage records in YYYY-MM-DD format.
- `page_size` (`integer`, optional): Number of results to return per page.
- `start_date` (`string`, optional): The start date for the usage records in YYYY-MM-DD format.

Example input: `{}`

### `twilio_usage_records_today`

List Today's Usage Records · Read-only

Retrieve today's usage records for a Twilio account, optionally filtered by category.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `category` (`string`, optional): The usage category to filter by (e.g., sms, calls, phonenumbers).

Example input: `{}`

### `twilio_verification_get`

Get Verification · Read-only

Retrieve the status and details of a specific verification by its SID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `service_sid` (`string`, required): The SID of the Verify service.
- `verification_sid` (`string`, required): The SID of the verification to retrieve.

Example input: `{"service_sid":"<service_sid>","verification_sid":"<verification_sid>"}`

### `twilio_verify_service_get`

Get Verify Service · Read-only

Retrieve details of a specific Twilio Verify service by its SID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `service_sid` (`string`, required): The unique SID of the Verify service to retrieve.

Example input: `{"service_sid":"<service_sid>"}`

### `twilio_verify_services_list`

List Verify Services · Read-only

List all Twilio Verify services on the account.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_size` (`integer`, optional): Number of results to return per page. Maximum is 1000.

Example input: `{}`

### `twilio_application_create`

Create Application · Write

Create a TwiML Application — a reusable, named set of voice and SMS webhook URLs that phone numbers or API calls can reference instead of repeating the same URLs everywhere.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `friendly_name` (`string`, optional): A descriptive name for the application. Up to 64 characters.
- `public_application_connect_enabled` (`boolean`, optional): Whether to allow other Twilio accounts to dial this application using Dial verb.
- `sms_fallback_url` (`string`, optional): The URL Twilio calls when an error occurs retrieving or executing TwiML from sms_url.
- `sms_method` (`string`, optional): The HTTP method Twilio uses to request sms_url. Either GET or POST. One of: `GET`, `POST`.
- `sms_url` (`string`, optional): The URL Twilio calls when a phone number assigned to this application receives an incoming SMS.
- `status_callback` (`string`, optional): The URL Twilio calls to pass status parameters (such as call ended) after an event.
- `voice_caller_id_lookup` (`boolean`, optional): Whether to look up the caller's caller-ID name from the CNAM database.
- `voice_fallback_url` (`string`, optional): The URL Twilio calls when an error occurs retrieving or executing TwiML from voice_url.
- `voice_method` (`string`, optional): The HTTP method Twilio uses to request voice_url. Either GET or POST. One of: `GET`, `POST`.
- `voice_url` (`string`, optional): The URL Twilio calls when a phone number assigned to this application receives a call.

Example input: `{}`

### `twilio_call_create`

Create Call · Write

Make an outbound phone call from your Twilio account. Requires a URL that returns TwiML instructions for handling the call.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `from_number` (`string`, required): The Twilio phone number or client identifier to use as the caller ID.
- `to` (`string`, required): The phone number, SIP address, or client identifier to call.
- `url` (`string`, required): The absolute URL that returns the TwiML instructions for the call.
- `machine_detection` (`string`, optional): Whether to detect if a human, answering machine, or fax picked up. One of: `Enable`, `DetectMessageEnd`.
- `method` (`string`, optional): The HTTP method Twilio uses to request the url. One of: `GET`, `POST`.
- `record` (`boolean`, optional): Whether to record the call.
- `status_callback` (`string`, optional): The URL Twilio calls to send status information about the call.
- `timeout` (`integer`, optional): How long to let the phone ring before assuming there is no answer.

Example input: `{"from_number":"<from_number>","to":"<to>","url":"<url>"}`

### `twilio_call_recording_create`

Start Call Recording · Write

Start recording a live, in-progress Twilio call.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_sid` (`string`, required): The SID of the call to start recording.
- `recording_channels` (`string`, optional): The number of channels in the recording. One of: `mono`, `dual`.
- `recording_track` (`string`, optional): The audio track to record. One of: `inbound`, `outbound`, `both`.
- `trim` (`string`, optional): Whether to trim leading and trailing silence from the recording. One of: `trim-silence`, `do-not-trim`.

Example input: `{"call_sid":"<call_sid>"}`

### `twilio_call_recording_update`

Update Call Recording · Write

Pause, resume, or stop an in-progress recording of a live Twilio call.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The SID of the call whose recording should be updated.
- `recording_sid` (`string`, required): The SID of the recording to update.
- `status` (`string`, required): The new status for the recording. One of: `in-progress`, `paused`, `stopped`.
- `pause_behavior` (`string`, optional): Whether to record silence or skip recording while paused. One of: `skip`, `silence`.

Example input: `{"call_sid":"<call_sid>","recording_sid":"<recording_sid>","status":"in-progress"}`

### `twilio_call_update`

Update Call · Write

Modify a live phone call: redirect it to new TwiML instructions, or end it by setting status to 'completed' or 'canceled'.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The SID of the call to update.
- `method` (`string`, optional): The HTTP method Twilio uses to request the url. One of: `GET`, `POST`.
- `status` (`string`, optional): Set to 'completed' to hang up an in-progress call, or 'canceled' to cancel a queued or ringing call. One of: `canceled`, `completed`.
- `url` (`string`, optional): A new absolute URL that returns TwiML instructions to redirect the call to.

Example input: `{"call_sid":"<call_sid>"}`

### `twilio_conference_participant_create`

Add Conference Participant · Write

Dial a new participant into an existing Twilio conference.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conference_sid` (`string`, required): The SID of the conference to add the participant to.
- `from_number` (`string`, required): The phone number or Client identifier that is calling the participant.
- `to` (`string`, required): The phone number, SIP address, or Client identifier to dial into the conference.
- `beep` (`string`, optional): Whether to play a notification beep when the participant joins. One of: `true`, `false`, `onEnter`, `onExit`.
- `end_conference_on_exit` (`boolean`, optional): Whether to end the conference when this participant leaves.
- `label` (`string`, optional): A label for this participant, usable to later fetch, update, or delete them.
- `muted` (`boolean`, optional): Whether the participant should join muted.
- `start_conference_on_enter` (`boolean`, optional): Whether to start the conference when this participant joins, if not already started.
- `status_callback` (`string`, optional): The URL Twilio calls with status information about the participant's call.

Example input: `{"conference_sid":"<conference_sid>","from_number":"<from_number>","to":"<to>"}`

### `twilio_conference_participant_update`

Update Conference Participant · Write

Mute, hold, or coach a participant in a live Twilio conference.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The SID of the participant's call.
- `conference_sid` (`string`, required): The SID of the conference the participant belongs to.
- `beep_on_exit` (`boolean`, optional): Whether to play a notification beep when this participant leaves.
- `end_conference_on_exit` (`boolean`, optional): Whether to end the conference when this participant leaves.
- `hold` (`boolean`, optional): Whether the participant should be put on hold.
- `muted` (`boolean`, optional): Whether the participant should be muted.

Example input: `{"call_sid":"<call_sid>","conference_sid":"<conference_sid>"}`

### `twilio_conference_update`

Update Conference · Write

Update an in-progress conference: end it by setting status to 'completed', or play an announcement into it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `conference_sid` (`string`, required): The SID of the conference to update.
- `announce_method` (`string`, optional): The HTTP method Twilio uses to request the announce_url. One of: `GET`, `POST`.
- `announce_url` (`string`, optional): A URL returning audio (MP3 or TwiML) to play into the conference.
- `status` (`string`, optional): Set to 'completed' to end the conference and disconnect all participants. One of: `completed`.

Example input: `{"conference_sid":"<conference_sid>"}`

### `twilio_conversation_create`

Create Conversation · Write

Create a new Twilio Conversation, so participants and messages can be added to it. Existing tools can only get, list, or delete conversations.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `attributes` (`string`, optional): Free-form JSON metadata to store on the conversation, as a string.
- `friendly_name` (`string`, optional): Human-readable name for the conversation. Up to 256 characters.
- `messaging_service_sid` (`string`, optional): The SID of the Messaging Service this conversation belongs to.
- `state` (`string`, optional): The initial state of the conversation. One of: `inactive`, `active`, `closed`.
- `timers_closed` (`string`, optional): ISO-8601 duration of inactivity after which the conversation is switched to the 'closed' state (minimum 10 minutes).
- `timers_inactive` (`string`, optional): ISO-8601 duration of inactivity after which the conversation is switched to the 'inactive' state (minimum 1 minute).
- `unique_name` (`string`, optional): An application-defined string that uniquely identifies this conversation, usable in place of the SID in the URL.

Example input: `{}`

### `twilio_conversation_message_create`

Send Conversation Message · Write

Send a new message into a Twilio Conversation. Existing tools can only list or delete conversation messages.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation to send the message into.
- `attributes` (`string`, optional): Free-form JSON metadata to store on the message, as a string.
- `author` (`string`, optional): The channel-specific identifier of the message's author. Defaults to 'system'.
- `body` (`string`, optional): The text content of the message. Up to 1,600 characters. Ignored if content_sid is set.
- `content_sid` (`string`, optional): The SID of a Rich Content template to use for this message. If set, this overrides body and media_sid.
- `content_variables` (`string`, optional): JSON string of variable values to resolve in the Content Template referenced by content_sid.
- `media_sid` (`string`, optional): The SID of a previously-uploaded Media resource to attach to this message.
- `subject` (`string`, optional): The subject of the message, for channels that support it (e.g. email). Up to 256 characters.

Example input: `{"conversation_sid":"<conversation_sid>"}`

### `twilio_conversation_participant_create`

Add Conversation Participant · Write

Add a participant to a Twilio Conversation, either as an SDK-connected Conversation User (identity) or as an external SMS/WhatsApp address (messaging_binding_address). Provide exactly one of identity or messaging_binding_address, not both. Existing tools can only list participants.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation to add the participant to.
- `attributes` (`string`, optional): Free-form JSON metadata to store on the participant, as a string.
- `identity` (`string`, optional): The Conversations SDK identity of the participant, for participants connecting via the Conversations SDK. Do not set together with messaging_binding_address.
- `messaging_binding_address` (`string`, optional): The participant's SMS or WhatsApp address (e.g. a phone number). Together with messaging_binding_proxy_address, uniquely identifies the participant. Do not set together with identity.
- `messaging_binding_proxy_address` (`string`, optional): The Twilio phone or WhatsApp number this participant will see messages from. Required together with messaging_binding_address for non-SDK participants.
- `role_sid` (`string`, optional): The SID of a conversation-level Role to assign to this participant.

Example input: `{"conversation_sid":"<conversation_sid>"}`

### `twilio_message_create`

Send Message · Write

Send a new SMS or MMS message from your Twilio account. Requires a sender (from_number or messaging_service_sid) and either body text or media_url.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, required): The text content of the message. Up to 1,600 characters.
- `to` (`string`, required): The recipient's phone number in E.164 format.
- `from_number` (`string`, optional): Your Twilio phone number to send from, in E.164 format. Required if messaging_service_sid is not set.
- `media_url` (`array`, optional): URLs of media to include for MMS. jpeg, jpg, gif, and png are fully supported.
- `messaging_service_sid` (`string`, optional): The SID of the Messaging Service to send from, instead of a specific from_number.
- `status_callback` (`string`, optional): The URL Twilio calls to send message status callback requests.

Example input: `{"body":"<body>","to":"<to>"}`

### `twilio_message_update`

Update Message · Write

Update a message resource. Set body to an empty string to redact the text content of a message, or set status to 'canceled' to cancel a message that is still scheduled to send.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `message_sid` (`string`, required): The SID of the message resource to update.
- `body` (`string`, optional): The new body of the message. Pass an empty string to redact the message text.
- `status` (`string`, optional): Set to 'canceled' to cancel a message that is still scheduled to send. One of: `canceled`.

Example input: `{"message_sid":"<message_sid>"}`

### `twilio_phone_number_create`

Buy Phone Number · Write

Purchase a new incoming phone number for your Twilio account. Provide either phone_number for a specific number, or area_code to have Twilio pick one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `area_code` (`string`, optional): The desired US/Canada area code for the new number, if phone_number is not set.
- `friendly_name` (`string`, optional): A descriptive name for the new phone number.
- `phone_number` (`string`, optional): The specific phone number to purchase, in E.164 format.
- `sms_url` (`string`, optional): The URL Twilio calls when the number receives an incoming SMS.
- `voice_url` (`string`, optional): The URL Twilio calls to answer an incoming call to the number.

Example input: `{}`

### `twilio_phone_number_update`

Update Phone Number · Write

Update the configuration of an existing Twilio incoming phone number, such as its webhook URLs or friendly name.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `phone_number_sid` (`string`, required): The SID of the incoming phone number to update.
- `friendly_name` (`string`, optional): A new descriptive name for the phone number.
- `sms_url` (`string`, optional): The URL Twilio calls when the number receives an incoming SMS.
- `status_callback` (`string`, optional): The URL Twilio calls to send status information about the number.
- `voice_url` (`string`, optional): The URL Twilio calls to answer an incoming call to the number.

Example input: `{"phone_number_sid":"<phone_number_sid>"}`

### `twilio_queue_create`

Create Queue · Write

Create a call queue, used with TwiML's  and  verbs to hold callers (e.g. for a callback or a simple call center).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `friendly_name` (`string`, required): A descriptive name for this queue. Up to 64 characters.
- `max_size` (`integer`, optional): The maximum number of calls allowed in the queue at once. Default 1000, maximum 5000.

Example input: `{"friendly_name":"<friendly_name>"}`

### `twilio_subaccount_create`

Create Subaccount · Write

Create a new subaccount under the current Twilio account. Subaccounts let you isolate resources (phone numbers, usage, billing) per project or customer while staying under one parent account.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `friendly_name` (`string`, optional): A human-readable description of the subaccount. Defaults to 'SubAccount Created at {timestamp}' if omitted.

Example input: `{}`

### `twilio_verification_check`

Check Verification · Write

Check a one-time verification code entered by a user against a Twilio Verify service. Provide either 'to' or 'verification_sid'.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `code` (`string`, required): The verification code entered by the user.
- `service_sid` (`string`, required): The SID of the Verify service to check against.
- `to` (`string`, optional): The phone number or email address being verified. Required if verification_sid is not set.
- `verification_sid` (`string`, optional): The SID of the verification to check. Required if 'to' is not set.

Example input: `{"code":"<code>","service_sid":"<service_sid>"}`

### `twilio_verification_create`

Start Verification · Write

Start a phone or email verification by sending a one-time code via Twilio Verify.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `channel` (`string`, required): The verification method to use. One of: `sms`, `call`, `email`, `whatsapp`.
- `service_sid` (`string`, required): The SID of the Verify service to use.
- `to` (`string`, required): The phone number (E.164 format) or email address to verify.
- `locale` (`string`, optional): The locale to use for the verification message.

Example input: `{"channel":"sms","service_sid":"<service_sid>","to":"<to>"}`

### `twilio_verification_update`

Update Verification · Write

Update the status of a pending Twilio Verify verification: cancel it, or force-approve it without checking a code.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `service_sid` (`string`, required): The SID of the Verify service the verification belongs to.
- `status` (`string`, required): The new status for the verification. One of: `canceled`, `approved`.
- `verification_sid` (`string`, required): The SID of the verification to update.

Example input: `{"service_sid":"<service_sid>","status":"canceled","verification_sid":"<verification_sid>"}`

### `twilio_verify_service_create`

Create Verify Service · Write

Create a new Twilio Verify service for sending verification codes via SMS, call, email, or WhatsApp.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `friendly_name` (`string`, required): A descriptive name for the Verify service.
- `code_length` (`integer`, optional): The length of the verification code to generate. Must be between 4 and 10.
- `lookup_enabled` (`string`, optional): Whether to perform a lookup on the phone number before sending verification.
- `psd2_enabled` (`string`, optional): Whether to enable PSD2 compliance for the service.
- `skip_sms_to_landlines` (`string`, optional): Whether to skip sending SMS to landline phone numbers.

Example input: `{"friendly_name":"<friendly_name>"}`

### `twilio_verify_service_update`

Update Verify Service · Write

Update settings of an existing Twilio Verify service, such as its code length or friendly name.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `service_sid` (`string`, required): The SID of the Verify service to update.
- `code_length` (`integer`, optional): Number of digits in the verification code (4-10).
- `friendly_name` (`string`, optional): A new human-readable name for this verification service.
- `lookup_enabled` (`string`, optional): Enable phone number lookup before verification.
- `psd2_enabled` (`string`, optional): Enable PSD2 compliant verification messages.
- `skip_sms_to_landlines` (`string`, optional): Skip SMS delivery to landline numbers.

Example input: `{"service_sid":"<service_sid>"}`

### `twilio_call_delete`

Delete Call · Destructive

Delete a call record from the account. This permanently removes the call log entry.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The unique identifier of the Call resource to delete.

Example input: `{"call_sid":"<call_sid>"}`

### `twilio_conference_participant_delete`

Remove Conference Participant · Destructive

Remove (kick) a participant from a live Twilio conference.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `call_sid` (`string`, required): The SID of the participant's call to remove.
- `conference_sid` (`string`, required): The SID of the conference the participant belongs to.

Example input: `{"call_sid":"<call_sid>","conference_sid":"<conference_sid>"}`

### `twilio_conversation_delete`

Delete Conversation · Destructive

Delete a Twilio Conversation by its SID. This permanently removes the conversation and all associated data.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation to delete.

Example input: `{"conversation_sid":"<conversation_sid>"}`

### `twilio_conversation_message_delete`

Delete Conversation Message · Destructive

Delete a specific message from a Twilio Conversation by its SID.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `conversation_sid` (`string`, required): The unique SID of the conversation containing the message.
- `message_sid` (`string`, required): The unique SID of the message to delete.

Example input: `{"conversation_sid":"<conversation_sid>","message_sid":"<message_sid>"}`

### `twilio_message_delete`

Delete Message · Destructive

Permanently delete a message resource from your Twilio account. This action cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `message_sid` (`string`, required): The unique identifier of the message to delete

Example input: `{"message_sid":"<message_sid>"}`

### `twilio_phone_number_delete`

Release Phone Number · Destructive

Release (delete) an incoming phone number from your Twilio account. This action cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `phone_number_sid` (`string`, required): The SID of the incoming phone number to release.

Example input: `{"phone_number_sid":"<phone_number_sid>"}`

### `twilio_recording_delete`

Delete Recording · Destructive

Permanently delete a call recording from the account. This action cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `recording_sid` (`string`, required): The unique identifier of the Recording resource to delete.

Example input: `{"recording_sid":"<recording_sid>"}`

### `twilio_verify_service_delete`

Delete Verify Service · Destructive

Delete a Twilio Verify service by its SID. This action is irreversible.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `service_sid` (`string`, required): The unique SID of the Verify service to delete.

Example input: `{"service_sid":"<service_sid>"}`

## Related

Other Communication connectors ([all 57](/agentkit/connectors/?category=communication)):

- [Gmail](/agentkit/connectors/gmail/): Scalekit connector, OAuth, 48 tools
- [Google Calendar](/agentkit/connectors/googlecalendar/): Scalekit connector, OAuth, 30 tools
- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
