Servidor MCP

WhatsApp

io.github.mcp-dir/whatsapp-mcp
Comunicación Público y accesible MCP 2025-11-25

Qué hace este MCP

Connects to WhatsApp accounts to list chats and contacts, manage conversations and groups, administer participants, and configure connected accounts.

authenticate
MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'token': {'type': 'string'}}}
connect
Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
marketplace
The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'default': 10}, 'query': {'type': 'string', 'default': ''}, 'action': {'enum': ['search', 'describe', 'install', 'uninstall', 'subscribe', 'cancel', 'resume', 'report_bug', 'request_mcp', 'list_tools', 'invoke', 'search_prompts', 'get_prompt', 'publish_prompt'], 'type': 'string', 'default': 'search'}, 'mcp_id': {'type': 'string', 'default': ''}, 'message': {'type': 'string', 'default': ''}, 'tool_id': {'type': 'string', 'default': ''}, 'arguments': {'type': 'string', 'default': '{}'}, 'immediate': {'type': 'boolean', 'default': False}, 'tier_slug': {'type': 'string', 'default': ''}, 'prompt_body': {'type': 'string', 'default': ''}, 'prompt_slug': {'type': 'string', 'default': ''}, 'prompt_tool': {'type': 'string', 'default': ''}, 'prompt_vars': {'type': 'string', 'default': '{}'}, 'conversation': {'type': 'string', 'default': '[]'}, 'prompt_title': {'type': 'string', 'default': ''}, 'request_name': {'type': 'string', 'default': ''}, 'cancel_reason': {'enum': ['too_expensive', 'missing_features', 'switched_service', 'unused', 'customer_service', 'too_complex', 'low_quality', 'other'], 'type': 'string'}, 'cancel_comment': {'type': 'string', 'default': ''}, 'prompt_targets': {'type': 'array', 'items': {'enum': ['claude', 'chatgpt', 'cursor', 'lovable'], 'type': 'string'}, 'default': []}, 'report_context': {'type': 'string', 'default': ''}, 'prompt_category': {'type': 'string', 'default': ''}, 'request_details': {'type': 'string', 'default': ''}, 'prompt_description': {'type': 'string', 'default': ''}}}
report_bug
Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message'], 'properties': {'context': {'type': 'string', 'default': ''}, 'message': {'type': 'string'}, 'conversation': {'type': 'string', 'default': '[]'}}}
show_version
Show the current MCP platform and adapter versions.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
toolkit_info
Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
whatsapp_chat_archive
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: archive]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'duration_secs': {'type': 'number'}}}
whatsapp_chat_metadata
Get metadata for a single chat (subject/name, archived/pinned/muted state, unread count, timestamps). Requires chat_jid.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}}}
whatsapp_chat_mute
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: mute]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'duration_secs': {'type': 'number'}}}
whatsapp_chat_pin
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: pin]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'duration_secs': {'type': 'number'}}}
whatsapp_chats
List WhatsApp chats (individual + group). Sorted by most recent activity.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'default': 50}, 'account': {'type': 'string'}, 'archived': {'type': 'boolean'}}}
whatsapp_chat_unarchive
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unarchive]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'duration_secs': {'type': 'number'}}}
whatsapp_chat_unmute
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unmute]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'duration_secs': {'type': 'number'}}}
whatsapp_chat_unpin
Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unpin]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'duration_secs': {'type': 'number'}}}
whatsapp_config_get
Show this install's editable-after-connect settings per connected number — currently the proxy (proxy_url): whether it's set and a masked preview (the raw value is never returned). Owner/admin or the connection owner.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
whatsapp_config_set
Change an editable-after-connect setting on a connected number WITHOUT re-pairing. Today the only field is `proxy_url` — the SOCKS5/HTTPS proxy WhatsApp connects through (recommended to avoid IP bans). Owner/admin or the connection owner. - `account`: which number (id/wa_jid, phone, or label; omit if only one is connected). - `values`: e.g. { "proxy_url": "socks5://user:pass@host:port" }. An empty string CLEARS the field (e.g. { "proxy_url": "" } connects with no proxy); omit the key to keep the current value. The new value applies on the next (re)connection; the live session cache is invalidated so the next tool call uses it.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'account': {'type': 'string'}}}
whatsapp_contacts_get
Read WhatsApp contacts. Actions: - list: search across contacts (query optional — substring on name/phone). Default limit 50. - get: full contact info by JID. [Flattened action: get]
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'jid': {'type': 'string'}, 'limit': {'type': 'number', 'default': 50}, 'query': {'type': 'string'}, 'account': {'type': 'string'}}}
whatsapp_contacts_list
Read WhatsApp contacts. Actions: - list: search across contacts (query optional — substring on name/phone). Default limit 50. - get: full contact info by JID. [Flattened action: list]
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'jid': {'type': 'string'}, 'limit': {'type': 'number', 'default': 50}, 'query': {'type': 'string'}, 'account': {'type': 'string'}}}
whatsapp_group_manage_create
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (invite code or full invite link) - requests: { group_jid, req_action: 'list'|'approve'|'reject', users? } [Flattened action: create]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'string'}}, 'invite': {'type': 'string'}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}, 'req_action': {'enum': ['list', 'approve', 'reject'], 'type': 'string'}, 'description': {'type': 'string'}, 'link_action': {'enum': ['get', 'revoke'], 'type': 'string'}, 'participants': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_group_manage_invite_link
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (invite code or full invite link) - requests: { group_jid, req_action: 'list'|'approve'|'reject', users? } [Flattened action: invite_link]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'string'}}, 'invite': {'type': 'string'}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}, 'req_action': {'enum': ['list', 'approve', 'reject'], 'type': 'string'}, 'description': {'type': 'string'}, 'link_action': {'enum': ['get', 'revoke'], 'type': 'string'}, 'participants': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_group_manage_join
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (invite code or full invite link) - requests: { group_jid, req_action: 'list'|'approve'|'reject', users? } [Flattened action: join]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'string'}}, 'invite': {'type': 'string'}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}, 'req_action': {'enum': ['list', 'approve', 'reject'], 'type': 'string'}, 'description': {'type': 'string'}, 'link_action': {'enum': ['get', 'revoke'], 'type': 'string'}, 'participants': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_group_manage_leave
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (invite code or full invite link) - requests: { group_jid, req_action: 'list'|'approve'|'reject', users? } [Flattened action: leave]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'string'}}, 'invite': {'type': 'string'}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}, 'req_action': {'enum': ['list', 'approve', 'reject'], 'type': 'string'}, 'description': {'type': 'string'}, 'link_action': {'enum': ['get', 'revoke'], 'type': 'string'}, 'participants': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_group_manage_requests
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (invite code or full invite link) - requests: { group_jid, req_action: 'list'|'approve'|'reject', users? } [Flattened action: requests]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'string'}}, 'invite': {'type': 'string'}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}, 'req_action': {'enum': ['list', 'approve', 'reject'], 'type': 'string'}, 'description': {'type': 'string'}, 'link_action': {'enum': ['get', 'revoke'], 'type': 'string'}, 'participants': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_group_manage_update
Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: 'get'|'revoke' } - join: { invite } (invite code or full invite link) - requests: { group_jid, req_action: 'list'|'approve'|'reject', users? } [Flattened action: update]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'string'}}, 'invite': {'type': 'string'}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}, 'req_action': {'enum': ['list', 'approve', 'reject'], 'type': 'string'}, 'description': {'type': 'string'}, 'link_action': {'enum': ['get', 'revoke'], 'type': 'string'}, 'participants': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_group_members
List the members of a WhatsApp group (live). Returns each participant's JID, phone, and admin/super-admin flag. Requires group_jid (…@g.us, from whatsapp_groups).
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['group_jid'], 'properties': {'account': {'type': 'string'}, 'group_jid': {'type': 'string'}}}
whatsapp_group_participants_add
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: add]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['group_jid', 'users'], 'properties': {'users': {'type': 'array', 'items': {'type': 'string'}}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}}}
whatsapp_group_participants_demote
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: demote]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['group_jid', 'users'], 'properties': {'users': {'type': 'array', 'items': {'type': 'string'}}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}}}
whatsapp_group_participants_promote
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: promote]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['group_jid', 'users'], 'properties': {'users': {'type': 'array', 'items': {'type': 'string'}}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}}}
whatsapp_group_participants_remove
Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [Flattened action: remove]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['group_jid', 'users'], 'properties': {'users': {'type': 'array', 'items': {'type': 'string'}}, 'account': {'type': 'string'}, 'group_jid': {'type': 'string'}}}
whatsapp_groups
List WhatsApp groups the account belongs to — subject, jid, participants count, owner.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'account': {'type': 'string'}}}
whatsapp_history_backfill
Request OLDER messages for a chat from your phone (on-demand history sync), extending what whatsapp_messages can read. Returns { status, messages_added }: - "done"/"partial": it pulled messages_added new messages — read them via whatsapp_messages (paginate with `before`). "partial" means WhatsApp stopped early; wait and retry for more. - "cooldown": you requested this chat <60s ago (retry_after_s tells you when). WhatsApp THROTTLES back-to-back requests — DO NOT retry in a loop; wait, then try once. - "timeout": the phone didn't deliver in time (offline or throttled) — already-synced history is still readable; retry later. BEST-EFFORT (gated by WhatsApp): one call usually pulls a batch (~50–70 msgs); pulling much deeper repeatedly often won't work. Connects live, may take up to ~1 minute. The initial sync already loaded deep history for most chats — check whatsapp_history_coverage first; only backfill when a chat's oldest_ts isn't far enough back.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'count': {'type': 'number', 'default': 50}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'requests': {'type': 'number'}}}
whatsapp_history_coverage
Show how far back the LOCAL message archive reaches per chat (oldest_ts, newest_ts, message_count, status). Use it to find pagination boundaries for whatsapp_messages and to decide whether to pull more with whatsapp_history_backfill. Optional query (filter by name/JID), kind, limit, or a single chat_jid.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'kind': {'enum': ['dm', 'group', 'broadcast', 'newsletter', 'unknown'], 'type': 'string'}, 'limit': {'type': 'number', 'default': 100}, 'query': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}}}
whatsapp_list_accounts
List WhatsApp accounts paired to this install — wa_jid, phone, label, proxy on/off, status.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'account': {'type': 'string'}}}
whatsapp_message_delete
Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - edit: { chat_jid, message_id, text } — edit one of your recent text messages [Flattened action: delete] Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid', 'message_id'], 'properties': {'to': {'type': 'string'}, 'text': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}, 'for_everyone': {'type': 'boolean'}}}
whatsapp_message_edit
Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - edit: { chat_jid, message_id, text } — edit one of your recent text messages [Flattened action: edit] Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid', 'message_id'], 'properties': {'to': {'type': 'string'}, 'text': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}, 'for_everyone': {'type': 'boolean'}}}
whatsapp_message_forward
Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - edit: { chat_jid, message_id, text } — edit one of your recent text messages [Flattened action: forward] Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid', 'message_id'], 'properties': {'to': {'type': 'string'}, 'text': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}, 'for_everyone': {'type': 'boolean'}}}
whatsapp_messages
List messages in a chat from LOCAL history. Requires chat_jid (from whatsapp_chats). Paginate backwards by passing the oldest message's timestamp as `before` (ISO 8601); `after` pages forward; `order` sorts. NOTE: only messages already synced locally are returned — to see how far back the archive goes use whatsapp_history_coverage, and to pull OLDER messages from your phone use whatsapp_history_backfill.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'after': {'type': 'string'}, 'limit': {'type': 'number', 'default': 100}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'asc'}, 'since': {'type': 'string'}, 'before': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}}}
whatsapp_messages_write
Mark messages as read in a chat. Requires chat_jid. Optional message_id (marks up to this message; omit to mark all unread). Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid'], 'properties': {'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_poll_create
Send a poll or vote on one. Actions: - create: { to, name, options[] (2–12), selectable_count? } - vote: { chat_jid, message_id, options[] (the option texts to select) } [Flattened action: create] Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['options'], 'properties': {'to': {'type': 'string'}, 'name': {'type': 'string'}, 'account': {'type': 'string'}, 'options': {'type': 'array', 'items': {'type': 'string'}}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}, 'selectable_count': {'type': 'number'}}}
whatsapp_poll_vote
Send a poll or vote on one. Actions: - create: { to, name, options[] (2–12), selectable_count? } - vote: { chat_jid, message_id, options[] (the option texts to select) } [Flattened action: vote] Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['options'], 'properties': {'to': {'type': 'string'}, 'name': {'type': 'string'}, 'account': {'type': 'string'}, 'options': {'type': 'array', 'items': {'type': 'string'}}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}, 'selectable_count': {'type': 'number'}}}
whatsapp_react
React to a message with an emoji (or remove your reaction by passing an empty emoji). Requires chat_jid + message_id. Bulk support: accepts message_ids for batched execution.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chat_jid', 'message_id'], 'properties': {'emoji': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}, 'message_id': {'type': 'string'}, 'message_ids': {'type': 'array', 'items': {'type': 'string'}}}}
whatsapp_search
Full-text search across all stored messages (SQLite FTS5). Optional chat_jid to scope. Returns matches with context.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'default': 50}, 'query': {'type': 'string'}, 'account': {'type': 'string'}, 'chat_jid': {'type': 'string'}}}
whatsapp_send_media
Send a WhatsApp message (text or media). Actions: - text: { to, text, reply_to? } - media: { to, type ('image'|'video'|'audio'|'document'|'sticker'), media_url | media_base64, caption?, filename?, mimetype? } `to` accepts either a JID ('5511999999999@s.whatsapp.net', '<id>@g.us') or a plain phone (digits, country code included). For groups always use the '<id>@g.us' JID — get it from whatsapp_groups. [Flattened action: media]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['to'], 'properties': {'to': {'type': 'string'}, 'text': {'type': 'string'}, 'type': {'enum': ['image', 'video', 'audio', 'document', 'sticker'], 'type': 'string'}, 'account': {'type': 'string'}, 'caption': {'type': 'string'}, 'filename': {'type': 'string'}, 'mimetype': {'type': 'string'}, 'reply_to': {'type': 'string'}, 'media_url': {'type': 'string'}, 'media_base64': {'type': 'string'}}}
whatsapp_send_text
Send a WhatsApp message (text or media). Actions: - text: { to, text, reply_to? } - media: { to, type ('image'|'video'|'audio'|'document'|'sticker'), media_url | media_base64, caption?, filename?, mimetype? } `to` accepts either a JID ('5511999999999@s.whatsapp.net', '<id>@g.us') or a plain phone (digits, country code included). For groups always use the '<id>@g.us' JID — get it from whatsapp_groups. [Flattened action: text]
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['to'], 'properties': {'to': {'type': 'string'}, 'text': {'type': 'string'}, 'type': {'enum': ['image', 'video', 'audio', 'document', 'sticker'], 'type': 'string'}, 'account': {'type': 'string'}, 'caption': {'type': 'string'}, 'filename': {'type': 'string'}, 'mimetype': {'type': 'string'}, 'reply_to': {'type': 'string'}, 'media_url': {'type': 'string'}, 'media_base64': {'type': 'string'}}}
whatsapp_sync
Refresh this account's local data from WhatsApp — pulls recent messages and refreshes the groups/contacts lists into the local store. Call it BEFORE reading (chats/groups/messages/contacts/search) when results look stale or empty (e.g. right after connecting, or an account that hasn't synced recently). Connects live, so it may take ~20–60s. Returns { messages_stored }.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'account': {'type': 'string'}}}
whatsapp_webhook_get
Show this WhatsApp install's outbound webhook: the current URL, the subscribed events (empty = all), include_result, and the catalog of subscribable events (available_events — e.g. whatsapp.message, whatsapp.reaction, and the whatsapp.* wildcard). Owner/admin only.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
whatsapp_webhook_set
Set (or remove) this WhatsApp install's outbound webhook. Owner/admin only. - To set: pass `url` (https only, not localhost). `events` is the list of subscribed events ("permissions") — e.g. ["whatsapp.message"], or ["whatsapp.*"] for every WhatsApp event, or [] / omit for ALL events. See available_events from whatsapp_webhook_get. `include_result` (default true) controls whether the tool result is included in tool.call payloads. `secret` is optional (reserved). - Subscribing to any whatsapp.* event makes the daemon hold a live connection per number and forward inbound messages to your URL. - To remove the webhook: pass `remove: true` (or an empty url).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'url': {'type': 'string'}, 'events': {'type': 'array', 'items': {'type': 'string'}}, 'remove': {'type': 'boolean'}, 'secret': {'type': 'string'}, 'include_result': {'type': 'boolean'}}}
Añadido
authenticate
17 de September de 2026 a las 12:45
Añadido
marketplace
17 de September de 2026 a las 12:45
Añadido
toolkit_info
17 de September de 2026 a las 12:45
Añadido
connect
17 de September de 2026 a las 12:45
Añadido
report_bug
17 de September de 2026 a las 12:45
Añadido
show_version
17 de September de 2026 a las 12:45
Añadido
whatsapp_config_set
17 de September de 2026 a las 12:45
Añadido
whatsapp_config_get
17 de September de 2026 a las 12:45
Añadido
whatsapp_webhook_set
17 de September de 2026 a las 12:45
Añadido
whatsapp_webhook_get
17 de September de 2026 a las 12:45
Añadido
whatsapp_history_backfill
17 de September de 2026 a las 12:45
Añadido
whatsapp_history_coverage
17 de September de 2026 a las 12:45
Añadido
whatsapp_search
17 de September de 2026 a las 12:45
Añadido
whatsapp_group_manage_requests
17 de September de 2026 a las 12:45
Añadido
whatsapp_group_manage_join
17 de September de 2026 a las 12:45
Añadido
whatsapp_group_manage_invite_link
17 de September de 2026 a las 12:45
Añadido
whatsapp_group_manage_update
17 de September de 2026 a las 12:45
Añadido
whatsapp_group_manage_leave
17 de September de 2026 a las 12:45
Añadido
whatsapp_group_manage_create
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_unmute
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_mute
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_unpin
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_pin
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_unarchive
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_archive
17 de September de 2026 a las 12:45
Añadido
whatsapp_chat_metadata
17 de September de 2026 a las 12:45
Añadido
whatsapp_message_edit
17 de September de 2026 a las 12:45
Añadido
whatsapp_message_forward
17 de September de 2026 a las 12:45
Añadido
whatsapp_message_delete
17 de September de 2026 a las 12:45
Añadido
whatsapp_poll_vote
17 de September de 2026 a las 12:45