WhatsApp

io.github.mcp-dirPublished by GitHub account mcp-dirv0.1.0Updated Oct 25, 2026

Connect a personal/Business WhatsApp account via QR pairing (multi-device, like WhatsApp Web). Send

VerifiedStreamable HTTPWeb executableProductivity & WorkflowCommunication & Collaboration

Overview

AI-generated overview

A hosted WhatsApp connector that lets an AI assistant read chats, contacts and groups, search message history, and send or manage messages from a paired account

What you can do
List paired accounts, chats, contacts and groups, and read chat metadata and group memberships from locally synced history, with coverage and backfill tools for older messages and full-text search across stored messages. Send text and media messages, create polls and vote, react, and mark messages read. Edit, delete or forward messages, and archive, pin or mute chats. Create, update, leave or join groups, manage participants, and handle invite links and join requests. Configure an outbound webhook and per-number proxy settings.
When to use it
Useful when you want an assistant to triage or search WhatsApp conversations, draft and send replies or media, run polls, or administer groups without switching apps. Best suited to users who already run a paired WhatsApp account and want it reachable from Claude, ChatGPT, Cursor or another MCP-over-HTTP client.
Requirements
A remote MCP-over-HTTP endpoint; no local package or runtime is needed. A WhatsApp personal or Business account paired by QR code (multi-device, like WhatsApp Web). Sign-in to the hosted service is by magic link rather than password. An optional SOCKS5 or HTTPS proxy can be set per connection.
Before you install
The server can send messages, create polls, edit or delete messages for everyone, and add, remove, promote or demote group members, so mistakes reach real contacts. It is a proprietary hosted service billed per active connection, and message data returned by the tools is sent to whichever LLM host you connect. Webhook setup is owner/admin only and accepts https URLs only.

Installation

In SourceWeft

  1. Open WhatsApp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.mcp-dir%2Fwhatsapp-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "whatsapp": {
      "type": "http",
      "url": "https://api.mcp.ai/p_whatsapp"
    }
  }
}

README

WhatsApp

WhatsApp para Claude, ChatGPT e agentes de IA

Conecte uma conta de WhatsApp pessoal/Business via pareamento por QR (multi-device, como o WhatsApp Web). Envie e leia mensagens, listas chats, contatos, grupos e faça busca full-text no histórico. Suporte opcional a proxy SOCKS5/HTTPS por conexão, recomendado para evitar bloqueios em IPs de datacenter (Cloudflare/AWS).

  • 📊 41 ferramentas
  • ✏️ Leitura e escrita
  • 💬 Funciona com qualquer cliente MCP: Claude Desktop, Cursor, VS Code, Cline, Continue
  • 🔑 Login via magic-link (sem senha)

English version · Documentação completa · Skill pra agentes


Instalar em 1 clique

Claude (Web e Desktop)

A Anthropic unificou a instalação de MCPs em claude.ai/customize/connectors. O mesmo link serve pra Claude Web e Claude Desktop (basta estar logado):

➕ Abrir no Claude e conectar

Manual (se o deeplink não abrir): claude.ai/customize/connectors → + → Adicionar conector personalizado → cole Nome WhatsApp e URL https://api.mcp.ai/p_whatsapp.

Cursor

➕ Instalar WhatsApp no Cursor

VS Code (Copilot Chat)

➕ Instalar WhatsApp no VS Code

ChatGPT, Manus, OpenClaw e mais 40+ clientes

Funciona em qualquer cliente MCP que suporte MCP over HTTP. A URL do servidor é sempre:

https://api.mcp.ai/p_whatsapp

Detalhes por cliente: INSTALL.md.


Exemplos de uso

Liste meus últimos 20 chats no WhatsAppBusque no histórico todas as mensagens que mencionem 'reunião'Envie 'Cheguei!' para +5511999999999

41 ferramentas disponíveis

ToolDescrição
whatsapp_list_accountsList WhatsApp accounts paired to this install — wa_jid, phone, label, proxy on/off, status.
whatsapp_syncRefresh this account's local data from WhatsApp — pulls recent messages and refreshes the groups/contacts lists into the local store.
whatsapp_send_textSend a WhatsApp message (text or media).
whatsapp_send_mediaSend a WhatsApp message (text or media).
whatsapp_chatsList WhatsApp chats (individual + group).
whatsapp_messagesList messages in a chat from LOCAL history.
whatsapp_messages_writeMark messages as read in a chat.
whatsapp_contacts_listRead 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]
whatsapp_contacts_getRead 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]
whatsapp_groupsList WhatsApp groups the account belongs to — subject, jid, participants count, owner.
whatsapp_group_membersList the members of a WhatsApp group (live).
whatsapp_group_participants_addManage participants of a WhatsApp group (the connected account must be a group admin).
whatsapp_group_participants_removeManage participants of a WhatsApp group (the connected account must be a group admin).
whatsapp_group_participants_promoteManage participants of a WhatsApp group (the connected account must be a group admin).
whatsapp_group_participants_demoteManage participants of a WhatsApp group (the connected account must be a group admin).
whatsapp_reactReact to a message with an emoji (or remove your reaction by passing an empty emoji).
whatsapp_poll_createSend 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: accept…
whatsapp_poll_voteSend 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…
whatsapp_message_deleteManage a message you can act on.
whatsapp_message_forwardManage a message you can act on.
whatsapp_message_editManage a message you can act on.
whatsapp_chat_metadataGet metadata for a single chat (subject/name, archived/pinned/muted state, unread count, timestamps).
whatsapp_chat_archiveChange a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: archive]
whatsapp_chat_unarchiveChange a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unarchive]
whatsapp_chat_pinChange a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: pin]
whatsapp_chat_unpinChange a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unpin]
whatsapp_chat_muteChange a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: mute]
whatsapp_chat_unmuteChange a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unmute]
whatsapp_group_manage_createGroup lifecycle/admin (the connected account must be a group admin for most actions).
whatsapp_group_manage_leaveGroup lifecycle/admin (the connected account must be a group admin for most actions).
whatsapp_group_manage_updateGroup lifecycle/admin (the connected account must be a group admin for most actions).
whatsapp_group_manage_invite_linkGroup lifecycle/admin (the connected account must be a group admin for most actions).
whatsapp_group_manage_joinGroup lifecycle/admin (the connected account must be a group admin for most actions).
whatsapp_group_manage_requestsGroup lifecycle/admin (the connected account must be a group admin for most actions).
whatsapp_searchFull-text search across all stored messages (SQLite FTS5).
whatsapp_history_coverageShow how far back the LOCAL message archive reaches per chat (oldest_ts, newest_ts, message_count, status).
whatsapp_history_backfillRequest OLDER messages for a chat from your phone (on-demand history sync), extending what whatsapp_messages can read.
whatsapp_webhook_getShow 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_webhook_setSet (or remove) this WhatsApp install's outbound webhook.
whatsapp_config_getShow 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).
whatsapp_config_setChange an editable-after-connect setting on a connected number WITHOUT re-pairing.

Detalhe de cada tool: docs/ferramentas.md


Preços

Cobrança por conexão ativa. Veja docs/precos.md.


Privacidade & LGPD

  • Sub-processadores: o LLM host que você escolher (Claude, ChatGPT, Cursor, agente próprio). Lista completa em docs/privacidade-lgpd.md.
  • Os dados retornados pelas tools são enviados ao LLM host que você escolher, sub-processador fora do nosso controle. Recomendamos planos com opt-out de treinamento.

Perguntas frequentes

O servidor é open source? O servidor é proprietário (hosted). Este repositório é o wrapper público com manifestos, docs e skills — tudo MIT.

Posso usar com agente próprio (não Claude/Cursor)? Sim — qualquer cliente que suporte MCP over HTTP. URL: https://api.mcp.ai/p_whatsapp.


Suporte


Licença

MIT — veja LICENSE. O servidor MCP em api.mcp.ai/p_whatsapp é proprietário (hosted); este repositório (manifestos, docs, skills) é MIT.

Source: README.md at commit db5d8a5

Tools

47

whatsapp_list_accounts

List WhatsApp accounts paired to this install — wa_jid, phone, label, proxy on/off, status.

Parametersaccount

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

Parametersaccount

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 ('[email protected]', '<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]

Parameterstorequiredtexttypeaccountcaptionfilenamemimetypereply_tomedia_urlmedia_base64

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 ('[email protected]', '<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]

Parameterstorequiredtexttypeaccountcaptionfilenamemimetypereply_tomedia_urlmedia_base64

whatsapp_chats

List WhatsApp chats (individual + group). Sorted by most recent activity.

Parameterslimitaccountarchived

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.

Parametersafterlimitordersincebeforeaccountchat_jidrequired

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.

Parametersaccountchat_jidrequiredmessage_idmessage_ids

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]

Parametersjidlimitqueryaccount

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]

Parametersjidlimitqueryaccount

whatsapp_groups

List WhatsApp groups the account belongs to — subject, jid, participants count, owner.

Parametersaccount

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

Parametersaccountgroup_jidrequired

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]

Parametersusersrequiredaccountgroup_jidrequired

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]

Parametersusersrequiredaccountgroup_jidrequired

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]

Parametersusersrequiredaccountgroup_jidrequired

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]

Parametersusersrequiredaccountgroup_jidrequired

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.

Parametersemojiaccountchat_jidrequiredmessage_idrequiredmessage_ids

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.

Parameterstonameaccountoptionsrequiredchat_jidmessage_idmessage_idsselectable_count

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.

Parameterstonameaccountoptionsrequiredchat_jidmessage_idmessage_idsselectable_count

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.

Parameterstotextaccountchat_jidrequiredmessage_idrequiredmessage_idsfor_everyone

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.

Parameterstotextaccountchat_jidrequiredmessage_idrequiredmessage_idsfor_everyone

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.

Parameterstotextaccountchat_jidrequiredmessage_idrequiredmessage_idsfor_everyone

whatsapp_chat_metadata

Get metadata for a single chat (subject/name, archived/pinned/muted state, unread count, timestamps). Requires chat_jid.

Parametersaccountchat_jidrequired

whatsapp_chat_archive

Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: archive]

Parametersaccountchat_jidrequiredduration_secs

whatsapp_chat_unarchive

Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unarchive]

Parametersaccountchat_jidrequiredduration_secs

whatsapp_chat_pin

Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: pin]

Parametersaccountchat_jidrequiredduration_secs

whatsapp_chat_unpin

Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unpin]

Parametersaccountchat_jidrequiredduration_secs

whatsapp_chat_mute

Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: mute]

Parametersaccountchat_jidrequiredduration_secs

whatsapp_chat_unmute

Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unmute]

Parametersaccountchat_jidrequiredduration_secs

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]

Parametersnameusersinviteaccountgroup_jidreq_actiondescriptionlink_actionparticipants

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]

Parametersnameusersinviteaccountgroup_jidreq_actiondescriptionlink_actionparticipants

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]

Parametersnameusersinviteaccountgroup_jidreq_actiondescriptionlink_actionparticipants

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]

Parametersnameusersinviteaccountgroup_jidreq_actiondescriptionlink_actionparticipants

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]

Parametersnameusersinviteaccountgroup_jidreq_actiondescriptionlink_actionparticipants

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.

Parameterskindlimitqueryaccountchat_jid

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.

Parameterscountaccountchat_jidrequiredrequests

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.

Takes no parameters.

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

Parametersurleventsremovesecretinclude_result

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.

Takes no parameters.

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.

Parametersvaluesrequiredaccount

show_version

Show Version

Show the current MCP platform and adapter versions.

Takes no parameters.

report_bug

Report Bug

Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.

Parameterscontextmessagerequiredconversation

connect

Connection Status

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.

Takes no parameters.

toolkit_info

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.

Takes no parameters.

marketplace

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.

Parameterslimitqueryactionmcp_idmessagetool_idargumentsimmediatetier_slugprompt_bodyprompt_slugprompt_tool+11 more

authenticate

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.

Parameterstoken

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts