Connect your agent (MCP)
Kula runs an MCP server. Connect Claude, Cursor or ChatGPT to a space and ask: "draft a campaign announcing our new pricing to the pro segment", "why did open rates drop last week?". The agent reads your space and prepares drafts. Nothing reaches your contacts until a member of your team approves it in Kula.
MCP is available on every plan, including the free one: your AI tool does the work, so it doesn't count against assistant messages.
Server URL
https://api.kulamail.com/mcp
The server uses OAuth: there's no key to copy. When you add it, your AI tool opens a Kula page where you sign in, pick the space and choose what the agent may do.
Connect
You need the Admin or Owner role on the space. The same instructions are in Settings › AI assistants.
- In Claude, open Settings › Connectors and choose Add custom connector.
- Name it Kula and paste the server URL.
- Claude opens a Kula page: pick the space, choose the permissions and approve.
Open Cursor Settings › MCP and choose Add new MCP server, or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"kula": {
"url": "https://api.kulamail.com/mcp"
}
}
}
Cursor opens a Kula page in your browser: pick the space and approve.
- In ChatGPT, open Settings › Connectors, turn on developer mode if asked, then create a connector.
- Paste the server URL and choose OAuth authentication.
- ChatGPT opens a Kula page: pick the space and approve.
Any client that supports remote MCP servers over Streamable HTTP with OAuth works. Point it to the server URL: it discovers the authorization server on its own, registers itself and asks you to approve on the Kula page.
One connection gives access to one space. To work on several brands, connect once per space.
Permissions
| Permission | Allows | Default |
|---|---|---|
| Read the space | Campaigns, flows, lists, segments and their reports. No contact details. | On |
| Change the space | Prepare drafts of campaigns and emails, create lists and segments. | On |
| Read contacts | Email addresses, names and attributes of your contacts. | Off |
Read contacts gives the agent personal data. Turn it on only when needed, to look up a customer for example.
There's no permission to send: no agent can send, schedule, activate or publish anything in Kula.
The agent prepares, a human approves
| The agent can | A member of your team then |
|---|---|
| Create and edit campaign drafts, then request approval | Approves the campaign to send or schedule it, or rejects it back to draft |
| Create flows, add and edit their steps, then request activation | Checks the flow and activates it |
| Create and edit transactional templates (the draft version), then request publication | Publishes the draft to production, or discards it |
| Send a test email | Receives it: test emails only go to members of the account |
Each request notifies the members of the account by email and shows up in the dashboard. Content created by an agent is marked as such.
Tools
The agent discovers these tools on its own.
| Tool | Permission | What it does |
|---|---|---|
get_space_overview | Read | The space, its domains and their verification state. Agents start here. |
list_lists, get_list | Read | Lists and their subscriber counts |
list_segments, get_segment | Read | Saved segments |
count_segment | Read | Counts the contacts matching a segment definition, before saving it |
list_campaigns, get_campaign | Read | Campaigns and their content |
get_campaign_report | Read | Results of a campaign |
list_flows, get_flow | Read | Flows and their steps |
list_templates, get_template | Read | Transactional templates |
get_deliverability_report | Read | Results by inbox provider over the last 30 days |
get_space_reputation | Read | Reputation status over the last 7 days |
create_list, update_list | Change | Lists |
create_segment, update_segment | Change | Segments |
create_campaign_draft, update_campaign_draft | Change | Campaign drafts |
request_campaign_approval | Change | Asks the team to approve a campaign |
create_flow_draft, update_flow, add_flow_step, update_flow_step | Change | Flows that aren't active |
request_flow_activation | Change | Asks the team to activate a flow |
create_template, update_template | Change | Draft version of transactional templates |
request_template_publication | Change | Asks the team to publish a template |
send_test_email | Change | Sends a test to members of the account |
search_contacts, get_contact | Read contacts | Finds contacts and shows their details and activity |
Limits
Each connection may make 60 calls per minute and 5,000 per day. Test emails count in your monthly usage like any other email.
Disconnect
Settings › AI assistants › Connected apps lists every app with access to the space and its permissions. Revoke cuts its access at once. A connection that isn't used for 90 days expires on its own.