> ## Documentation Index
> Fetch the complete documentation index at: https://docs.callintel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# WhatsApp Integration

> Automate WhatsApp interactions using the Model Context Protocol (MCP) and Selenium. The WhatsApp integration allows your AI agents to send WhatsApp messages and manage sessions. It uses Selenium to automate WhatsApp Web, providing a way to interact with WhatsApp without the official Business API.

## Features

* **Send Messages**: Agents can send text messages to any phone number.
* **Session Management**: Create, login, and manage multiple WhatsApp sessions.
* **QR Code Login**: Authenticate via QR code scanning.
* **Headless Operation**: Runs in headless mode for server environments.

## Setup

### Prerequisites

1. **Chrome Browser**: Google Chrome must be installed on the server.
2. **ChromeDriver**: The correct version of ChromeDriver for your Chrome installation. The system attempts to install/find it automatically.
3. **Dependencies**:
   ```bash theme={null}
   pip install selenium webdriver-manager fastmcp
   ```

## Usage

### Session Management

The integration manages "sessions", where each session corresponds to a WhatsApp Web instance.

1. **Create/Login Session**:
   Agents can initiate a login which will generate a QR code (if not already logged in).

2. **QR Code**:
   The QR code is extracted from the headless browser and can be returned to the user/agent for scanning.

### Available Tools

The MCP server exposes the following tools:

#### `login_whatsapp_session`

Initiates a login for a session. If not logged in, it returns a QR code.

* **Arguments**:
  * `session_id` (string): Unique identifier for the session (e.g., agent ID).

#### `check_whatsapp_login_status`

Checks if a session is successfully logged in.

* **Arguments**:
  * `session_id` (string): The session ID.

#### `send_whatsapp_message`

Sends a message to a specific phone number.

* **Arguments**:
  * `session_id` (string): The authenticated session ID.
  * `phone_number` (string): The recipient's phone number (with country code).
  * `message` (string): The text message to send.

#### `close_whatsapp_session`

Closes and cleans up a session.

* **Arguments**:
  * `session_id` (string): The session ID to close.

### REST API

The server also exposes REST endpoints for session management:

* `GET /sessions/{session_id}/login`: Initiate login.
* `GET /sessions/{session_id}/login-status`: Check status.

## Architecture

The integration uses `selenium` to control a headless Chrome instance.

* **Session Data**: Chrome user profiles are stored in `./chrome_profiles/{session_id}` to persist logins.
* **Database**: Session metadata is stored in a local SQLite database (`sessions.db`).
* **MCP**: `fastmcp` is used to expose the automation logic as tools for agents.

### Key Files

* `mcp_server.py`: Main server logic, Selenium automation, and tool definitions.
* `database.py`: Local database management for session metadata.
