twist-ai
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TWIST_API_KEY | Yes | Your Twist API key. | |
| TWIST_CREATE_THREAD_DISPLAY_IN_INBOX | No | Set to true to unarchive every newly-created thread so it appears in the author's Inbox, without needing to pass displayInInbox: true on each call. Only takes effect when running the MCP locally. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| user-infoA | Get comprehensive user information including user ID, name, email, timezone, bot status, default workspace, and away mode status. |
| awayA | Manage the current user's away status. Supports getting, setting, and clearing away mode with types: parental, vacation, sickleave, other. |
| get-workspacesA | Get all workspaces that the user belongs to. Returns a list of workspaces with their IDs, names, creators, creation dates, and optional default channels, conversations, and plan information. |
| get-usersA | Get users from a workspace. Retrieves all workspace users by default, or specific users if userIds array is provided. Supports optional case-insensitive search filtering by name or email. |
| get-groupsA | Get groups from a workspace. Retrieves all workspace groups by default, or specific groups if groupIds array is provided. Supports optional case-insensitive search filtering by group name. Use this before passing group IDs to tools that support group notifications. |
| fetch-inboxA | Fetch inbox view with threads, conversations, unread counts, and unread IDs. Provides a complete picture of the inbox state. Use archiveFilter "all" to include threads marked as done alongside active threads. |
| load-threadB | Load a thread with its metadata and comments. Supports filtering by timestamp and pagination. |
| load-conversationA | Load a conversation (direct message) with its metadata and messages. Supports filtering by timestamp and pagination. |
| search-contentA | Search across a workspace for threads, comments, and messages. Supports filtering by channels, authors, dates, and mentions. |
| get-mentionsA | Fetch threads, comments, and messages that mention the current user. Supports filtering by channel, author, and date range. Use this instead of search-content when no keyword query is needed. |
| build-linkA | Build valid Twist URLs for threads, comments, conversations, or messages. Provide workspace_id and either (conversation_id + optional message_id) OR (thread_id + optional channel_id + optional comment_id). |
| create-threadB | Create a new thread in a workspace channel. Requires a channel ID, title, and content. Optionally notify specific users or groups. |
| create-conversationA | Start a direct or group conversation with one or more users and post an initial message. Reuses the existing conversation if one already exists for the same set of users. |
| update-objectA | Update an existing Twist object. |
| delete-objectA | Permanently delete a Twist object. |
| replyA | Post a reply to a thread (as a comment) or conversation (as a message). Thread replies notify everyone who has interacted with the thread by default unless specific user recipients, groups, or a notifyAudience are provided. |
| reactA | Add or remove an emoji reaction on a thread, comment, or conversation message. Use targetType to specify the type of object (thread, comment, or message) and targetId for the ID. |
| mark-doneA | Mark threads or conversations as read/unread and archived/unarchived. Individual IDs take priority over bulk selectors whenever both are provided. For threads: markRead=false marks unread, archive=false unarchives; bulk operations (workspaceId/channelId, only used when no ids are given) can also clear all unread. For conversations: can mark as read and archive. |
| list-channelsA | List channels in a workspace. By default returns only active channels; set includeArchived to true to also include archived channels. Returns channel IDs, names, descriptions, visibility (public/private), archive status, creators, creation dates, URLs, and colors. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 19 tools
Tools are mostly distinct with clear scopes: load-thread vs load-conversation vs fetch-inbox vs search-content vs get-mentions all retrieve content but with specific purposes. The generic update-object and delete-object use targetType to differentiate, reducing ambiguity. Only slight overlap between get-users and user-info, but their purposes are different enough.
Naming follows a consistent kebab-case, verb-first pattern (e.g., get-users, load-thread, create-thread, mark-done). A few single-word verbs like reply, react, and away deviate from the compound style but still follow a verb-based convention. Overall, naming is predictable and consistent.
With 19 tools, the set is substantial but appropriate for a full-featured messaging platform API. Each tool addresses a distinct aspect (workspaces, channels, threads, conversations, reactions, search, etc.), and while a few are auxiliary (build-link), the count feels well-scoped for the domain.
The tool set covers core operations for threads, conversations, messages, reactions, user management, and search. However, there is no direct tool for creating or deleting channels, and no way to list threads in a channel without using search or inbox. Updating a conversation is also unsupported (update-object only handles threads, comments, and messages). These are notable gaps for complete lifecycle management.