Content
# Kudosity MCP Server
An installable [Model Context Protocol](https://modelcontextprotocol.io) server that gives AI agents native tools to send **SMS, MMS and WhatsApp** messages, manage contacts and webhooks, and research the Kudosity API — powered by [Kudosity](https://kudosity.com).
Runs locally (or in your own infrastructure), authenticates with your Kudosity API key, and exposes one clean tool per action — so an agent calls `send_sms` instead of hand-building HTTP requests.
## Tools
**Messaging**
| Tool | Type | Description |
|---|---|---|
| `send_sms` | write | Send an SMS to a recipient |
| `send_mms` | write | Send an MMS with a media attachment |
| `send_whatsapp` | write | Send a WhatsApp message (free-form text or approved template) |
| `get_message` | read | Get a sent message and its status by channel + ID |
| `list_messages` | read | List sent/received messages with delivery status; filter by status, direction (sent/replies), recipient, dates |
**Webhooks**
| Tool | Type | Description |
|---|---|---|
| `create_webhook` | write | Register an HTTPS webhook for delivery status, inbound messages, link hits, opt-outs |
| `list_webhooks` | read | List configured webhooks |
| `delete_webhook` | write | Delete a webhook by ID |
**Contacts & lists** *(require `KUDOSITY_API_SECRET`)*
| Tool | Type | Description |
|---|---|---|
| `create_list` | write | Create a contact list |
| `get_lists` | read | List all contact lists |
| `get_list` | read | Get a list and optionally its members |
| `add_contact_to_list` | write | Add a contact to a list |
| `remove_contact_from_list` | write | Remove a contact from a list |
| `delete_list` | write | Delete a contact list |
**Account** *(requires `KUDOSITY_API_SECRET`)*
| Tool | Type | Description |
|---|---|---|
| `get_balance` | read | Get your account balance |
**API discovery** — research the whole Kudosity API, always current
| Tool | Type | Description |
|---|---|---|
| `list_specs` | read | List the Kudosity API specifications |
| `list_endpoints` | read | List all endpoints for a spec |
| `search_endpoints` | read | Search the API by keyword |
| `get_endpoint` | read | Get full detail for one endpoint |
The discovery tools read the live specs from `developers.kudosity.com`, so they always reflect the latest published docs.
## Requirements
- Node.js 18+
- A Kudosity account and API key — **Settings → API Settings** in the Kudosity platform
- For contact and balance tools, also your API **secret** (same settings page)
## Install & configure
Runs via `npx` — no clone required.
### Claude Desktop / Claude Code
```json
{
"mcpServers": {
"kudosity": {
"command": "npx",
"args": ["-y", "kudosity-mcp"],
"env": {
"KUDOSITY_API_KEY": "your_api_key",
"KUDOSITY_API_SECRET": "your_api_secret"
}
}
}
}
```
`KUDOSITY_API_SECRET` is optional — omit it if you only need messaging, webhooks, and discovery. It's required for the contact-list and balance tools.
### Cursor — `.cursor/mcp.json`
```json
{
"mcpServers": {
"kudosity": {
"command": "npx",
"args": ["-y", "kudosity-mcp"],
"env": { "KUDOSITY_API_KEY": "your_api_key", "KUDOSITY_API_SECRET": "your_api_secret" }
}
}
}
```
### VS Code — `.vscode/mcp.json`
```json
{
"servers": {
"kudosity": {
"command": "npx",
"args": ["-y", "kudosity-mcp"],
"env": { "KUDOSITY_API_KEY": "your_api_key", "KUDOSITY_API_SECRET": "your_api_secret" }
}
}
}
```
## Usage examples
- *"Send an SMS to 61438333061 from KudosityDemo saying the order shipped."*
- *"Send the order_status_sample WhatsApp template to 61411122211."*
- *"List my delivered SMS from the last day."* / *"Show me inbound SMS replies."*
- *"Create a contact list called VIPs and add 61438333061."*
- *"Register a webhook at https://example.com/hook for SMS delivery status."*
- *"What's my account balance?"*
- *"Search the Kudosity API for anything about opt-outs."*
## Authentication
Kudosity has two API surfaces, and this server uses each where it's authoritative:
| Tools | Auth | Credentials |
|---|---|---|
| Messaging, webhooks, discovery | `x-api-key` header | `KUDOSITY_API_KEY` |
| Contact lists, balance | HTTP Basic | `KUDOSITY_API_KEY` + `KUDOSITY_API_SECRET` |
Credentials are read from environment variables and never written to disk. Treat them as secrets.
## Configuration
| Env var | Required | Default | Description |
|---|---|---|---|
| `KUDOSITY_API_KEY` | yes | — | Your Kudosity API key |
| `KUDOSITY_API_SECRET` | for contacts/balance | — | Your Kudosity API secret |
| `KUDOSITY_API_BASE_URL` | no | `https://api.transmitmessage.com` | Override the v2 API base URL |
| `KUDOSITY_V1_BASE_URL` | no | `https://api.transmitsms.com` | Override the v1 API base URL |
## Local development
```bash
git clone https://github.com/kudosity/mcp
cd mcp
npm install
npm run build
KUDOSITY_API_KEY=your_api_key npm start
```
Test tool listing with the MCP Inspector, or run the checks:
```bash
npm test # mock integration tests (no credentials)
node test/discovery-test.mjs # live spec-discovery test (no credentials)
```
## License
[MIT](./LICENSE)