{
  "title": "Reaction tooling",
  "content": "Shared reaction semantics across channels:\n\n* `emoji` is required when adding a reaction.\n* `emoji=\"\"` removes the bot's reaction(s) when supported.\n* `remove: true` removes the specified emoji when supported (requires `emoji`).\n\n* **Discord/Slack**: empty `emoji` removes all of the bot's reactions on the message; `remove: true` removes just that emoji.\n* **Google Chat**: empty `emoji` removes the app's reactions on the message; `remove: true` removes just that emoji.\n* **Telegram**: empty `emoji` removes the bot's reactions; `remove: true` also removes reactions but still requires a non-empty `emoji` for tool validation.\n* **WhatsApp**: empty `emoji` removes the bot reaction; `remove: true` maps to empty emoji (still requires `emoji`).\n* **Signal**: inbound reaction notifications emit system events when `channels.signal.reactionNotifications` is enabled.",
  "code_samples": [],
  "headings": [],
  "url": "llms-txt#reaction-tooling",
  "links": []
}