Official Dial CrewAI tools — phone numbers, SMS, OTP, and voice calls for multi-agent crews
Project description
dial-crewai
Official Dial tools for CrewAI — give a multi-agent crew the ability to send SMS, receive OTP codes, and place AI voice calls through Dial. Agents automating signups and web tasks get a real phone identity.
It's the CrewAI sibling of dial-langchain:
each tool is a crewai.tools.BaseTool subclass wrapping the dial-sdk
client. It adds nothing to the REST contract — it just shapes Dial's operations into
CrewAI tools.
Install
pip install dial-crewai
This pulls in dial-sdk and crewai.
Give the tools to a crew
Build one DialClient, pass it to dial_tools, and hand the list to an agent. Every
tool shares that one client — a single connection pool for the whole crew:
from crewai import Agent, Crew, Task
from dial_sdk import DialClient, DialConfig
from dial_crewai import dial_tools
dial = DialClient(DialConfig(api_key="sk_live_..."))
phone_agent = Agent(
role="Phone identity agent",
goal="Send and receive SMS so the crew can complete phone-verified signups",
backstory="You operate the crew's Dial phone number.",
tools=dial_tools(dial),
)
DialConfig also takes an optional base_url to target a non-default deployment.
Or pick individual tools
from dial_crewai import SendMessageTool, WaitForMessageTool
tools = [
SendMessageTool(client=dial),
WaitForMessageTool(client=dial),
]
Available tools
Each tool takes your shared DialClient (client=):
| Tool | Action |
|---|---|
ListNumbersTool |
List your phone numbers |
PurchaseNumberTool |
Provision a new number (billable) |
SetNumberPropertiesTool |
Update a number's nickname / inbound instruction |
SendMessageTool |
Send an SMS (optionally MMS) |
ListMessagesTool |
List recent messages |
MakeCallTool |
Place an AI voice call |
ListCallsTool |
List recent calls |
GetCallTool |
Fetch one call by id |
GetBillingTool |
Credit balance, subscription, per-number mode |
WaitForMessageTool |
Block until the next inbound SMS arrives, or time out |
OTP flow
The point of phone identity for a crew: send a code and read the reply.
WaitForMessageTool blocks until the next inbound SMS arrives, so an agent can:
- trigger a signup that texts a code to your Dial number,
- call
WaitForMessageToolto read the inbound code, - enter it back into the signup form.
See examples/signup_crew.py for a runnable crew.
Notes
- The
dial-sdkclient is async; these tools are sync-first (_run) with an async→sync bridge, and also expose_arunfor async crews. The shared client's requests run on a single background event loop, so the connection pool is reused across calls; a sync crew needn't close the client explicitly. SendMessageToolis a write action and isn't idempotent — a re-invoke after a failure can send a duplicate.MakeCallToolaccepts anidempotency_key.WaitForMessageToolis backed by Dial's presence-based event stream — for durable, at-least-once delivery, register a webhook.
See the CrewAI integration docs for the full guide.
Project details
Release history Release notifications | RSS feed
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 dial_crewai-0.10.0.tar.gz.
File metadata
- Download URL: dial_crewai-0.10.0.tar.gz
- Upload date:
- Size: 259.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
568ff1d069fc0e6b806e23140aceda61a4f1827b76b16b972596ac9e4222aac4
|
|
| MD5 |
23665e395fcfdaac6bada288a9268e64
|
|
| BLAKE2b-256 |
dfa3515c394c0ae7cd839c86f7f44bfb3d7a96fe4655afc4005fe0fa0efc5cfa
|
Provenance
The following attestation bundles were made for dial_crewai-0.10.0.tar.gz:
Publisher:
publish-sdk-crewai.yml on GENWAY-AI/dial
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dial_crewai-0.10.0.tar.gz -
Subject digest:
568ff1d069fc0e6b806e23140aceda61a4f1827b76b16b972596ac9e4222aac4 - Sigstore transparency entry: 1928022907
- Sigstore integration time:
-
Permalink:
GENWAY-AI/dial@9451d2592de6db593f9c60a39fbf9c47a8251a49 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/GENWAY-AI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk-crewai.yml@9451d2592de6db593f9c60a39fbf9c47a8251a49 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file dial_crewai-0.10.0-py3-none-any.whl.
File metadata
- Download URL: dial_crewai-0.10.0-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4f429386b4f3e23f3b3d51f33a19936c68828f2f37706365de57da733d6512b
|
|
| MD5 |
faf63882740d1d697b5eb7d8cd067fb9
|
|
| BLAKE2b-256 |
4e623af8336e8d0af26ff8d56ebe1535ab9afa5016a5d8ebd1456916b6d08225
|
Provenance
The following attestation bundles were made for dial_crewai-0.10.0-py3-none-any.whl:
Publisher:
publish-sdk-crewai.yml on GENWAY-AI/dial
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dial_crewai-0.10.0-py3-none-any.whl -
Subject digest:
a4f429386b4f3e23f3b3d51f33a19936c68828f2f37706365de57da733d6512b - Sigstore transparency entry: 1928023053
- Sigstore integration time:
-
Permalink:
GENWAY-AI/dial@9451d2592de6db593f9c60a39fbf9c47a8251a49 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/GENWAY-AI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk-crewai.yml@9451d2592de6db593f9c60a39fbf9c47a8251a49 -
Trigger Event:
workflow_dispatch
-
Statement type: