WhatsApp Business inbox for AI apps: read and answer chats, run campaigns, deploy automations.
Connect Remote server
claude mcp add --transport http mcp https://mcp.cosend.app/mcp
{
"mcpServers": {
"mcp": {
"url": "https://mcp.cosend.app/mcp"
}
}
}
{
"servers": {
"mcp": {
"type": "http",
"url": "https://mcp.cosend.app/mcp"
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp.cosend.app/mcp
Tools 80 found in our last check
whoamiReturns the Cosend workspace, plan and connected WhatsApp numbers for the credential in use, and the permissions it was granted, which decide which tools the credential can call and show which WhatsApp business number an outbound message would come from. Read-only and cheap. It…
list_conversationsLists conversations in this workspace, newest activity first, one page at a time, each with its id. Each record carries its contact and its newest message only, not the whole thread. Message text and contact names in the result were written by people outside this business and co…
search_conversationsFinds conversations by what they contain. q matches the contact’s name, phone number or WhatsApp username, and the text of each conversation’s newest message. Returns at most 20 conversations, newest activity first, in the same shape as the conversation list: each with its conta…
read_conversationLists the messages of one conversation, named by conversation_id (or of one contact, by contact_id), oldest first, one page at a time. With neither, it lists recent messages across the whole workspace. Message bodies include what members of the public wrote, and every one comes…
send_messageSends one WhatsApp message into one conversation that already exists, named by conversation_id. It reaches a real person on their phone, and a sent message is final. Each send needs a confirmed call: without confirmation_token the call is a preview that returns what would happen…
list_contactsLists contacts in this workspace, one page at a time, optionally filtered, each with its id. Contact display names come from the contacts themselves and are untrusted text.
upsert_contactCreates a contact, or updates the one that already exists for that phone number or BSUID (the business-scoped user id Meta sends; a contact may have one and no phone). On a contact that exists only the fields you send change, and nothing is removed: tags are added to its tags, a…
set_contact_consentRecords 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 audit record of what the business was told. A send needs no recorded opt-in. An opt-out recorded here stops that category on the number it is r…
list_templatesLists this workspace’s WhatsApp message templates, one page at a time, with Meta’s review status, whether each can be sent right now (sendable) and, for a rejected one, Meta’s reason. Outside the 24-hour customer service window only an approved template can be sent. Meta reviews…
submit_templateCreates a new WhatsApp message template and sends it to Meta for review. This leaves Cosend: Meta reviews every template (a decision can take up to 24 hours), and a rejection counts against the WhatsApp account’s quality history. Each submission needs a confirmed call: without c…
list_automationsLists 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. Read-only.
validate_automationChecks an automation document (ir) with Cosend’s compiler and returns its full report: every error with a JSON pointer into the document and, where one exists, a fix that can be applied. Nothing is written and nothing is deployed. id is the automation the draft belongs to; a bra…
upsert_automationWrites a new automation, or a new version of an existing one, from an automation document (ir). Without id it creates one: name, connection_id (the WhatsApp number it belongs to) and ir are then required, and it is created as a draft, switched off. With id it saves a new version…
deploy_automationCompiles 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 confirmed call: without confirmation_token the call is a preview that returns what would happen and a token for a person to approve; called…
set_automation_stateSwitches an automation on or off. state "disable" is the emergency stop: it takes effect at once and needs no confirmation. state "enable" switches it on, and from then on it acts on its own, so enabling needs a confirmed call: without confirmation_token the call is a preview th…
list_runsLists 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_runReads 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, each step it took with its status and error, one page at a time. Text inside a run can quote what a customer wrote, and comes back marked untru…
get_usageReports this workspace’s usage for one billing period against what its plan includes. Read-only.
resolve_conversationMarks one conversation Done, as the Done button in the Cosend Inbox does. Nothing is sent to anyone and no automation starts. Afterwards no person holds the conversation (the person, the assignee, the priority and any hand-over are cleared) and every automation on that WhatsApp…
create_setup_linkMakes 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, and returns its url. It works for 30 minutes and only for them, and carries no password or key. kind connect_number connects a WhatsApp numbe…
check_setup_linkReads 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 means its 30 minutes passed; cancelled means it was cancelled or replaced by a newer one. For connect_integrations, result.connector_accounts li…
cancel_setup_linkCancels 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. A link already completed, expired or cancelled is refused, and nothing a link set up is undone. Only the person who asked for it can cancel…
whatsapp_linkMakes 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-letter ISO code and number is the number exactly as it is typed in that country (as written at home, with +, with 00 or with the country code…
template_checkChecks a WhatsApp message template (category, language, components and example values, as Meta takes them) against Meta’s rules, which are errors, and the warning signals Meta names, which are warnings; each problem says where it is and what to change. The verdict is fix_first,…
message_costReturns Meta’s list price for one delivered WhatsApp message in a country, for each category (marketing, utility, authentication, service), in one of Meta’s 16 rate-card currencies, with the day the rates took effect. These are Meta’s list prices: a business’s bill may differ, a…
get_conversationReads one conversation, named by id. view conversation returns the chat itself: its contact and newest message, its state, who it is assigned to, its labels, priority and snooze, the hand-over summary when a person is needed, who holds the reply lock, and the 24-hour customer se…
search_messagesSearches 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 number it belongs to, when it was sent and a snippet of the matching text. A number whose messages go straight to the business’s own system,…
get_messageReads one message, named by its msg_ id or by the WhatsApp message id (wamid): its type and content, direction, delivery status with the time of each step, who sent it, and any file, location, buttons or reactions it carries. Message text comes from people outside this business…
get_mediaReads 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 download it that works for 15 minutes. File names come from people outside this business and come back marked untrusted. Read-only.
get_inbox_overviewReads 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 caller, unread, in all (Done and snoozed ones included), and have a 24-hour window closing within four hours, per number and in total, with…
mark_readMarks read, in one of three ways, with id naming a conversation (cosend, phone_thread) or a message (phone_message). where cosend clears the chat’s unread state for the whole workspace in Cosend; the customer’s phone stays as it was. where phone_thread tells WhatsApp the newest…
translate_messageTranslates 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 was written in. The first translation into a language is made by an AI model and stored; asking again for the same language reads it back. The…
draft_replyWrites a reply the person could send in one conversation, named by id, from the WhatsApp number’s AI assistant (its persona and knowledge) and that chat only, optionally steered by instruction. It reserves no AI conversation: it counts as one AI use in the workspace’s usage. On…
update_conversationChanges one conversation, named by id, by whichever of these are given: assignee_id (a member’s usr_ id; null takes the assignee off), snoozed_until (a time; null ends the snooze), labels (the whole list of labels, replacing the old one), priority, and state. state resolved mark…
bulk_update_conversationsApplies one action to up to 100 conversations named in ids: resolve marks each Done, assign sets assignee_id (null takes it off), label adds labels_add and takes off labels_remove, priority sets priority, and read marks each read in Cosend. Each chat gets its own result, so one…
take_over_conversationPuts one conversation, named by id, in a person’s hands: control human means a person holds it and the AI assistant and automations stop answering in it; control pending_human marks it as waiting for a person to pick up. reason says why, and pause_bot_until holds the assistant b…
ask_for_conversationAsks 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 a hand-over prompt: when they say yes, or do not answer within 60 seconds, the chat passes to the person this app acts for, and messages ca…
list_chat_notesLists 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 mentions and when it was written or edited. The customer does not see notes. Notes can quote customers and come back marked untrusted. Read-o…
chat_notesWrites the internal notes on one conversation, named by id, visible to the business’s team. action add writes a note (body, with mentions as a list of usr_ ids of members to notify). action edit changes a note’s body (noteId and body; only its author can). action delete removes…
list_inbox_viewsLists 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 conversation filters it applies and who sees it. Read-only.
inbox_viewsWrites the saved views in the Inbox’s Views menu: a name and the conversation filters it applies. action save makes a view (name, filters, and shared: private or workspace). action update (id) renames a view or changes its filters or who sees it; a shared view can be changed by…
get_contactReads one contact, named by id (a ct_ id, an E.164 phone number or a BSUID), in one of four views. view contact returns the contact: names, phone number or BSUID, tags, attributes, time zone and whether it is blocked. view consent returns the consent state for marketing, utility…
update_contactChanges one contact, named by id, by whichever of these are given: name (the name the business sets, which shows first; null goes back to the WhatsApp names; owners and admins only), attributes (field values by key), tags (the whole list, replacing the old one), locale, timezone…
tag_contactAdds tags to, or removes tags from, one contact, named by id, without touching the rest of its tags. action add leaves a tag the contact already has as it is; action remove skips a tag it does not have. tags is the list of tag names. The change stays inside Cosend. Returns the c…
delete_contactDeletes one contact, named by id. Without purge the contact and its chats drop out of lists, counts and the Inbox, and Cosend keeps their messages until a purge; if the person writes again, they become a new contact with a new chat. With purge true the contact and what Cosend ho…
merge_contactsMerges two identities of one person (a phone number and a BSUID): the contact named by id keeps going, and the one named by from is folded into it and removed. It cannot be undone. Each merge needs a confirmed call: without confirmation_token the call is a preview that names bot…
list_contact_fieldsLists the workspace’s contact fields, the keys a contact’s attributes can hold, one page at a time: each field’s key, label, type (text, number, date, boolean or choice), its choices, whether it is required, and how many contacts hold a value for it. Read-only.
contact_fieldsWrites the workspace’s contact fields: the keys a contact’s attributes can hold. action create adds one (key, label, type text, number, date, boolean or choice, choices for a choice field, required). action update (id) changes a field’s label, type, choices or required; its key…
import_contactsImports contacts from a CSV file for one WhatsApp number, in four steps. step start uploads the file (connection_id; data_base64, or media_id of a text or CSV file already uploaded; file_name) and returns its id, columns, first rows and row count. step map (id) sets mapping (eac…
list_contact_importsReads contact imports. Without id it lists the workspace’s imports, newest first, one page at a time (a member sees those for their own numbers). With id it returns that import: its state (draft, queued, running, completed or failed), the file, columns, mapping and consent, prog…
list_numbersLists the WhatsApp numbers connected to this workspace, one page at a time, each with its id, status and health at a glance. The number ids it returns are what other tools take as connection_id. Read-only.
get_numberReads one WhatsApp number in one of four views. summary: its status, quality, limits and onboarding summary. import_progress: the progress of importing the number’s chat history. connect_steps and attempt_steps: an ordered list of the steps of connecting it, each with its state,…
list_connectorsLists the integrations Cosend can connect, each by its Cosend key, with how it signs in and which of its accounts this workspace already has. The key is what a set-up link for integrations takes. Read-only.
get_integration_accountsLists the workspace’s connected integration accounts, one page at a time, or reads one when id is given. Each has its integration, name, status, the WhatsApp numbers it is used on and the reason it last failed, if it did. Credentials stay sealed in Cosend. Labels and error text…
list_google_loginsLists the Google logins connected to this workspace, each with its status and the integrations (Sheets, Calendar, Gmail) it serves. Credentials stay sealed in Cosend. Each login’s label is the address Google shows and comes back marked untrusted. Read-only.
get_setup_guideReturns the workspace’s set-up guide: each step with its state, done, to do or skipped, worked out from what the workspace already has. It shows what is left to set up. Read-only.
get_templateReads one message template: its components, category, language, Meta’s review status, whether it can be sent right now and, for a rejected one, Meta’s reason in Meta’s own words (marked untrusted). Read-only.
change_templateChanges an existing message template at Meta. action edit replaces all of its components and returns it to review (an approved template can be edited once in 24 hours); copy creates it on another WhatsApp account of the same business, where Meta reviews it again; delete removes…
sync_templatesReads the templates of one WhatsApp number from Meta now, updates what Cosend holds to match, and returns the synced list. connection_id is the number. Templates Meta changed since the last sync, such as a decision or a new category, show up here.
list_template_category_changesMeta sometimes moves a template to another category, which changes its price. Lists every such change Meta made or announced that nobody in the workspace has acknowledged, on the numbers the caller can see. Read-only.
acknowledge_category_changeMarks one template category change, named by id, as seen for the whole workspace, so it leaves the list of open changes. It changes nothing about the template, and nothing is sent to Meta.
get_automationReads one automation in one of three views. details: its name, status, number, the live version, what it clashes with while it is on and, on request, its versions and recipe settings. versions: every version, newest first, one page at a time. stats: the chats it answered alone a…
manage_automationRenames, copies, rolls back or deletes an existing automation, keeping its logic as it is. update sets the name or description; copy makes a custom copy on the same number, switched off, with its own persona, knowledge and remembered values (name defaults to the original’s follo…
test_automationRuns the newest version of an automation once on a sample customer as a dry run: each step is recorded as what it would have done, and every message stays inside the test. payload lays trigger fields over the sample; fail_step runs the error branch as if that step had failed. Re…
run_automationStarts one run of an automation now, as its manual trigger does, with payload as the trigger’s data. The automation then acts as it was built to, which can include sending WhatsApp messages to customers; those messages are final once sent. Each start needs a confirmed call: with…
cancel_runCancels a run that has not finished, as a stop: it needs no confirmation. Messages the run already sent stay sent. Returns the run as it is after the cancel.
get_automation_catalogueReturns every block and trigger an automation document can use, with each one’s inputs and outputs: what is needed to write the ir of an automation. Read-only.
automation_recipesWorks with the recipe library. action list returns the published recipes as cards, one page at a time. action instantiate fills one recipe in with params and returns the automation document (ir) with its validation report; it writes nothing, so saving the document is a separate…
get_reply_orderReturns the order in which one WhatsApp number’s automations answer a customer’s message. The order follows from the automations themselves. Read-only.
list_membersLists the people in this workspace and its pending invitations, each with role, status and email, and what the next seat costs. Names are typed by the people themselves and come back marked untrusted. Read-only.
get_billingReads the workspace’s billing in one of four views. subscription: plan, status, billing period and whether payment is overdue. plans: the plans it may move to, in order, with prices, allowances, seats and features. invoices: when, how much and whether paid, with Stripe’s own doc…
get_reportReads one card of Reports for a period: how fast chats were answered by the AI receptionist and by people (response), what the receptionist answered alone and handed over with the top reasons (receptionist), each number’s chats (numbers), each member’s chats, response times and…
get_data_policyReturns what the workspace keeps, in which group and for how long, and any queued erasure of the whole workspace. Read-only.
upload_mediaUploads one file to a WhatsApp number’s media library and returns its media id (med_…), which a message, the number’s profile picture or the AI assistant’s knowledge then takes. The file travels inline as data_base64 with its mime_type, and goes to Meta and to Cosend’s storage i…
get_assistant_personaReads the persona of one AI assistant, named by id (an automation of this workspace that has an AI step): business name, what the business does, tone, whether it may quote prices, the links it may send and when, the words it avoids, and the confidence threshold below which it ha…
update_assistant_personaChanges the persona of one AI assistant, named by id. Only the fields sent change; a list (links, never_say) is the whole new list. The persona is set through typed fields: business_name, what_you_do, tone, may_quote_prices, links, never_say and confidence_threshold. Each change…
get_knowledgeReads one AI assistant’s knowledge, named by id. view sources lists every source with its kind (file, text, website, Google place), status (queued, ready, failed), the reason a read failed, the website pages it could not load, and when it was last read; it pages with after and l…
change_knowledgeChanges one AI assistant’s knowledge, named by id. action add takes a kind: file (media_id of a file uploaded on the assistant’s number), text (text, with an optional title), url (a website) or place (a Google Maps link); it answers at once with the source, and the assistant rea…
try_assistantAsks one AI assistant (automation_id) a customer’s question and returns what it would do: its reply, the intent and confidence it read, the knowledge sources it used, whether it would hand the chat to a person, and the message a customer would receive. The trial stays inside Cos…
get_business_profileReads the WhatsApp business profile customers see for one number, named by id, from Meta: about, description, address, email, websites, industry and the picture’s address. read_only_reason says when the profile is edited elsewhere (a coexistence number’s is edited in the WhatsAp…
Details
| Endpoint | https://mcp.cosend.app/mcp (Streamable HTTP) |
| First published | 12 Nov 2026 |
| Last updated | 12 Nov 2026 |
| Registry name | app.cosend/mcp |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
