KosmoKrator

productivity

Elastic Email Lua API for KosmoKrator Agents

Agent-facing Lua documentation and function reference for the Elastic Email KosmoKrator integration.

Lua Namespace

Agents call this integration through app.integrations.elastic_email.*. Use lua_read_doc("integrations.elastic-email") inside KosmoKrator to discover the same reference at runtime.

Call Lua from the Headless CLI

Use kosmo integrations:lua when a shell script, CI job, cron job, or another coding CLI should run a deterministic Elastic Email workflow without starting an interactive agent session.

Inline Lua call
kosmo integrations:lua --eval 'dump(app.integrations.elastic_email.elasticemail_add_contacts_list({name = "example_name", emails = "example_emails"}))' --json
Read Lua docs headlessly
kosmo integrations:lua --eval 'print(docs.read("elastic-email"))' --json
kosmo integrations:lua --eval 'print(docs.read("elastic-email.elasticemail_add_contacts_list"))' --json

Workflow file

Put repeatable logic in a Lua file, then execute it with JSON output for the calling process.

workflow.lua
local elastic_email = app.integrations.elastic_email
local result = elastic_email.elasticemail_add_contacts_list({name = "example_name", emails = "example_emails"})

dump(result)
Run the workflow
kosmo integrations:lua workflow.lua --json
kosmo integrations:lua workflow.lua --force --json
Namespace note. integrations:lua exposes app.integrations.elastic_email, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.elastic_email.default.* or app.integrations.elastic_email.work.* when you configured named credential accounts.

MCP-only Lua

If the script only needs configured MCP servers and does not need Elastic Email, use the narrower mcp:lua command.

MCP Lua command
# Use mcp:lua for MCP-only scripts; use integrations:lua for this integration namespace.
kosmo mcp:lua --eval 'dump(mcp.servers())' --json

Agent-Facing Lua Docs

This is the rendered version of the full Lua documentation exposed to agents when they inspect the integration namespace.

Elastic Email Lua API Reference

Namespace: app.integrations["elastic-email"]

Elastic Email tools use REST API v4. API keys are sent with X-ElasticEmail-ApiKey.

Email

local sent = app.integrations["elastic-email"].send_email({
  to = "person@example.test",
  subject = "Welcome",
  body = "<p>Hello</p>",
  from = "sender@example.test"
})

local status = app.integrations["elastic-email"].get_email_status({
  transaction_id = "tx_123"
})

send_bulk_email accepts a full Elastic Email v4 email payload under payload.

Contacts And Lists

local contacts = app.integrations["elastic-email"].list_contacts({
  limit = 50
})

local contact = app.integrations["elastic-email"].get_contact({
  email = "person@example.test"
})

local created = app.integrations["elastic-email"].create_contact({
  email = "person@example.test",
  list_name = "Newsletter",
  first_name = "Example"
})

local lists = app.integrations["elastic-email"].list_lists({})
local members = app.integrations["elastic-email"].list_list_contacts({
  name = "Newsletter"
})

Use add_contacts_to_list and remove_contacts_from_list with comma- or semicolon-separated email addresses.

Campaigns, Events, Suppressions

local campaigns = app.integrations["elastic-email"].list_campaigns({})
local campaign = app.integrations["elastic-email"].get_campaign({ name = "Launch" })
local events = app.integrations["elastic-email"].list_events({
  params = { limit = 100 }
})
local suppressions = app.integrations["elastic-email"].list_suppressions({
  type = "bounces"
})

Suppression type must be unsubscribes, bounces, or complaints.

Templates, Statistics, Files

local templates = app.integrations["elastic-email"].list_templates({
  limit = 20
})

local template = app.integrations["elastic-email"].get_template({
  id = "welcome"
})

local stats = app.integrations["elastic-email"].get_statistics({})
local campaign_stats = app.integrations["elastic-email"].get_campaign_statistics({
  name = "Launch"
})
local files = app.integrations["elastic-email"].list_files({})

The id field for get_template is the template name in the v4 path.

Long-Tail Endpoints

local domains = app.integrations["elastic-email"].api_get({
  path = "/domains"
})

local export = app.integrations["elastic-email"].api_post({
  path = "/contacts/export",
  payload = { FileFormat = "Csv" }
})

Generic API tools accept relative paths only.

Multi-Account Usage

app.integrations["elastic-email"].send_email({...})
app.integrations["elastic-email"].default.send_email({...})
app.integrations["elastic-email"].marketing.list_campaigns({})

All functions are identical across accounts; only credentials differ.

Raw agent markdown
# Elastic Email Lua API Reference

Namespace: `app.integrations["elastic-email"]`

Elastic Email tools use REST API v4. API keys are sent with `X-ElasticEmail-ApiKey`.

## Email

```lua
local sent = app.integrations["elastic-email"].send_email({
  to = "person@example.test",
  subject = "Welcome",
  body = "<p>Hello</p>",
  from = "sender@example.test"
})

local status = app.integrations["elastic-email"].get_email_status({
  transaction_id = "tx_123"
})
```

`send_bulk_email` accepts a full Elastic Email v4 email payload under `payload`.

## Contacts And Lists

```lua
local contacts = app.integrations["elastic-email"].list_contacts({
  limit = 50
})

local contact = app.integrations["elastic-email"].get_contact({
  email = "person@example.test"
})

local created = app.integrations["elastic-email"].create_contact({
  email = "person@example.test",
  list_name = "Newsletter",
  first_name = "Example"
})

local lists = app.integrations["elastic-email"].list_lists({})
local members = app.integrations["elastic-email"].list_list_contacts({
  name = "Newsletter"
})
```

Use `add_contacts_to_list` and `remove_contacts_from_list` with comma- or semicolon-separated email addresses.

## Campaigns, Events, Suppressions

```lua
local campaigns = app.integrations["elastic-email"].list_campaigns({})
local campaign = app.integrations["elastic-email"].get_campaign({ name = "Launch" })
local events = app.integrations["elastic-email"].list_events({
  params = { limit = 100 }
})
local suppressions = app.integrations["elastic-email"].list_suppressions({
  type = "bounces"
})
```

Suppression `type` must be `unsubscribes`, `bounces`, or `complaints`.

## Templates, Statistics, Files

```lua
local templates = app.integrations["elastic-email"].list_templates({
  limit = 20
})

local template = app.integrations["elastic-email"].get_template({
  id = "welcome"
})

local stats = app.integrations["elastic-email"].get_statistics({})
local campaign_stats = app.integrations["elastic-email"].get_campaign_statistics({
  name = "Launch"
})
local files = app.integrations["elastic-email"].list_files({})
```

The `id` field for `get_template` is the template name in the v4 path.

## Long-Tail Endpoints

```lua
local domains = app.integrations["elastic-email"].api_get({
  path = "/domains"
})

local export = app.integrations["elastic-email"].api_post({
  path = "/contacts/export",
  payload = { FileFormat = "Csv" }
})
```

Generic API tools accept relative paths only.

## Multi-Account Usage

```lua
app.integrations["elastic-email"].send_email({...})
app.integrations["elastic-email"].default.send_email({...})
app.integrations["elastic-email"].marketing.list_campaigns({})
```

All functions are identical across accounts; only credentials differ.
Metadata-derived Lua example
local result = app.integrations.elastic_email.elasticemail_add_contacts_list({name = "example_name", emails = "example_emails"})
print(result)

Functions

elasticemail_add_contacts_list Write

Add one or more contacts to an Elastic Email list.

Lua path
app.integrations.elastic_email.elasticemail_add_contacts_list
Full name
elastic-email.elasticemail_add_contacts_to_list
ParameterTypeRequiredDescription
name string yes List name.
emails string yes Comma- or semicolon-separated email addresses.
elasticemail_api_get Read

Call any Elastic Email API v4 GET endpoint not covered by a first-class tool.

Lua path
app.integrations.elastic_email.elasticemail_api_get
Full name
elastic-email.elasticemail_api_get
ParameterTypeRequiredDescription
path string yes API path such as /domains or /security/apikeys.
params object no Query parameters.
elasticemail_api_post Read

Call an Elastic Email API v4 POST endpoint with a JSON payload.

Lua path
app.integrations.elastic_email.elasticemail_api_post
Full name
elastic-email.elasticemail_api_post
ParameterTypeRequiredDescription
path string yes API path such as /contacts/export.
payload object no JSON request payload.
elasticemail_create_contact Write

Create or add a contact in Elastic Email. Optionally assign the contact to an existing list.

Lua path
app.integrations.elastic_email.elasticemail_create_contact
Full name
elastic-email.elasticemail_create_contact
ParameterTypeRequiredDescription
email string yes Contact email address.
list_name string no Name of the list to add the contact to. The list must already exist in your Elastic Email account.
first_name string no Contact first name.
last_name string no Contact last name.
elasticemail_delete_contact Write

Delete an Elastic Email contact by email address.

Lua path
app.integrations.elastic_email.elasticemail_delete_contact
Full name
elastic-email.elasticemail_delete_contact
ParameterTypeRequiredDescription
email string yes Contact email address.
elasticemail_get_campaign Read

Get an Elastic Email campaign by name.

Lua path
app.integrations.elastic_email.elasticemail_get_campaign
Full name
elastic-email.elasticemail_get_campaign
ParameterTypeRequiredDescription
name string yes Campaign name.
elasticemail_get_campaign_statistics Read

Get statistics for an Elastic Email campaign by name.

Lua path
app.integrations.elastic_email.elasticemail_get_campaign_statistics
Full name
elastic-email.elasticemail_get_campaign_statistics
ParameterTypeRequiredDescription
name string yes Campaign name.
elasticemail_get_contact Read

Load a single Elastic Email contact by email address.

Lua path
app.integrations.elastic_email.elasticemail_get_contact
Full name
elastic-email.elasticemail_get_contact
ParameterTypeRequiredDescription
email string yes Contact email address.
elasticemail_get_status Read

Get delivery status for an Elastic Email transaction ID.

Lua path
app.integrations.elastic_email.elasticemail_get_status
Full name
elastic-email.elasticemail_get_email_status
ParameterTypeRequiredDescription
transaction_id string yes Transaction ID returned by send email.
elasticemail_get_list Read

Load an Elastic Email contact list by name.

Lua path
app.integrations.elastic_email.elasticemail_get_list
Full name
elastic-email.elasticemail_get_list
ParameterTypeRequiredDescription
name string yes List name.
elasticemail_get_statistics Read

Get account-wide Elastic Email statistics.

Lua path
app.integrations.elastic_email.elasticemail_get_statistics
Full name
elastic-email.elasticemail_get_statistics
ParameterTypeRequiredDescription
params object no Optional from and to dates.
elasticemail_get_template Read

Get details of a specific email template by name from Elastic Email.

Lua path
app.integrations.elastic_email.elasticemail_get_template
Full name
elastic-email.elasticemail_get_template
ParameterTypeRequiredDescription
id string yes The template name.
elasticemail_list_campaigns Read

List Elastic Email campaigns.

Lua path
app.integrations.elastic_email.elasticemail_list_campaigns
Full name
elastic-email.elasticemail_list_campaigns
ParameterTypeRequiredDescription
params object no Optional limit and offset.
elasticemail_list_contacts Read

List contacts from your Elastic Email account.

Lua path
app.integrations.elastic_email.elasticemail_list_contacts
Full name
elastic-email.elasticemail_list_contacts
ParameterTypeRequiredDescription
limit integer no Maximum number of contacts to return (default: 100).
offset integer no Offset for pagination (default: 0).
elasticemail_list_events Read

List events for a single Elastic Email transaction ID.

Lua path
app.integrations.elastic_email.elasticemail_list_events
Full name
elastic-email.elasticemail_list_email_events
ParameterTypeRequiredDescription
transaction_id string yes Transaction ID.
elasticemail_list_events Read

List Elastic Email events with optional filters.

Lua path
app.integrations.elastic_email.elasticemail_list_events
Full name
elastic-email.elasticemail_list_events
ParameterTypeRequiredDescription
params object no Optional from, to, eventTypes, limit, offset, channelName.
elasticemail_list_files Read

List files uploaded to Elastic Email.

Lua path
app.integrations.elastic_email.elasticemail_list_files
Full name
elastic-email.elasticemail_list_files
ParameterTypeRequiredDescription
No parameters.
elasticemail_list_list_contacts Read

List contacts in an Elastic Email contact list.

Lua path
app.integrations.elastic_email.elasticemail_list_list_contacts
Full name
elastic-email.elasticemail_list_list_contacts
ParameterTypeRequiredDescription
name string yes List name.
params object no Optional limit and offset.
elasticemail_list_lists Read

List Elastic Email contact lists.

Lua path
app.integrations.elastic_email.elasticemail_list_lists
Full name
elastic-email.elasticemail_list_lists
ParameterTypeRequiredDescription
params object no Optional limit and offset.
elasticemail_list_suppressions Read

List unsubscribes, bounces, or complaints from Elastic Email suppressions.

Lua path
app.integrations.elastic_email.elasticemail_list_suppressions
Full name
elastic-email.elasticemail_list_suppressions
ParameterTypeRequiredDescription
type string no unsubscribes, bounces, or complaints. Default: unsubscribes.
elasticemail_list_templates Read

List email templates available in your Elastic Email account.

Lua path
app.integrations.elastic_email.elasticemail_list_templates
Full name
elastic-email.elasticemail_list_templates
ParameterTypeRequiredDescription
limit integer no Maximum number of templates to return (default: 100).
offset integer no Offset for pagination (default: 0).
elasticemail_pause_campaign Write

Pause an Elastic Email campaign by name.

Lua path
app.integrations.elastic_email.elasticemail_pause_campaign
Full name
elastic-email.elasticemail_pause_campaign
ParameterTypeRequiredDescription
name string yes Campaign name.
elasticemail_remove_contacts_from_list Write

Remove one or more contacts from an Elastic Email list.

Lua path
app.integrations.elastic_email.elasticemail_remove_contacts_from_list
Full name
elastic-email.elasticemail_remove_contacts_from_list
ParameterTypeRequiredDescription
name string yes List name.
emails string yes Comma- or semicolon-separated email addresses.
elasticemail_send_bulk Write

Send a bulk email using the Elastic Email /emails endpoint with a full v4 payload.

Lua path
app.integrations.elastic_email.elasticemail_send_bulk
Full name
elastic-email.elasticemail_send_bulk_email
ParameterTypeRequiredDescription
payload object yes Elastic Email EmailMessageData payload.
elasticemail_send Write

Send a transactional email via Elastic Email. Provide the recipient address, subject, and HTML body.

Lua path
app.integrations.elastic_email.elasticemail_send
Full name
elastic-email.elasticemail_send_email
ParameterTypeRequiredDescription
to string yes Recipient email address. For multiple recipients, separate with semicolons.
subject string yes Email subject line.
body string yes HTML body content of the email.
from string no Sender email address (must be a verified sender in your Elastic Email account).
from_name string no Display name for the sender.
reply_to string no Reply-to email address.
cc string no CC recipients, separated by semicolons.
bcc string no BCC recipients, separated by semicolons.
elasticemail_update_contact Write

Update an Elastic Email contact by email address.

Lua path
app.integrations.elastic_email.elasticemail_update_contact
Full name
elastic-email.elasticemail_update_contact
ParameterTypeRequiredDescription
email string yes Contact email address.
payload object yes Contact payload fields to update.