MCP Server
Boltly exposes every API endpoint as an MCP tool (Model Context Protocol). This means any AI agent — Claude, Cursor, or your own — can send messages, manage contacts, and trigger automations without writing glue code.
How it works
At startup, the Boltly backend parses its Swagger spec and auto-generates an MCP tool for every /public/ endpoint. Tools follow a {tag}_{action} naming convention:
contacts_list GET /v1/contacts contacts_create POST /v1/contacts messages_create POST /v1/messages broadcasts_create POST /v1/broadcasts broadcasts_execute POST /v1/broadcasts/{id}/execute
Tools are scope-filtered — an API key with contacts:read will only see contact read tools.
Listing available tools
curl https://api.boltly.online/v1/mcp/tools \
-H "X-API-Key: sk_live_..." {
"data": [
{
"name": "contacts_list",
"description": "List contacts with optional search",
"input_schema": {
"type": "object",
"properties": {
"search": { "type": "string" },
"page": { "type": "integer" }
}
}
}
]
} Calling a tool
Execute any tool by name with a JSON arguments object:
curl -X POST https://api.boltly.online/v1/mcp/tools/call \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "messages_create",
"arguments": {
"to": "+1234567890",
"type": "text",
"text": { "body": "Sent via MCP!" }
}
}'
The response is the raw JSON result from the underlying API endpoint. A 403 is returned if the API key lacks the required scope for the tool.
Using with Claude Code
Add Boltly as an MCP server in your Claude Code configuration. Claude will automatically discover all available tools based on your API key scopes.
{
"mcpServers": {
"boltly": {
"url": "https://api.boltly.online/v1/mcp",
"headers": {
"X-API-Key": "sk_live_..."
}
}
}
}
Once configured, you can ask Claude to "send a WhatsApp message to +1234567890" and it will use the messages_create tool automatically.
Scope mapping
Tools inherit scope requirements from their underlying HTTP method:
{resource}:read {resource}:write {resource}:write {resource}:manage