MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Communication & messaging

LetsBot

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

Checks passed
12 / 22

2 failed · 8 not measured

Median response
2789 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
95

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
410
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 2789 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-03-26, serverInfo.name letsbot.

  • Pass
    Lists tools

    tools/list returned 95 tools.

  • Fail
    Current protocol

    Negotiated 2025-03-26. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 2789 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 2789 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    317 of 320 parameters have a description (99%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-31T18:58:13.794797Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using LetsBot

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http letsbot https://letsbot.net/mcp

Capabilities

Tools 95

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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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).

Discovered
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.

Discovered
ai_translate_message

Return a message together with the requested target language so the assistant can translate it. The assistant produces the translation.

Discovered
archive_contact

Archive or unarchive a contact chat.

Discovered
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.

Discovered
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.

Discovered
block_contact

Block or unblock a WhatsApp contact.

Discovered
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).

Discovered
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).

Discovered
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.

Discovered
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).

Discovered
create_interactive_conversation

Create an interactive bot conversation with buttons. When triggered, shows a message with clickable button options that lead to different responses.

Discovered
create_label

Create a new label/tag for organizing contacts.

Discovered
create_quick_reply

Create a new quick reply/canned response. Quick replies let agents send pre-written messages instantly.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
forward_message

Forward a message from one WhatsApp chat to another.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
get_bot_conversations

Get all bot auto-reply conversations/rules. Shows configured triggers and their responses.

Discovered
get_bot_settings

Get all bot and AI-related settings for the current account.

Discovered
get_bot_status

Get the current bot status and settings. Shows whether the bot is active, AI mode, default reply settings, and match percentage.

Discovered
get_campaign_status

Get detailed status of a specific bulk message campaign including per-contact delivery statistics.

Discovered
get_campaigns

Get a list of bulk message campaigns. Shows campaign status, delivery stats, and scheduling info.

Discovered
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.

Discovered
get_contacts

Get a paginated list of WhatsApp contacts with optional search and filter.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
get_label_contacts

Get all contacts that are assigned to a specific label.

Discovered
get_labels

Get all labels/tags available in the account. Labels are used to categorize and organize contacts.

Discovered
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.

Discovered
get_messages

Get messages from a WhatsApp conversation. Returns the most recent messages paginated.

Discovered
get_moderators

Get all moderators/agents available in the account. Moderators are team members who can handle conversations.

Discovered
get_my_chats

Get the chats assigned to the person this connection acts as. A workspace-level connection (API key) gets every assigned chat.

Discovered
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").

Discovered
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.

Discovered
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.

Discovered
get_quick_replies

Get all quick replies/canned responses available. Quick replies are pre-written message templates that can be sent quickly.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
pin_contact

Pin or unpin a contact chat so it stays at the top of the list.

Discovered
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.

Discovered
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".

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
search_messages

Search messages across all conversations (individual chats and groups), or within one specific contact chat or group.

Discovered
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.

Discovered
send_audio

Send an audio file or voice note to a WhatsApp number.

Discovered
send_buttons

Send an interactive message with buttons to a WhatsApp number. Maximum 3 buttons.

Discovered
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.

Discovered
send_contact_card

Send a contact card (vCard) to a WhatsApp number.

Discovered
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.

Discovered
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. 120363041234567890@g.us); "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.

Discovered
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. 120363041234567890@g.us); "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.

Discovered
send_image

Send an image to a WhatsApp number with an optional caption.

Discovered
send_list

Send an interactive list/menu message to a WhatsApp number.

Discovered
send_location

Send a location to a WhatsApp number.

Discovered
send_reaction

Add an emoji reaction to a message in a WhatsApp conversation.

Discovered
send_template

Send a WhatsApp-approved message template to a number. Templates are required for sending messages outside the 24-hour window.

Discovered
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.

Discovered
send_video

Send a video to a WhatsApp number with an optional caption.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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).

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected2789 ms95