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 guide

Quickstart

  1. 01

    Create a scoped API key

    MCP uses the same keys as the public API. Open Settings DeveloperAPI keys and create a key with only the scopes your assistant needs — read-only scopes are enough for question-answering assistants.

  2. 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 Authorization header, stored in your client's secret storage.

  3. 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

Related docs