The Model Context Protocol (MCP) is an open standard that lets AI assistants call external tools. Titan implements MCP so that agents running in Claude Desktop, Claude Code, Cursor, or any custom MCP client can send WhatsApp messages, manage sessions, configure webhooks, and more — all through structured tool calls rather than raw HTTP. Titan’s MCP server exposes 76 tools across 14 domains, with a 1:1 mapping to every REST API endpoint. It also provides 3 resources for reading live state and 3 prompt templates to help agents get started quickly.Documentation Index
Fetch the complete documentation index at: https://docs.usetitan.app/llms.txt
Use this file to discover all available pages before exploring further.
What’s included
76 tools
Every REST API endpoint is available as an MCP tool, organized across Sessions, Messaging, Contacts, Groups, Channels, Presence, Profile, Labels, Chats, Webhooks, Pairing, LIDs, Media, and Client Tokens.
3 resources
titan://sessions, titan://info, and titan://webhooks give agents direct read access to live session state, server info, and webhook configuration without calling a tool.3 prompt templates
Built-in prompts for
send_message, setup_session, and configure_webhooks help agents understand how to use the tools correctly.2 transport modes
stdio for local clients like Claude Desktop and Cursor; Streamable HTTP for web-based agents and Docker deployments.
Connecting Claude Desktop (stdio)
stdio mode runs the MCP server as a subprocess managed by Claude Desktop. Add the following to your Claude Desktop configuration file:~/.config/Claude/claude_desktop_config.json (Linux / macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
titan_... with your API key and https://api.example.com with your Titan API base URL. Restart Claude Desktop after saving the file.
Connecting via HTTP (web agents and Docker)
HTTP mode runs the MCP server as a persistent process and exposes an endpoint that any MCP client can call over the network:http://localhost:3100/mcp.
Point your MCP client at this URL. For self-hosted Docker Compose deployments, a titan-mcp service is included in the official Compose file.
Connecting Claude Code or Cursor
For Claude Code (~/.claude/claude_desktop_config.json) and Cursor, use the same stdio configuration format shown above. Both tools read from the same MCP config file location.
API key scopes
The MCP server uses the API key you provide and inherits its permissions. Tools will return errors if the key lacks the required scope for the operation.Scope requirements by domain
Scope requirements by domain
| Domain | Required scope |
|---|---|
| Sessions (read) | sessions:read |
| Sessions (manage), Pairing | sessions:manage |
| Messages | messages:write |
| Chats | chats:manage |
| Groups (read) | groups:read |
| Groups (manage) | groups:manage |
| Contacts (read) | contacts:read |
| Contacts (manage) | contacts:manage |
| Channels (read) | channels:read |
| Channels (manage) | channels:manage |
| Presence (read) | presence:read |
| Presence (write) | presence:write |
| Profile (read) | profile:read |
| Profile (write) | profile:write |
| Labels (read) | labels:read |
| Labels (manage) | labels:manage |
| Webhooks | webhooks:manage |
| Media (read) | media:read |
| Media (manage) | media:manage |
*). For restricted agents that should only send messages, issue a key scoped to messages:write sessions:read.
Tool reference
All 76 tools follow a consistent naming pattern:domain_action (for example, sessions_list, messages_send, groups_add_participants).
Sessions — 10 tools
Sessions — 10 tools
| Tool | Description |
|---|---|
sessions_list | List all sessions with status |
sessions_create | Create a new session |
sessions_get | Get session details |
sessions_update | Update session configuration |
sessions_delete | Delete a session |
sessions_start | Start and connect a session |
sessions_stop | Stop and disconnect a session |
sessions_restart | Restart a session |
sessions_logout | Log out and unpair the device |
sessions_me | Get linked account info |
Pairing — 2 tools
Pairing — 2 tools
| Tool | Description |
|---|---|
pair_qr | Get a QR code for pairing (returns base64 PNG) |
pair_code | Get an 8-digit pairing code for a phone number |
Messages — 5 tools
Messages — 5 tools
| Tool | Description |
|---|---|
messages_send | Send a message (text, image, video, audio, document, poll, location, contact, sticker) |
messages_seen | Mark messages as read |
messages_typing | Send a typing indicator |
messages_react | React to a message with an emoji |
messages_star | Star or unstar a message |
Chats — 4 tools
Chats — 4 tools
| Tool | Description |
|---|---|
chats_edit_message | Edit a sent message |
chats_delete_message | Delete a message for everyone |
chats_archive | Archive a chat |
chats_unarchive | Unarchive a chat |
Groups — 17 tools
Groups — 17 tools
| Tool | Description |
|---|---|
groups_list | List all groups |
groups_create | Create a group |
groups_get | Get group info |
groups_delete | Delete or disband a group |
groups_leave | Leave a group |
groups_set_subject | Set the group name |
groups_set_description | Set the group description |
groups_get_invite_code | Get the invite link |
groups_revoke_invite | Revoke the invite link and generate a new one |
groups_get_participants | List participants |
groups_add_participants | Add members |
groups_remove_participants | Remove members |
groups_promote | Promote participants to admin |
groups_demote | Demote admins |
groups_set_picture | Set the group profile picture |
groups_join_info | Get group info from an invite code |
groups_join | Join a group via invite code |
Contacts — 6 tools
Contacts — 6 tools
| Tool | Description |
|---|---|
contacts_list | List all contacts |
contacts_get | Get contact info |
contacts_check | Check if phone numbers are registered on WhatsApp |
contacts_picture | Get a contact’s profile picture |
contacts_block | Block a contact |
contacts_unblock | Unblock a contact |
Channels — 8 tools
Channels — 8 tools
| Tool | Description |
|---|---|
channels_list | List followed channels |
channels_create | Create a channel |
channels_get | Get channel info |
channels_delete | Delete a channel |
channels_follow | Follow a channel |
channels_unfollow | Unfollow a channel |
channels_mute | Mute channel notifications |
channels_unmute | Unmute channel notifications |
Presence — 4 tools
Presence — 4 tools
| Tool | Description |
|---|---|
presence_set | Set online or offline status |
presence_get_all | Get presence for all contacts |
presence_get_chat | Get presence for a specific chat |
presence_subscribe | Subscribe to presence updates for a chat |
Profile — 5 tools
Profile — 5 tools
| Tool | Description |
|---|---|
profile_get | Get own profile |
profile_set_name | Set display name |
profile_set_status | Set about text |
profile_set_picture | Set profile picture |
profile_delete_picture | Remove profile picture |
Labels — 6 tools
Labels — 6 tools
| Tool | Description |
|---|---|
labels_list | List all labels |
labels_create | Create a label |
labels_update | Update a label |
labels_delete | Delete a label |
labels_get_chat | Get labels assigned to a chat |
labels_set_chat | Set labels on a chat |
Webhooks — 5 tools
Webhooks — 5 tools
| Tool | Description |
|---|---|
webhooks_list | List webhooks |
webhooks_create | Create a webhook |
webhooks_get | Get webhook details |
webhooks_update | Update a webhook |
webhooks_delete | Delete a webhook |
Media — 3 tools
Media — 3 tools
| Tool | Description |
|---|---|
media_download | Download a media file |
media_info | Get media metadata |
media_persist | Save media to S3 storage |
LIDs — 1 tool
LIDs — 1 tool
| Tool | Description |
|---|---|
lids_resolve | Resolve phone number JIDs to or from Linked Device IDs |
Info — 2 tools
Info — 2 tools
| Tool | Description |
|---|---|
info_version | Get server version |
info_status | Get server status |
JID format reference
Most tools that target a specific WhatsApp user or group require a JID (Jabber ID). Use these formats:| Entity | Format | Example |
|---|---|---|
| User | {phone}@s.whatsapp.net | [email protected] |
| Group | {phone}-{timestamp}@g.us | [email protected] |
| Channel | {id}@newsletter | 120363...@newsletter |
| Status broadcast | status@broadcast | status@broadcast |