MCP Server
Give Claude, ChatGPT, Cursor or any other AI assistant safe, scoped access to your MotherBot account — no plugin to install, no code to write.
Note
What you can do with it
Once connected, you can talk to your MotherBot account in plain language. Some things people actually ask for:
- “How many messages did we send last week, and what was the delivery rate?”
- “Find the contact for +91 94065 37037 and tell me what we last said to them.”
- “Which of my approved templates are for order updates?”
- “Add Asha Kulkarni as a contact and tag her as a wholesale lead.”
- “Build me a chatbot that asks for an order number and looks it up in Shopify.”
- “Create a workflow that waits an hour after a cart is abandoned, then messages the customer.”
The assistant only ever sees your account — the one the API key belongs to. Everything it returns is already scoped to your organisation.
What it deliberately cannot do
The tool list is read-heavy with safe writes. 34 of the 41 tools only read. The writes it does have change one record at a time: send one message, create or edit one contact, build one automation.
Warning
For the same reason, workflows and chatbots are always created switched off. An assistant can build one for you in seconds; you review it in the builder and turn it on yourself. Activating one re-validates the whole thing first, so a half-finished automation can never go live.
Before you start
Create an API key
Go to Dashboard → Settings → API Keys and create a key. Copy it when it is shown — it is only displayed once.
Choose what it may do
Scopes are how you decide what the assistant can reach. The MCP server only offers an assistant the tools your key's scopes allow, and refuses any call outside them even if the assistant tries anyway.
Tip
Check your plan
MCP uses the same access as the REST API, so your plan needs API access enabled. Calls count towards your monthly API allowance and your per-minute rate limit.
Connect Claude Desktop
Open Settings → Connectors → Add custom connector, and give it the URL below. Claude will ask for the key.
https://motherbot.io/api/mcpIf your version of Claude Desktop uses a config file instead, add this to claude_desktop_config.json and restart the app. On macOS the file is at ~/Library/Application Support/Claude/; on Windows, %APPDATA%\Claude\.
{
"mcpServers": {
"motherbot": {
"url": "https://motherbot.io/api/mcp",
"headers": {
"Authorization": "Bearer motherbot_your_key_here"
}
}
}
}Connect Claude Code
One command, from any project directory:
claude mcp add --transport http motherbot https://motherbot.io/api/mcp \
--header "Authorization: Bearer motherbot_your_key_here"Add --scope user to make it available in every project rather than just this one. Check it worked with /mcp.
Connect Cursor
Settings → Cursor Settings → MCP → Add new global MCP server, or create .cursor/mcp.json in your project:
{
"mcpServers": {
"motherbot": {
"url": "https://motherbot.io/api/mcp",
"headers": {
"Authorization": "Bearer motherbot_your_key_here"
}
}
}
}A project-level .cursor/mcp.json is committed to your repository, so put the key in a global config instead unless your repository is private and you are comfortable with that.
Connect VS Code (GitHub Copilot)
Create .vscode/mcp.json. VS Code can prompt for the key rather than storing it in the file:
{
"inputs": [
{
"type": "promptString",
"id": "motherbot-key",
"description": "MotherBot API key",
"password": true
}
],
"servers": {
"motherbot": {
"type": "http",
"url": "https://motherbot.io/api/mcp",
"headers": {
"Authorization": "Bearer ${input:motherbot-key}"
}
}
}
}Open Copilot Chat, switch to Agent mode, and the MotherBot tools appear in the tool picker.
Connect Windsurf, Zed and other clients
Any client that speaks MCP over HTTP works. The two things it needs are the URL and an Authorization header.
| Client | Where to put it |
|---|---|
| Windsurf | Settings → Cascade → MCP Servers → Add server, or ~/.codeium/windsurf/mcp_config.json |
| Zed | Assistant panel → Settings → Context Servers, or the settings.json context_servers block |
| JetBrains AI Assistant | Settings → Tools → AI Assistant → MCP → Add, choose an HTTP server |
| ChatGPT | Settings → Connectors → Create (available on Business, Enterprise and Edu plans) |
| Anything else | Point it at the URL and set the Authorization header |
Note
mcp-remote bridge:{
"mcpServers": {
"motherbot": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://motherbot.io/api/mcp",
"--header", "Authorization: Bearer motherbot_your_key_here"
]
}
}
}Check it works
If a client will not connect and does not say why, ask the server directly. This is the handshake every client sends first:
curl -sS -X POST https://motherbot.io/api/mcp \
-H "Authorization: Bearer motherbot_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": { "protocolVersion": "2025-11-25", "capabilities": {} }
}'A working key answers with the server's capabilities. To see the tools your key allows:
curl -sS -X POST https://motherbot.io/api/mcp \
-H "Authorization: Bearer motherbot_your_key_here" \
-H "Content-Type: application/json" \
-d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }'| What you see | What it means |
|---|---|
| 401 Invalid or missing API key | The key is wrong, revoked, or the header is not `Authorization: Bearer <key>` |
| 403 has not finished setting up | Finish onboarding in the dashboard, then reconnect |
| 405 on connect | The client tried a GET. This server is POST-only — update the client or use mcp-remote |
| Fewer tools than expected | Your key's scopes do not include them. Widen the key in Settings → API Keys |
| 429 Too many requests | You are over the per-minute limit for your plan |
Scopes and what each one unlocks
A tool only appears if your key holds the scope its endpoint needs. Keys created before scopes existed hold all of them.
| Group | Scopes |
|---|---|
| Messaging | messages:read, messages:send, templates:read |
| Contacts | contacts:read, contacts:write, segments:read |
| Broadcasts & Sequences | broadcasts:read, broadcasts:write, sequences:read, sequences:write |
| Commerce | products:read, products:write, orders:read, orders:write, coupons:read, coupons:write, links:read, links:write, deals:read, deals:write |
| Appointments | appointments:read, appointments:write |
| Automations | workflows:read, workflows:write, chatbots:read, chatbots:write |
| Platform | media:write, webhooks:read, webhooks:write, analytics:read, number-health:read, knowledge-base:read, knowledge-base:write, calendly:read |
Every tool
41 tools. Your key sees the ones its scopes allow — the rest are neither listed nor callable.
| Tool | What it does | Type | Scope needed |
|---|---|---|---|
| get_account_usage | Plan limits, usage and feature flags | Read | — |
| list_channels | List connected channels | Read | — |
| list_contacts | List contacts | Read | contacts:read |
| get_contact | Get contact | Read | contacts:read |
| create_contact | Create / upsert contact | Write | contacts:write |
| update_contact | Update contact | Write | contacts:write |
| list_segments | List saved segments | Read | segments:read |
| list_messages | List message history | Read | messages:read |
| send_message | Send message | Write | messages:send |
| list_templates | List templates | Read | templates:read |
| get_analytics_summary | Get analytics summary | Read | analytics:read |
| list_number_health | Health of every connected number | Read | number-health:read |
| list_broadcasts | List broadcasts | Read | broadcasts:read |
| get_broadcast_stats | Get broadcast stats | Read | broadcasts:read |
| list_sequences | List sequences | Read | sequences:read |
| list_sequence_enrollments | Per-recipient progress | Read | sequences:read |
| list_products | List catalogue products | Read | products:read |
| get_product | Get a product | Read | products:read |
| list_orders | List captured WhatsApp cart checkouts | Read | orders:read |
| get_order | Get a captured cart | Read | orders:read |
| list_coupons | List coupons | Read | coupons:read |
| list_coupon_redemptions | List redemptions | Read | coupons:read |
| list_links | List trackable links | Read | links:read |
| list_appointments | List appointments | Read | appointments:read |
| get_appointment | Get one appointment | Read | appointments:read |
| get_appointment_availability | What's free | Read | appointments:read |
| list_appointment_services | List services | Read | appointments:read |
| list_appointment_staff | List staff & resources | Read | appointments:read |
| list_pipelines | List sales boards and their stages | Read | deals:read |
| list_deals | List deals | Read | deals:read |
| get_deal | Get a deal | Read | deals:read |
| get_workflow_catalogue | List workflow triggers and steps | Read | workflows:read |
| list_workflows | List workflows | Read | workflows:read |
| get_workflow | Get a workflow | Read | workflows:read |
| create_workflow | Create a workflow | Write | workflows:write |
| update_workflow | Update or activate a workflow | Write | workflows:write |
| get_chatbot_catalogue | List chatbot node and trigger types | Read | chatbots:read |
| list_chatbots | List chatbots | Read | chatbots:read |
| get_chatbot | Get a chatbot | Read | chatbots:read |
| create_chatbot | Create a chatbot | Write | chatbots:write |
| update_chatbot | Update or activate a chatbot | Write | chatbots:write |
Building automations with an assistant
Workflows and chatbots have their own vocabulary — specific trigger keys, step types and node types. An assistant cannot guess them, so it should ask first:
get_workflow_catalogue— every trigger and step a workflow can use. Passstep=ortrigger=to get the full field list for the ones it intends to use.get_chatbot_catalogue— every chatbot node type, the trigger types, and the rules a flow has to satisfy.
Good assistants do this on their own — the server tells them to. If one invents a step type anyway, the refusal names the problem and points at the catalogue, and nothing is saved.
Tip
Security
- Your key is your boundary. The server acts only on the account the key belongs to, and only within its scopes and channel restrictions. Every single call is checked — not just the first one.
- Scopes are enforced twice. Tools outside your scopes are not offered, and are refused if called anyway.
- Nothing goes live on its own. Workflows and chatbots are created switched off; activating one re-validates it in full.
- Everything is rate limited — the same per-minute allowance your plan gives the REST API.
- Calls are attributed. Requests from MCP are tagged, so you can tell an assistant's activity from a script's.
Warning
For developers
| Endpoint | https://motherbot.io/api/mcp |
| Transport | Streamable HTTP, POST only. No SSE stream, no sessions. |
| Protocol revisions | 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26 |
| Auth | Authorization: Bearer <MotherBot API key>, on every request |
| Methods | initialize, server/discover, ping, tools/list, tools/call |
| Batching | Not supported — one JSON-RPC request per POST |
The server is stateless: every request carries its own credential and is answered on its own, so there is no session to keep alive and no sticky routing needed in front of it. Each tool is one endpoint of the public REST API — same parameters, same responses, same limits.