Zulip
Chat for distributed teams. Zulip combines the immediacy of real-time chat with an email threading model.
Verdict
Common use cases
- Send standup updates to team streams
- Search message history for project decisions
- Add reactions to acknowledge support requests
- Configure alert words for critical keywords
- Archive inactive channels at quarter end
Integration
- Vendor
- Zulip
- Category
- communication
- Auth
- OAUTH2
- Tools
- 50
- Composio slug
zulip
Tools
- Add Alert Words
Tool to add alert words to the current user's configuration. Use when you need to configure words that trigger notifications for the user. Alert words are case insensitive and duplicates are automatically ignored.
- Add APNs Device Token
Tool to add an APNs (Apple Push Notification service) device token to Zulip. Use when registering an iOS device for push notifications.
- Add Default Stream
Tool to add a channel as a default stream in Zulip. Use when you want to configure a channel to be automatically subscribed for all new users joining the organization.
- Add Linkifier
Tool to add a linkifier to a Zulip realm. Use when you need to automatically convert text patterns (like issue numbers or ticket IDs) into clickable links in messages.
- Add Navigation View
Tool to add a navigation view in Zulip. Use when you need to create a custom navigation view or configure a built-in view for display in the sidebar.
- Add Reaction
Tool to add an emoji reaction to a Zulip message. Use when you want to react to a message with an emoji.
- Archive Channel
Tool to archive a channel in Zulip. Use when you need to permanently archive a channel by its ID.
- Check Messages Match Narrow
Tool to check if specific messages match a narrow filter. Use when you need to determine whether messages satisfy complex search criteria that the client cannot evaluate locally.
- Create BigBlueButton video call
Tool to create a BigBlueButton video call in Zulip. Use when you need to generate a video conference link for team meetings or discussions.
- Create Channel
Tool to create a new channel in Zulip. Use when you need to set up a new communication channel with specified subscribers. Channels organize conversations by topic within Zulip.
- Create Channel Folder
Tool to create a new channel folder in Zulip. Use when you need to organize channels into folders for better management.
- Create custom profile field
Tool to create a custom profile field in Zulip. Use when you need to add custom user profile fields for organization members.
- Create Drafts
Tool to create one or more draft messages in Zulip. Use when you need to save message drafts for later editing or sending.
- Create Message Reminder
Tool to create a message reminder in Zulip. Use when you need to set up a reminder for a specific message that will be sent at a scheduled time via the Notification Bot.
- Create reusable invitation link
Tool to create a reusable invitation link for the Zulip organization. Use when you need to generate an invite link that can be shared with multiple users to join the organization.
- Create Saved Snippet
Tool to create a saved snippet in Zulip. Use when you need to save reusable text content that can be quickly inserted into messages.
- Create Scheduled Message
Tool to create a scheduled message in Zulip. Use when you need to schedule a message to be sent at a future time to channels or direct messages.
- Delete Draftdestructive
Tool to delete a draft in Zulip. Use when you need to remove a saved draft message.
- Delete Event Queuedestructive
Tool to delete an event queue previously registered via POST /api/v1/register. Use when you need to clean up a queue that is no longer needed.
- Delete Messagedestructive
Tool to delete a message in Zulip. Use when you need to remove a message from a stream or direct message conversation.
- Delete Reminderdestructive
Tool to delete a reminder from Zulip. Use when you need to remove a scheduled reminder by its ID.
- Delete Saved Snippetdestructive
Tool to delete a saved snippet by its ID. Use when you need to remove a snippet from saved snippets.
- Delete Scheduled Messagedestructive
Tool to delete a scheduled message in Zulip. Use when you need to cancel a message that was scheduled to be sent later. This is permanent and cannot be undone.
- Delete Topicdestructive
Tool to delete a topic from a Zulip channel/stream. Use when you need to permanently remove a topic and all its messages from a specific stream. Note: This operation is irreversible and will delete all messages in the topic.
- Edit Draft
Tool to edit an existing draft message in Zulip. Use when you need to update the content, topic, recipients, or other properties of a saved draft.
- Edit Navigation View
Tool to update a navigation view in Zulip. Use when you need to pin/unpin a view or rename a custom navigation view.
- Edit Saved Snippet
Tool to edit a saved snippet by updating its title and/or content. Use when you need to modify an existing snippet.
- Export Realm
Tool to create a Zulip realm data export. Use when you need to export organization data. The export is created asynchronously and can be downloaded later.
- Get alert words
Tool to retrieve all configured alert words for the authenticated user. Use when you need to check which words or phrases trigger notifications.
- Get all data exports
Tool to retrieve all data exports for the Zulip organization. Use when you need to list all data exports, including their status (pending, completed, or failed) and download URLs. Requires organization administrator access.
- Get all invitations
Tool to retrieve all unexpired invitations for the Zulip organization. Use when you need to list all active email invitations and reusable invitation links that can be managed by the user.
- Get Another User Presence
Tool to get the presence status for a specific user in Zulip. Use when you need to check if a user is currently active, idle, or offline. This endpoint is designed for embedding presence data in external applications. If the timestamp is mo
- Get Attachments
Tool to retrieve metadata on files uploaded by the requesting user. Use when you need to list all attachments with their details including file names, sizes, and associated messages.
- Get Channel Folders
Tool to retrieve all channel folders in the organization, sorted by display order. Use when you need to list or organize channel folders.
- Get custom emoji
Tool to retrieve all custom emoji configured in the Zulip realm. Use when you need to get the list of available custom emoji including their names, IDs, and source URLs.
- Get custom profile fields
Tool to get all custom profile fields configured for the Zulip realm. Use when you need to retrieve the list of custom profile fields including their types, names, and configuration.
- Get drafts
Tool to fetch all drafts for the authenticated user. Use when you need to retrieve all saved draft messages, which are returned in order of last edit time (most recent first).
- Get Events
Tool to get events from a Zulip event queue. Use when you need to retrieve new events after registering a queue.
- Get file temporary URL
Tool to get a public temporary URL for an uploaded file in Zulip. Use when you need to access or share a file that was previously uploaded to the Zulip organization.
- Get linkifiers
Tool to retrieve all configured linkifiers in the Zulip realm. Use when you need to get the list of regex patterns that are automatically converted to links in messages and topics.
- Get message
Tool to fetch a single message by ID from Zulip. Use when you need to retrieve the full details of a specific message including its content, sender, reactions, and edit history.
- Get Message History
Tool to fetch the complete edit history of a Zulip message. Use when you need to see all changes made to a message over time, including content edits, topic changes, and channel moves. Returns snapshots in chronological order from oldest to
- Get Messages
Tool to fetch messages from Zulip. Use when you need to retrieve messages using various filters like anchor position, narrow queries, or specific message IDs. Supports pagination via num_before/num_after parameters.
- Get Navigation Views
Tool to fetch all navigation views for the authenticated user. Use when you need to retrieve all configured custom navigation views, which are displayed in the sidebar or 'More Views' menu.
- Get own user
Tool to retrieve the profile information for the authenticated user. Use when you need to get details about the current user such as email, full name, role, timezone, or other profile data.
- Get Read Receipts
Tool to retrieve read receipts for a message in Zulip. Use when you need to see which users have read a specific message.
- Get realm export consents
Tool to retrieve data export consent state for users in a realm. Use when you need to check which users have consented for their private data to be exported by organization administrators.
- Get realm icon
Tool to retrieve the URL of the Zulip realm's icon. Use when you need to get the organization's icon image URL.
- Get Realm Presence
Tool to get the presence status for all users in the Zulip realm. Use when you need to check which users are currently active, idle, or offline across the entire organization. If a user's timestamp is more than a few minutes old, they shoul
- Get user group membership status
Tool to check if a user is a member of a specific user group. Use when you need to verify user group membership status.
Setup
Setup guide
- 11. In Switchy, navigate to Settings > Integrations and click Connect next to Zulip. 2. You'll redirect to your Zulip organization's OAuth consent screen. 3. Grant the requested scopes: read messages, send messages, manage subscriptions, configure user settings, and administer streams. 4. After authorization, Switchy returns you to the integration page with a green Connected badge. 5. Open any Space and type '@Zulip list my subscriptions' to verify the connection works. 6. If the MCP returns your active streams, you're ready to invoke tools like sending messages, adding reactions, or searching threads. 7. To send a message, use '@Zulip send message to #general > standup: Daily update posted'.
What teammates see: by default, memories from Zulip are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
Compatibility data appears once enough Spaces have used this MCP together with a given model.
How Switchy teams use it
Starter prompts
Send Standup Summary
@Zulip send a message to the #general stream under the 'standup' topic with this content: 'Shipped v2.3 yesterday. Today: fixing login bug and prepping demo.'Open in a Space →
Search Past Threads
@Zulip search for messages in the #engineering stream under the 'database migration' topic from the last 7 days and summarize the key decisions.Open in a Space →
React to Message
@Zulip add a thumbs-up reaction to message ID 482917 to confirm I've seen the bug report.Open in a Space →
Configure Alert Words
@Zulip add 'production outage' and 'security incident' as alert words for my account so I get notified immediately.Open in a Space →
Archive Old Channel
@Zulip archive the channel with ID 3847 since the Q1 planning project wrapped up last month.Open in a Space →
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@zulip show me all messages in #engineering from the last 3 days that mention 'deployment' or 'release'
Found 12 messages matching your search in #engineering from the past 3 days: • **Alice Chen** (2 days ago): "Starting the staging deployment now, should be live in 20 minutes" • **Marcus Wei** (2 days ago): "Release notes draft is ready for review in the docs repo" • **Jordan Park** (1 day ago): "Production deployment completed successfully, monitoring dashboards look good" [8 more messages shown with sender, timestamp, and preview text] This example illustrates how Zulip's search would return matching messages with context. Actual results depend on your organization's message history and channel access.
This demonstrates Zulip's message search and filtering capabilities. The MCP requires read access to the specified channels. Search performance depends on message volume—large organizations with thousands of daily messages may experience slower queries. Zulip's narrow syntax supports complex filters (sender, date ranges, keywords) that the MCP translates into API calls.
@zulip send a message to #product-updates announcing that version 2.4 shipped with the new analytics dashboard and mobile improvements
Message sent to #product-updates: **Version 2.4 Now Live** 🚀 We've shipped version 2.4 with two major updates: • New analytics dashboard with real-time metrics • Mobile app improvements for iOS and Android Full release notes: [link] This example shows how the MCP would confirm message delivery. The actual message content, formatting, and any auto-linkification depend on your Zulip organization's configuration.
This showcases Zulip's message posting capability. The MCP needs write permissions for the target channel. Be aware this creates a permanent message visible to all channel subscribers—there's no undo. If your organization has configured linkifiers (like ticket patterns), they'll automatically apply. Consider testing in a low-traffic channel first to verify formatting and mentions work as expected.
@zulip read the last 20 messages from #support, identify the 3 most common customer issues, and draft a summary for the team standup
Analyzed 20 recent messages in #support. Here are the top 3 customer issues: **1. Login failures (7 reports)** — Users experiencing "invalid credentials" errors despite correct passwords. Likely related to yesterday's auth service restart. **2. Export timeouts (4 reports)** — Large data exports timing out after 60 seconds. Affects enterprise accounts with >100k records. **3. Mobile sync delays (3 reports)** — iOS app not syncing messages in real-time, requiring manual refresh. Recommended standup talking points: Prioritize auth service investigation, consider increasing export timeout threshold, and check mobile push notification service status. This example illustrates how the AI synthesizes message content retrieved via the MCP.
This combines Zulip's message retrieval with AI analysis—the MCP fetches messages, then the AI identifies patterns and drafts the summary. Requires read access to #support. The quality of pattern detection depends on message volume and clarity. For channels with hundreds of daily messages, consider narrowing the time window or using Zulip's topic filters to focus the analysis on specific conversation threads.
Use-case deep-dives
When Zulip's linkifiers beat Slack for support ops
A 6-person support team handling 200 tickets a week across Zendesk, Linear, and GitHub needs every mention of a ticket ID to link automatically. Zulip's linkifier tool lets you write one regex pattern that turns "ZEN-1234" into a clickable link in every message—no browser extension, no copy-paste. The add-reaction tool gives you instant triage signals (thumbs-up = claimed, eyes = investigating) without breaking conversation flow. This works until you hit 15+ people or need Slack's richer app ecosystem; past that threshold, Zulip's 50-tool MCP starts feeling like overkill for what most teams solve with Slack workflows. If your team lives in text and hates context-switching, Zulip's programmatic message hygiene is worth the OAuth setup.
Default streams solve the new-contributor problem
A maintainer running a 40-contributor open-source project needs every new person to land in #welcome, #code-review, and #announcements without manual adds. Zulip's add-default-stream tool auto-subscribes newcomers to the right channels, and the archive-channel tool lets you retire old feature threads without losing history. The check-messages-match-narrow tool is the sleeper win: you can script a weekly digest of unanswered questions in #help without writing a custom bot. This setup breaks down if your project uses GitHub Discussions as the primary forum—Zulip shines when async threaded chat is the collaboration hub, not a sidebar. For projects with 20+ active contributors who hate Discord's chaos, Zulip's MCP turns onboarding into a one-click operation.
Alert words and reactions replace synchronous standups
A 9-person remote engineering team across 4 time zones posts async standups in a #daily channel. The add-alert-words tool lets each person subscribe to keywords like their project name or "blocked"—no need to read 50 messages to find the 3 that matter. The add-reaction tool gives you a lightweight "seen it" signal so the team lead knows who's caught up. This pattern works until you need rich formatting or video clips; Zulip's text-first design means standup updates stay lean, which is either a feature or a dealbreaker depending on your team's communication style. If your standups are currently a Slack thread that scrolls into oblivion by 10am, Zulip's topic-based threading and alert-word precision will feel like a productivity unlock.
Frequently asked
What can the Zulip MCP do in Switchy?
The Zulip MCP lets AI agents read messages, send replies, add reactions, manage channels, and configure organization settings like alert words and linkifiers. It covers 50 tools spanning message operations, channel management, user configuration, and notification setup. Agents can automate routine Zulip tasks without switching contexts or writing custom API code.
Do I need admin permissions to connect Zulip via OAuth?
It depends on which tools you plan to use. Reading messages and adding reactions works with standard member permissions. Adding default streams, archiving channels, or creating linkifiers requires organization admin rights. Check your Zulip role before connecting — if the OAuth flow succeeds but tools fail, you likely need elevated permissions from your Zulip admin.
Can the Zulip MCP send direct messages or only post to channels?
The MCP can send both channel messages and direct messages. Zulip treats DMs as a message type rather than a separate entity, so the same send-message tools work for both. Specify the recipient type (channel or user IDs) when invoking the tool. The MCP also supports threaded replies within topics, preserving Zulip's conversation structure.
Why use the Zulip MCP instead of Zulip's built-in bots?
Zulip's native bots require you to write Python or JavaScript handlers and host them somewhere. The MCP lets AI agents interact with Zulip using natural language instructions — no code, no deployment. Use native bots for high-frequency automation or custom logic. Use the MCP when you want agents to handle ad-hoc Zulip tasks as part of broader workflows across multiple tools.
Who on my team should connect the Zulip integration?
Whoever connects it determines which messages the AI can access. If you want agents to read all channels, connect it with an admin account. For privacy-sensitive teams, connect it with a dedicated service account that only subscribes to public channels. Each Switchy workspace can have one Zulip connection — choose the account whose permissions match your team's comfort level.