Developers
Sonny MCP Beta
Connect MCP-compatible AI assistants — Claude, and any client that speaks the Model Context Protocol — to your workspace, with the same keys, scopes, and boundaries as the public API.
Read the Public API guideQuickstart
- 01
Create a scoped API key
MCP uses the same keys as the public API. Open Settings → Developer → API keys and create a key with only the scopes your assistant needs — read-only scopes are enough for question-answering assistants.
- 02
Add the Sonny server to your client
Sonny MCP is a remote Streamable HTTP server — nothing to install or host. Point your client at the endpoint and send your key in the
Authorizationheader, stored in your client's secret storage. - 03
Ask your assistant to use Sonny
Tools describe themselves, so a prompt like “List my open conversations” is enough. Assistants see which tools are read-only and which are destructive, so a good client asks before it changes anything.
Claude Code
claude mcp add --transport http sonny https://www.usesonny.com/api/mcp \
--header "Authorization: Bearer sonny_your_key"JSON client configuration
{
"mcpServers": {
"sonny": {
"url": "https://www.usesonny.com/api/mcp",
"headers": {
"Authorization": "Bearer sonny_your_key"
}
}
}
}How Sonny keeps tool calls safe
- One workspace, chosen scopes
- Every call runs inside the workspace that owns the key, and a tool only works when the key holds its required scope.
- Honest tool annotations
- Read-only tools are marked read-only; updating and deleting tools are marked destructive so your client can confirm before acting.
- The same business rules
- Tools run the exact workflows the public API runs — audit history, notifications, and webhooks all behave as if a teammate made the change.
Keep an assistant inside one inbox
Workspaces often hold several sources — one per product or brand. Have your assistant call list_sources once to discover them, then pass sourceId to list_conversations so questions about one product only ever return that product's conversations. Every conversation also carries its own sourceId, so results are verifiable.
Tool catalog
Every public API operation is available as a tool. The required scope is listed beside each one.
- list_contacts
- List contacts
contacts:read- create_contact
- Create a contact
contacts:write- get_contact
- Get a contact
contacts:read- update_contact
- Update a contact
contacts:write- archive_contact
- Archive a contact
contacts:write- list_channels
- List conversation channels
conversations:read- list_sources
- List sources
conversations:read- list_conversations
- List conversations
conversations:read- get_conversation
- Get a conversation
conversations:read- update_conversation
- Update a conversation
conversations:write- list_messages
- List messages
messages:read- create_internal_note
- Create an internal note
messages:write- list_webhooks
- List webhook endpoints
webhooks:read- create_webhook
- Create a webhook endpoint
webhooks:write- list_webhook_events
- List webhook event types
webhooks:read- update_webhook
- Update a webhook endpoint
webhooks:write- delete_webhook
- Delete a webhook endpoint
webhooks:write- test_webhook
- Queue a test event
webhooks:write- list_webhook_deliveries
- List webhook deliveries
webhooks:read- retry_webhook_delivery
- Retry a failed delivery
webhooks:write