tai42-tools-twilio
Twilio provisioning tools for the TAI ecosystem — manifest-loaded REST tools that list a Twilio account's incoming phone numbers, read a number's inbound-message webhook, and set a number's inbound-message webhook URL.
All Twilio traffic is direct REST through tai42-kit's curl client (no twilio
SDK); requests carry HTTP Basic auth (AccountSid:AuthToken). The package
registers its tools through the tai42_app handle from tai42_contract.app and
never imports the skeleton.
The TAI ecosystem
TAI is an open-source runtime for MCP tools, agents, and workflows. A tool is a callable the host loads from a plugin manifest; this package supplies the Twilio number-provisioning tools. The ecosystem is open-ended, so this repo is these tools' own full doc home, and the documentation site covers the platform-level story:
- Tools concept: https://tai42.ai/concepts/tools
- Build a tool (author guide): https://tai42.ai/guides/authors/tool
- Ecosystem catalog: https://tai42.ai/reference/catalog
Install
Requires Python 3.13+. Install from PyPI into the environment that runs the server:
uv add tai42-tools-twilio
Or from source — clone this repo and add it as an editable dependency; the
tai42-* dependencies resolve in-tree from the workspace.
git clone https://github.com/tai42ai/tai42 # next to your app checkout
cd /path/to/your/app
uv add --editable ../tai42/plugins/tools-twilio
Catalog
| Tool | Description |
|---|---|
list_twilio_numbers |
Lists the account's incoming phone numbers, following Twilio's paging to exhaustion, and returns each number's sid, phone_number, sms_url, and sms_method. |
get_twilio_number_webhook |
Reads one number's inbound-message webhook and returns its sid, phone_number, sms_url, and sms_method. |
set_twilio_number_webhook |
Sets a number's inbound-message webhook to an https URL and returns the updated sid, phone_number, and sms_url. |
Provisioning a number's inbound webhook
These tools configure the Twilio side of an inbound-message flow: they point a
number's "A message comes in" webhook at the platform's inbound endpoint so
Twilio POSTs each message there. list_twilio_numbers finds the number's sid,
get_twilio_number_webhook reads its current webhook, and
set_twilio_number_webhook writes a new one:
{ "sid": "PN...", "phone_number": "+15551234567", "sms_url": "https://app.example/api/channels/twilio/inbound" }
set_twilio_number_webhook requires an https URL and rejects an empty or
non-https value before any network call. Every Twilio non-2xx raises loudly with
its status and body — never remapped to success — and the Basic-auth header is
never echoed into the error.
Configuration
The tools read the same CHANNEL_TWILIO_ credentials as the deployment's Twilio
channel — one account SID, auth token, and REST base configure both.
| Setting | Env var | Default | Purpose |
|---|---|---|---|
| Account SID | CHANNEL_TWILIO_ACCOUNT_SID |
— | The Twilio account SID. Required. |
| Auth token | CHANNEL_TWILIO_AUTH_TOKEN |
— | The Twilio auth token. Required. |
| API base | CHANNEL_TWILIO_API_BASE_URL |
https://api.twilio.com/2010-04-01 |
Twilio REST origin (carries the API version prefix). |
| Request timeout | CHANNEL_TWILIO_HTTP_TIMEOUT_SECONDS |
30 |
Per-request timeout. |
Credentials live only in the environment. A missing or empty required credential raises loudly (fails closed), naming its env var and never the value.
Development
uv venv --python 3.13
uv pip install --no-sources --extra dev --editable .
uv run --no-sync pytest --cov --cov-report=term-missing
uv run --no-sync ruff check .
uv run --no-sync ruff format --check .
uv run --no-sync pyright
License
Apache-2.0. See LICENSE and NOTICE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tai42_tools_twilio-1.0.0.tar.gz.
File metadata
- Download URL: tai42_tools_twilio-1.0.0.tar.gz
- Upload date:
- Size: 15.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
682186cacf3ce6f82410da40041a8c7b1494d54eab995de3d473a92c9c213ca9
|
|
| MD5 |
9085c9f792fba72e1e70aa77fbfc598e
|
|
| BLAKE2b-256 |
c24aedf2888c856461c3514e66607d986d4a89394c8dd0eac7a3d8adb099f7a9
|
File details
Details for the file tai42_tools_twilio-1.0.0-py3-none-any.whl.
File metadata
- Download URL: tai42_tools_twilio-1.0.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5604196c74ed44e82063da158a921f0c5c187f44d0b6f75195e7ca78bacc7fdc
|
|
| MD5 |
cc2d764152ff3fc58969caecf8ad693f
|
|
| BLAKE2b-256 |
b6f88bd58ffa76bfee7301edd9494c0710bab7bea6ddba42b5cb22b48f21a28f
|