Skip to main content

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)
ReplyToMessageTool Reply or react to a message
ListMessagesTool List recent messages (contact for one conversation, search by text)
ListContactsTool List the numbers your lines have talked to
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:

  1. trigger a signup that texts a code to your Dial number,
  2. call WaitForMessageTool to read the inbound code,
  3. enter it back into the signup form.

See examples/signup_crew.py for a runnable crew.

Notes

  • The dial-sdk client is async; these tools are sync-first (_run) with an async→sync bridge, and also expose _arun for 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.
  • SendMessageTool is a write action and isn't idempotent — a re-invoke after a failure can send a duplicate. MakeCallTool accepts an idempotency_key.
  • WaitForMessageTool is 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.

Release files for dial-crewai 0.19.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dial-crewai 0.19.0
File Size Uploaded
dial_crewai-0.19.0.tar.gz 265.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dial-crewai 0.19.0
File Interpreter ABI Platform
dial_crewai-0.19.0-py3-none-any.whl Python 3 none any Details

Total release size: 278.7 kB

Release files / dial_crewai-0.19.0.tar.gz

Download URL dial_crewai-0.19.0.tar.gz
Size 265.9 kB
Tags Source
SHA-256 checksum
How to use checksums
52934132488ba9b51691ed53f642662499ee31b27438eb79485062cd69c7005f
BLAKE2b-256 checksum
How to use checksums
d8c54a24e157bc0edd9d6d6e5c09ed5bd00b39a1a65b9f95dc4fbd0d0df97ac6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / dial_crewai-0.19.0-py3-none-any.whl

Download URL dial_crewai-0.19.0-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aa87ae52629c5bba399dc43cb0cf8e1a1291aeaa2b0e24315a82229e4289e4f5
BLAKE2b-256 checksum
How to use checksums
a87accbd6397e14799f78431ca79639a1c4db4c5f2157109e6daf7e7ab77b76b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.2

2 release files

0.19.1

2 release files

This release

0.19.0 This release

2 release files

0.18.0

2 release files

0.15.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page