Skip to content
MotherBot
Integrations

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

MCP (Model Context Protocol) is the open standard for connecting AI assistants to real systems. MotherBot hosts an MCP server at https://motherbot.io/api/mcp — you connect to it with the same API key you already use for the REST API. There is nothing to download and nothing to keep updated.

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

Broadcasts and bulk sends are not available over MCP. That is a deliberate line, not an oversight. An assistant that misreads an instruction and creates a duplicate contact has made a mess you can clean up in a minute; one that misreads an instruction and broadcasts to forty thousand people has spent your money and your sending reputation, and neither comes back. Bulk sending stays on the Broadcasts screen and the REST API, where a person wrote the call.

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

1

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.

2

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

Starting out? Pick the Read only role. The assistant can answer any question about your account and change nothing. Widen it once you know what you want it to do.
3

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/mcp

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

ClientWhere to put it
WindsurfSettings → Cascade → MCP Servers → Add server, or ~/.codeium/windsurf/mcp_config.json
ZedAssistant panel → Settings → Context Servers, or the settings.json context_servers block
JetBrains AI AssistantSettings → Tools → AI Assistant → MCP → Add, choose an HTTP server
ChatGPTSettings → Connectors → Create (available on Business, Enterprise and Edu plans)
Anything elsePoint it at the URL and set the Authorization header

Note

Some clients only support MCP servers that run locally as a command. If yours does, use the 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 seeWhat it means
401 Invalid or missing API keyThe key is wrong, revoked, or the header is not `Authorization: Bearer <key>`
403 has not finished setting upFinish onboarding in the dashboard, then reconnect
405 on connectThe client tried a GET. This server is POST-only — update the client or use mcp-remote
Fewer tools than expectedYour key's scopes do not include them. Widen the key in Settings → API Keys
429 Too many requestsYou 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.

GroupScopes
Messagingmessages:read, messages:send, templates:read
Contactscontacts:read, contacts:write, segments:read
Broadcasts & Sequencesbroadcasts:read, broadcasts:write, sequences:read, sequences:write
Commerceproducts:read, products:write, orders:read, orders:write, coupons:read, coupons:write, links:read, links:write, deals:read, deals:write
Appointmentsappointments:read, appointments:write
Automationsworkflows:read, workflows:write, chatbots:read, chatbots:write
Platformmedia: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.

ToolWhat it doesTypeScope needed
get_account_usagePlan limits, usage and feature flagsRead
list_channelsList connected channelsRead
list_contactsList contactsReadcontacts:read
get_contactGet contactReadcontacts:read
create_contactCreate / upsert contactWritecontacts:write
update_contactUpdate contactWritecontacts:write
list_segmentsList saved segmentsReadsegments:read
list_messagesList message historyReadmessages:read
send_messageSend messageWritemessages:send
list_templatesList templatesReadtemplates:read
get_analytics_summaryGet analytics summaryReadanalytics:read
list_number_healthHealth of every connected numberReadnumber-health:read
list_broadcastsList broadcastsReadbroadcasts:read
get_broadcast_statsGet broadcast statsReadbroadcasts:read
list_sequencesList sequencesReadsequences:read
list_sequence_enrollmentsPer-recipient progressReadsequences:read
list_productsList catalogue productsReadproducts:read
get_productGet a productReadproducts:read
list_ordersList captured WhatsApp cart checkoutsReadorders:read
get_orderGet a captured cartReadorders:read
list_couponsList couponsReadcoupons:read
list_coupon_redemptionsList redemptionsReadcoupons:read
list_linksList trackable linksReadlinks:read
list_appointmentsList appointmentsReadappointments:read
get_appointmentGet one appointmentReadappointments:read
get_appointment_availabilityWhat's freeReadappointments:read
list_appointment_servicesList servicesReadappointments:read
list_appointment_staffList staff & resourcesReadappointments:read
list_pipelinesList sales boards and their stagesReaddeals:read
list_dealsList dealsReaddeals:read
get_dealGet a dealReaddeals:read
get_workflow_catalogueList workflow triggers and stepsReadworkflows:read
list_workflowsList workflowsReadworkflows:read
get_workflowGet a workflowReadworkflows:read
create_workflowCreate a workflowWriteworkflows:write
update_workflowUpdate or activate a workflowWriteworkflows:write
get_chatbot_catalogueList chatbot node and trigger typesReadchatbots:read
list_chatbotsList chatbotsReadchatbots:read
get_chatbotGet a chatbotReadchatbots:read
create_chatbotCreate a chatbotWritechatbots:write
update_chatbotUpdate or activate a chatbotWritechatbots: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. Pass step= or trigger= 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

Ask for what the automation should do, not how to build it. “When someone messages us for the first time outside business hours, reply that we'll get back to them in the morning and tag them as an after-hours lead” is a better prompt than a description of nodes and edges.

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

Treat an API key like a password. Give an assistant the narrowest key that does the job, use a separate key per tool so you can revoke one without disturbing the others, and revoke immediately in Settings → API Keys if a key is ever pasted somewhere it should not be.

For developers

Endpointhttps://motherbot.io/api/mcp
TransportStreamable HTTP, POST only. No SSE stream, no sessions.
Protocol revisions2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26
AuthAuthorization: Bearer <MotherBot API key>, on every request
Methodsinitialize, server/discover, ping, tools/list, tools/call
BatchingNot 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.