Skip to main content

Documentation Index

Fetch the complete documentation index at: https://orbit-docs.devotel.io/llms.txt

Use this file to discover all available pages before exploring further.

Connect Orbit to Claude and Cursor via MCP

The Orbit MCP server exposes every core CPaaS capability as a tool that any Model Context Protocol client can call. You can send an SMS, initiate a voice call, trigger a campaign, or check delivery analytics with a single natural-language prompt — without leaving your IDE or the Claude chat window. Twilio has no MCP server as of May 2026. Orbit’s is the first production-grade CPaaS MCP server with write-heavy agentic coverage (send, dial, campaign, journey, agent handoff) rather than just read-only lookups.

Prerequisites

  • An Orbit account at orbit.devotel.io
  • An API key from Dashboard → Settings → API Keys (live: dv_live_sk_*; sandbox: dv_test_sk_*)
  • Node.js 18 or later on your local machine (required to run npx)

Claude Desktop

  1. Open or create ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).
  2. Add the orbit server block:
{
  "mcpServers": {
    "orbit": {
      "command": "npx",
      "args": ["-y", "@devotel/mcp-server"],
      "env": {
        "ORBIT_API_KEY": "dv_live_sk_xxxxxxxxxxxxxxxx"
      }
    }
  }
}
  1. Restart Claude Desktop. The Orbit tools appear in the tool selector on the next conversation.
  2. Verify the connection: type “List my Orbit campaigns” in a new chat. Claude calls list_campaigns and returns your campaign list.

Cursor

  1. Open Cursor Settings → Features → MCP → Add new MCP server and fill in:
    FieldValue
    Nameorbit
    Typecommand
    Commandnpx -y @devotel/mcp-server
    EnvORBIT_API_KEY=dv_live_sk_xxxxxxxxxxxxxxxx
  2. Alternatively, add .cursor/mcp.json to your project root:
{
  "mcpServers": {
    "orbit": {
      "command": "npx",
      "args": ["-y", "@devotel/mcp-server"],
      "env": {
        "ORBIT_API_KEY": "dv_live_sk_xxxxxxxxxxxxxxxx"
      }
    }
  }
}
Cursor reloads MCP config on file save. Test with @orbit in Cursor AI chat: “Using orbit, send an SMS to +14155551234 saying ‘Hello from Cursor’.”

Claude Code (CLI)

Add to your project’s .claude/settings.json:
{
  "mcpServers": {
    "orbit": {
      "command": "npx",
      "args": ["-y", "@devotel/mcp-server"],
      "env": {
        "ORBIT_API_KEY": "dv_live_sk_xxxxxxxxxxxxxxxx"
      }
    }
  }
}
Or set the env var globally and run the server inline:
export ORBIT_API_KEY=dv_live_sk_xxxxxxxxxxxxxxxx
claude mcp add orbit -- npx -y @devotel/mcp-server

Sandbox mode

Use a sandbox key (dv_test_sk_*) to exercise every tool without incurring real charges. Sandbox calls are logged in Orbit under Settings → API Logs → sandbox but no SMS is actually sent, no call is dialled, and no number is purchased.

Available tools (29)

ToolWhat it does
send_smsSend an SMS on any registered number
send_whatsappSend a WhatsApp message (template or freeform)
send_emailSend a transactional email
send_templateSend an approved template on any channel
voice_callInitiate an outbound voice call
purchase_numberBuy a phone number (auto-attaches compliance profile)
search_numbersBrowse available DIDs by country / type / pattern
list_campaignsList campaigns (filter by status)
start_campaignKick off a draft or scheduled campaign
start_journeyEnrol a contact or list into a published flow
list_agentsList deployed AI agents
agent_handoff_to_humanEscalate an AI conversation to a human agent
lookup_contactFind a contact by phone, email, or free-text
create_contactCreate or upsert a contact record
list_segmentsList contact segments with counts
create_segment_from_promptBuild a segment from a natural-language description
list_templatesList approved templates for a channel
get_message_statusCheck delivery status of a sent message
analytics_summaryAggregated delivery KPIs for a time window
check_balanceCurrent account credit balance
kb_querySemantic search of the tenant’s knowledge base
analyze_textSentiment / language / intent / PII analysis
create_support_ticketOpen a helpdesk ticket (Zendesk / Intercom)
create_calendar_eventSchedule a calendar event
add_memoryStore a memory item for an agent + contact pair
search_memorySemantic search over stored memories
list_memoriesList all memories for an agent + contact pair
delete_memoryDelete a single memory item
delete_contact_memoriesDelete all memories for a contact (GDPR Art 17)

Example prompts

Send a quick SMS:
“Using Orbit, send an SMS to +44 7700 900 123 saying ‘Your order has shipped.’”
Initiate a test call:
“Using Orbit, call +14155551234 from my primary number and record it.”
Campaign health check:
“Using Orbit, show me the analytics for the last 7 days and list any running campaigns.”
Agent + segment workflow:
“Using Orbit, create a segment called ‘VIP Europe’ for customers in Germany who haven’t ordered in 60 days, then send them the ‘reactivation_v2’ WhatsApp template.”

Security

  • Read-only mode: set MCP_TOOLS_ALLOW_LIST to only the GET tools to prevent any writes from the LLM session.
  • Budget cap: set MCP_TOOLS_BUDGET_LIMIT_USD=5 to refuse chargeable calls that would exceed $5 in the session.
  • Deny specific tools: MCP_TOOLS_DENY_LIST=purchase_number,voice_call to block high-impact tools while keeping all others available.
All chargeable calls emit a JSON-Lines audit entry to stderr — pipe stderr to your log sink to retain a full trace of what the LLM did.

Troubleshooting

SymptomFix
ORBIT_API_KEY rejected by APIKey is invalid or was generated for a different environment. Regenerate in Dashboard → Settings → API Keys.
Tools not showing in Claude DesktopConfig JSON is invalid (trailing comma, wrong path). Validate with cat + jq. Restart Claude Desktop after fixing.
voice_call returns 403The API key lacks voice:write scope. Re-generate with all scopes enabled.
Double-charges on retryThis should not happen — the MCP server attaches an Idempotency-Key on every chargeable POST. File a bug at github.com/dddFEDDDDDd/devotel-cpaas/issues.