Tools
The 2Chat MCP server exposes the 2Chat REST API as MCP tools — your AI assistant can call any of them directly. Tool names below are the canonical names returned by tools/list on https://mcp.2chat.io/mcp.
Account
get_who_am_i
Return information about the authenticated 2Chat account.
Inputs: none.
Returns: account profile (name, uuid, email, plan).
"Who am I logged in as on 2Chat?"
get_billing_info
Get current account billing, plan limits, and API usage.
Inputs: none.
Returns: account (name, uuid, on_trial, blocked, created_at, expires_at), limits (requests_per_minute), and usage (api_request_count, max_api_request_count, number_check_count, max_number_check_count).
Messaging — WhatsApp Web
send_whatsapp_message
Send a WhatsApp text or media message through a connected WhatsApp Web channel.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Source WhatsApp number in E.164 format (e.g. +15551111111) |
to_number | string | yes | Recipient phone number in E.164 format |
text | string | conditional | Message text. Required unless url is provided |
url | string | conditional | Publicly accessible media URL (image, video, document, audio). Required unless text is provided |
Returns: message_id, status, timestamp.
"Send a WhatsApp from +15551111111 to +15550009999 saying: Your order is ready for pickup."
check_if_number_is_on_whatsapp
Check whether a phone number has an active WhatsApp account before sending.
| Input | Type | Required | Description |
|---|---|---|---|
source_number | string | yes | Your connected WhatsApp number (E.164) |
phone_number | string | yes | Number to check (E.164) |
extra_information | boolean | no | If true, also returns whatsapp_info (number_id, profile picture, business status, verification level). Billed as 2 API calls. Default false |
Returns: exists (boolean), number, optional whatsapp_info.
"Check if +15550009999 is on WhatsApp using my channel +15551111111. If yes, send them: 'Hi from 2Chat!'"
get_whatsapp_messages
Get WhatsApp Web messages exchanged through a connected number, optionally scoped to a specific contact.
| Input | Type | Required | Description |
|---|---|---|---|
your_number | string | yes | Your connected WhatsApp number (E.164) |
remote_number | string | no | Contact phone number (E.164) to scope results to a single conversation |
page | integer | no | 0-indexed page (default 0). 100 messages per page, oldest first within the page |
Returns: array of message objects.
Messaging — WhatsApp Business API (WABA)
send_waba_message
Send a WABA message using either an approved template or free-form text. Provide one of template_uuid or text, not both.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Source WABA phone number (E.164) |
to_number | string | yes | Recipient phone number (E.164) |
template_uuid | string | conditional | UUID of an approved WABA template. Mutually exclusive with text |
text | string | conditional | Free-form text content. Mutually exclusive with template_uuid |
header_params | array | no | Values for template header variables |
body_params | array | no | Values for template body variables |
media_url | string | no | URL of media to attach as the template header image |
Returns: message_id, status.
get_waba_templates
List WABA message templates for the account, optionally filtered by phone number.
| Input | Type | Required | Description |
|---|---|---|---|
phone_number | string | no | WABA phone number (E.164) to filter templates |
page | integer | no | 0-based page (default 0) |
limit | integer | no | Results per page, min 10, max 200 (default 10) |
Returns: paginated list of template objects.
sync_waba_templates
Trigger a background sync of WABA templates from Meta for a given number.
| Input | Type | Required | Description |
|---|---|---|---|
phone_number | string | yes | WABA phone number (E.164) |
Returns: sync acknowledgement.
calculate_waba_template_cost
Estimate the cost of sending a WABA template message for a given plan, country, and template type.
| Input | Type | Required | Description |
|---|---|---|---|
plan_name | string | yes | 2Chat plan name (e.g. single, basic, pro) |
country | string | yes | Two-letter ISO country code (e.g. US, BR, MX) |
template_type | string | yes | WABA template category (e.g. marketing, utility, authentication) |
Returns: estimated cost.
Messaging — SMS
send_sms
Send an SMS message through a 2Chat SMS channel.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Source phone number (E.164). Must be SMS-capable |
to_number | string | yes | Recipient phone number (E.164) |
text | string | yes | Message content (UTF-8) |
Returns: message_id, status.
Channels — WhatsApp Web
get_whatsapp_numbers
List WhatsApp Web numbers connected to the account via QR code.
| Input | Type | Required | Description |
|---|---|---|---|
status | string | no | Filter: connected, disconnected, or all (default connected) |
page | integer | no | 0-based page (default 0) |
limit | integer | no | Results per page, min 10, max 200 (default 10) |
Returns: array of channel objects with phone_number, status, channel_uuid.
"List my 2Chat WhatsApp channels and tell me which ones are currently connected."
get_whatsapp_number
Get full details of a single connected WhatsApp Web number by UUID.
| Input | Type | Required | Description |
|---|---|---|---|
channel_uuid | string | yes | UUID of the WhatsApp channel (e.g. WPN582e4db7-...) |
Returns: channel object.
execute_whatsapp_channel_command
Execute a connection command on a WhatsApp Web channel.
| Input | Type | Required | Description |
|---|---|---|---|
channel_uuid | string | yes | UUID of the WhatsApp channel |
command | string | yes | connect (brings the number online and returns a QR code) or disconnect (takes it offline without removing it) |
Returns: command result, including QR payload when connect is used.
Channels — WABA
get_waba_numbers
List WABA numbers connected to the account.
| Input | Type | Required | Description |
|---|---|---|---|
page | integer | no | 0-based page (default 0) |
limit | integer | no | Results per page, min 10, max 200 (default 10) |
Returns: array of WABA number objects.
get_waba_number
Get full details of a single WABA number by UUID.
| Input | Type | Required | Description |
|---|---|---|---|
waba_uuid | string | yes | UUID of the WABA number (e.g. WAN3ff9fb72-...) |
Returns: WABA number object.
Conversations & Groups
list_whatsapp_conversations
List WhatsApp Web conversations for a connected channel, ordered by most recent activity.
| Input | Type | Required | Description |
|---|---|---|---|
channel_uuid | string | yes | UUID of the WhatsApp channel |
phone_number | string | no | 3–20 digit substring to filter conversations whose phone number contains it |
page | integer | no | 0-based page (default 0). 10 conversations per page |
Returns: paginated list of conversation objects.
list_whatsapp_groups
List WhatsApp groups visible to a connected number. Only groups joined after connecting to 2Chat are listed; the initial sync may take 5–30 minutes.
| Input | Type | Required | Description |
|---|---|---|---|
phone_number | string | yes | Connected WhatsApp number (E.164) |
Returns: array of group objects.
list_whatsapp_group_participants
List participants of a WhatsApp group.
| Input | Type | Required | Description |
|---|---|---|---|
group_uuid | string | yes | UUID of the group (e.g. WAG768beeef-...) |
Returns: array of participants with role.
get_whatsapp_group_messages
Get messages from a WhatsApp group. Only messages exchanged after the channel was connected to 2Chat are returned.
| Input | Type | Required | Description |
|---|---|---|---|
group_uuid | string | yes | UUID of the group |
page | integer | no | 0-based page (default 0). 50 messages per page, newest first |
Returns: paginated list of group messages.
Status (Stories)
set_whatsapp_text_status
Publish an ephemeral text status (Story-style) on a connected WhatsApp number.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Connected WhatsApp number (E.164) |
text | string | yes | Status text content |
background_color | string | no | Hex color code (e.g. #0275d8) |
font | integer | no | Font style identifier. Pass 0 to omit (default 0) |
Returns: confirmation.
set_whatsapp_image_status
Publish an ephemeral image status (Story-style) on a connected WhatsApp number.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Connected WhatsApp number (E.164) |
image_url | string | yes | Publicly accessible image URL |
Returns: confirmation.
set_whatsapp_video_status
Publish an ephemeral video status (Story-style) on a connected WhatsApp number.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Connected WhatsApp number (E.164) |
video_url | string | yes | Publicly accessible video URL |
Returns: confirmation.
Catalog
list_whatsapp_catalog_products
List products from a WhatsApp Business catalog visible to a connected WhatsApp Web number. Some products may not be visible to all WhatsApp Business accounts.
| Input | Type | Required | Description |
|---|---|---|---|
from_number | string | yes | Connected 2Chat WhatsApp number (E.164) whose linked catalog will be queried |
phone_number | string | no | Optional target WhatsApp Business account number (E.164). When set, returns that other business's catalog instead of the one linked to from_number |
Returns: array of product objects.
Contacts
create_contact
Create a new contact in your 2Chat account.
| Input | Type | Required | Description |
|---|---|---|---|
first_name | string | yes | Contact's first name |
contact_detail | array | yes | List of {type, value} objects. Allowed types: E (email), A (address), PH (phone), WAPH (WhatsApp phone). Phone values must be E.164 |
last_name | string | no | Contact's last name |
profile_pic_url | string | no | Publicly accessible avatar URL |
channel_uuid | string | no | WhatsApp channel UUID to sync the contact with a connected number |
Returns: the created contact object with uuid.
"Create a 2Chat contact named Acme Corp with phone +15550009999 and email ops@acme.com."
get_contact
Retrieve a single contact by its UUID.
| Input | Type | Required | Description |
|---|---|---|---|
contact_uuid | string | yes | UUID of the contact (e.g. CON58147f7c-...) |
Returns: full contact object.
list_contacts
List contacts in your 2Chat account, optionally filtered by connected channel.
| Input | Type | Required | Description |
|---|---|---|---|
channel_uuid | string | no | UUID of a connected number to scope results |
page | integer | no | 0-based page (default 0) |
limit | integer | no | Results per page, min 1, max 100 (default 10) |
Returns: paginated list of contacts.
search_contacts
Search for contacts by name or phone number.
| Input | Type | Required | Description |
|---|---|---|---|
query | string | yes | Search term — matches contact name or phone number |
channel_uuid | string | no | UUID of a connected number to scope the search |
page | integer | no | 0-based page (default 0) |
limit | integer | no | Results per page, min 1, max 100 (default 10) |
Returns: array of matching contacts.
"Find the 2Chat contact named Acme Corp and update their email to operations@acme.com."
update_contact
Update an existing contact. Only fields you pass are modified.
| Input | Type | Required | Description |
|---|---|---|---|
contact_uuid | string | yes | UUID of the contact to update |
first_name | string | no | New first name |
last_name | string | no | New last name |
profile_pic_url | string | no | New publicly accessible avatar URL |
contact_details | array | no | List of {type, value} detail objects (same shape as create_contact.contact_detail) |
channel_uuid | string | no | WhatsApp channel UUID to (re)associate with the contact |
Returns: updated contact object.
delete_contact
Permanently delete a contact from your 2Chat account.
| Input | Type | Required | Description |
|---|---|---|---|
contact_uuid | string | yes | UUID of the contact to delete |
Returns: confirmation of deletion.
Calls & Virtual Numbers
list_virtual_numbers
List virtual phone numbers (VoIP) connected to your account.
| Input | Type | Required | Description |
|---|---|---|---|
page | integer | no | 0-based page (default 0) |
limit | integer | no | Results per page (default 50) |
Returns: array of virtual numbers with number, country, features.
get_call_history
Get call detail records (CDRs) from your 2Chat account, optionally filtered.
| Input | Type | Required | Description |
|---|---|---|---|
direction | string | no | inbound or outbound |
from_number | string | no | For inbound calls, filter by calling number (E.164) |
to_number | string | no | For outbound calls, filter by called number (E.164) |
page | integer | no | 0-based page (default 0) |
Returns: paginated list of CDRs.
get_call_details
Get full details of a single call by its CDR UUID.
| Input | Type | Required | Description |
|---|---|---|---|
call_uuid | string | yes | UUID of the call detail record (obtain via get_call_history) |
Returns: full call detail record.
get_call_price
Estimate the per-minute outbound call price to a destination phone number.
| Input | Type | Required | Description |
|---|---|---|---|
phone_number | string | yes | Destination number in international format, with or without leading + |
Returns: per-minute price estimate.
"How much would a call to +447700900123 cost per minute?"