mcpbeat Sign in

LetsBot MCP Server

answering

LetsBot is answering right now. Last checked 9 min ago. It exposes 95 tools.

WhatsApp Business messaging, live chat, chatbots, campaigns and CRM for a LetsBot workspace.

Uptime history 45 hours of history
45 hours agonow
100.0%
Uptime 24h
91 of 91 checks
95
Tools
read from the server
543 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 1

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 2 November 2026. No other catalogue keeps this.

2 Nov a tool changed the parameters it asks for create_whatsapp_template

Nothing serious here today

Today is the operative word: we check LetsBot every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 9 min ago.

run in your terminal
claude mcp add mcp --transport http https://letsbot.net/mcp
Settings → Connectors → Add custom connector, then paste this address
https://letsbot.net/mcp
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://letsbot.net/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://letsbot.net/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp": {
      "type": "http",
      "url": "https://letsbot.net/mcp"
    }
  }
}

Available tools 95

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

send
send_audio
Send an audio file or voice note to a WhatsApp number.
send_buttons
Send an interactive message with buttons to a WhatsApp number. Maximum 3 buttons.
send_carousel
Send a carousel of cards (title, subtitle, image, up to 3 buttons each; max 10 cards) to a Messenger or Instagram contact. Provide the recipient PSID/IGSID and platform.
send_contact_card
Send a contact card (vCard) to a WhatsApp number.
send_file
Send a document/file to a WhatsApp number. `file_url` must be a DIRECT url to the file itself. If you generated the file yourself, or it is not already at a direct public url, call upload_file first (it takes the bytes as base64 and returns a url plus the filename to pass here). A Google Drive / Dropbox / OneDrive share link is not a direct url — it points at a download page, and the file arrives as an unopenable "BIN" attachment.
send_group_file
Send one real file — a document such as a PDF, an image, or a video — from the workspace's WhatsApp number into one WhatsApp group, after the user confirms. Every member of that group receives it and it cannot be recalled. `file_url` must be a DIRECT url to the file: if the file is a Google Drive / Dropbox share link, or only exists as bytes you generated, call upload_file first (pass the link as `source_url`) and use the url and filename it returns. Works on a number connected by QR code, and on an official green-tick Cloud API number (not Coexistence) for groups created with Meta's Groups API (their chat_id contains letters). Identify the group with "group_id", set to the group's "chat_id" from get_groups (e.g. [email protected]); "chat_id" is accepted as an alias. Group names are not accepted. One group per call: not a broadcast tool. For text only, use send_group_message.
send_group_message
Send one real WhatsApp text message from the workspace's WhatsApp number into one WhatsApp group, after the user confirms. Every member of that group (real people outside LetsBot) receives it, and a sent message cannot be recalled or edited. Works on a number connected to LetsBot by QR code (the number's own WhatsApp groups), and on an official green-tick Cloud API number (not Coexistence) for groups created with Meta's Groups API under Channels › WhatsApp groups — their chat_id contains letters; @mentions are not supported there. On the official Cloud API, WhatsApp does not deliver the number's existing group chats. Identify the group with "group_id", set to the group's "chat_id" from get_groups (e.g. [email protected]); "chat_id" is accepted as an alias. Group names are not accepted. One group per call: this is not a broadcast or bulk-messaging tool.
send_image
Send an image to a WhatsApp number with an optional caption.
send_list
Send an interactive list/menu message to a WhatsApp number.
send_location
Send a location to a WhatsApp number.
send_reaction
Add an emoji reaction to a message in a WhatsApp conversation.
send_template
Send a WhatsApp-approved message template to a number. Templates are required for sending messages outside the 24-hour window.
send_text_message
Send a text message to a contact on any connected platform: a WhatsApp number (international format without +, e.g. 201234567890), or the `phone` / `chat_id` of a website chat, Messenger, Instagram, Telegram, X or SMS contact exactly as get_conversations_awaiting_reply or get_contacts returns it. The message goes out on the platform the contact wrote from.
send_video
Send a video to a WhatsApp number with an optional caption.
bot
delete_bot_conversation
Permanently delete one bot flow (any type) by ID, together with its buttons and list sections. The bot stops answering its keywords. This cannot be undone — to pause a flow instead, use set_bot_conversation_active with active=false. Call with confirm=false first to get a preview (keywords, buttons, sections) to show the user. Run get_bot_conversations with enabled_only=false to find IDs.
get_bot_conversations
Get all bot auto-reply conversations/rules. Shows configured triggers and their responses.
get_bot_settings
Get all bot and AI-related settings for the current account.
get_bot_status
Get the current bot status and settings. Shows whether the bot is active, AI mode, default reply settings, and match percentage.
set_bot_conversation_active
Turn one bot flow (auto-reply conversation of any type: simple, buttons, template or list) ON or OFF by ID. An OFF flow stays saved but the bot stops answering its keywords. Asking for the state it is already in changes nothing. A buttons/template flow with no buttons, or a list flow with no sections, cannot be turned ON until it is completed in the panel. This does NOT switch the whole bot (use toggle_bot) and does not edit the reply (use update_bot_conversation). Run get_bot_conversations with enabled_only=false to find IDs.
update_bot_conversation
Update an existing bot auto-reply rule by ID. Only the provided fields change; everything else stays as it was. "channels" limits the rule to some channels ([] = every channel). Run get_bot_conversations first to find the conversation ID.
update_bot_settings
Update bot settings. Only the settings you pass are changed; the others stay as they are. ai_mode chooses HOW the AI behaves ("standard" = full assistant, "cod_only" = only confirms cash-on-delivery orders); it does not switch AI replies on or off — use update_ai_assistant_settings with ai_replies_enabled for that.
contact
create_contact
Create a new WhatsApp contact in the system. Optionally set the workspace's contact custom fields in the same call (custom_fields: key → value).
delete_contact
Permanently delete one contact (a one-to-one chat) together with its whole conversation: every message and media file is erased shortly after, and this cannot be undone. Same as Delete on the contact in the LetsBot panel. Requires confirm: call with confirm=false first to get a preview (name, message count, labels, assigned team members), show it to the user, then call again with confirm=true. It does NOT block the number — the customer can still write again, which creates a new, empty contact; use block_contact to stop someone messaging, or archive_contact to just hide a chat. WhatsApp groups cannot be deleted with this tool. Exporting contacts is only available in the LetsBot panel.
get_contact
Get detailed information about a specific WhatsApp contact including labels, moderators, last message, and the workspace's contact custom fields (custom_fields: every available field with its key, label, type, current value — null when empty — and allowed options for select fields). Use those keys with update_contact to set or clear a custom field.
update_contact
Update a contact's information: name, email, city, country, and the workspace's own contact custom fields (custom_fields: key → value, null clears). Call get_contact first to see which custom field keys exist, their types and allowed options. Only the fields you pass are changed.
label
create_label
Create a new label/tag for organizing contacts.
delete_label
Delete a contact label by ID. The label is removed from every contact that has it and from the inbox filters; the contacts themselves are not touched. Run get_labels first to find the ID.
get_label_contacts
Get all contacts that are assigned to a specific label.
update_label
Rename or recolour an existing contact label by ID. Only the fields you pass change. Run get_labels first to find the ID. Contacts keep the label; they just show the new name/colour.
quick
create_quick_reply
Create a new quick reply/canned response. Quick replies let agents send pre-written messages instantly.
delete_quick_reply
Delete a quick reply (canned response) by ID. Run get_quick_replies first to find the ID. To only hide it, use update_quick_reply with status=false instead.
get_quick_replies
Get all quick replies/canned responses available. Quick replies are pre-written message templates that can be sent quickly.
update_quick_reply
Update an existing quick reply/canned response by ID. Only the provided fields change; everything else stays as it was. Run get_quick_replies first to find the quick reply ID.
store
get_store_setup_checklist
The step-by-step set-up of a store on LetsBot (Salla, Zid, Shopify, …): 1 connect the WhatsApp number, 2 store notifications (order status, verification code, welcome, review), 3 abandoned-cart reminders, 4 cash-on-delivery confirmation, 5 AI replies. Use it when the merchant asks to set up his store/account or "what is left"; then walk him through the first unfinished step.
list_store_automations
List every automatic WhatsApp message this workspace sends to its store customers, and whether each one is ON or OFF: order/store event notifications (kind notification_template — e.g. order created, shipped, delivered, per store platform), abandoned-cart reminders (kind cart_reminder, plus older per-store ones as legacy_cart_reminder, read-only) and automation reminders (kind behavioral_reminder — e.g. product viewed, checkout started, ask for a rating after delivery). Each row has id, kind, platform, event, delay (for reminders), template info (type, languages, Meta category and approval status on an official number), active, can_toggle, last_sent_at and warnings explaining why an active message might not actually send. Also returns which stores are connected. Use it before set_store_automation_active (which needs kind + id) and to answer "which automatic messages are on?". It does NOT change anything, show message text, edit templates or send test messages.
set_store_automation_active
Turn ONE automatic store message on or off — an order/store notification, an abandoned-cart reminder or an automation reminder — exactly like its toggle in the LetsBot panel. Get kind + id from list_store_automations first. Turning it ON makes LetsBot message the merchant's customers automatically every time the event happens (Meta bills each message on an official WhatsApp number), so only do it when the merchant explicitly asks, and it needs confirm=true after showing the preview. Turning it OFF takes effect immediately and needs no confirmation. It does NOT edit the message text, submit templates to Meta, send a test, or create/delete automations (those are done in the LetsBot panel). Older per-store reminders (legacy_cart_reminder) cannot be switched here.
assign
assign_label
Assign or remove a label from a contact. Toggles the label — if already assigned it will be removed, if not assigned it will be added.
assign_moderator
Assign a team member (moderator) to a conversation, or remove them from it. Pass action=assign or action=unassign to say which; without action the call toggles (adds if absent, removes if present). The assigned member is notified. To move many conversations from one member to another at once, use reassign_conversations.
assignment
get_assignment_rules
Read how new conversations are automatically given to team members (operators): the assignment mode (off / round robin / least open), which team receives them, whether only available operators count, the per-operator cap, reassigning a conversation when its operator does not reply in time, rebalancing, and the backup operator. Each setting comes with a plain-words explanation, plus the teams, operators and limits you can use with update_assignment_rules. Read-only. Use get_workload / get_agent_performance for who currently holds which chats, and reassign_conversations to move chats by hand.
update_assignment_rules
Change how new conversations are automatically given to team members. Pass ONLY the settings to change; everything else stays as it is. Call get_assignment_rules first to see the current values, the teams and the operators you can use. Examples: turn it on with mode="round_robin"; cap each operator at 10 chats with max_open=10; move a chat nobody answered within 15 minutes with reassign_after_minutes=15; set max_open/reassign_after_minutes/team_id/fallback_user_id to null to clear them. A backup operator (fallback_user_id) is required when after_last_hop or when_full is "fallback". Returns the settings before and after. Sends nothing to customers and does not move existing chats by itself (use reassign_conversations for that).
assistant
get_ai_assistant_settings
Read how the AI assistant answers customers: whether AI replies are on, its instructions, its working hours and outside-hours message, when it hands the chat to a person (pause after hand-off / after a manual reply), what it does with voice notes, extra rules, timezone, and the Arabic dialect/tone when available.
update_ai_assistant_settings
Change how the workspace's AI assistant automatically answers the business's real customers on WhatsApp (and any other connected chat channel it answers). The change applies to the next customer messages straight away, the previous values are overwritten, and turning ai_replies_enabled on makes the AI reply to customers by itself (each reply uses an AI credit). Pass ONLY the settings the merchant asked to change, inside "settings": ai_replies_enabled (bool), instructions (the full new instructions text — read them first with get_ai_assistant_settings and keep what the merchant did not ask to remove), working_hours (weekly schedule object or null), outside_hours_message_enabled (bool), outside_hours_message, pause_bot_after_handoff (bool), pause_after_manual_reply_minutes (0-1440), count_mcp_as_manual_reply (bool, default false — when true, messages sent through MCP tools like this one pause the bot for pause_after_manual_reply_minutes; when false they never pause it), count_api_as_manual_reply (bool, default false — the same for messages sent through the REST API; LetsBot's own automatic notices never count), transfer_voice_to_agent (bool), voice_note_mode (reply|silent|react), extra_rules, timezone, and dialect / tone when get_ai_assistant_settings lists them.
campaign
create_campaign
Create a new bulk message campaign to send messages to multiple contacts. Messages can be targeted by label. Campaign will be scheduled and processed by the queue.
get_campaign_status
Get detailed status of a specific bulk message campaign including per-contact delivery statistics.
cancel
cancel_campaign
Stop a bulk message campaign that is scheduled or sending right now. Recipients not reached yet will not get the message; those already sent are unaffected. Use it immediately when the merchant says a campaign is wrong or must stop. The campaign can be resumed later from the LetsBot panel (Bulk messages → the campaign).
cancel_scheduled_activity
Stop messages that are still waiting to be sent (as listed by list_scheduled_activity): either ONE row (pass source + source_id; it is cancelled immediately — stopping a send needs no approval) or ALL rows matching optional filters (pass all=true; this needs the user's confirmation — call first with confirm=false to get the count, then confirm=true). Pending store notifications (Salla / Zid / WooCommerce) are deleted; queued WhatsApp messages are marked cancelled and never sent. Already-sent messages are not affected and cannot be recalled. Does NOT stop bulk campaigns (use cancel_campaign).
lead
get_ad_lead_settings
Get the ad-lead auto-labeling configuration. Shows the label and moderator (if any) that the tenant has chosen to auto-apply to incoming contacts that arrive from a Meta Click-to-WhatsApp ad.
update_ad_lead_settings
Configure which label and moderator are auto-applied to contacts that arrive from a Meta Click-to-WhatsApp ad. Pass 0 for either field to clear that setting. Pass nothing to leave both as they were. Run get_labels and get_moderators first to find valid IDs.
messages
get_messages
Get messages from a WhatsApp conversation. Returns the most recent messages paginated.
search_messages
Search messages across all conversations (individual chats and groups), or within one specific contact chat or group.
notification
get_notification_template
Read ONE automatic store notification (order status, verification code/OTP, welcome, review request …) in full: its message text in every language, its image/video/file, whether it is on, and its WhatsApp (Meta) approval. Pass the id from list_store_automations (kind notification_template), or the store module + event slug (e.g. module "salla", slug "otp" or "completed").
update_notification_template
Edit ONE automatic store notification (order status, verification code/OTP, welcome, review request …) that LetsBot sends on WhatsApp to the store's real customers when that event happens: change its message text in one or more languages, which languages are sent, its image/video/file (an https link), and/or switch it on (customers start receiving it automatically) or off (they stop receiving it). The previous text and media are overwritten, not kept. On a QR-connected number customers get the new text from the next notification; on an official (Cloud API) number WhatsApp keeps sending the copy Meta approved until the merchant syncs the new text to Meta in the panel. This tool itself never submits anything to Meta. Read it first with get_notification_template, keep every {variable} the merchant still wants, and only change what the merchant asked for.
whatsapp
create_whatsapp_template
Create a new WhatsApp message template and submit it to Meta for review (Official WhatsApp / Cloud API workspaces only). A template is the only way to start a conversation or message a customer outside the 24-hour reply window; once Meta APPROVES it, send it with send_template. Inputs: name (lowercase letters, digits and underscores; Meta registers it as "nt_<name>"), language (any language Meta accepts for templates, e.g. "ar", "en", "es", "pt", "fr", "de", "tr"), category, body, an example value for every body placeholder, and optionally a header (text, or an image/video/document with a public sample URL), a footer and buttons. Categories: UTILITY = a message about something the customer already started (order update, booking reminder, account notice) — no promotion; MARKETING = promotions, offers, announcements, re-engagement — billed per delivered message at Meta's marketing rate. Meta decides the final category and may RE-CATEGORISE a UTILITY template that contains promotional wording as MARKETING (billed as marketing). AUTHENTICATION (one-time passcodes) cannot be authored here — the panel's custom-template editor does not author it either. Placeholders: positional {{1}}, {{2}} … numbered from 1 without gaps, OR named {{customer_name}} (lowercase) — never both in one template; pass examples as {"1": "Sara"} or {"customer_name": "Sara"}. Consent gate: call with confirm=false first — nothing is saved or sent and you get the exact payload Meta will receive; show it to the user and only call again with confirm=true after they approve. Meta reviews a submitted template within minutes up to 24 hours; the result (APPROVED / REJECTED with Meta's reason) appears in list_whatsapp_templates. This tool does not edit or delete existing templates (use the WhatsApp templates page in the panel) and does not send any message.
list_whatsapp_templates
List the WhatsApp message templates (Meta-approved message formats) of this workspace: name, exact language code, category (MARKETING / UTILITY / AUTHENTICATION), Meta review status and the rejection reason when Meta gave one, body text, header type, and the placeholders each template expects (numbered {{1}} or named {{customer_name}}). Each row says whether send_template can send it (only APPROVED, non-carousel templates). Use it before send_template to pick a template and pass its exact name, language and parameters, or to answer "which templates were rejected and why?". Filters: status, category, language, search (name, template id or language); 50 per page. Read-only: it does not create, edit, submit or sync templates with Meta — that is done in the LetsBot panel. Templates exist only on the official WhatsApp Cloud API connection.
abandoned
get_abandoned_carts
Get abandoned carts from the connected store (Salla, Zid, Shopify, WooCommerce or Magento) for the last N days, with a recovery summary: how many carts were abandoned and are still open, how many were recovered (bought later), how many of those were recovered after a WhatsApp reminder, the recovery rate and the recovered value. Each cart lists the customer name and phone, total, currency, items, checkout link, store, status (open or recovered) and the WhatsApp reminders already sent. Figures match the Insights page in LetsBot. WooCommerce carts are checkouts the shopper started but did not pay. Read-only: it sends nothing. To message a shopper, use send_template with the cart's customer_phone and an approved template; do not send the same cart a second reminder if reminders_sent is already above 0 unless the user asks.
account
get_account_overview
Summarise this LetsBot workspace's account in one call: (1) subscription — current plan, billing period, start and end/renewal date, status, whether it renews automatically and the next automatic charge, trial state and days left, any temporary plan boost, the line items and the add-ons/features included; (2) usage — messages sent in the rolling last 30 days against the plan's monthly message limit (the same figure as the panel dashboard), AI replies used against the AI allowance, team seats used against the plan's seat limit, and the number of contacts; (3) channels — every WhatsApp number (official Cloud API or QR) with its connection state, plus Messenger, Instagram, Telegram, e-mail inboxes and, where the workspace has them, the website chat widget, Viber/LINE/WeChat and SMS. Use it when the user asks what plan they are on, when it renews or expires, what is included, how much of their quota is left, or which channels are connected. Each section carries a `where_to_manage` hint (panel page and link) for changes. Read-only: it changes nothing, sends nothing to anyone, does NOT renew, upgrade, cancel, change billing, or connect/disconnect anything, and it does not contact Meta or any other outside service, so a WhatsApp number's connection state is the last state LetsBot recorded. It returns no passwords, access tokens, API keys, webhook secrets or card/bank details — only plan, usage and channel names, numbers and states. Prices are in minor units (cents). A section that could not be read comes back as null with a note.
analyze
ai_analyze_contact
Return a contact profile and recent conversation sample so the assistant can analyze the customer (engagement level, interests, recommendations). The assistant performs the analysis on the returned data.
archive
archive_contact
Archive or unarchive a contact chat.
block
block_contact
Block or unblock a WhatsApp contact.
campaigns
get_campaigns
Get a list of bulk message campaigns. Shows campaign status, delivery stats, and scheduling info.
chats
get_my_chats
Get the chats assigned to the person this connection acts as. A workspace-level connection (API key) gets every assigned chat.
contacts
get_contacts
Get a paginated list of WhatsApp contacts with optional search and filter.
conversations
get_conversations_awaiting_reply
List conversations where the customer wrote last and nobody has replied yet, newest first. This is a backlog of work outstanding, NOT a read/unread state: it is derived from who spoke last, so it clears when a reply is sent from any device and returns if the customer writes again. It is unaffected by whether anyone has opened the chat. A customer who wrote to two of your WhatsApp numbers has one conversation per number: each number still waiting is its own row (whatsapp_channel_id) — reply on THAT number by passing channel_id to the send tool.
dashboard
ai_dashboard_summary
Return key dashboard metrics (contact counts, conversations awaiting a reply, active moderators, today's activity, recent contacts) plus guidance so the assistant can write an interpreted summary. The tool itself only computes the counts. It reports no read/unread state: nothing here indicates what the merchant has opened or seen on their own device.
diagnose
diagnose_messaging
Answer "why are my messages failing / not arriving?": checks the WhatsApp number connection (QR logged out, access removed by Meta, test number, billing block), the reasons Meta gave for the latest failed messages, failed automatic store messages, and automatic messages whose WhatsApp template is not approved — each problem with its fix. Read-only.
draft
draft_bot_flow
Build a keyword bot flow (menu, buttons, replies) from a description in the merchant's words, any language. It is created SWITCHED OFF in the bot builder so the merchant can review and edit it, then switch it on. Uses 1 AI credit. Put everything the merchant described into "description": the trigger words, the menu options and each reply.
duplicate
duplicate_bot_conversation
Make a full copy of one bot flow (any type) by ID: the reply, its media, and all of its buttons, list sections and follow-up replies. The copy has the same keywords and the same ON/OFF state as the original, so two flows now answer the same keywords — change the copy's keyword with update_bot_conversation, or turn it off with set_bot_conversation_active. Each call creates a new copy. Run get_bot_conversations with enabled_only=false to find IDs.
forward
forward_message
Forward a message from one WhatsApp chat to another.
group
get_group_messages
Get messages from a WhatsApp group conversation, newest first, with the sender of each message. Read-only: reading a group NEVER marks its messages as read and sends no read receipts. Use get_groups to list groups and their ids.
groups
get_groups
Get a paginated list of WhatsApp group conversations. Read-only: listing groups never marks anything as read. Counts report what has not been opened in the LetsBot inbox, which is not the same as what the merchant has seen on their own phone. Use get_group_messages to read a group's history.
improve
ai_improve_message
Return a draft message together with the desired tone and context so the assistant can rewrite it (grammar, tone, clarity) while keeping the original intent. The assistant produces the improved version.
interactive
create_interactive_conversation
Create an interactive bot conversation with buttons. When triggered, shows a message with clickable button options that lead to different responses.
labels
get_labels
Get all labels/tags available in the account. Labels are used to categorize and organize contacts.
mark
mark_as_read
Mark a conversation as opened in the LetsBot inbox, and send a read receipt to the customer on channels that support one. This affects inbox read state ONLY. It does NOT clear the conversation from get_conversations_awaiting_reply — only sending a reply does that — so do not call this expecting the awaiting-reply backlog to go down.
message
get_message_status
Check what WhatsApp actually did with messages you already sent — delivered, read, still pending, or FAILED with Meta's own reason. A send tool returning status "sent" only means Meta accepted the message; Meta can still refuse to deliver it seconds later, and this tool is the only way to learn that. Call it a minute or two after sending (pass the message_id values the send tools returned), or pass a phone number to review every recent outbound message to one contact.
moderators
get_moderators
Get all moderators/agents available in the account. Moderators are team members who can handle conversations.
note
add_note
Add an internal note to a conversation — visible only to the merchant's team in the LetsBot inbox, never sent to the customer. Use it to leave context for colleagues (e.g. "customer wants a refund, waiting for the warehouse"). A note does not count as a reply to the customer. To alert teammates, mention them: write @Name in the body (e.g. "@Sara please call the customer") or pass their ids or names in "mentions" — each mentioned teammate is notified in the inbox and on their phone.
order
get_order_status
Get the status and details of an e-commerce order. Supports Salla and Zid platforms, and any other connected store that can look orders up (odoo, shopify, woocommerce). Orders are synced from the connected store.
owner
get_owner_briefing
A short briefing of what needs the owner's attention in this LetsBot workspace right now, in one call: conversations where a customer is still waiting for a reply (how many, how long the oldest has waited, and the first few names), customer messages and new contacts in the last 24 hours, WhatsApp/Messenger/Instagram/Telegram channels that are disconnected or lost access, a plan or trial that ends soon, and message usage close to the monthly limit. Use it when the user asks "what's new?", "anything urgent?", "give me a summary", or for a morning/daily briefing — especially by voice. `alerts` is already sorted most urgent first; read those first, in short sentences, in the user's language, and do not read out phone numbers or ids unless asked. For more detail use get_conversations_awaiting_reply or get_account_overview. With several workspaces, call it once per workspace (see list_workspaces). Read-only: it changes nothing, sends nothing and contacts no outside service.
pin
pin_contact
Pin or unpin a contact chat so it stays at the top of the list.
products
search_products
Search for products in the connected e-commerce store. Searches by name in Salla and Zid product catalogs, and in every other connected store (odoo, shopify, woocommerce) by name, SKU or barcode.
reassign
reassign_conversations
Move conversations from one team member to another in one step — e.g. "move Ahmed's waiting chats to Mona". By default only the conversations awaiting a reply (the customer wrote last) move; use scope=all for every open conversation the member holds, or waiting_longer_than_minutes for only the late ones. The giver is removed, the receiver is assigned and notified, and the change is recorded in the conversation history. Get member ids from get_moderators or get_agent_performance.
reply
reply_to_message
Reply to a specific message in a conversation on any connected platform (WhatsApp, website chat, Messenger, Instagram, Telegram, …). Also replies inside a WhatsApp group when "phone" is the group's chat_id from get_groups (QR-connected numbers only), optionally tagging members with "mentions".
report
get_report
Read one tab of the LetsBot Reports page for a period: KPI cards with the change vs the previous period, the main chart (labels + series), the table rows (max 100) and footnotes. Tabs: conversations (opened/closed/open), responses (reply speed), resolutions, messages (inbound/outbound, delivery), contacts (new contacts by channel, ads vs organic), assignments, lifecycle, calls (WhatsApp calls) and broadcasts (campaign delivery and replies). Call with no tab to get the list of tabs available in this workspace. Same numbers the merchant sees in the panel for the same period. Read-only.
resend
resend_campaign
Send a bulk campaign again to the recipients whose message is stuck at "sent" — WhatsApp accepted it but it was never confirmed delivered (phone offline, number inactive). Delivered and read recipients are NOT messaged again. Recipients who never got it yet are included. Real WhatsApp messages that Meta charges for, and someone who did receive it without a delivery receipt may get it twice. Requires confirm: call with confirm=false first for a preview (how many people, template, estimated Meta cost), show it to the user, then confirm=true. Needs the Send Bulk add-on. To continue a stopped campaign use resume_campaign; to stop one use cancel_campaign.
resume
resume_campaign
Resume a bulk campaign that was stopped (cancel_campaign / Cancel in the panel), finished with recipients left unsent, stopped because its template header file was missing, or paused because the plan's monthly message limit was used up (resume it after the plan is upgraded). Sends the campaign to every recipient who has not received it yet — real WhatsApp messages that Meta charges for. Requires confirm: call with confirm=false first to get a preview (how many people will be messaged, template, estimated Meta cost), show it to the user, then call again with confirm=true. Needs the Send Bulk add-on. Does NOT re-send to people already sent — use resend_campaign for that. Use get_campaign_status to see progress afterwards, cancel_campaign to stop it again.
save
save_cart_reminder
Create a new abandoned-cart reminder step (omit id) or edit one (pass its id from list_store_automations, kind cart_reminder): when it is sent after the cart is abandoned (delay_value + delay_unit), its message text per language, the minimum cart total, and whether it is on. While it is on, LetsBot sends it automatically on WhatsApp to the store's real customers who leave a cart, so editing an active reminder changes what those customers receive from then on; the previous text and settings are not kept. A new reminder is created switched OFF unless the merchant asked to switch it on. Use {customer_name}, {cart_total}, {cart_link} style variables only if the merchant wants them.
scheduled
list_scheduled_activity
List messages that are still waiting to go out to customers: pending store notifications from Salla, Zid and WooCommerce (order updates, abandoned-cart reminders, …) and the outgoing WhatsApp send queue (including failed sends that would be re-sent when the number reconnects). Use it when the merchant asks "what is about to be sent?" or wants to stop pending messages. Returns totals per source and rows with source + source_id — pass those to cancel_scheduled_activity. Does NOT list bulk campaigns (use get_campaigns / cancel_campaign) or scheduled social posts (list_scheduled_social_posts). Read-only.
sentiment
ai_sentiment_analysis
Return the customer messages of a conversation so the assistant can analyze sentiment (positive, negative, or neutral) and emotional indicators. The assistant performs the sentiment analysis on the returned messages.
simple
create_simple_conversation
Create a simple bot auto-reply rule. When a customer sends a message matching the trigger keyword, the bot replies with the specified text. With "ask_contact" the reply asks for the customer's phone number or e-mail with a one-tap Messenger button (text only on other channels); "confirmation" is then sent once after the customer taps it.
suggest
ai_suggest_reply
Return the recent conversation and contact context so the assistant can draft suggested replies. The assistant generates the reply suggestions from the returned context (nothing is sent).
summarize
ai_summarize_conversation
Return the recent conversation history with a contact so the assistant can summarize it (key topics, issues, and outcomes). The assistant writes the summary from the returned messages.
toggle
toggle_bot
Toggle the bot on or off for a specific contact. When bot is disabled for a contact, automated replies will not be sent.
translate
ai_translate_message
Return a message together with the requested target language so the assistant can translate it. The assistant produces the translation.
upload
upload_file
Put a file into LetsBot storage and get back a direct https url plus the filename to pass to send_file / send_group_file / send_image / send_video / send_audio. Two ways in — pass exactly one: `source_url` when the file is already online (a public link, including a Google Drive "Anyone with the link" share link or a Dropbox link; LetsBot downloads it server-side, max 20 MB), or `content_base64` only for a small file you generated yourself and hold the bytes of. Prefer `source_url` whenever a link exists: large base64 strings do not fit in a tool call. Never pass a Google Drive, Dropbox or OneDrive share link straight to the send tools: those point at a download page rather than at the file, so WhatsApp shows an unopenable "BIN" attachment — run it through this tool first. Each call stores a new copy at a new url — if you already have a url from this tool, reuse it instead of uploading again.

Endpoints

URLTransportStateLatencyChecked
https://letsbot.net/mcp streamable-http answering 439 ms 9 min ago

Alternatives to LetsBot

same job, measured the same way
ManyContacts - WhatsApp Business CRM
by manycontacts

WhatsApp Business CRM: send messages, manage contacts, campaigns, and AI agents.

local only
ManyContacts - WhatsApp Business MCP
by manycontacts

WhatsApp Business MCP: send messages, manage contacts, campaigns, and AI agents.

88 installs/wk local only
Wazionapps
by wazionapps

244 WhatsApp Business AI tools for messaging, automation, marketing, CRM and Shopify

34 installs/wk local only
AirysChat MCP Server
by airys

Operate AirysChat — conversations, CRM, AI Agents, Meta Business Agent, and WhatsApp campaigns.

answering
WhatSync for WhatsApp Business
by whatsync

Official WhatsApp Business API for AI agents: customer chats, templates, campaigns and Meta prices.

answering
Neuron
by conquext

AI-powered WhatsApp chatbot platform with 196 tools for bots, campaigns, and contacts.

53 installs/wk 425 tools answering
WhatsApp Business API by Wassenger
by wassenger

Send and read WhatsApp messages, templates, chats and campaigns through the official Business API.

54 tools answering
CatchMyCall
by catchmycall

Place calls, send WhatsApp messages, and read call records, contacts, leads and campaigns

answering

LetsBot — questions

Answers built from our own checks of this server.

What can LetsBot do?
It exposes 95 tools, read directly from the server on our last check. Among them: add_note, ai_analyze_contact, ai_dashboard_summary, ai_improve_message, ai_sentiment_analysis, ai_suggest_reply and 89 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is LetsBot mostly used for?
Its tools cluster around send, bot and contact. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is LetsBot working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 543 ms. The bar chart above shows every period we have measured.
How do I connect LetsBot?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does LetsBot need an API key?
No. LetsBot completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 95 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is LetsBot?
It answers our handshake in 543 ms on average, which is faster than 22% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.