telephony

Provision Twilio numbers and send SMS, MMS, and AI-driven calls via Bland.ai or Vapi.

Updated Jun 5, 2026
One-click install
npx skills add https://github.com/xu1713/openhorse --skill telephony-xu1713
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: telephony
Source: https://github.com/xu1713/openhorse/tree/main/openhorse/openhorse/optional-skills/productivity/telephony
Command: npx skills add https://github.com/xu1713/openhorse --skill telephony-xu1713

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? AI agents lack phone capabilities without modifying core tools. This Skill gives an agent a persistent, owned phone number for sending and receiving texts, placing direct calls, and running outbound AI-driven calls, with credentials and state persisted across sessions. ## Core Features & Use Cases - Number Provisioning & Persistence: Search, buy, and remember a Twilio phone number, storing credentials in ~/.hermes/.env and checkpoints in telephony_state.json. - SMS/MMS & Inbound Polling: Send texts with optional media and poll inbound messages with checkpoint tracking, no webhook server required. - Direct & AI Calls: Place Twilio calls with TTS or prerecorded audio (including IVR digit navigation), or run conversational outbound calls through Bland.ai or Vapi. - Use Case: An agent buys a Twilio number, texts deployment alerts from it, later polls replies with --since-last --mark-seen, and places a Vapi AI call to book a restaurant reservation. ## Quick Start Ask the agent to install the telephony skill, save your Twilio credentials, buy a phone number, and send a test SMS to your own phone.

Frequently Asked Questions about telephony

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I give an AI agent a phone number for calls and texts?

Use the telephony skill's helper script to save Twilio credentials, search available numbers with twilio-search, and buy one with twilio-buy --save-env. The number and credentials persist in ~/.hermes/.env and telephony_state.json across sessions.

Bland.ai vs Vapi for outbound AI phone calls?

Bland.ai is the quickest option requiring only one API key and no owned number. Vapi offers better conversational voice quality and model flexibility but requires importing an owned Twilio number first via vapi-import-twilio.

Can I receive inbound SMS without running a webhook server?

Yes, the twilio-inbox command polls the Twilio REST API for messages sent to your owned number. Use --since-last --mark-seen to read only new messages and advance the checkpoint stored in telephony_state.json.

Does a Twilio VoIP number work for 2FA verification codes?

Not reliably. Many third-party services reject VoIP numbers for two-factor authentication, so the skill explicitly warns against depending on it for arbitrary 2FA flows. It works for some cases but expectations should be set accordingly.

What are the limitations of this telephony approach?

It does not support real-time inbound call answering or webhook-based live SMS push into the agent loop. Inbound SMS relies on polling, and Twilio trial accounts may restrict which numbers you can call or text.