keila-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KEILA_URL | No | Keila instance URL | https://mail.korroni.com |
| KEILA_API_KEY | Yes | API key (create in Keila dashboard) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_contactsB | List all contacts in Keila with pagination. Args: page: Page number for pagination (optional). Returns: A dict with 'data' (list of contacts) and 'meta' (pagination info). Each contact has id, email, first_name, last_name, status, data, and timestamps. |
| get_contactA | Fetch a single contact by ID. Args: contact_id: The contact ID (e.g. "c_12345"). Returns: A dict with contact details: id, email, first_name, last_name, status, data. |
| create_contactC | Create a new contact in Keila. Args: email: Email address (required). first_name: First name (optional). last_name: Last name (optional). Returns: The created contact record. |
| update_contactC | Update an existing contact. Args: contact_id: The contact ID (e.g. "c_12345"). email: New email address (optional). first_name: New first name (optional). last_name: New last name (optional). Returns: The updated contact record. |
| delete_contactB | Delete a contact. Args: contact_id: The contact ID (e.g. "c_12345"). Returns: Confirmation message. |
| list_campaignsB | List all campaigns in Keila. Returns: A dict with 'data' (list of campaigns). Each campaign has id, subject, text_body, sender_id, segment_id, settings, sent_at, scheduled_for, and timestamps. |
| get_campaignA | Fetch a single campaign by ID. Args: campaign_id: The campaign ID (e.g. "mc_12345"). Returns: Campaign details including subject, body, sender, segment, and delivery status. |
| create_campaignA | Create a new email campaign. Does NOT send it — use send_campaign after. The body supports Liquid templates: {{ contact.first_name }}, {{ contact.email }}. Args: subject: Email subject line. text_body: Email body content (markdown by default). sender_id: Sender ID to send from (e.g. "ms_12345"). Use list_senders to find IDs. settings_type: Content type — "markdown", "text", "mjml", or "block" (default: "markdown"). segment_id: Optional segment ID to restrict recipients (e.g. "sgm_12345"). preview_text: Optional preview text shown in email clients. Returns: The created campaign record. |
| update_campaignA | Update an existing campaign (only unsent campaigns can be updated). Args: campaign_id: The campaign ID (e.g. "mc_12345"). subject: New subject line (optional). text_body: New body content (optional). sender_id: New sender ID (optional). segment_id: New segment ID (optional). preview_text: New preview text (optional). Returns: The updated campaign record. |
| delete_campaignB | Delete a campaign. Args: campaign_id: The campaign ID (e.g. "mc_12345"). Returns: Confirmation message. |
| send_campaignA | Send a campaign immediately to all contacts (or segment contacts). WARNING: This sends real emails. Make sure the campaign content and recipient list are correct before calling this. Args: campaign_id: The campaign ID (e.g. "mc_12345"). Returns: Delivery queued confirmation. |
| schedule_campaignA | Schedule a campaign for future delivery. Args: campaign_id: The campaign ID (e.g. "mc_12345"). scheduled_for: ISO 8601 datetime (e.g. "2026-03-15T14:00:00Z"). Returns: The updated campaign record with scheduled_for set. |
| list_segmentsB | List all contact segments. Returns: A dict with 'data' (list of segments). Each segment has id, name, and filter. |
| create_segmentA | Create a new contact segment with a filter. Filter examples: {"email": {"$like": "%@example.com"}} — contacts with example.com emails {"inserted_at": {"$gt": "2026-01-01"}} — contacts added after Jan 1 Args: name: Segment name. filter: Filter JSON object for matching contacts. Returns: The created segment record. |
| delete_segmentA | Delete a segment. Does not delete the contacts in it. Args: segment_id: The segment ID (e.g. "sgm_12345"). Returns: Confirmation message. |
| list_sendersA | List all configured senders. Use sender IDs when creating campaigns. Returns: A dict with 'data' (list of senders with id, name, from_email, reply_to). |
| list_formsB | List all signup forms. Returns: A dict with 'data' (list of forms). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gwbischof/keila-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server