v9.1.0

aldinokemal/go-whatsapp-web-multidevicev9.1.0Aug 15, 2026by github-actions[bot]

AI Summary

Brings MCP into the REST server, so API consumers and AI agents share one process. It consolidates the MCP surface into five tools and fixes per-device Chatwoot forwarding while making native WhatsApp interactive messages readable in Chatwoot.

Key Highlights

  • MCP runs through `rest` (standalone `mcp` command removed)
  • Unified MCP endpoint at `/mcp`
  • Consolidated into five action-based tools
  • Chatwoot supports native WhatsApp interactive messages

Breaking Changes

  • MCP Runs Through `rest` (standalone `mcp` command removed)
  • Endpoint URL changed from `/sse` to `/mcp`
  • MCP uses streamable HTTP transport

New Features

  • Unified MCP Endpoint & Consolidated Tools
  • Chatwoot Supports WhatsApp Interactive Messages
  • Per-Device Chatwoot Forwarding Fixes
  • Device Context Propagation

Full Release Notes

## What's New in v9.1.0

šŸ¤– **Unified MCP, Reliable Multi-Device Chatwoot & Interactive Messages**

Version 9.1.0 brings MCP into the REST server, so API consumers and AI agents share one process, one WhatsApp session/device registry, one port, and one authentication boundary. It also fixes per-device Chatwoot forwarding and makes native WhatsApp interactive messages readable in Chatwoot.

---

## āš ļø Breaking Changes

### MCP Runs Through `rest`
- The standalone `mcp` command is no longer available
- Start both REST API and MCP with `./whatsapp rest`
- Connect MCP clients to `http://<host>:<port>/mcp` (default: `http://localhost:3000/mcp`)
- Existing REST basic authentication also protects the MCP endpoint
- The previous granular MCP surface is consolidated into five tools: `whatsapp_send`, `whatsapp_message`, `whatsapp_chat`, `whatsapp_group`, and `whatsapp_app`

### Migration
- `./whatsapp mcp` → `./whatsapp rest`
- `http://localhost:8080/sse` → `http://localhost:3000/mcp`
- MCP uses streamable HTTP transport at `/mcp`
- Provide `device_id` per MCP call when needed, or select a device for the connection with `X-Device-Id`

---

## ✨ New Features

### Unified MCP Endpoint & Consolidated Tools ([#788](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/788))
- Serves MCP from the existing REST process at `/mcp`, sharing the same WhatsApp lifecycle and device state
- Consolidates the public MCP surface into five action-based tools
- Supports explicit `device_id`, `X-Device-Id`, and default-device resolution for MCP calls
- Validates action-specific MCP input schemas before handlers execute
- Restricts MCP routing to supported POST/DELETE operations, avoiding unsupported GET streaming requests

### Chatwoot Supports WhatsApp Interactive Messages ([#794](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/794))
- Renders native WhatsApp CTA buttons and interactive messages as useful plain text in Chatwoot
- Includes labels and the URL, phone number, or copy code for supported button types
- Preserves a readable fallback for interactive button types that cannot be reduced to one line

---

## šŸ› Bug Fixes

### Per-Device Chatwoot Forwarding Keeps Device Context ([#793](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/793))
- Preserves the WhatsApp device context in asynchronous webhook and Chatwoot forwarding work
- Fixes live events silently skipping the configured per-device Chatwoot inbox
- Covers messages, receipts, deletes, groups, presence, calls, newsletters, and label app-state events

### Cleaner Chatwoot Reaction Notes ([#795](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/795))
- Removes redundant raw WhatsApp message IDs from reaction notes
- Keeps replies threaded to the reacted-to Chatwoot message as before

### Unstar Handles Explicit `false`
- Accepts `is_starred: false` correctly through both REST and MCP message actions

---

## šŸ”§ Technical Improvements

### Release Safety & Metadata
- Adds a guarded release workflow skill that checks the exact app version, clean/synced `main`, tag/release availability, and tests before a tag push
- Updates the application version to `v9.1.0` so runtime metadata matches this release

### Dependencies & Documentation
- Refreshes `go.mau.fi/whatsmeow` through the three dependency updates included in this release
- Adds an explicit v9 Breaking Changes entry to the README
- Clarifies that MCP is an endpoint of the REST server, not a separate process

---

## What's Changed
* feat: unify MCP endpoint and consolidate tools ([#788](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/788)) by @aldinokemal
* feat(chatwoot): render InteractiveMessage (native CTA buttons) as text ([#794](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/794)) by @Claudi0-Oliveira
* fix(webhook): propagate device context to async forward goroutines ([#793](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/793)) by @Claudi0-Oliveira
* fix(chatwoot): drop redundant WhatsApp message ID from reaction notes ([#795](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/795)) by @Claudi0-Oliveira
* chore: update `go.mau.fi/whatsmeow` to latest snapshots by @aldinokemal
* feat: add guarded new release skill by @aldinokemal
* feat: increase version to `v9.1.0` by @aldinokemal
* docs: clarify v9 MCP REST unification by @aldinokemal

## Contributors
- [@aldinokemal](https://github.com/aldinokemal)
- [@Claudi0-Oliveira](https://github.com/Claudi0-Oliveira)

## New Contributors
* @Claudi0-Oliveira made their first contribution in [#793](https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/793)

**Full Changelog**: https://github.com/aldinokemal/go-whatsapp-web-multidevice/compare/v9.0.1...v9.1.0