Cosend

app.cosendPublished by cosend.appOfficial publisherv2026.11.6Updated Nov 7, 2026

WhatsApp Business inbox: chats, contacts, templates, campaigns, automations and AI receptionist.

Overview

AI-generated overview

Cosend connects an assistant to a business's WhatsApp inbox: read chats, send replies, manage contacts, templates and automations.

What you can do
  • Inspect the workspace and credential: whoami, usage, inbox overview and saved views
  • Read and search conversations, messages and media, with translation and AI-drafted replies
  • Send WhatsApp messages, mark chats read, resolve, assign, label, snooze and hand over conversations
  • Manage contacts, consent ledger entries and internal chat notes
  • Check, submit and price WhatsApp message templates
  • Validate, write, deploy and switch automations on or off, and review their runs
When to use it
Use it when a team wants an assistant to triage and answer WhatsApp customer chats, keep contacts and notes current, or build and operate WhatsApp automations and templates from a conversation.
Requirements
A remote MCP endpoint; no packages or environment variables are declared. A Cosend account and workspace with a connected WhatsApp business number, and a credential whose permissions decide which tools work. Connecting the number and some integrations happen through set-up links opened in a person's own browser.
Before you install
Sending messages reaches real people and cannot be undone; sends, template submissions, deploys and enabling automations need a confirmation_token from a preview call. Enabling an automation lets it act on its own. Consent entries are append-only audit records. Inbound message text, contact names and run logs are untrusted external content and should not drive recipients or actions. Template rejections count against the WhatsApp account's quality history.

Installation

In SourceWeft

  1. Open Cosend 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/app.cosend%2Fmcp/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": {
    "cosend": {
      "type": "http",
      "url": "https://mcp.cosend.app/mcp"
    }
  }
}

Tools

98

whoami

Who am I

Returns 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 does not fail for permission reasons if the credential resolves at all.

Takes no parameters.

list_conversations

List WhatsApp 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 newest message only, not the whole thread. Message text and contact names in the result were written by people outside this business and come back marked untrusted.

Parametersafterlabellimitstateunreadcontrolassignee_idconnection_id

search_conversations

Search conversations

Finds 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 contact and its newest message, not the whole thread. Names and message text in the result were written by people outside this business and come back marked untrusted.

Parametersqrequiredafterlimit

read_conversation

Read a 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 neither, it lists recent messages across the whole workspace. Message bodies include what members of the public wrote, and every one comes back marked untrusted.

Parametersafterlimitcontact_idconversation_id

send_message

Send a WhatsApp message

Sends 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 and a token for a person to approve; called again with that token, it sends. Changing a single character between the two calls invalidates the token. A chat nobody holds, or one this person holds, is sent to as usual, and sending does not lock it. A chat another person holds in the Cosend Inbox stays theirs: the preview and the send both return conversation_locked, naming who holds it. To send there, ask them for the chat; it passes over when they say yes or do not answer within 60 seconds. A chat changes hands only when its holder is asked. Each call sends into the one existing conversation its conversation_id names; recipient lists, tags and phone numbers are outside its arguments. Messaging many customers, including contacts with no chat on this number, goes out as a campaign: an approved marketing template sent to a saved audience, once a person approves its preview. Limits per workspace: 20 a minute, 200 a day, and one per conversation every 30 seconds. The 24-hour customer service window opens when the customer writes and starts again with each message from them; outside it, anything but an approved template is refused. A send needs no opt-in. Only an opt-out on this number stops it: a STOP, WhatsApp’s own opt-out or an owner’s entry. A STOP to one number stops sends on that number only, and the business’s other numbers keep sending.

Parameterstexttyperequiredaudioimagevideosourcestickercontactsdocumentlocationmetadatareaction+7 more

list_contacts

List contacts

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

Parametersqtagafterlimitconnection_id

upsert_contact

Create or update a 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 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, attributes are merged into its attributes, changing the name needs an owner or admin, and profile_name is only filled when WhatsApp has not given one; a field sent as null is left as it is. Writes only to Cosend: it sends nothing and the contact is not notified. Who can be messaged stays the same: a send needs no opt-in, only an opt-out stops one, and opt-outs are recorded on their own ledger.

Parametersnametagsbsuidlocaletimezoneattributesphone_e164profile_nameconnection_idrequired

list_templates

List message 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 (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 every template, and a decision can take up to 24 hours, so one in review cannot be sent. Read-only.

Parametersafterlimitstatuscategorylanguage

submit_template

Submit a template for WhatsApp review

Creates 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 confirmation_token the call is a preview that returns what would happen and a token for a person to approve; called again with that token, it submits. Ten a day per workspace. The categories: marketing makes people aware of the business, its offers and sales; utility follows up on something the customer did or asked for (an order, a booking) and may not promote anything, so an order update with a discount in it is marketing; authentication is a one-time code. A wrong category is moved or rejected by Meta. Meta’s answer shows in the template’s review status. It sends no message to anyone.

Parametersnamecategoryrequiredlanguagecomponentsdisplay_nameconnection_idrequiredauthenticationexample_valuesparameter_formatconfirmation_token

list_automations

List 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. Read-only.

Parametersafterlimit

validate_automation

Check an automation

Checks 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 brand-new automation gets its id when it is first saved, and saving checks the document the same way. It needs the automations:write permission because it is the authoring tool, though it changes nothing.

Parametersidrequiredirrequired

upsert_automation

Save an 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_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 of that automation; if it is switched on, the new version goes live with the save, or the save is refused in words and the old version keeps running. Each save 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 again with that token, it saves. The automation document is the whole input, and code, commands, arbitrary URLs and SQL are refused.

Parametersidirrequirednameslugchange_notedescriptionconnection_idconfirmation_token

deploy_automation

Deploy an 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 confirmed call: without confirmation_token the call is a preview that returns what would happen and a token for a person to approve; called again with that token, it deploys. version_id defaults to the newest version; confirm_actions names, one by one, each destructive action of the automation the person approved. A confirmed deploy that fails to compile uses up the confirmation.

Parametersidrequiredversion_idconfirm_actionsconfirmation_token

set_automation_state

Switch an automation on or off

Switches 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 that returns what would happen and a token for a person to approve; called again with that token, it enables. version_id (enable only) picks the version to run; the default is the newest one, which has to have been checked and deployed first.

Parametersidrequiredstaterequiredversion_idconfirmation_token

list_runs

List automation 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.

Parametersafterlimitstatusautomation_id

get_run

Read an automation 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, 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 untrusted. Read-only.

Parametersidrequiredafterlimit

get_usage

See plan usage

Reports this workspace’s usage for one billing period against what its plan includes. Read-only.

Parametersperiod

resolve_conversation

Mark a conversation Done

Marks 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 number treats the customer’s next message as a first message: the welcome menu greets again, an unfinished question flow starts over, and the AI assistant begins a new AI conversation, which counts as one more AI conversation on the plan. The message history stays. The chat stays quiet until the customer writes again. It is refused for a credential with no person behind it.

Parametersidrequired

template_check

Check a template before Meta reviews it

Checks 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, warnings or ready, and ready is not an approval: Meta still reviews every template itself. Nothing is submitted.

Parameterscategoryrequiredlanguagecomponentsauthenticationexample_valuesparameter_format

message_cost

See what a WhatsApp message costs

Returns 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, and the notes say what changes it.

Parameterscountryrequiredcurrencyrequired

get_conversation

Open a conversation

Reads 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 service window (open or closed, and when it closes). view activity returns the chat’s activity feed one page at a time: hand-overs, assignments, labels, Done and reopened, optionally only the kinds named in kind. Names, message text and hand-over summaries were written by people outside this business, or from what they wrote, and come back marked untrusted. Read-only.

Parametersidrequiredkindviewrequiredafterlimit

search_messages

Search message text

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 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, with no Cosend inbox, is left out. Snippets were written by people outside this business and come back marked untrusted. Read-only.

Parametersqrequiredafterlimitconnection_id

get_message

Open one 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 time of each step, who sent it, and any file, location, buttons or reactions it carries. Message text comes from people outside this business and comes back marked untrusted. Read-only.

Parametersidrequired

get_media

Open a file from a chat

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 download it that works for 15 minutes. File names come from people outside this business and come back marked untrusted. Read-only.

Parametersidrequired

get_inbox_overview

See the Inbox at a glance

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 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 the approvals waiting. part labels returns each label in use on each number with how many open chats carry it. part today returns today’s replies by who sent them (the assistant, people, the phone, automations) and the chats handed to a person, marked Done and opened, in the workspace’s time zone. part week returns replies and new chats for each of the last 7 days. Read-only.

Parameterspartrequiredconnection_id

mark_read

Mark chats read

Marks 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 unread customer message was read, so the customer’s phone shows blue ticks on what they sent. where phone_message does the same for the one message named. The blue ticks reach a real person’s phone and are permanent.

Parametersidrequiredwhererequired

translate_message

Translate a 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 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 translation stays inside Cosend, out of the customer’s view. The translated text comes from what a person outside this business wrote and comes back marked untrusted.

Parametersidrequiredtarget_languagerequired

draft_reply

Draft a 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) 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 Starter, Growth and Scale, and on Free with a card, drafts carry on past the AI conversations the plan includes. It is refused while the workspace’s AI is paused: the AI conversations its plan includes are used up and no card lifts the limit (Free without a card, the 14-day trial, or a failed payment). The draft comes back as text, unsent. The draft is written from what the customer wrote and comes back marked untrusted.

Parametersidrequiredinstruction

update_conversation

Update a 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), snoozed_until (a time; null ends the snooze), labels (the whole list of labels, replacing the old one), priority, and state. state resolved marks the chat Done, as the Done button does: nobody holds it afterwards and every automation on that number treats the customer’s next message as a first message. The change stays inside Cosend, out of the customer’s view. Returns the conversation.

Parametersidrequiredstatelabelspriorityassignee_idsnoozed_until

bulk_update_conversations

Update many 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 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 that is not found or that someone else is replying in is skipped with its reason while the rest go through. Each action 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 again with that token, it acts. Every change stays inside Cosend, out of customers’ view.

Parametersidsrequiredreadactionrequiredprioritylabels_addassignee_idlabels_removeconfirmation_token

take_over_conversation

Hand a chat to a person

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 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 back until a time. It hands the chat to a person; the chat stays with people from then on. The change stays inside Cosend, out of the customer’s view. Returns the conversation.

Parametersidrequiredreasoncontrolrequiredpause_bot_until

ask_for_conversation

Ask a teammate for a chat

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 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 can be sent in it; when they say no, it stays theirs. This is the way into a chat someone else holds: every hand-over starts with asking its holder. A chat nobody holds, or one the person this app acts for already holds, is refused, as there is nothing to ask for and a message can be sent there as it is. Asking again while a request waits returns that request. Returns the request: its state (pending until answered), who holds the chat (held_by) and when it passes without an answer (expires_at). Whether it has passed shows in the conversation’s lock (held_by, can_i_send). The request stays inside Cosend, out of the customer’s view.

Parametersidrequiredreason

list_chat_notes

Read the internal notes on a chat

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 mentions and when it was written or edited. The customer does not see notes. Notes can quote customers and come back marked untrusted. Read-only.

Parametersidrequiredafterlimit

chat_notes

Add, edit or delete an internal note

Writes 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 a note (noteId; its author, an owner or an admin can). Each delete 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 again with that token, it deletes. add and edit return the note, whose body can quote customers and comes back marked untrusted.

ParametersidrequiredbodyactionrequirednoteIdmentionsconfirmation_token

list_inbox_views

Read the saved 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 conversation filters it applies and who sees it. Read-only.

Takes no parameters.

inbox_views

Save, change or delete an Inbox view

Writes 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 its creator, an owner or an admin. action delete (id) removes a view, on the same terms. Each delete 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 again with that token, it deletes.

Parametersidnameactionrequiredsharedfiltersconfirmation_token

get_contact

Open a contact

Reads 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 and authentication, with the entry behind each (where it came from, when, who recorded it, the sentence the person agreed to) and Meta’s own marketing opt-out. view window returns whether a free-form message can be sent now and when the 24-hour customer service window closes. view chats returns this person’s conversation on each number you can see, newest first. Names, attributes and consent sentences come from outside this business and come back marked untrusted. Read-only.

Parametersidrequiredviewrequired

update_contact

Edit a contact

Changes 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, and is_blocked (true blocks the contact on their number so nothing is sent to them and their messages are not answered; false unblocks; owners and admins only). The change stays inside Cosend, out of the contact’s view. Returns the contact.

Parametersidrequirednametagslocaletimezoneattributesis_blockedprofile_nameconnection_id

tag_contact

Tag or untag a contact

Adds 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 contact.

Parametersidrequiredtagsrequiredactionrequired

delete_contact

Delete a contact

Deletes 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 holds about them are erased for good (an owner’s action, for a data-protection request). The deletion stays inside Cosend, out of the contact’s view. Each delete needs a confirmed call: without confirmation_token the call is a preview that names the contact and returns a token for a person to approve; called again with that token, it deletes.

Parametersidrequiredpurgeconfirmation_token

merge_contacts

Merge two contacts

Merges 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 both contacts and returns a token for a person to approve; called again with that token, it merges. Returns the contact that remains.

Parametersidrequiredfromrequiredconfirmation_token

list_contact_fields

Read the contact fields

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

Parametersafterlimit

contact_fields

Add, change or delete a contact field

Writes 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 stays. action delete (id) removes the field and every contact’s value for it. Creating, changing and deleting are for owners and admins. Each delete 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 again with that token, it deletes.

Parametersidkeytypelabelactionrequiredchoicesrequiredconfirmation_token

import_contacts

Import contacts from a CSV

Imports 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 (each column as phone, name, tags, locale, timezone, skip or field:key), connection_id, and consent: the opt-in categories everyone in the file gave, the sentence they agreed to and who attests it. step check (id) reports what a run would do over the whole file: new, updated, invalid, duplicates, already opted out and consent recorded; it writes nothing. step run (id) imports in the background and returns at once; the import’s progress shows in the list of imports. Owners and admins run imports. Each run needs a confirmed call: without confirmation_token the call is a preview that shows the import, its mapping and its consent, and returns a token for a person to approve; called again with that token, it runs. The import stays inside Cosend, out of the contacts’ view. File contents come from outside this business and come back marked untrusted.

Parametersidsteprequiredconsentmappingmedia_idfile_namedata_base64connection_idconfirmation_token

list_contact_imports

See contact imports

Reads 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, progress, and when finished the number imported and the rows that failed with the reason for each. File contents come from outside this business and come back marked untrusted. Read-only.

Parametersidafterlimit

list_numbers

List WhatsApp numbers

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

Parametersmodeafterlimitstatus

get_number

Read one WhatsApp number

Reads 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, time and outcome, which explains where a connect that stopped stopped. Read-only.

Parametersidrequiredviewrequired

list_connectors

List what can be connected

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

Takes no parameters.

get_integration_accounts

See connected integration accounts

Lists 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 come from the provider and are marked untrusted. Read-only.

Parametersidafterlimitstatusconnectorconnection_id

list_google_logins

List connected Google logins

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

Parametersconnection_id

get_setup_guide

Read the set-up guide

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

Takes no parameters.

get_template

Read one template

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

Parametersidrequired

change_template

Edit, copy or delete a template

Changes 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 it at Meta and from Cosend once Meta confirms. Each change 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 again with that token, it acts. Ten changes a day per workspace. It sends no message to anyone. Meta’s reason for a refusal is in Meta’s words.

Parametersidrequirednameactionrequiredwaba_idcategorylanguagecomponentsdisplay_nameauthenticationexample_valuesparameter_formatconfirmation_token

sync_templates

Refresh templates from Meta

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

Parametersconnection_idrequired

list_template_category_changes

See template category changes

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

Takes no parameters.

acknowledge_category_change

Acknowledge a template category change

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

Parametersidrequired

get_automation

Read one automation

Reads 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 and handed over, by day, with the top hand-over reasons. Read-only.

Parametersidrequiredviewrequiredafterlimitrangeexpand

manage_automation

Rename, copy, roll back or delete an automation

Renames, 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 followed by “(copy)”); rollback moves the automation to an earlier version (to_version is the version number) and, if it is on, it runs that version from then on; delete removes it, and no run starts after it. rollback and delete act only on a confirmed call: without confirmation_token they change nothing and return a preview and a token for a person to approve; called again with that token, they act.

Parametersidrequirednameactionrequiredto_versiondescriptionconnection_idconfirmation_token

test_automation

Test an automation on a sample customer

Runs 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. Returns the run, whose steps are read through the run tools. A version that cannot be tested is refused in words.

Parametersidrequiredpayloadfail_step

run_automation

Start an automation by hand

Starts 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: without confirmation_token the call is a preview that returns what would happen and a token for a person to approve; called again with that token, it starts the run. Returns the run, which the run tools follow.

Parameterspayloadautomation_idrequiredconfirmation_token

cancel_run

Cancel a run

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

Parametersidrequired

get_automation_catalogue

List the blocks an automation is built from

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

Takes no parameters.

automation_recipes

Browse and fill in automation recipes

Works 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 step. Read-only.

Parametersslugafterlimitactionrequiredparamsconnection_id

get_reply_order

See the order a number’s automations answer in

Returns the order in which one WhatsApp number’s automations answer a customer’s message. The order follows from the automations themselves. Read-only.

Parametersidrequired

list_members

List workspace members

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

Parametersconnection_id

get_billing

Read plan and invoices

Reads 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 document. invoice: one of them. Paying and changing a card happen on a set-up link. Read-only.

ParametersviewrequiredinvoiceId

get_report

Read a Reports card

Reads 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 chats marked Done (team), or chats by hour of the day (hours). Owners and admins, on the Starter plan and above. Each card covers the period asked for, from the first day Reports recorded. Hand-over reasons and member names come back marked untrusted. Read-only.

Parameterstocardrequiredfromkindperiodconnection_id

get_data_policy

Read how long data is kept

Returns what the workspace keeps, in which group and for how long, and any queued erasure of the whole workspace. Read-only.

Takes no parameters.

upload_media

Upload a file

Uploads 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 in one call. Through an AI app a file is up to 5 MB; a larger video, audio file or document is uploaded in the Cosend dashboard. mime_type decides how WhatsApp sends it: image (jpeg, png), video (mp4, 3gpp), audio (aac, amr, mpeg, mp4, ogg), document (pdf, plain text, Word, Excel and PowerPoint) or sticker (webp). A type WhatsApp does not take, or a file over the limit, is refused before anything is stored. Every upload is its own file on that number, even with the same bytes. The file waits in the media library until a message, the profile or the assistant’s knowledge uses it.

Parametersfilenamemime_typerequireddata_base64requiredconnection_idrequired

get_assistant_persona

Read the AI assistant’s persona

Reads 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 hands a chat to a person. An assistant nobody has edited reads as the defaults, with updated_at null. Read-only.

Parametersidrequired

update_assistant_persona

Change the AI assistant’s persona

Changes 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 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 again with that token, it saves. When the assistant is switched on, customers meet the new persona at their next message. Owners and admins.

Parametersidrequiredtonelinksnever_saywhat_you_dobusiness_namemay_quote_pricesconfirmation_tokenconfidence_threshold

get_knowledge

Read what the AI assistant knows

Reads 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 limit. view summary returns what the assistant learned: a short summary, the business name and one-line description read from the material, and suggested questions and answers awaiting a decision. Titles, summaries, questions and answers were read from websites and files by Cosend and come back marked untrusted. Read-only.

Parametersidrequiredviewrequiredafterlimit

change_knowledge

Change what the AI assistant knows

Changes 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 reads it in the background (a website is read again every month). action remove (sourceId) forgets a source and everything read from it, on a confirmed call: without confirmation_token the call is a preview that returns what would happen and a token for a person to approve. action refresh (sourceId) reads a source again now. action review_suggestion (suggestionId, accepted true or false, optional question and answer edits) turns a suggested answer into knowledge or drops it. Owners and admins.

Parametersidrequiredurlkindtexttitleactionrequiredansweracceptedmedia_idquestionsourceIdsuggestionId+1 more

try_assistant

Try the AI assistant

Asks 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 Cosend, out of customers’ view. Each chat is one AI conversation on the plan, counted when the assistant is first asked in it; send the chat_id an answer returns, with history, to continue the same chat. For an assistant that is switched off, connection_id with holding_message (and escalate_keywords or closed hours) tries it with the set-up’s answers. Owners and admins.

Parametersclosedchat_idhistorymessagerequiredautomation_idrequiredconnection_idholding_messageescalate_keywords

get_business_profile

Read a number’s business profile

Reads 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 WhatsApp Business app). Read-only.

Parametersidrequired

update_number

Change a number’s settings or profile

Changes one WhatsApp number, named by id. action settings takes delivery_mode (stored or direct) and override_callback_url (where Meta’s webhooks for the number go; null clears it). action display_name takes display_name and submits it to Meta’s review; Meta’s decision shows on the number later. action profile takes any of about, description, address, email, websites, vertical and profile_picture (a media id from an upload on this number); every customer sees the profile. Each action needs a confirmed call: without confirmation_token the call is a preview that names the number and returns a token for a person to approve. The number’s webhook verify token and relay secret stay sealed in the number’s settings in the Cosend dashboard, and read as null here. Owners and admins.

Parametersidrequiredaboutemailactionrequiredaddressverticalwebsitesdescriptiondisplay_namedelivery_modeprofile_pictureretention_months+2 more

manage_number

Refresh or re-check a number

Looks after one WhatsApp number, named by id. action sync refreshes the number’s state, quality rating and limits from Meta and returns the connection. action recheck_payment is for a person who added a payment method in Meta after a number was blocked for payment: it asks Meta again and returns the connection (adding the method itself happens in Meta’s own tools). Owners and admins for sync. Disconnecting a number is an owner’s or admin’s step in the Cosend dashboard.

Parametersidrequiredactionrequired

read_integration

Look inside an integration account

Reads what one connected integration account holds, named by id. view spreadsheets lists the spreadsheets a Google account can open (the ones Cosend made or a person picked for it), 100 a page at most, or with spreadsheet_id one spreadsheet and its tabs. view forms lists a form account’s forms with the id an automation’s start takes as form_id. view appointments lists a calendar account’s upcoming events from now to days ahead, with the customer number found in each and counts of events with and without one. Names, tab titles and event titles were written by people outside this workspace and come back marked untrusted. Read-only.

Parametersidrequireddaysviewrequiredafterlimitspreadsheet_id

manage_integration

Manage an integration account

Manages one connected integration account, named by id; the account returns no credential. action update takes name and config (the account’s non-secret settings). action test makes one safe read at the provider and returns whether the credential works; a failed test is an answer with ok false. action add_number (connection_id) uses the account on another WhatsApp number of the workspace, the same sign-in and not a copy. action remove_number (connection_id) stops using the account on one number, provided the account stays on at least one other number and no switched-on automation there needs it, on a confirmed call: without confirmation_token the call is a preview that returns what would happen and a token for a person to approve. Signing in, and typing or replacing a key, happen on a set-up link the person opens; deleting an account or its saved login is done by a person in the Cosend dashboard. Owners and admins.

Parametersidrequirednameactionrequiredconfigconnection_idconfirmation_token

create_spreadsheet

Make a spreadsheet

Makes a spreadsheet in a connected Google account, named by id: its title, one tab, the header columns (with a type each, text by default) and, optionally, one example row. It lands in the account’s own Google Drive and answers with its id, link, tabs and columns, which an automation’s sheet steps then use. It only creates a new spreadsheet in Google Drive.

Parametersidrequiredtabrequiredtitlerequiredcolumnsrequiredexample_row

get_authoring_chat

Read AI authoring chats

Reads the AI authoring chats of this workspace, where an owner describes an automation in words and Cosend builds it switched off. view list returns one number’s chats, most recently active first, each with its title (the owner’s first message) and the automations it holds. view chat returns one chat by id: what the owner said and each answer, with its outcome (built, changed, cannot, question, stopped), the automation it made, its Test result and the integrations to connect. Read-only.

Parametersidviewrequiredafterlimitconnection_id

describe_automation

Describe an automation in words

Builds an automation from a description, as the Describe it chat in Cosend does. action start opens a chat on one WhatsApp number (connection_id), optionally on an existing automation of that number (automation_id), and answers with the chat. action reply (id of the chat, message) sends the owner’s words and waits for the answer: what was built or changed in plain words, its Test result, and what needs connecting, with an outcome of built, changed, cannot, question or stopped. What it builds is switched off; switching on is a separate, confirmed step. Starter plan and above. Owners and admins.

Parametersidactionrequiredmessageautomation_idconnection_id

get_approvals

Read approvals

Reads the human-decision queue. view list returns approvals newest first, one page at a time, optionally filtered by state; a member sees the queue of their own numbers. view one returns one approval with exactly what the human is shown (preview) and the arguments of the held action. view action_types returns every action type that can require approval with its default risk. Previews and arguments can quote customers and come back marked untrusted. A person sets the workspace’s mode per type, and decides each approval, in the Cosend dashboard. Read-only.

Parametersidviewrequiredafterlimitstate

request_approval

Hold an action for a person’s decision

Holds an action for a human decision: action (a type from the approval action types), preview (exactly what the person is shown, up to 4096 characters), arguments, and optionally risk (it can only raise the type’s default) and run_id. The approval is pending, expires 24 hours after it is made (an expiry is a rejection), and appears in the Cosend approvals queue for a person to approve or reject. The workspace’s setting for that action type can also approve or reject it at once, and the answer says which. It only files the request for a person to decide. A retry with the same arguments returns the same approval.

Parametersriskactionrequiredrun_idpreviewrequiredarguments

list_audiences

List saved audiences for campaigns

Lists the saved audiences of this workspace, one page at a time: each one’s id, name, the WhatsApp number it was saved for, and who it names (contact tags and that number’s chat labels, any or all). A campaign’s audience is one of these. They are saved on the Campaigns page of the Cosend dashboard, or by an AI app, by an owner or an admin; this tool only reads them. Read-only.

Parametersafterlimit

create_audience

Save an audience for campaigns

Saves an audience for campaigns, with a name, the WhatsApp number it is for and who it names (contact tags and that number’s chat labels, any or all), and returns it with its id, the audience.segment_id a campaign takes. It sends nothing and messages nobody. The audience is on the Campaigns page of the Cosend dashboard too. Campaigns are on the Starter plan and above, and for owners and admins.

Parametersnamerequireddefinitionrequiredconnection_idrequired

list_campaigns

List campaigns

Lists this workspace’s campaigns, newest first, one page at a time: each one’s id, state (draft, scheduled, sending, paused, sent or stopped), number, template, saved audience, time, quiet hours, and how many it was for, sent, delivered, read, got a reply from and failed for. These are the campaigns on the Campaigns page of the Cosend dashboard. Read-only.

Parametersqafterlimitstatusconnection_id

get_campaign

Get a campaign and its results

Returns one campaign, named by id, and its results together. The campaign: its state, number, template and the value of each blank, saved audience, time, quiet hours, and why it paused, stopped or could not start. The results: how many it was for, sent, delivered, read, replied, failed, were left out and are still to go, failures by group, sends per 10 minutes and what is left by day. A reply counts for 72 hours after the campaign ends. Read-only.

Parametersidrequired

create_campaign

Start a campaign draft

Starts a campaign as a draft, with a name and the WhatsApp number it goes out on, and returns it with its id. It sends nothing and messages nobody: a draft waits until a person approves it. The draft is on the Campaigns page of the Cosend dashboard too. Campaigns are on the Starter plan and above, and for owners and admins.

Parametersnameconnection_id

update_campaign

Change a campaign draft

Saves one or more steps of a campaign draft, named by id, and returns it. A step is its name; its number; its template (template_id, a marketing template on that number’s WhatsApp account); the value of each blank (variable_map: a contact field’s key, first_name or name, with fallback text for people who have none, or one text for everyone); its audience, which is a saved audience by its id (audience.segment_id) and nothing else; a time to send it, in a time zone; and its quiet hours, when nothing is sent. Changing the number clears the template and the blanks. A scheduled campaign that is changed is a draft again, and any estimate it had is cleared. It sends nothing.

Parametersidrequirednameaudienceschedulequiet_hourstemplate_idvariable_mapconnection_id

preview_campaign

Check a campaign before it sends

Checks a campaign draft, named by id, and returns what sending it would do, under two keys. audience: how many the saved audience matches, how many get it, how many are left out and why (no WhatsApp number, blocked, opted out on this number, a US number, WhatsApp held back a marketing message to them in the last day, a blank with no value, or a chat open with them now), the first 20 people, and Meta’s list price for one delivered marketing message to each person who gets it, by market, in the WhatsApp account’s currency. estimate: the estimate_id a send names, which lasts 15 minutes; the count; the daily limit and what goes out on which day; the plan’s messages left; and whether the count must be confirmed, which it must above 500. It saves the estimate on the draft and sends nothing. The template must be approved by WhatsApp. Names in the sample were written by the customers themselves and come back marked untrusted.

Parametersidrequired

send_campaign

Send or schedule a campaign

Sends a campaign draft now, or schedules it for its time, named by id, with the estimate_id of a check made in the last 15 minutes; above 500 people, confirm_text is that count. It reaches every person the check counted, on their phones, and the messages cannot be unsent. It sends only on a confirmed call: without confirmation_token it sends nothing and returns a preview and a token for a person to approve. The preview shows the campaign (its number, template and the value of each blank, saved audience, time and quiet hours) and who gets it now, who is left out and Meta’s list price, all read again when the token comes back: if any of it changed after the preview, the token is refused and a new preview is needed. Changing a single character of the arguments invalidates the token too. Only a person’s approval sends it: the credential alone sends nothing, through this tool or straight to the API. Five a minute and ten a day per workspace. Each campaign is on the Campaigns page of the Cosend dashboard.

Parametersidrequiredwhenrequiredestimate_idrequiredconfirm_textconfirmation_token

cancel_campaign

Stop a campaign

Stops a campaign, named by id, that is scheduled, sending or paused, and returns it stopped: nothing more goes out, and sends still waiting are cancelled. Messages already sent stay sent. A stopped campaign does not start again; its results stay readable. Stopping a draft, or a campaign that has finished, is refused in words.

Parametersidrequired

Version history

2
  1. v2026.11.6LatestNov 7, 2026
  2. v1.0.0Oct 31, 2026

Score

72% 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

    Publish an icon in the registry entry.

  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.