dial_crewai

Submodules

Classes

GetBillingTool

Base for Dial CrewAI tools.

GetCallTool

Base for Dial CrewAI tools.

ListCallsTool

Base for Dial CrewAI tools.

ListMessagesTool

Base for Dial CrewAI tools.

ListNumbersTool

Base for Dial CrewAI tools.

MakeCallTool

Base for Dial CrewAI tools.

PurchaseNumberTool

Base for Dial CrewAI tools.

ReplyToMessageTool

Base for Dial CrewAI tools.

SendMessageTool

Base for Dial CrewAI tools.

SetNumberPropertiesTool

Base for Dial CrewAI tools.

StartTypingTool

Base for Dial CrewAI tools.

StopTypingTool

Base for Dial CrewAI tools.

WaitForMessageTool

Base for Dial CrewAI tools.

Functions

dial_tools(→ list[crewai.tools.BaseTool])

Every Dial tool in one list, all sharing the given DialClient.

Package Contents

class dial_crewai.GetBillingTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

description: str = "Get the account's billing status: credit balance, subscription (if any), each number's billing...
name: str = 'get_billing'
class dial_crewai.GetCallTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'Fetch a single call by its id, including its current status.'
name: str = 'get_call'
class dial_crewai.ListCallsTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'List recent inbound and outbound calls on the account.'
name: str = 'list_calls'
class dial_crewai.ListMessagesTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'List recent inbound and outbound messages on the account.'
name: str = 'list_messages'
class dial_crewai.ListNumbersTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

description: str = 'List all available Dial phone numbers on the account.'
name: str = 'list_numbers'
class dial_crewai.MakeCallTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'Initiate an AI voice call to a phone number.'
name: str = 'make_call'
class dial_crewai.PurchaseNumberTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'Provision (buy) a new Dial phone number. Billable.'
name: str = 'purchase_number'
class dial_crewai.ReplyToMessageTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'Reply in-thread or react to an existing message. The reply goes out from the Dial number the...
name: str = 'reply_to_message'
class dial_crewai.SendMessageTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = 'Send a message to a phone number, optionally with media attachments (MMS). On an iMessage...
name: str = 'send_message'
class dial_crewai.SetNumberPropertiesTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = "Update a Dial phone number's properties: its inbound instruction (the system prompt its AI...
name: str = 'set_number_properties'
class dial_crewai.StartTypingTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = "Show a typing indicator to the recipient, as if composing a message from your number. iMessage...
name: str = 'start_typing'
class dial_crewai.StopTypingTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = "Clear a typing indicator previously shown with start_typing. Delivering a message or reaction...
name: str = 'stop_typing'
class dial_crewai.WaitForMessageTool

Bases: _DialTool

Base for Dial CrewAI tools.

Holds a shared DialClient (passed in, not constructed per call) so every tool reuses one connection pool, and drives the async client from CrewAI’s sync _run via the background-loop bridge. arbitrary_types_allowed lets the Pydantic-based BaseTool carry the non-Pydantic DialClient as a field.

args_schema: type[pydantic.BaseModel]
description: str = "Wait for the next inbound SMS message and return it. Blocks until a message arrives or the...
name: str = 'wait_for_message'
dial_crewai.dial_tools(client: dial_sdk.DialClient) list[crewai.tools.BaseTool]

Every Dial tool in one list, all sharing the given DialClient.

Build one client, hand the tools to a CrewAI Agent:

from crewai import Agent
from dial_sdk import DialClient, DialConfig
from dial_crewai import dial_tools

client = DialClient(DialConfig(api_key="sk_live_..."))
agent = Agent(role="...", goal="...", tools=dial_tools(client))

The tools share one connection pool. The client lives for the process (its requests run on a background event loop); a sync crew needn’t close it explicitly.