@sendly/mcp
Full SMS platform for AI agents — 95 tools for messaging, contacts, campaigns, templates, webhooks, OTP verification, conversations, labels, drafts, phone numbers, 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/mcp
Claude 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 95 Tools
Messaging (6)
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)
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)
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 (9)
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) |
mark_contact_valid | Mark a contact's phone number as validated |
check_contact_numbers | Bulk-check phone number validity |
bulk_mark_contacts_valid | Bulk-mark contacts as validated |
import_contacts | Bulk import up to 10,000 contacts |
Contact Lists (7)
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)
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)
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)
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)
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)
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 (12)
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 |
reset_webhook_circuit | Reset open circuit breaker on an endpoint |
redeliver_webhook | Redeliver a failed webhook event |
backfill_webhook | Backfill missed deliveries for an endpoint |
OTP / Verify (7)
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)
get_credits | Current balance and reserved credits |
list_credit_transactions | Transaction history |
Account (1)
get_account | Credit balance, verification status, rate limits |
Phone Numbers (4)
list_number_countries | List buyable countries and the number types per country |
search_available_numbers | Search numbers to buy by country and type (optional contains) |
list_numbers | List numbers owned by your workspace |
buy_number | Buy a number; surfaces a hosted link + code if documents/payment are required |
Enterprise (4)
generate_business_page | Generate hosted business page for verification (enterprise only) |
enterprise_workspace_get_verification | Get current toll-free verification record for a workspace (enterprise only) |
enterprise_workspace_submit_verification | Submit or resubmit toll-free verification (partial-update friendly) (enterprise only) |
enterprise_workspace_resubmit_verification | Convenience alias of submit — use when retrying after rejection (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:
| +15005550000 | Always succeeds |
| +15005550001 | Invalid number |
| +15005550006 | Carrier rejected |
Environment Variables
SENDLY_API_KEY | Yes | Your Sendly API key |
SENDLY_BASE_URL | No | API base (default: https://sendly.live) |
Links
License
MIT