Categories › Communication › Messaging apps & SMS
WhatsApp Business inbox for AI apps: read and answer chats, run campaigns, deploy automations.
Remote server: your requests and data go to mcp.cosend.app. Claude Code: claude mcp add --transport http cosend https://mcp.cosend.app/mcp · Claude app: Settings → Connectors → Add custom connector.
The tools this server listed when we connected to it, in its own words.
whoami — Returns the Cosend workspace, plan and connected WhatsApp numbers for the credential in use, and the permissions it was granted, which decidlist_conversations — Lists conversations in this workspace, newest activity first, one page at a time, each with its id. Each record carries its contact and its search_conversations — Finds conversations by what they contain. q matches the contact’s name, phone number or WhatsApp username, and the text of each conversationread_conversation — Lists the messages of one conversation, named by conversation_id (or of one contact, by contact_id), oldest first, one page at a time. With send_message — Sends one WhatsApp message into one conversation that already exists, named by conversation_id. It reaches a real person on their phone, andlist_contacts — Lists contacts in this workspace, one page at a time, optionally filtered, each with its id. Contact display names come from the contacts thupsert_contact — Creates a contact, or updates the one that already exists for that phone number or BSUID (the business-scoped user id Meta sends; a contact set_contact_consent — Records a contact's marketing or utility consent as a new entry in an append-only ledger. Every entry is kept as written, so this is an audilist_templates — Lists this workspace’s WhatsApp message templates, one page at a time, with Meta’s review status, whether each can be sent right now (sendabsubmit_template — Creates a new WhatsApp message template and sends it to Meta for review. This leaves Cosend: Meta reviews every template (a decision can taklist_automations — Lists this workspace’s automations, one page at a time, with each one’s status, the version that is live, and today’s runs and failures. Reavalidate_automation — Checks an automation document (ir) with Cosend’s compiler and returns its full report: every error with a JSON pointer into the document andupsert_automation — Writes a new automation, or a new version of an existing one, from an automation document (ir). Without id it creates one: name, connection_deploy_automation — Compiles an automation’s version and stores the result so it can be switched on. It does not switch the automation on. Each deploy needs a cset_automation_state — Switches an automation on or off. state "disable" is the emergency stop: it takes effect at once and needs no confirmation. state "enable" slist_runs — Lists automation runs, newest first, one page at a time, with each run’s status, how long it took and what it sent. Read-only.get_run — Reads one automation run and its step-by-step trace: under run, the run’s status, timings, what it sent and why it failed; under steps, eachget_usage — Reports this workspace’s usage for one billing period against what its plan includes. Read-only.resolve_conversation — Marks one conversation Done, as the Done button in the Cosend Inbox does. Nothing is sent to anyone and no automation starts. Afterwards no create_setup_link — Makes a link for the person in this chat to open in their own browser, signed in to Cosend, to do one set-up step only they can do there, ancheck_setup_link — Reads a set-up link’s status. status open means the step is not done; completed means it has, and result says what was set up; expired meanscancel_setup_link — Cancels an open set-up link so its page stops working, for example when the person changed their mind or the link asks for the wrong thing. whatsapp_link — Makes a wa.me chat link and its QR code (an SVG image) for a WhatsApp number, with an opening message if one is given. country is the two-letemplate_check — Checks a WhatsApp message template (category, language, components and example values, as Meta takes them) against Meta’s rules, which are emessage_cost — Returns Meta’s list price for one delivered WhatsApp message in a country, for each category (marketing, utility, authentication, service), get_conversation — Reads one conversation, named by id. view conversation returns the chat itself: its contact and newest message, its state, who it is assignesearch_messages — Searches the text of every message in the workspace, newest first, 20 hits to a page. Each hit has the message id, the conversation id and nget_message — Reads one message, named by its msg_ id or by the WhatsApp message id (wamid): its type and content, direction, delivery status with the timget_media — Reads one media file, named by its med_ id (a message’s media block carries it): its type, file name, size and state, and a signed link to dget_inbox_overview — Reads the figures the Inbox and Home show, one part at a time. part counts returns how many chats are waiting for a person, assigned to the mark_read — Marks read, in one of three ways, with id naming a conversation (cosend, phone_thread) or a message (phone_message). where cosend clears thetranslate_message — Translates one message, named by id, into target_language (a language tag such as es or pt-BR) and returns the text with the language it wasdraft_reply — Writes a reply the person could send in one conversation, named by id, from the WhatsApp number’s AI assistant (its persona and knowledge) aupdate_conversation — Changes one conversation, named by id, by whichever of these are given: assignee_id (a member’s usr_ id; null takes the assignee off), snoozbulk_update_conversations — Applies one action to up to 100 conversations named in ids: resolve marks each Done, assign sets assignee_id (null takes it off), label addstake_over_conversation — Puts one conversation, named by id, in a person’s hands: control human means a person holds it and the AI assistant and automations stop ansask_for_conversation — Asks the person who holds one conversation, named by id, in the Cosend Inbox to hand it over; reason is an optional note for them. They get list_chat_notes — Lists the internal notes on one conversation, named by id, one page at a time, oldest first: each note’s body, its author, the members it mechat_notes — Writes the internal notes on one conversation, named by id, visible to the business’s team. action add writes a note (body, with mentions aslist_inbox_views — Lists the saved views in the Inbox’s Views menu: the caller’s own views and every one shared with the workspace, each with its name, the conNot tested by KitScout yet. When our harness runs it, pros, cons and the tasks we tried appear here, with the date and evidence.