Skip to main content
Glama
eurogas-bbl

whatsapp-mcp

by eurogas-bbl

whatsapp-mcp

MCP-сервер к WhatsApp через шлюз GREEN-API. Даёт агенту чтение переписки (история чата, журналы входящих и исходящих, контакты, группы) и отправку сообщений и файлов.

Работает с обычным личным номером: номер один раз привязывается к инстансу GREEN-API по QR-коду в консоли шлюза, дальше никакого локального процесса и никакого повторного сканирования не нужно.

Зачем шлюз

Официальный WhatsApp Business Cloud API от Meta не даёт доступа к личной переписке и истории — только к диалогам, начатым после подключения бизнес-номера. Локальные мосты (whatsmeow, Baileys) требуют постоянно работающего процесса на машине пользователя. GREEN-API закрывает обе проблемы ценой платного тарифа и того, что под капотом у него неофициальный протокол.

Репозиторий пока лежит в личном пространстве eurogas-bbl, а не в brain-boost-academy: прав на создание репозиториев в организации нет. После переноса GitHub оставит редирект, и ссылки ниже продолжат работать.

Related MCP server: lingtai-whatsapp

Установка

Зависимостей, кроме uv, нет:

uvx --from git+https://github.com/eurogas-bbl/whatsapp-mcp whatsapp-mcp

Как запись в .mcp.json:

{
  "mcpServers": {
    "whatsapp": {
      "command": "uvx",
      "args": [
        "--env-file", "/путь/к/whatsapp-mcp.env",
        "--from", "git+https://github.com/eurogas-bbl/whatsapp-mcp",
        "whatsapp-mcp"
      ]
    }
  }
}

Переменные окружения

Переменная

Обязательна

Описание

GREENAPI_ID_INSTANCE

да

idInstance из консоли GREEN-API

GREENAPI_API_TOKEN_INSTANCE

да

apiTokenInstance оттуда же

GREENAPI_API_URL

нет

Личный хост инстанса, например https://7105.api.greenapi.com. По умолчанию https://api.green-api.com

GREENAPI_MEDIA_URL

нет

По умолчанию https://media.green-api.com; используется только при отправке локального файла

WHATSAPP_READONLY

нет

true — инструменты отправки не регистрируются вовсе

Токен не попадает в текст ошибок: он лежит в URL, а URL — в сообщениях httpx, поэтому перед выдачей модели он заменяется на ***.

Инструменты

Чтение — всегда:

get_state, get_settings, list_chats, get_chat_history, get_last_incoming_messages, get_last_outgoing_messages, get_contact_info, get_group_data, check_whatsapp, get_file_link, receive_notification, delete_notification.

Запись — если не выставлен WHATSAPP_READONLY:

send_message, send_file, send_file_by_url, mark_chat_read, set_settings.

delete_notification доступен и в режиме чтения: он убирает обработанное событие из очереди шлюза и ничего не меняет в самих чатах, а без него receive_notification бесконечно возвращает одно и то же.

Идентификаторы чатов

Личный чат — 79001234567@c.us, группа — 120363043968066561@g.us, скрытый номер — 123456789012345@lid. Голый номер телефона (79001234567, +7 (900) 123-45-67) достраивается до @c.us; для групп и @lid идентификатор нужно передавать целиком, потому что от номера они неотличимы.

Ограничения

  • История видна только за то время, пока номер привязан к инстансу: GREEN-API не выгружает переписку, накопленную до подключения.

  • У getChatHistory нет постраничного обхода — только count.

  • Журналы входящих и исходящих и отметка прочитанным работают лишь при включённых уведомлениях инстанса: set_settings с incomingWebhook: yes, outgoingMessageWebhook: yes, outgoingAPIMessageWebhook: yes.

  • Ответы обрезаются на 256 КБ, чтобы длинная переписка не вытеснила контекст; обрезанный ответ помечен полем truncated.

Разработка

uv sync
uv run pytest -q
uv run pyright

Тесты офлайн: HTTP замокан через httpx.MockTransport, инструменты вызываются настоящим MCP-клиентом.

Available Tools

17 tools
check_whatsappCheck WhatsappB

Есть ли WhatsApp у номера. Проверяйте перед первой отправкой незнакомцу.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full behavioral burden. It does not state whether the operation is read-only, whether it contacts the WhatsApp service, what the return value looks like, or any side effects. The description only names the check without explaining observable behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, and the main purpose is front-loaded. Every word adds value, and the description is appropriately sized for a simple one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter check tool, the description conveys the core use but lacks expected phone formatting and return result semantics. Since there is no output schema, the agent is left to infer what the outcome of the check looks like. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not explain the expected phone format (e.g., country code, digits, international format). It simply calls it a 'номер' (number), leaving important parameter semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: checking whether a phone number has WhatsApp. It effectively communicates the tool's core purpose and adds a practical context (check before first sending to a stranger), though it does not explicitly distinguish it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear when-to-use guidance: 'Проверяйте перед первой отправкой незнакомцу' (check before first sending to a stranger). It does not mention alternative tools or exclusion cases, but the intended context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_notificationDelete NotificationA

Удаляет обработанное событие из очереди по receiptId.

ParametersJSON Schema
NameRequiredDescriptionDefault
receipt_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clearly discloses that the operation removes an event from the queue and identifies the destructive nature. However, it does not mention whether deletion is permanent, whether it can fail for unprocessed events, or any permissions/error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It names the action, the target, and the key in one compact statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema tool, the description is reasonably complete: it names the operation and the input. Still, it lacks guidance on prerequisites, return behavior, and consequences beyond the deletion itself, and there are no annotations to fill those gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It adds that receipt_id selects the event to delete and is the queue receipt identifier. This is some semantic value, but it largely restates the parameter name and does not explain how to obtain or validate the receiptId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('deletes'), a specific resource ('processed event from queue'), and the key used ('by receiptId'). This clearly differentiates it from siblings like receive_notification and the various getters, even without naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'processed event' implies the tool should be used only after events have been processed, but there is no explicit when/when-not guidance or reference to receive_notification as the source of receiptId. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chat_historyGet Chat HistoryA

Последние сообщения чата, новые первыми.

Основной инструмент чтения переписки. Постраничного обхода у GREEN-API нет — можно только увеличить count (по умолчанию у шлюза 100).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
chat_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does reveal important traits: messages come newest-first, pagination is not supported, and the gateway default count is 100. This goes beyond a generic 'get history' statement, though it stops short of describing response shape or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the most important fact (recent messages newest first) and then the key constraint. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with only two parameters, the description is largely complete: it covers ordering, pagination limitation, and a default behavior. The clear gap is chat_id semantics and the absence of any return structure, but the core call decisions are adequately supported.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It meaningfully explains count via the no-pagination note and gateway default of 100, but chat_id is not described at all beyond its name, leaving the required parameter's format and semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource (chat messages) and operation (reading correspondence), with 'Последние сообщения чата' specifying what is returned. It identifies itself as the 'main tool for reading correspondence,' giving some differentiation from the more targeted sibling tools, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives practical usage context: 'Основной инструмент чтения переписки' tells an agent when to prefer this tool for general chat history reading, and 'Постраничного обхода у GREEN-API нет' clarifies that count is the only way to control volume. However, it doesn't explicitly exclude alternatives like get_last_incoming_messages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contact_infoGet Contact InfoA

Карточка контакта: имя, аватар, признак бизнес-аккаунта, последний онлайн.

Для групп не работает — используйте get_group_data.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does add behavioral context: it lists the returned fields and discloses a key limitation (groups are not supported). It stops short of describing error behavior, nullability, or permission requirements, but for a simple read-only getter the description is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The output fields are front-loaded, followed immediately by the essential limitation and sibling alternative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with no output schema or annotations, the description covers the main return values and the principal usage boundary. It does not mention failure modes or whether fields can be null, but the overall call context is simple enough that the gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only indirectly defines chat_id by stating that groups do not work, implying chat_id should identify an individual contact; it does not explain the format or give examples. Some meaning is added, but the sole required parameter is not fully documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the tool's resource and output: a contact card containing name, avatar, business-account flag, and last online. It also explicitly distinguishes itself from get_group_data by stating groups are not supported, so an agent can reliably select it for individual contacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit exclusion and routing rule: 'Для групп не работает — используйте get_group_data' (does not work for groups — use get_group_data). This clearly tells the agent when not to use this tool and names the alternative sibling directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_group_dataGet Group DataB

Данные группы: название, владелец, участники, права.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, and the description is a noun phrase rather than a behavioral statement. It does not disclose that the tool is read-only, possible authorization requirements, or error behavior. The 'get' in the title implies a read operation, but the description itself carries little behavioral information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very compact and front-loaded with the most important data fields. It earns its place, but it is a fragment rather than a full sentence and would benefit from a verb and slight context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter, listing the returned fields is helpful. However, with no output schema and no annotations, the absence of response structure, error conditions, and sibling routing leaves clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not explain the group_id parameter beyond the general group resource. The schema only supplies type 'string' and required status, so an agent does not learn ID format, meaning, or constraints from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Данные группы: название, владелец, участники, права' clearly identifies the resource (group) and the key data fields returned (name, owner, participants, rights). It lacks an explicit verb, relying on the tool name for the action, and it does not explicitly distinguish itself from sibling getters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the resource: call this when group metadata is needed. No when/when-not guidance or comparison with sibling tools such as get_contact_info or get_chat_history is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_last_incoming_messagesGet Last Incoming MessagesA

Входящие по всем чатам за последние minutes минут (по умолчанию сутки).

Чтобы посмотреть, что нового вообще пришло, не перебирая чаты. Требует включённого incomingWebhook.

ParametersJSON Schema
NameRequiredDescriptionDefault
minutesNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It mentions a required webhook setting, but does not describe failure behavior, side effects, or output format, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, with the main action first and no extraneous text. It is well-structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and no output schema, the description covers the core purpose, the parameter's meaning, and a prerequisite. It lacks error case details, but the overall context is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage, but the description explains that `minutes` defines the lookback period and mentions the default of 1440 minutes in prose. This compensates for the missing schema description, though minimally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves incoming messages across all chats within a time window, and explicitly mentions the use case of seeing new messages without iterating chats. This distinguishes it from per-chat history tools among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a specific when-to-use scenario: to see what's new globally. It also notes a prerequisite (incomingWebhook must be enabled), but does not explicitly name alternative tools for contrasting cases, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_last_outgoing_messagesGet Last Outgoing MessagesA

Исходящие по всем чатам за последние minutes минут со статусом доставки.

ParametersJSON Schema
NameRequiredDescriptionDefault
minutesNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It discloses the data scope and that delivery status is included, but it does not state read-only behavior, result ordering, pagination/limits, or whether the returned structure contains anything beyond the messages and their statuses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact sentence that front-loads the main resource (outgoing messages) and then adds the two relevant modifiers: all chats and the time window with delivery status. There is no filler or unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core selection criteria are present, but because there is no output schema and no annotations, the description leaves out practical invocation details such as result ordering, maximum result count, and the exact fields returned for each message. It is adequate for basic selection but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only describes `minutes` as an integer with a default of 1440, while the description adds the key semantic that it is the trailing window length for the query. This meaningfully clarifies how to use the parameter, though it could also note bounds or an effective maximum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as outgoing messages across all chats, scoped to the last `minutes` minutes and including delivery status. The qualifier 'Исходящие' (outgoing) distinguishes it from the sibling get_last_incoming_messages, and the tool name supplies the 'get' verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied: call this when an agent needs recent outgoing messages with delivery status across all chats. However, it does not explicitly state when not to use it or which sibling to prefer for incoming messages, per-chat history, or other filtered queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_settingsGet SettingsA

Настройки инстанса, включая флаги уведомлений.

Без incomingWebhook: yes журналы входящих сообщений и отметки прочитанным не работают.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not explicitly state that the tool only reads settings and has no side effects. The 'get' in the tool name suggests read-only behavior, but the description itself could be more explicit about what it returns and that it does not modify anything.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long and contains only relevant information: the scope of settings and an important operational caveat. No filler or redundant wording is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions instance settings and notification flags, and gives a useful related warning, but it does not describe the return structure or enumerate the settings that will be present. Since there is no output schema, a bit more detail about what the caller receives would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there are no parameter details for the description to clarify. The baseline of 3 applies because there is no additional parameter meaning to add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Get Settings' combined with the description 'Instance settings, including notification flags' makes the tool's purpose clear. It identifies the resource and a key category of settings, though the description itself is a noun phrase rather than an explicit action statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a practical warning: without `incomingWebhook: yes`, incoming message logs and read receipts do not work. This implies when checking or troubleshooting settings might be useful, but it does not explicitly state when to use this tool versus alternatives like `set_settings`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stateGet StateA

Состояние инстанса GREEN-API.

authorized — номер подключён и всё работает; notAuthorized — нужно заново отсканировать QR в консоли GREEN-API; blocked — номер забанен.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose meaningful behavioral information by defining each state, including that blocked means banned and notAuthorized requires re-scanning a QR code. However, it does not explicitly state that this is a read-only/no-side-effect operation or describe the return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well structured: a short purpose statement followed by a clear list of possible state values and their meanings. Every sentence adds useful information without unnecessary padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter status-check tool with no output schema, the description adequately explains the three possible outcomes. It could be even more explicit about the expected return representation, but the state values and their implications are sufficiently covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. No parameter documentation is needed, and the description does not introduce any parameter-related ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns the status of a GREEN-API instance and enumerates the possible state values. It does not explicitly differentiate from sibling tools, but the resource and verb are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description explains what each returned state means but does not say when a caller should check state, such as before sending messages or after a connection failure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_chatsList ChatsB

Список известных инстансу чатов и контактов (id, имя, тип).

Обновление списка на стороне WhatsApp занимает до 5 минут; пустой ответ сразу после подключения — норма, повторите позже.

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyNoall
countNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds a meaningful, non-obvious behavioral detail: the list may lag up to 5 minutes on the WhatsApp side, and an empty response after connection is expected rather than an error. It does not cover all possible behaviors, but the timing caveat is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no wasted words. The first sentence states the resource and output fields; the second adds the single most important behavioral caveat. It is front-loaded and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read tool with no required parameters, the description covers core purpose and a key timing caveat, which would allow a basic call. However, the lack of parameter explanations—especially count—and the absence of any comparison to sibling list/detail tools leave meaningful gaps for an agent deciding how to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention either parameter. The 'only' enum is documented in the schema, but the 'count' parameter is only described as integer/null with no meaning, bounds, or behavior explained, so an agent cannot reliably know what values are meaningful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as chats and contacts known to the instance, and even lists the returned fields (id, name, type). Though phrased as a noun ('Список...') rather than an explicit verb, it is unambiguous about what the tool produces and is broad enough to be distinguished from siblings like get_chat_history or get_contact_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful usage context: the WhatsApp-side list refresh can take up to 5 minutes, and an empty response immediately after connection is normal and should be retried later. However, it does not explicitly state when to prefer this tool over related alternatives such as get_contact_info or get_group_data, nor does it mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_chat_readMark Chat ReadA

Отмечает чат прочитанным. Без id_message — весь чат.

Собеседник увидит две синие галочки, так что это тоже заметное действие.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
id_messageNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses a significant side-effect: the sender sees two blue checkmarks ('Собеседник увидит две синие галочки'), making this a noticeable action. This is genuinely informative beyond merely stating 'marks as read'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: first states the action and scope rule, second gives the side-effect warning. No filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple state-mutation tool, the description covers the action, the optional scope, and user-visible consequences. It does not discuss return values or error handling, but these are less critical given the tool's simplicity and lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema gives no descriptions (0% coverage), but the description explains the functional meaning of id_message: omitting it marks the whole chat. chat_id is not explicitly defined, though its meaning is obvious from the name and context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Отмечает чат прочитанным' – marks chat as read) and clarifies two operational modes (whole chat vs specific message). This clearly distinguishes it from sibling tools, none of which handle read-state mutation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear guidance on the id_message parameter ('Без id_message — весь чат'), defining when to mark the whole chat vs a single message. It does not explicitly name alternative tools, but no sibling tool offers this action, so the context is sufficient for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

receive_notificationReceive NotificationA

Одно событие из очереди входящих (FIFO, хранится 24 часа).

Возвращает receiptId и body, либо null, если за receive_timeout секунд (5–60) ничего не пришло. После обработки события вызовите delete_notification, иначе следующий вызов вернёт то же самое.

ParametersJSON Schema
NameRequiredDescriptionDefault
receive_timeoutNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so excellently. It discloses FIFO behavior, 24-hour retention, timeout-driven `null` returns, the 5–60 second range, and the critical fact that a received event is not consumed until `delete_notification` is called.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, with no filler. The core action is front-loaded, followed by return behavior and the necessary ack instruction. Every sentence carries essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one optional parameter and no output schema, the description is complete: what the tool returns, when it returns `null`, how long events are kept, how to acknowledge them, and the consequence of not acknowledging. An agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain `receive_timeout`, and it does: it defines the value range (5–60 seconds) and its behavioral effect on the call. This adds significant meaning beyond the bare schema type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific operation: receiving one event from an incoming FIFO queue, with return values `receiptId` and `body` or `null` on timeout. It distinguishes itself from siblings by emphasizing queue semantics, FIFO order, and the explicit tie to `delete_notification` for consumption.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational context: poll the incoming queue, wait up to `receive_timeout`, and call `delete_notification` after processing to avoid re-reading the same event. It does not explicitly contrast with alternatives like `get_last_incoming_messages`, but the queue/ack model makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_fileSend FileB

Отправляет локальный файл (до 100 МБ) в чат.

Как и send_message — действие необратимо, спрашивайте подтверждение.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
captionNo
chat_idYes
file_nameNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

没有注解,因此描述承担了行为透明度的全部责任。它明确披露了操作不可逆,建议请求确认,并说明文件大小限制为100 MB。这些是有价值的操作背景,尽管没有涵盖权限或失败模式等细节。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

两句话,简洁且无冗余。第一句陈述核心操作,第二句提醒不可逆性并请求确认。所有内容都有具体价值,结构清晰。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

对于一个包含4个参数(其中2个必需)的工具,描述过于简短。它没有解释参数、没有给出与send_file_by_url的使用区别,也没有提供关于输出或失败情况的任何信息。关键上下文缺失。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

模式描述覆盖率为0%,而描述完全没有解释任何参数(path、caption、chat_id、file_name)。仅说"发送本地文件",代理无法从描述中获得正确填充参数所需的含义,因此完全未弥补架构中的信息缺失。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

描述以明确的动词"Отправляет"开头,并指出了具体资源"локальный файл"(本地文件)和目的地"в чат"。还提供了大小限制(100 MB),这有助于区分该工具与通过URL发送文件的兄弟工具send_file_by_url。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

描述没有提供何时使用此工具以及何时使用替代工具的明确指导。它只是将行为与send_message比较,并提到不可逆性,但未说明与send_file_by_url的区别或适合使用此工具的条件。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_file_by_urlSend File By UrlA

Отправляет файл по публичной ссылке — без выкачивания на эту машину.

ParametersJSON Schema
NameRequiredDescriptionDefault
captionNo
chat_idYes
url_fileYes
file_nameYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the burden. It does disclose a meaningful non-obvious behavior: the file is sent directly from the public link without being downloaded to this machine. But it omits other behavioral context such as failure modes, URL accessibility requirements, return value, or side effects beyond the obvious send.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that immediately communicates the core action and the key behavioral nuance. There is no filler, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description still leaves the agent guessing about return values, error handling, whether the URL must be publicly reachable from the server, and how chat_id/file_name/caption are used. It is adequate for recognizing the tool, but not for predicting the full behavior of a call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only clarifies url_file by calling it a public link. It does not explain chat_id, file_name, or caption, nor their relationships. With 4 parameters and no schema-level descriptions, the definition should compensate much more than it does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('sends a file') and the specific delivery mechanism ('by public link'). It also adds a distinguishing behavioral detail ('without downloading it to this machine') that separates it from the sibling send_file, which might copy the file locally before sending.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when the file is available via a public URL and should not be downloaded to the host machine. However, it never explicitly names an alternative or states when not to use it, so the agent must infer the routing from the phrasing and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_messageSend MessageA

Отправляет текст в чат. Возвращает idMessage.

Действие необратимо и видно человеку на том конце — спрашивайте подтверждение у пользователя перед вызовом.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
messageYes
link_previewNo
quoted_message_idNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Explicitly discloses that the action is irreversible and visible to the recipient, and mentions the return value. With no annotations present, this description fully covers the important behavioral side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and focused, consisting of two clear sentences with no redundant or misleading content. It is well-structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the core purpose and confirmation warning are present, the description omits details about optional parameters and does not fully compensate for the lack of an output schema. An agent would not know how to use link_preview or quoted_message_id correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only mentions 'text' and 'idMessage'. It does not explain chat_id, message, link_preview, or quoted_message_id, leaving most parameters semantically unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool sends text to a chat and returns an idMessage, distinguishing it from file-sending siblings. The verb 'sends' and resource 'chat' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides some usage guidance by instructing to ask for user confirmation before calling, and implies use for text messages. However, it does not explicitly mention when to prefer this tool over alternatives like send_file or send_file_by_url.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_settingsSet SettingsA

Меняет настройки инстанса; инстанс при этом перезагружается (до 5 минут).

Нужен в основном один раз при подключении: {"incomingWebhook": "yes", "outgoingMessageWebhook": "yes", "outgoingAPIMessageWebhook": "yes"} — без этого журналы входящих и исходящих остаются пустыми.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the critical side effect that the instance restarts and can take up to 5 minutes, plus the persistence-related webhook setup. It doesn't mention response format or error conditions, but the restart warning is substantial transparency for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: two short sentences plus a JSON example. The primary action and side effect are front-loaded, and the usage scenario follows. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no annotations and no output schema, the description covers the essential context: what it does, when it's needed, what to pass, and what side effect to expect. It doesn't describe success/error responses, but that's a minor gap for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema only defines a generic 'settings' object with additionalProperties. The description compensates by giving a concrete, realistic JSON example with keys like incomingWebhook and outgoingMessageWebhook, which tells the agent what values are expected. It could be more exhaustive, but the example adds significant semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Меняет настройки инстанса' (changes instance settings). It distinguishes itself from the sibling get_settings by defining the write counterpart, and the concrete webhook example further clarifies the intended scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States exactly when to use the tool: 'нужен в основном один раз при подключении' (needed mainly once at connection), and explains the consequence of not using it (empty incoming/outgoing logs). This gives an agent actionable context for selecting and invoking the tool during setup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 17 tool updatesv0.1.0
    • First observedcheck_whatsapp
    • First observeddelete_notification
    • First observedget_chat_history
    • First observedget_contact_info
    • First observedget_file_link
    • First observedget_group_data
    • First observedget_last_incoming_messages
    • First observedget_last_outgoing_messages
    • First observedget_settings
    • First observedget_state
    • First observedlist_chats
    • First observedmark_chat_read
    • First observedreceive_notification
    • First observedsend_file
    • First observedsend_file_by_url
    • First observedsend_message
    • First observedset_settings

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (sending, reading, settings, notifications, contacts/groups). The only mild overlap is between get_chat_history and get_last_incoming/outgoing_messages, but the descriptions clarify the scope: one is per-chat, the others are cross-chat time-based summaries.

Naming Consistency4/5

The tool names follow a fairly consistent verb_noun pattern (get_*, send_*, list_*, mark_*, set_*, delete_*, receive_*). Minor deviations like check_whatsapp and receive_notification are still readable and consistent with the general style, so there are no mixed conventions.

Tool Count4/5

17 tools is slightly on the heavier side but appropriate for a WhatsApp integration that covers messaging, files, groups, contacts, settings, and webhooks. Each tool maps to a distinct API operation, and none feel redundant.

Completeness4/5

The surface covers the main WhatsApp workflows: sending and receiving messages/files, reading history, managing chats read state, contact and group info, and instance settings. Missing operations like editing/deleting sent messages or more granular media handling are minor gaps, since the core lifecycle is present.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP (Multi-Agent Conversation Protocol) Server that enables interaction with the WhatsApp Business API, allowing agents to send messages, manage media, and perform other WhatsApp business operations through natural language.
    1
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for interacting with the official Meta WhatsApp Business Platform/Cloud API, enabling sending messages, managing contacts, templates, and handling webhook callbacks.
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that connects AI agents to WhatsApp using the multi-device API, enabling messaging, group management, and more as a regular user.
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP gateway for GREEN-API WhatsApp that lets AI agents send messages, manage instances, and receive notifications via WhatsApp using the Model Context Protocol.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eurogas-bbl/whatsapp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server