EpicTexting: Send SMS from Your AI Agent (Twilio)

Let your AI agent send text messages from your own Twilio number: one SMS or a personalised bulk text to up to 50 people, with delivery status.

Sanskar Tiwari

@theindianappguy

Install

$ openclaw skills install @theindianappguy/epictexting

EpicTexting

Your agent sends the text. EpicTexting sends SMS from your own Twilio number: one message or a personalised bulk text, with delivery status and replies.

1. Connect (once)

EpicTexting runs as a hosted MCP server: https://www.epictexting.app/api/mcp/mcp (Streamable HTTP, OAuth sign-in, no API key). If you already see EpicTexting tools (get_account_status, get_message_status …, possibly prefixed like mcp__epictexting__…), skip this. Otherwise tell the user the one command for their agent, then ask them to sign in when the browser opens:

AgentConnect
Claude Codeclaude mcp add --transport http epictexting https://www.epictexting.app/api/mcp/mcp then /mcp → epictexting → Authenticate
Codexcodex mcp add epictexting --url https://www.epictexting.app/api/mcp/mcp then codex mcp login epictexting
Gemini CLIgemini mcp add -t http epictexting https://www.epictexting.app/api/mcp/mcp then /mcp auth epictexting
OpenClawopenclaw mcp add epictexting --url https://www.epictexting.app/api/mcp/mcp --transport streamable-http then openclaw mcp login epictexting
Hermeshermes mcp add epictexting --url https://www.epictexting.app/api/mcp/mcp --auth oauth then hermes mcp login epictexting
Cursor / Claude.ai / ChatGPTadd a custom MCP connector with the URL above

A free account works to start: https://www.epictexting.app/?ref=agent-skill

2. Tools

ToolWhat it doesKind
get_account_statusTwilio connected?, default sender, plan, SMS left this monthread-only
list_sender_numbersTwilio numbers you can send fromread-only
send_smsSend one SMSsends / acts
send_bulk_smsSend the same SMS to up to 50 people, personalised with {name}sends / acts
list_recent_messagesRecent sent and received SMSread-only
get_message_statusDelivery status of one message by SIDread-only

3. Rules (non-negotiable)

  • Always confirm before sending. Show the user exactly who gets what text (every number and the final message, with {name} filled in for one example), and for bulk sends the count of SMS. Wait for a clear yes. One send per yes.
  • Numbers must be international format (+15551234567, +919876543210).
  • Only text people who expect to hear from the user. No spam, no purchased lists, no marketing to people who haven't opted in. Respect STOP replies.
  • If a result has connect_url, Twilio isn't connected: give the user that link and stop. If it has upgrade_url, the monthly limit is reached: share it.

4. Workflow

  1. get_account_status first. If it returns connect_url, share it and stop.
  2. Draft the message (and the recipient list for bulk). Use {name} for personalisation in send_bulk_sms.
  3. Show the draft and get a yes. Then send_sms (one) or send_bulk_sms (≤50).
  4. Report what was sent. If asked, check get_message_status with the returned SID, or list_recent_messages for replies.

5. Examples

  1. "Text +1 415 555 0134: running 10 minutes late, see you at 6:10." → Show number + text → yes → send_sms → "Sent from your default number."
  2. "Send this to my 12 workshop attendees: Hi {name}, tomorrow's session starts at 10am in Room B." → Show list + one filled example + "12 SMS" → yes → send_bulk_sms.
  3. "Did my last text to Priya get delivered?" → list_recent_messages to her number → get_message_status → delivered / failed with reason.
  4. "Which numbers can I send from?" → list_sender_numbers.
  5. "Any replies today?" → list_recent_messages → summarise inbound texts.

6. Errors

ResultDo this
401 / "sign in" / auth errorThe MCP isn't authorised: run the connect step for the user's agent again.
connect_url / upgrade_url in a resultGive the user that link; don't retry.
Tool refuses the requestExplain the reason it gave; don't rephrase to get around it.

Top skills in this category