Zulip Integration for AI Agents

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Zulip MCP or direct API to read streams, post new messages, reply to threads, and search conversations through natural language.
Zulip Logo
Gradient Top
Gradient Middle
Gradient Bottom
divider

Try Zulip now

Enter a prompt below to test the integration in our Tool Router playground. You'll be redirected to sign in and try it live.

Supported Tools

Tools
Add Alert WordsTool to add alert words to the current user's configuration.
Add APNs Device TokenTool to add an APNs (Apple Push Notification service) device token to Zulip.
Add Default StreamTool to add a channel as a default stream in Zulip.
Add LinkifierTool to add a linkifier to a Zulip realm.
Add Navigation ViewTool to add a navigation view in Zulip.
Add ReactionTool to add an emoji reaction to a Zulip message.
Archive ChannelTool to archive a channel in Zulip.
Check Messages Match NarrowTool to check if specific messages match a narrow filter.
Create BigBlueButton video callTool to create a BigBlueButton video call in Zulip.
Create ChannelTool to create a new channel in Zulip.
Create Channel FolderTool to create a new channel folder in Zulip.
Create custom profile fieldTool to create a custom profile field in Zulip.
Create DraftsTool to create one or more draft messages in Zulip.
Create reusable invitation linkTool to create a reusable invitation link for the Zulip organization.
Create Message ReminderTool to create a message reminder in Zulip.
Create Saved SnippetTool to create a saved snippet in Zulip.
Create Scheduled MessageTool to create a scheduled message in Zulip.
Delete DraftTool to delete a draft in Zulip.
Delete MessageTool to delete a message in Zulip.
Delete Event QueueTool to delete an event queue previously registered via POST /api/v1/register.
Delete ReminderTool to delete a reminder from Zulip.
Delete Saved SnippetTool to delete a saved snippet by its ID.
Delete Scheduled MessageTool to delete a scheduled message in Zulip.
Delete TopicTool to delete a topic from a Zulip channel/stream.
Edit DraftTool to edit an existing draft message in Zulip.
Edit Navigation ViewTool to update a navigation view in Zulip.
Edit Saved SnippetTool to edit a saved snippet by updating its title and/or content.
Export RealmTool to create a Zulip realm data export.
Get alert wordsTool to retrieve all configured alert words for the authenticated user.
Get Another User PresenceTool to get the presence status for a specific user in Zulip.
Get AttachmentsTool to retrieve metadata on files uploaded by the requesting user.
Get Channel FoldersTool to retrieve all channel folders in the organization, sorted by display order.
Get custom emojiTool to retrieve all custom emoji configured in the Zulip realm.
Get custom profile fieldsTool to get all custom profile fields configured for the Zulip realm.
Get draftsTool to fetch all drafts for the authenticated user.
Get EventsTool to get events from a Zulip event queue.
Get file temporary URLTool to get a public temporary URL for an uploaded file in Zulip.
Get realm iconTool to retrieve the URL of the Zulip realm's icon.
Get all invitationsTool to retrieve all unexpired invitations for the Zulip organization.
Get user group membership statusTool to check if a user is a member of a specific user group.
Get linkifiersTool to retrieve all configured linkifiers in the Zulip realm.
Get messageTool to fetch a single message by ID from Zulip.
Get Message HistoryTool to fetch the complete edit history of a Zulip message.
Get MessagesTool to fetch messages from Zulip.
Get Navigation ViewsTool to fetch all navigation views for the authenticated user.
Get own userTool to retrieve the profile information for the authenticated user.
Get Read ReceiptsTool to retrieve read receipts for a message in Zulip.
Get realm export consentsTool to retrieve data export consent state for users in a realm.
Get all data exportsTool to retrieve all data exports for the Zulip organization.
Get Realm PresenceTool to get the presence status for all users in the Zulip realm.
Get remindersTool to fetch all undelivered reminders for the authenticated user.
Get Saved SnippetsTool to fetch all saved snippets for the authenticated user.
Get Scheduled MessagesTool to fetch all scheduled messages for the authenticated user.
Get server settingsTool to retrieve server configuration and available authentication methods.
Get Channel by IDTool to get detailed information about a Zulip channel by its ID.
Get channel email addressTool to retrieve the email address for a Zulip channel.
Get Channel IDTool to get a channel's unique ID by its name.
Get All ChannelsTool to retrieve all channels (streams) in Zulip that match specified filters.
Get stream topicsTool to retrieve all topics in a Zulip channel.
Get Channel SubscribersTool to get all subscribers of a Zulip channel.
Get SubscriptionsTool to retrieve all channels (streams) the authenticated user is subscribed to.
Get subscription statusTool to check whether a specific user is subscribed to a particular channel (stream).
Get user by emailTool to fetch a user by email address from Zulip.
Get user channelsTool to retrieve the list of channel IDs that a specific user is subscribed to.
Get user group membersTool to retrieve all members of a specific user group.
Get user groupsTool to retrieve all user groups in the Zulip organization.
Get user group subgroupsTool to retrieve subgroups of a user group.
Get user statusTool to retrieve the status currently set by a user in the Zulip organization.
Mark All Messages as ReadTool to mark all messages as read for the authenticated user.
Mark Stream as ReadTool to mark all messages in a Zulip channel as read.
Mark Topic as ReadTool to mark all messages in a topic as read.
Mute TopicTool to mute or unmute a topic in a Zulip channel.
Reactivate UserTool to reactivate a deactivated user in Zulip.
Register Push DeviceTool to register an E2EE (end-to-end encrypted) push device for mobile notifications.
Register Event QueueTool to register an event queue for receiving Zulip events.
Remove Alert WordsTool to remove alert words from the current user's configuration.
Remove AttachmentTool to delete an attachment in Zulip.
Remove Code PlaygroundTool to remove a code playground from a Zulip realm.
Remove Default StreamTool to remove a channel from default streams in Zulip.
Remove FCM TokenTool to remove an FCM registration token for Android push notifications.
Remove LinkifierTool to remove a linkifier from a Zulip realm.
Remove Navigation ViewTool to remove a navigation view in Zulip.
Remove ReactionTool to remove an emoji reaction from a Zulip message.
Render MessageTool to render a message to HTML in Zulip.
Reorder Channel FoldersTool to reorder channel folders in Zulip.
Reorder Custom Profile FieldsTool to reorder custom profile fields in Zulip.
Reorder LinkifiersTool to reorder linkifiers in Zulip.
Revoke Email InvitationTool to revoke an email invitation in Zulip.
Revoke reusable invitation linkTool to revoke a reusable invitation link for the Zulip organization.
Send MessageTool to send a message in Zulip.
Send Test NotificationTool to send a test notification to mobile device(s).
Set Typing StatusTool to set typing status in Zulip.
Set Typing Status for Message EditTool to set typing status when editing a message in Zulip.
Subscribe to ChannelTool to subscribe users to one or more Zulip channels.
Test Welcome Bot Custom MessageTool to test welcome bot custom message in Zulip.
Unsubscribe From ChannelTool to unsubscribe from one or more channels (streams) in Zulip.
Update Channel FolderTool to update a channel folder in Zulip.
Update LinkifierTool to update a linkifier in a Zulip realm.
Update MessageTool to edit a message in Zulip.
Update Message FlagsTool to update personal message flags in Zulip.
Update Message Flags for NarrowTool to update personal message flags (e.
Update Realm User Settings DefaultsTool to update realm-level defaults of user settings in Zulip.
Update Scheduled MessageTool to edit a scheduled message in Zulip.
Update SettingsTool to update user settings in Zulip.
Update StatusTool to update your status in Zulip.
Update status for userTool to update the status for a specific user in the Zulip organization.
Update ChannelTool to update a channel in Zulip.
Update SubscriptionsTool to update channel subscriptions by subscribing to new channels or unsubscribing from existing ones.
Update Subscription SettingsTool to update the user's personal settings for channels they are subscribed to.
Update user by emailTool to update a user by email address in Zulip.
Update User TopicTool to update personal preferences for a topic in a Zulip channel.
Python
TypeScript

Install Composio

python
pip install composio claude-agent-sdk
Install the Composio SDK for Python or TypeScript

Initialize Client and Create Tool Router Session

python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
Import and initialize the Composio client, then create a Tool Router session for Zulip

Connect to AI Agent

python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to Zulip tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('Get the last 10 messages from the #support stream.')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
Use the MCP server with your AI agent (Anthropic Claude or Mastra)

Why Use Composio?

AI Native Zulip Integration

  • Supports both Zulip MCP and direct API based integrations
  • Structured, LLM-friendly schemas for reliable tool execution
  • Rich coverage for reading, writing, and querying your Zulip data

Managed Auth

  • Built-in OAuth handling with automatic token refresh and rotation
  • Central place to manage, scope, and revoke Zulip access
  • Per user and per environment credentials instead of hard-coded keys

Agent Optimized Design

  • Tools are tuned using real error and success rates to improve reliability over time
  • Comprehensive execution logs so you always know what ran, when, and on whose behalf

Enterprise Grade Security

  • Fine-grained RBAC so you control which agents and users can access Zulip
  • Scoped, least privilege access to Zulip resources
  • Full audit trail of agent actions to support review and compliance

Frequently Asked Questions

Do I need my own developer credentials to use Zulip with Composio?

Yes, Zulip requires you to configure your own Basic Auth credentials. Once set up, Composio handles secure credential storage and authentication for you.

Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. Learn more.

Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. Learn more.

What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

Used by agents from

Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai

Never worry about agent reliability

We handle tool reliability, observability, and security so you never have to second-guess an agent action.