add-emoji-reaction
Add emoji reactions to messages in Zulip workspaces by specifying message ID and emoji name. Simplify interactions within chats using predefined or custom emojis.
Instructions
Add an emoji reaction to a message.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| emoji_code | No | Unicode code point for the emoji | |
| emoji_name | Yes | Emoji name (e.g., 'thumbs_up', 'heart', 'rocket') or custom emoji name | |
| message_id | Yes | ID of the message to react to | |
| reaction_type | No | Type of emoji reaction |
Implementation Reference
- src/server.ts:529-545 (handler)MCP tool registration and inline handler function that destructures parameters, calls ZulipClient.addReaction, and returns formatted success or error response.server.tool( "add-emoji-reaction", "Add an emoji reaction to a message.", AddReactionSchema.shape, async ({ message_id, emoji_name, emoji_code, reaction_type }) => { try { await zulipClient.addReaction(message_id, { emoji_name, emoji_code, reaction_type }); return createSuccessResponse(`Reaction ${emoji_name} added to message ${message_id}!`); } catch (error) { return createErrorResponse(`Error adding reaction: ${error instanceof Error ? error.message : 'Unknown error'}`); } } );
- src/types.ts:140-145 (schema)Zod input schema validation for the 'add-emoji-reaction' tool parameters.export const AddReactionSchema = z.object({ message_id: z.number().describe("ID of the message to react to"), emoji_name: z.string().describe("Emoji name (e.g., 'thumbs_up', 'heart', 'rocket') or custom emoji name"), emoji_code: z.string().optional().describe("Unicode code point for the emoji"), reaction_type: z.enum(["unicode_emoji", "realm_emoji", "zulip_extra_emoji"]).optional().describe("Type of emoji reaction") });
- src/zulip/client.ts:199-212 (helper)ZulipClient helper method implementing the core logic: constructs payload and makes POST request to Zulip API endpoint /messages/{id}/reactions.async addReaction(messageId: number, params: { emoji_name: string; emoji_code?: string; reaction_type?: string; }): Promise<void> { const payload: any = { emoji_name: params.emoji_name, reaction_type: params.reaction_type || 'unicode_emoji' }; if (params.emoji_code !== undefined) { payload.emoji_code = params.emoji_code; } await this.client.post(`/messages/${messageId}/reactions`, payload); }