hail
OfficialProvides speech-to-text transcription for voice calls, enabling real-time understanding of spoken input.
Offers text-to-speech synthesis for generating natural-sounding voice responses in calls.
Integrates OpenAI's language models as the conversational brain for AI agents in voice and email communications.
Enables outbound phone calls via Twilio, with AI-driven voice pipelines for conversational agents.
Hail
Hail is a communication platform for AI agents. Agents can make telephone calls. Agents can send and receive SMS messages and email. Inbound telephone calls will follow. You can host Hail on your own servers. The source code is open (AGPLv3).
An example: your agent must call a person to change an appointment. Hail connects to the telephone carrier and operates the voice pipeline. The agent can supply its own LLM. If the agent does not supply an LLM, Hail uses a fallback sequence: OpenAI, then Gemini, then Claude.
Quick start
Do these steps:
Get the source code and go into the directory:
git clone https://github.com/hail-hq/hail cd hailCopy the example configuration file:
cp .env.example .envAdd your credentials to
.envfor Twilio, LiveKit Cloud, Deepgram, and Cartesia. Add credentials for one of OpenAI, Gemini, or Anthropic.Start the stack:
docker compose up
Then get an API key. There are two procedures:
Hail Cloud (managed at hail.so): Run
hail login. The command starts the device flow. It writes an API key to~/.hail/credentials.json.Self-host: Put an API key into your local database. Refer to docs/operations.md, section "First-run DB seed". Then set the environment variable
HAIL_API_KEY, or give the--api-keyoption.
Use the CLI (for persons who write scripts for Hail):
hail login # authenticate (device flow)
hail auth logout # remove local credentials
hail auth token # print bare API key for scripting
hail call +14155550100 --prompt "be brief"
hail call list
hail call tail <id> # follow events for one call
hail sms +15551234567 --body "Hello!" --recipient-consent
hail sms list
hail sms status <id>
hail sms suppressions list # opt-out list
hail sms sender-id get # custom sender ID
hail numbers acquire # dedicated phone number (voice + SMS)
hail numbers list
hail contacts list # org contact directory
hail email send --to a@b.com --subject hi --body "hello"
hail email list
hail email get <id>
hail email tail <id> # follow events for one email
hail email raw <id> # RFC 5322 source
hail email attachment <id> <att-id> --output file.pdf
hail email domain register --kind hail_mail
hail email domain register --kind custom --domain acme.com # send + receive on your own domain
hail email domain list
hail tail # cross-channel event stream
hail tail call:<id> # narrow by resource type
hail mcp endpoint # Streamable HTTP URL for the MCP server
hail completion zsh # source <(hail completion zsh)
hail versionOr use HTTP or MCP:
# HTTP
curl -X POST http://localhost:8080/calls \
-H "Authorization: Bearer $HAIL_API_KEY" \
-d '{"to":"+15551234567","system_prompt":"..."}'
curl -X POST http://localhost:8080/sms \
-H "Authorization: Bearer $HAIL_API_KEY" \
-d '{"to":"+15551234567","body":"hello","recipient_consent":true}'
curl -X POST http://localhost:8080/emails \
-H "Authorization: Bearer $HAIL_API_KEY" \
-d '{"to":["alice@example.com"],"subject":"hi","body_text":"hello"}'
# MCP (for AI agents — Claude.ai, ChatGPT, Claude Code, Cursor, …)
# Add a remote MCP connector in your client pointing at:
# http://<your-host>:8081 (self-hosted)
# https://mcp.hail.so (Hail Cloud, later)This is hail tail in operation:

For the full setup, refer to docs/setup/twilio.md, docs/setup/livekit-cloud.md, docs/setup/aws-ses.md, and docs/setup/mcp.md.
Related MCP server: bubblyphone-agents
Tenets
Clear communication. The API has explicit OpenAPI contracts. There is no hidden behavior.
Simple code. Simple solutions are best. We do not add an abstraction before it has two uses.
Short documents. Each page is one screen. Setup from a new clone takes 10 minutes or less.
Self-hostable. The command
docker compose upstarts all the services. Only LiveKit Cloud is external.Pluggable brain. Connect your own LLM endpoint that is compatible with the OpenAI completions API. As an alternative, use the fallback sequence from Hail: OpenAI, then Gemini, then Anthropic. Hail always supplies the voice pipeline and the transport.
Agent-first documents. AI agents are primary readers. Each page starts with an example that you can run. Pages give links to canonical sources (OpenAPI spec, MCP tool schemas, code paths). They do not give the same data again in different words. Each page lets a reader — a person or an agent — do the subsequent action.
Milestones
A checked box shows a feature that we released. The changelog for each artifact (GitHub Releases for the CLI, PyPI release notes for the SDK) shows the version that contains each feature.
Phone calls
Outbound
Twilio
Telnyx
Inbound
Twilio
SMS
Outbound
Twilio
Inbound
Twilio
Outbound
AWS SES
Custom sender domains (own DNS, automatic DKIM + MAIL FROM)
Inbound
AWS SES
Custom domains (receive on verified domains)
Voice pipeline
Languages
39 call languages with automatic STT routing and per-language turn detection — see docs/languages.md
STT
Deepgram
Whisper
AssemblyAI
TTS
Cartesia
ElevenLabs
Deepgram Aura
VAD
Silero
Turn detection
LiveKit turn-detector
LLM — system-prompt mode
Fallback: OpenAI → Gemini → Anthropic, fast models
LLM — BYO-endpoint mode
OpenAI chat-completions-compatible
Recording
S3 upload
Diarization
Distribution
API
OpenAPI spec
CLI
hailbinary via GitHub Releases
MCP server
Remote Streamable HTTP endpoint included with each Hail deployment
PyPI stdio package— we do not supply this package; refer to docs/setup/mcp.md
Python SDK
hail-sdkon PyPI, imports ashail
Infrastructure
Docker Compose scaffold
Self-hosted LiveKit SFU
docker compose integration
Architecture
This diagram shows the path of an outbound call:
AI agent ──► Hail API ──dispatch──► Voicebot ──► LiveKit Cloud ──SIP──► Twilio ──► 📞For the full diagram, refer to docs/architecture.md.
Contributing
Refer to docs/contributing.md. The procedure is short: make a fork, make a branch, write conventional commits, and open a pull request. Put provider adapters in core/hailhq/core/providers/. If you add a new environment variable, update .env.example in the same commit.
License
The source code has the AGPL-3.0-or-later license. If you operate a modified Hail as a service, you must release your source code.
The pricing dataset (costs/) has the CC-BY-4.0 license. You can use the pricing JSON if you give attribution.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceProduction-ready MCP server with 40+ tools — QR codes, PDFs, text processing, TTS, web scraping, image generation and more. Built for AI agents.Last updated2537MIT
- AlicenseAqualityDmaintenanceMCP server for BubblyPhone that lets AI assistants make real phone calls, manage AI voice agents, buy phone numbers in 30+ countries, and track billing. Supports 20 tools for full telephony control.Last updated20291MIT
- AlicenseAqualityDmaintenanceGives AI agents phone numbers, email, SMS, and voice calls as MCP tools, enabling them to provision numbers, capture 2FA codes, send messages, and make calls.Last updated15MIT
- AlicenseAqualityBmaintenanceLet your AI agent call your phone and talk to you — MCP servers for live, interruptible voice calls + tiered alerts, using free self-hosted pieces (pjsua2 + whisper.cpp + Linphone). No paid telephony, no extra API key.Last updated316Apache 2.0
Related MCP Connectors
Give AI agents real phone numbers, messages, and voice calls via MCP.
Communication stack for AI agents: SMS, AI voice calls, phone numbers, and account events.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hail-hq/hail'
If you have feedback or need assistance with the MCP directory API, please join our Discord server