@sendly/mcp
v2.3.0
Published
Sendly MCP Server — Full SMS platform for AI agents. Messaging, contacts, campaigns, templates, webhooks, OTP verification, and more.
Maintainers
Readme
@sendly/mcp
Full SMS platform for AI agents — 85 tools for messaging, contacts, campaigns, templates, webhooks, OTP verification, conversations, labels, drafts, and more via Model Context Protocol.
Quick Setup
Claude Code
claude mcp add --env SENDLY_API_KEY=sk_test_v1_your_key sendly -- npx -y @sendly/mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"sendly": {
"command": "npx",
"args": ["-y", "@sendly/mcp"],
"env": {
"SENDLY_API_KEY": "sk_test_v1_your_key"
}
}
}
}Cursor / VS Code Copilot / Windsurf
Add to your MCP config (.cursor/mcp.json, .vscode/mcp.json, or ~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"sendly": {
"command": "npx",
"args": ["-y", "@sendly/mcp"],
"env": {
"SENDLY_API_KEY": "sk_test_v1_your_key"
}
}
}
}OpenClaw
openclaw mcp set sendly '{"command":"npx","args":["-y","@sendly/mcp"],"env":{"SENDLY_API_KEY":"sk_test_v1_your_key"}}'Then ask your agent: "Send a test SMS to +15005550000 saying Hello from my agent"
All 82 Tools
Messaging (6)
| Tool | Description |
|------|-------------|
| send_sms | Send an SMS/MMS to a phone number |
| list_messages | List messages with full-text search (q param) |
| get_message | Get message details and delivery status |
| schedule_sms | Schedule for future delivery (5 min – 5 days) |
| cancel_scheduled_message | Cancel scheduled message, credits refunded |
| list_scheduled_messages | List pending scheduled messages |
Batch Messaging (4)
| Tool | Description |
|------|-------------|
| send_batch | Send to multiple recipients in one call (up to 1,000) |
| preview_batch | Preview credit cost before sending |
| get_batch | Get batch status with per-message results |
| list_batches | List all batches |
Conversations (9)
| Tool | Description |
|------|-------------|
| list_conversations | List threads by recent activity |
| get_conversation | Get conversation with optional message history |
| get_conversation_context | LLM-ready formatted context with AI annotations |
| reply_to_conversation | Reply in a conversation (auto-sets recipient) |
| update_conversation | Update metadata or tags |
| close_conversation | Close (auto-reopens on new inbound) |
| reopen_conversation | Reopen a closed conversation |
| mark_conversation_read | Reset unread count to zero |
| get_suggested_replies | AI-generated replies in 3 tones |
Contacts (6)
| Tool | Description |
|------|-------------|
| create_contact | Create with phone, name, email, metadata |
| list_contacts | List with search and pagination |
| get_contact | Get contact with list memberships |
| update_contact | Update name, email, or metadata |
| delete_contact | Delete (removes from all lists) |
| import_contacts | Bulk import up to 10,000 contacts |
Contact Lists (7)
| Tool | Description |
|------|-------------|
| create_contact_list | Create a list for campaigns |
| list_contact_lists | List all lists with counts |
| get_contact_list | Get list with members |
| update_contact_list | Update name or description |
| delete_contact_list | Delete list (contacts preserved) |
| add_list_contacts | Add contacts to a list |
| remove_list_contact | Remove a contact from a list |
Campaigns (10)
| Tool | Description |
|------|-------------|
| create_campaign | Create with {{variable}} personalization |
| list_campaigns | List with status filter |
| get_campaign | Get with delivery stats |
| update_campaign | Update draft or scheduled campaign |
| delete_campaign | Delete draft or cancelled campaign |
| preview_campaign | Preview recipient count and credit cost |
| send_campaign | Send immediately |
| schedule_campaign | Schedule for future delivery |
| cancel_campaign | Cancel scheduled campaign, credits refunded |
| clone_campaign | Clone as new draft |
Templates (8)
| Tool | Description |
|------|-------------|
| create_template | Create with {{variable}} placeholders |
| list_templates | List custom and preset templates |
| get_template | Get template with variable definitions |
| update_template | Update name or text |
| delete_template | Delete custom template |
| publish_template | Publish for use with Verify API |
| preview_template | Preview with sample variable values |
| list_template_presets | List system OTP/2FA presets |
Labels (4)
| Tool | Description |
|------|-------------|
| create_label | Create with name and color |
| list_labels | List all workspace labels |
| add_conversation_label | Add labels to a conversation |
| remove_conversation_label | Remove a label from a conversation |
Auto-Label Rules (4)
| Tool | Description |
|------|-------------|
| list_rules | List auto-label rules |
| create_rule | Create rule (intent/sentiment → label) |
| update_rule | Update conditions, actions, or enabled state |
| delete_rule | Delete rule |
Drafts (4)
| Tool | Description |
|------|-------------|
| create_draft | Create draft for human review |
| list_drafts | List drafts by conversation or status |
| approve_draft | Approve and send as real SMS |
| reject_draft | Reject with reason |
Webhooks (9)
| Tool | Description |
|------|-------------|
| create_webhook | Create endpoint (returns signing secret) |
| list_webhooks | List all webhooks |
| get_webhook | Get webhook with delivery stats |
| update_webhook | Update URL, events, or active state |
| delete_webhook | Delete webhook |
| test_webhook | Send test event to verify endpoint |
| list_webhook_deliveries | Delivery history with statuses |
| rotate_webhook_secret | Rotate signing secret |
| list_webhook_event_types | List available event types |
OTP / Verify (7)
| Tool | Description |
|------|-------------|
| send_otp | Send verification code via SMS |
| check_otp | Verify the code user entered |
| get_verification_status | Check verification state |
| resend_otp | Resend if original not received |
| list_verifications | List recent verifications |
| create_verify_session | Hosted verification UI (zero frontend code) |
| validate_verify_session | Validate token from hosted session |
Credits (2)
| Tool | Description |
|------|-------------|
| get_credits | Current balance and reserved credits |
| list_credit_transactions | Transaction history |
Account (1)
| Tool | Description |
|------|-------------|
| get_account | Credit balance, verification status, rate limits |
Enterprise (1)
| Tool | Description |
|------|-------------|
| generate_business_page | Generate hosted business page for verification (enterprise only) |
Authentication
Set SENDLY_API_KEY as an environment variable:
- Test keys (
sk_test_v1_...) — sandbox mode, no real SMS, OTP codes in response - Live keys (
sk_live_v1_...) — real SMS delivery, requires verified phone number
Get your key at sendly.live → Settings → API Keys.
Sandbox Testing
With test keys, use magic numbers:
| Number | Behavior | |--------|----------| | +15005550000 | Always succeeds | | +15005550001 | Invalid number | | +15005550006 | Carrier rejected |
Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| SENDLY_API_KEY | Yes | Your Sendly API key |
| SENDLY_BASE_URL | No | API base (default: https://sendly.live) |
Links
- MCP Tools Reference — all 85 tools with schemas
- Agent Skills — SKILL.md files for 8 platforms
- API Reference
- Sendly Dashboard
License
MIT
