Greenbubble Docs
Greenbubble Docs Reviewed 11 August 2026

How to use the platform

Step-by-step guides for connecting channels, sending messages, and integrating with the Developer API.

/

Tenant MCP

Streamable HTTP JSON-RPC 2.0. Endpoint: POST https://mcp.greenbubble.io/mcp. Health: GET https://mcp.greenbubble.io/healthz. Auth: x-api-key (tenant key).

1

GET Health Check

GET https://mcp.greenbubble.io/healthz

cURL

curl -X GET 'https://mcp.greenbubble.io/healthz' \
  -H 'x-api-key: YOUR_API_KEY'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/healthz', {
  method: 'GET',
  headers: { 'x-api-key': 'YOUR_API_KEY' }
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/healthz"
headers = { "x-api-key": "YOUR_API_KEY" }

response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/healthz');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['x-api-key: YOUR_API_KEY']);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;
2

POST List Tools

POST https://mcp.greenbubble.io/mcp

cURL

curl -X POST 'https://mcp.greenbubble.io/mcp' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/mcp', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
})
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/mcp"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/mcp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}');
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;
3

POST Call Tool - list_contacts

POST https://mcp.greenbubble.io/mcp

cURL

curl -X POST 'https://mcp.greenbubble.io/mcp' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_contacts","arguments":{"page":1,"limit":25,"search":"john"}}}'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/mcp', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_contacts",
    "arguments": {
      "page": 1,
      "limit": 25,
      "search": "john"
    }
  }
})
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/mcp"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_contacts",
    "arguments": {
      "page": 1,
      "limit": 25,
      "search": "john"
    }
  }
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/mcp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_contacts","arguments":{"page":1,"limit":25,"search":"john"}}}');
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;
4

POST Call Tool - send_whatsapp_message

POST https://mcp.greenbubble.io/mcp

cURL

curl -X POST 'https://mcp.greenbubble.io/mcp' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"send_whatsapp_message","arguments":{"contact_no":"919812345678","message":"Hello from Greenbubble","platform":"whatsapp"}}}'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/mcp', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "send_whatsapp_message",
    "arguments": {
      "contact_no": "919812345678",
      "message": "Hello from Greenbubble",
      "platform": "whatsapp"
    }
  }
})
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/mcp"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "send_whatsapp_message",
    "arguments": {
      "contact_no": "919812345678",
      "message": "Hello from Greenbubble",
      "platform": "whatsapp"
    }
  }
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/mcp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"send_whatsapp_message","arguments":{"contact_no":"919812345678","message":"Hello from Greenbubble","platform":"whatsapp"}}}');
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;
5

POST Call Tool - create_contact

POST https://mcp.greenbubble.io/mcp

cURL

curl -X POST 'https://mcp.greenbubble.io/mcp' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"create_contact","arguments":{"phone_number":"919812345678","name":"John Doe","email":"john@example.com","source":"whatsapp","status":"lead","tags":["vip"],"custom_fields":{"company":"Acme"}}}}'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/mcp', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "create_contact",
    "arguments": {
      "phone_number": "919812345678",
      "name": "John Doe",
      "email": "john@example.com",
      "source": "whatsapp",
      "status": "lead",
      "tags": [
        "vip"
      ],
      "custom_fields": {
        "company": "Acme"
      }
    }
  }
})
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/mcp"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "create_contact",
    "arguments": {
      "phone_number": "919812345678",
      "name": "John Doe",
      "email": "john@example.com",
      "source": "whatsapp",
      "status": "lead",
      "tags": [
        "vip"
      ],
      "custom_fields": {
        "company": "Acme"
      }
    }
  }
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/mcp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"create_contact","arguments":{"phone_number":"919812345678","name":"John Doe","email":"john@example.com","source":"whatsapp","status":"lead","tags":["vip"],"custom_fields":{"company":"Acme"}}}}');
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;
6

POST Call Tool - send_campaign

POST https://mcp.greenbubble.io/mcp

cURL

curl -X POST 'https://mcp.greenbubble.io/mcp' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"send_campaign","arguments":{"campaign_id":"CAMPAIGN_ID"}}}'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/mcp', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "send_campaign",
    "arguments": {
      "campaign_id": "CAMPAIGN_ID"
    }
  }
})
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/mcp"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "send_campaign",
    "arguments": {
      "campaign_id": "CAMPAIGN_ID"
    }
  }
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/mcp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"send_campaign","arguments":{"campaign_id":"CAMPAIGN_ID"}}}');
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;
7

POST Call Tool - my_subscription

POST https://mcp.greenbubble.io/mcp

cURL

curl -X POST 'https://mcp.greenbubble.io/mcp' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"my_subscription","arguments":{}}}'

JavaScript

const res = await fetch('https://mcp.greenbubble.io/mcp', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "my_subscription",
    "arguments": {}
  }
})
});

const data = await res.json();
console.log(data);

Python

import requests

url = "https://mcp.greenbubble.io/mcp"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "my_subscription",
    "arguments": {}
  }
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

PHP

$ch = curl_init('https://mcp.greenbubble.io/mcp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"my_subscription","arguments":{}}}');
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\n" . $response;

Still need help?

Use one clear test before contacting support.

Include workspace, channel, exact time, what you expected, what happened, and the error with private details hidden.

Troubleshoot