What your agent can do on WhatsApp
Connect your WhatsApp account once and your AI agent can use 61 tools on it, through one MCP server or the REST API. Every action stays inside the WhatsApp limits that keep the account safe.
In plain words
- Read and answer every chat, with photos, voice notes and files
- Start a chat with a customer who expects to hear from you
- React to, edit, forward or delete messages
- Schedule a message for a set time, inside your working hours
Every tool
Some tools work on every channel where the platform supports them. If WhatsApp does not support an action, Spaces returns an error and nothing is sent. Writes need an Idempotency-Key, so a retry never sends twice.
Conversations
| What it does | MCP tool | REST |
|---|---|---|
| Your conversations, newest first, with their tags and owner. Filter to unread, unanswered, a tag or an owner. | list_messaging_chats | GET …/chats |
| The messages in one conversation. | list_messaging_messages | GET …/chats/{chat_id}/messages |
| An image, file, voice note or video from a message. | get_messaging_attachment | GET …/chats/{chat_id}/messages/{message_id}/attachments/{attachment_id} |
| Reply in a conversation, with text or attachments. | reply_in_chat | POST …/chats/{chat_id}/messages |
| Start a new conversation with someone who expects to hear from you. | start_chat | POST …/chats |
| The tags and the owner of a conversation. | get_chat_tags | GET …/chats/{chat_id}/tags |
| Tag a conversation, such as lead, order or follow up. Sends nothing. | set_chat_tags | PUT …/chats/{chat_id}/tags |
| Give a conversation to someone on your team. Sends nothing. | set_chat_owner | PUT …/chats/{chat_id}/owner |
Messages
| What it does | MCP tool | REST |
|---|---|---|
| People in a chat. | list_chat_attendees | GET …/chats/{chat_id}/attendees |
| Mark a chat read, mute it, or take another chat action. | update_chat | PATCH …/chats/{chat_id} |
| Sync a chat from the start, or read the sync status. | sync_chat | GET …/chats/{chat_id}/sync |
| Forward a message. WhatsApp only. | forward_message | POST …/messages/{message_id}/forward |
| Messages across all conversations, with filters. | list_messages | GET …/messages |
| People the account can message. | list_attendees | GET …/attendees |
| One person you can message. | get_attendee | GET …/attendees/{attendee_id} |
| A person’s profile picture. | get_attendee_picture | GET …/attendees/{attendee_id}/picture |
| 1:1 chats with an attendee. | list_attendee_chats | GET …/attendees/{attendee_id}/chats |
| Messages with an attendee. | list_attendee_messages | GET …/attendees/{attendee_id}/messages |
| React to a message. | add_message_reaction | POST …/messages/{message_id}/reaction |
| Remove your reaction from a message. | remove_message_reaction | DELETE …/messages/{message_id}/reaction |
| Delete a chat. WhatsApp and LinkedIn. | delete_chat | DELETE …/chats/{chat_id} |
| Delete a message. WhatsApp and LinkedIn. LinkedIn only within about an hour. | delete_message | DELETE …/messages/{message_id} |
| Edit a message. WhatsApp and LinkedIn Classic. | edit_message | PATCH …/messages/{message_id} |
| Sync chats for an attendee. | sync_attendee | GET …/attendees/{attendee_id}/sync |
People
| What it does | MCP tool | REST |
|---|---|---|
| A person’s profile. | get_profile | GET …/users/{identifier} |
| The connected account profile. | get_own_profile | GET …/profile |
| Edit the connected profile. Only fields the channel allows are applied. | edit_own_profile | PATCH …/profile |
| Relations of the account. Paced like profile views. | list_relations | GET …/relations |
| Accounts this account follows. | list_following | GET …/following |
| Followers of this account. | list_followers | GET …/followers |
| Comments written by a person. | list_user_comments | GET …/users/{identifier}/comments |
| Reactions by a person. | list_user_reactions | GET …/users/{identifier}/reactions |
Schedules and routines
| What it does | MCP tool | REST |
|---|---|---|
| Send a message at a set local time, inside working hours you choose. | schedule_message | POST /v1/messaging/schedules |
| Messages waiting to be sent. | list_schedules | GET /v1/messaging/schedules |
| Change a scheduled message. | update_schedule | PATCH /v1/messaging/schedules/{schedule_id} |
| Cancel a scheduled message. | cancel_schedule | DELETE /v1/messaging/schedules/{schedule_id} |
| An automation: answer from your notes, reply to comments and message the commenter once, tag chats, call a webhook or email a summary, on a schedule or when a message or comment arrives. | create_routine | POST /v1/messaging/routines |
| Your automations. | list_routines | GET /v1/messaging/routines |
| Change or pause an automation. | update_routine | PATCH /v1/messaging/routines/{routine_id} |
| Delete an automation. | delete_routine | DELETE /v1/messaging/routines/{routine_id} |
| What an automation did, and when. | list_routine_runs | GET /v1/messaging/routines/{routine_id}/runs |
Pause and approvals
| What it does | MCP tool | REST |
|---|---|---|
| Stop every message, post, comment, invitation, scheduled message and routine at once. Reading keeps working. | pause_all_sending | POST /v1/messaging/pause |
| Start sending again after a pause. Waiting scheduled messages and routines carry on. | resume_all_sending | POST /v1/messaging/resume |
| Replies, new chats, posts and comments waiting for you to approve them. | list_approvals | GET /v1/messaging/approvals |
| Send a waiting message or post as it is, or after you edit the text. | approve | POST /v1/messaging/approvals/{approval_id}/approve |
| Turn down a waiting message or post, so it is never sent. | reject | POST /v1/messaging/approvals/{approval_id}/reject |
Accounts
| What it does | MCP tool | REST |
|---|---|---|
| The accounts you have connected, with their status and when each last had activity. Search by name, filter by channel or status, sort and page. | list_messaging_accounts | GET /v1/messaging/accounts |
| Whether an account is working, what to do if not, and how much room it has left today. | get_account_health | GET …/health |
| A link to connect a new account, or to reconnect one. | create_messaging_connect_link | POST /v1/messaging/accounts/connect-link |
| Disconnect an account. | disconnect_messaging_account | DELETE … |
| Status of one connected account. | get_connected_account | GET … |
| Start reconnecting an account that needs a sign-in. | reconnect_account | POST …/reconnect |
| Enter a sign-in or verification code the platform asked for. The code is not stored. | solve_checkpoint | POST …/checkpoint |
| Ask the platform to send the verification code again. | resend_checkpoint | POST …/checkpoint/resend |
| Restart an account that has stopped syncing. | restart_account | POST …/restart |
| Fetch an account’s messages again from the platform. | resync_account | POST …/sync |
Usage and billing
| What it does | MCP tool | REST |
|---|---|---|
| Report a bug, a missing feature or a docs gap to the Spaces team. | send_feedback | POST /v1/feedback |
| Messages sent today and this week, and how much room is left on each account. | get_messaging_usage | GET /v1/messaging/usage |
| Usage by day for each account, as a spreadsheet or JSON: messages sent, new conversations and other actions. No message text. | export_messaging_usage | GET /v1/messaging/usage/export |
| Your plan and billing status. | get_messaging_billing | GET /v1/messaging/billing |
| A checkout link to choose a plan. | create_messaging_billing_checkout | POST /v1/messaging/billing/checkout |
Connect it
Use https://api.spacesos.com/mcp/whatsapp for an MCP server with only the WhatsApp tools, or https://api.spacesos.com/mcp for every channel. Setup steps for each AI client. An overview for WhatsApp: WhatsApp API for AI agents.