> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Mailerlite MCP server

The Mailerlite MCP connector routes your AI agent's tool calls to Mailerlite's own MCP server through Scalekit. Each user signs in to Mailerlite once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 77 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Marketing, Automation, Communication
**Tools:** 77: 36 read, 23 write, 18 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=MAILERLITEMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Mailerlite MCP connection

   In **AgentKit > Connections**, create a Mailerlite MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Mailerlite MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'mailerlitemcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Mailerlite MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'mailerlitemcp_get_auth_status',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "mailerlitemcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Mailerlite MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="mailerlitemcp_get_auth_status",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'mailerlitemcp_build_custom_automation',
  toolInput: {
    steps: [],
    trigger_type: 'subscriber_joins_group',
  },
  connector: 'mailerlitemcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="mailerlitemcp_build_custom_automation",
    tool_input={
        "steps": [],
        "trigger_type": "subscriber_joins_group",
    },
    connection_name="mailerlitemcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `mailerlitemcp_build_custom_automation`

Build Custom Automation · Read-only

Validate an automation plan before creating it. Checks trigger type, steps, and optionally discovers matching resources.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `steps` (`array`, required): Planned automation steps in order
- `trigger_type` (`string`, required): The trigger type for the automation. One of: `subscriber_joins_group`, `form_completed`, `abandoned_cart`, `subscriber_joins_segment`.
- `resource_name` (`string`, optional): Optional resource name to search for (partial match)
- `resource_type` (`string`, optional): Resource type to look up. Defaults based on trigger: group for subscriber_joins_group, form for form_completed, shop for abandoned_cart, segment for subscriber_joins_segment. One of: `group`, `form`, `shop`, `segment`.

Example input: `{"steps":[],"trigger_type":"subscriber_joins_group"}`

### `mailerlitemcp_discover_automation_templates`

Discover Automation Templates · Read-only

Search and discover available automation templates by type and user intent.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `type` (`string`, required): Template type to retrieve. One of: `all`, `welcome`, `promotion`, `reminder`, `event`, `feedback`, `date`.
- `user_intent` (`string`, optional): The user's specific automation goal (e.g., welcome series, abandoned cart)

Example input: `{"type":"all"}`

### `mailerlitemcp_dry_run_automation`

Dry Run Automation · Read-only

Preview an automation flow by sending a test run to a specified email address.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_id` (`string`, required): ID of automation to test
- `test_email` (`string`, required): Email address for virtual test subscriber

Example input: `{"automation_id":"<automation_id>","test_email":"<test_email>"}`

### `mailerlitemcp_fetch`

Fetch · Read-only

Fetch a MailerLite resource by its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): Identifier returned from the search tool (e.g., "campaign:123", "group:456")

Example input: `{"id":"campaign:123"}`

### `mailerlitemcp_get_auth_status`

Get Auth Status · Read-only

Check the current authentication status and account details for the connected MailerLite account.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `mailerlitemcp_get_automation_activity`

Get Automation Activity · Read-only

Retrieve activity logs for an automation, filtered by date, status, or subscriber search.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_id` (`string`, required): The ID of the automation
- `status` (`string`, required): Filter by activity status. One of: `completed`, `active`, `canceled`, `failed`.
- `date_from` (`string`, optional): Filter from date (Y-m-d). For completed/canceled/failed statuses
- `date_to` (`string`, optional): Filter to date (Y-m-d). For completed/canceled/failed statuses
- `limit` (`integer`, optional): Number of results per page (default 10)
- `page` (`integer`, optional): Page number
- `scheduled_from` (`string`, optional): Filter scheduled from date (Y-m-d). For active status
- `scheduled_to` (`string`, optional): Filter scheduled to date (Y-m-d). For active status
- `search` (`string`, optional): Search by subscriber email

Example input: `{"automation_id":"<automation_id>","status":"completed"}`

### `mailerlitemcp_get_campaign`

Get Campaign · Read-only

Retrieve details for a specific campaign by its campaign ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign

Example input: `{"campaign_id":"<campaign_id>"}`

### `mailerlitemcp_get_campaign_link_recipients`

Get Campaign Link Recipients · Read-only

List subscribers who clicked a specific link in a campaign.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign
- `link_id` (`string`, required): The ID of the link
- `limit` (`string`, optional): Number of results per page (10, 25, 50, or 100)
- `order` (`string`, optional): Sort direction. One of: `asc`, `desc`.
- `order_by` (`string`, optional): Sort field. One of: `id`, `clicks_count`.
- `page` (`integer`, optional): Page number for pagination
- `search` (`string`, optional): Search by subscriber email

Example input: `{"campaign_id":"<campaign_id>","link_id":"<link_id>"}`

### `mailerlitemcp_get_campaign_links`

Get Campaign Links · Read-only

List all tracked links for a campaign.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign

Example input: `{"campaign_id":"<campaign_id>"}`

### `mailerlitemcp_get_campaign_subscribers`

Get Campaign Subscribers · Read-only

List subscribers for a campaign, filtered by activity type (opened, clicked, bounced, etc.).

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign
- `limit` (`integer`, optional): Number of results (allowed values: 10, 25, 50, 100)
- `page` (`integer`, optional): Page number for pagination
- `search` (`string`, optional): Search by subscriber email
- `sort` (`string`, optional): Sort field. One of: `id`, `updated_at`, `clicks_count`, `opens_count`.
- `type` (`string`, optional): Filter by activity type. One of: `opened`, `unopened`, `clicked`, `unsubscribed`, `forwarded`, `hardbounced`, `softbounced`, `junk`.

Example input: `{"campaign_id":"<campaign_id>"}`

### `mailerlitemcp_get_dashboard_link`

Get Dashboard Link · Read-only

Get a direct link to a MailerLite dashboard resource (automation or other context).

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_id` (`string`, required): Automation ID
- `context` (`string`, optional): What the user needs to edit (e.g., "design email", "edit automation")

Example input: `{"automation_id":"<automation_id>"}`

### `mailerlitemcp_get_form`

Get Form · Read-only

Retrieve details for a specific signup form by its form ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `form_id` (`string`, required): The ID of the form

Example input: `{"form_id":"<form_id>"}`

### `mailerlitemcp_get_form_subscribers`

Get Form Subscribers · Read-only

List subscribers who signed up through a specific form.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `form_id` (`string`, required): The ID of the form
- `filter` (`string`, optional): Filter subscribers
- `limit` (`integer`, optional): Number of subscribers to return (1-100)
- `page` (`integer`, optional): Page number for pagination

Example input: `{"form_id":"<form_id>"}`

### `mailerlitemcp_get_group_subscribers`

Get Group Subscribers · Read-only

List subscribers in a specific group, with optional cursor-based pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): The ID of the group
- `cursor` (`string`, optional): Cursor for pagination
- `limit` (`integer`, optional): Number of subscribers to return (1-100)

Example input: `{"group_id":"<group_id>"}`

### `mailerlitemcp_get_more_tools`

Get More Tools · Read-only

Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `context` (`string`, required): A description of your goal and what kind of tool would help accomplish it.

Example input: `{"context":"design email"}`

### `mailerlitemcp_get_segment`

Get Segment · Read-only

Retrieve details for a specific segment by its segment ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `segment_id` (`string`, required): The ID of the segment

Example input: `{"segment_id":"<segment_id>"}`

### `mailerlitemcp_get_segment_subscribers`

Get Segment Subscribers · Read-only

List subscribers matching a segment, with cursor pagination and status filtering.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `segment_id` (`string`, required): The ID of the segment
- `cursor` (`string`, optional): Cursor for pagination
- `limit` (`integer`, optional): Number of subscribers to return (1-100)
- `status` (`string`, optional): Filter by subscriber status. One of: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk`.

Example input: `{"segment_id":"<segment_id>"}`

### `mailerlitemcp_get_subscriber`

Get Subscriber · Read-only

Retrieve a subscriber's full profile by their subscriber ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `subscriber_id` (`string`, required): The ID or email of the subscriber

Example input: `{"subscriber_id":"<subscriber_id>"}`

### `mailerlitemcp_get_subscriber_activity`

Get Subscriber Activity · Read-only

Retrieve recent activity events for a subscriber (opens, clicks, etc.).

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `subscriber_id` (`string`, required): The ID or email of the subscriber

Example input: `{"subscriber_id":"<subscriber_id>"}`

### `mailerlitemcp_get_subscriber_count`

Get Subscriber Count · Read-only

Get the total count of subscribers in your MailerLite account.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `mailerlitemcp_get_webhook`

Get Webhook · Read-only

Retrieve details for a specific webhook by its webhook ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `webhook_id` (`string`, required): The ID of the webhook

Example input: `{"webhook_id":"<webhook_id>"}`

### `mailerlitemcp_list_automations`

List Automations · Read-only

List all automations in the account, with optional filtering to enabled automations only.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `enabled_only` (`boolean`, optional): Only show enabled automations
- `limit` (`number`, optional): Maximum number of automations to return. Default: `50`.

Example input: `{}`

### `mailerlitemcp_list_campaigns`

List Campaigns · Read-only

List campaigns in the account, with filtering by status and type.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Cursor for pagination
- `limit` (`integer`, optional): Number of campaigns to return (allowed values: 1, 10, 25, 50, 100)
- `status` (`string`, optional): Filter by campaign status. One of: `draft`, `ready`, `sent`.
- `type` (`string`, optional): Filter by campaign type. One of: `regular`, `ab`, `resend`, `multivariate`.

Example input: `{}`

### `mailerlitemcp_list_email_templates`

List Email Templates · Read-only

List available email templates with optional search and pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`number`, optional): Maximum number of templates to return (default: 10). Default: `10`.
- `search` (`string`, optional): Search filter for template names

Example input: `{}`

### `mailerlitemcp_list_fields`

List Fields · Read-only

List all custom subscriber fields with optional filtering and sorting.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `keyword` (`string`, optional): Filter by keyword
- `limit` (`integer`, optional): Number of fields to return
- `page` (`integer`, optional): Page number
- `sort` (`string`, optional): Sort field
- `type` (`string`, optional): Filter by field type. One of: `text`, `number`, `date`.

Example input: `{}`

### `mailerlitemcp_list_form_templates`

List Form Templates · Read-only

List available form templates, filtered by form type.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `type` (`string`, required): Form template type. One of: `popup`, `promotion`, `embedded`.
- `limit` (`integer`, optional): Number of templates to return (default: 25)

Example input: `{"type":"popup"}`

### `mailerlitemcp_list_forms`

List Forms · Read-only

List all signup forms with optional filtering by name, type, and sorting.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `type` (`string`, required): The type of forms to list. One of: `popup`, `embedded`, `promotion`.
- `limit` (`integer`, optional): Number of forms to return (1-100)
- `name` (`string`, optional): Filter by form name
- `page` (`integer`, optional): Page number for pagination
- `sort` (`string`, optional): Sort field

Example input: `{"type":"popup"}`

### `mailerlitemcp_list_resources`

List Resources · Read-only

List MailerLite resources (groups, forms, segments, or shops) with optional name filtering.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `resource_type` (`string`, required): Type of resource to list (singular: group, form, shop, or segment). One of: `group`, `form`, `shop`, `segment`.
- `name_filter` (`string`, optional): Optional filter by name (partial match)

Example input: `{"resource_type":"group"}`

### `mailerlitemcp_list_segments`

List Segments · Read-only

List all dynamic segments with pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of segments to return (1-100)
- `page` (`integer`, optional): Page number for pagination

Example input: `{}`

### `mailerlitemcp_list_subscribers`

List Subscribers · Read-only

List subscribers with cursor-based pagination, status filtering, and limit control.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Cursor for pagination
- `limit` (`integer`, optional): Number of subscribers to return (1-100, default 25)
- `status` (`string`, optional): Filter by subscriber status. One of: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk`.

Example input: `{}`

### `mailerlitemcp_list_webhooks`

List Webhooks · Read-only

List all configured webhooks in the account.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `mailerlitemcp_search`

Search · Read-only

Search across MailerLite subscribers and groups by query string.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Text to search for across MailerLite resources
- `limit` (`integer`, optional): Maximum number of results to return (default 10)

Example input: `{"query":"<query>"}`

### `mailerlitemcp_select_resource`

Select Resource · Read-only

Select a specific MailerLite resource by ID and type for use in an automation workflow.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `resource_id` (`string`, required): The ID of the selected resource
- `resource_name` (`string`, required): The name of the selected resource
- `resource_type` (`string`, required): The type of the selected resource. One of: `group`, `form`, `shop`, `segment`.

Example input: `{"resource_id":"<resource_id>","resource_name":"<resource_name>","resource_type":"group"}`

### `mailerlitemcp_start_automation_conversation`

Start Automation Conversation · Read-only

Start a guided conversation to help build an automation from a natural language request.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `user_request` (`string`, required): What the user asked for

Example input: `{"user_request":"<user_request>"}`

### `mailerlitemcp_validate_email_content`

Validate Email Content · Read-only

Validate email content (subject and body) against MailerLite best practices. Provide the subject and plain_text you have drafted, and this tool will check for issues like subject length, spam trigger words, missing call-to-action, and body length limits.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `plain_text` (`string`, required): The plain text email body to validate
- `subject` (`string`, required): The email subject line to validate

Example input: `{"plain_text":"<plain_text>","subject":"<subject>"}`

### `mailerlitemcp_validate_subject_lines`

Validate Subject Lines · Read-only

Validate a list of email subject line candidates against MailerLite best practices. Provide subject lines you have drafted, and this tool will check each one for length, spam trigger words, and other issues.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `subject_lines` (`array`, required): Array of subject line candidates to validate

Example input: `{"subject_lines":[]}`

### `mailerlitemcp_add_subscriber`

Add Subscriber · Write

Add a new subscriber to your MailerLite account, optionally assigning them to groups and setting custom fields.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): The email address of the subscriber
- `fields` (`object`, optional): Custom fields for the subscriber
- `groups` (`array`, optional): Group IDs to add the subscriber to
- `name` (`string`, optional): The name of the subscriber
- `resubscribe` (`boolean`, optional): Whether to resubscribe a previously unsubscribed subscriber
- `status` (`string`, optional): Subscriber status (default: active). One of: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk`.

Example input: `{"email":"<email>"}`

### `mailerlitemcp_assign_subscriber_to_group`

Assign Subscriber To Group · Write

Add an existing subscriber to a MailerLite group by subscriber ID and group ID.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): The ID of the group
- `subscriber_id` (`string`, required): The ID or email of the subscriber

Example input: `{"group_id":"<group_id>","subscriber_id":"<subscriber_id>"}`

### `mailerlitemcp_batch_requests`

Batch Requests · Write

Execute up to 50 MailerLite API requests in a single batch call. Webhooks are not supported.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `requests` (`array`, required): Array of API requests to execute (max 50)

Example input: `{"requests":[]}`

### `mailerlitemcp_cancel_campaign`

Cancel Campaign · Write

Cancel a scheduled or delivering campaign by its campaign ID.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign to cancel

Example input: `{"campaign_id":"<campaign_id>"}`

### `mailerlitemcp_create_campaign`

Create Campaign · Write

Create a new email campaign. The sender email must be a verified sender on your MailerLite account.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `from` (`string`, required): The sender email address (must be verified on the MailerLite account)
- `from_name` (`string`, required): The sender name
- `name` (`string`, required): The name of the campaign
- `subject` (`string`, required): The email subject line
- `type` (`string`, required): The type of campaign. One of: `regular`, `ab`, `resend`, `multivariate`.
- `content` (`string`, optional): The HTML content of the email (optional - can be designed in dashboard)
- `groups` (`array`, optional): Group IDs to send to
- `reply_to` (`string`, optional): Reply-to email address

Example input: `{"from":"<from>","from_name":"<from_name>","name":"<name>","subject":"<subject>","type":"regular"}`

### `mailerlitemcp_create_field`

Create Field · Write

Create a new custom subscriber field for storing additional subscriber data.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the field
- `type` (`string`, required): The type of the field. One of: `text`, `number`, `date`.

Example input: `{"name":"<name>","type":"text"}`

### `mailerlitemcp_create_form`

Create Form · Write

Create a new signup form (popup, embedded, or promotion) linked to one or more groups.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `groups` (`array`, required): Group IDs to assign new subscribers to (required, at least one)
- `name` (`string`, required): The name of the form
- `type` (`string`, required): The type of form to create. One of: `popup`, `embedded`, `promotion`.

Example input: `{"groups":[],"name":"<name>","type":"popup"}`

### `mailerlitemcp_create_group`

Create Group · Write

Create a new subscriber group to organize your mailing list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the group

Example input: `{"name":"<name>"}`

### `mailerlitemcp_create_segment`

Create Segment · Write

Create a new dynamic segment based on subscriber filter conditions.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the segment
- `filter` (`object`, optional): Filter rules object. Format: {"rules": [[{"operator": "text_field_contains", "args": ["field_id", "value"]}]]}. Inner arrays are AND groups, outer array is OR between groups. Omit to create a segment without filters (can be configured in dashboard).

Example input: `{"name":"<name>"}`

### `mailerlitemcp_create_webhook`

Create Webhook · Write

Create a webhook to receive real-time event notifications from MailerLite.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `events` (`array`, required): Webhook events to subscribe to
- `url` (`string`, required): The URL to send webhook payloads to
- `batchable` (`boolean`, optional): Required as true for campaign.open, campaign.click, and subscriber.deleted events
- `enabled` (`boolean`, optional): Whether the webhook is enabled
- `name` (`string`, optional): A name for the webhook

Example input: `{"events":[],"url":"<url>"}`

### `mailerlitemcp_import_subscribers_to_group`

Import Subscribers To Group · Write

Bulk-import multiple subscribers into a group in one request.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): The ID of the group to import to
- `subscribers` (`array`, required): Array of subscribers to import
- `autoresponders` (`boolean`, optional): Whether to trigger autoresponders
- `resubscribe` (`boolean`, optional): Whether to resubscribe previously unsubscribed subscribers

Example input: `{"group_id":"<group_id>","subscribers":[]}`

### `mailerlitemcp_schedule_campaign`

Schedule Campaign · Write

Schedule a campaign for immediate or future delivery. Use delivery 'instant' to send now.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign to schedule
- `delivery` (`string`, required): Delivery type: "instant" sends now, "scheduled" sends at a specific time, "timezone_based" sends per subscriber timezone, "smart_sending" uses AI-optimized send times. One of: `instant`, `scheduled`, `timezone_based`, `smart_sending`.
- `schedule` (`object`, optional): Schedule details — required when delivery is "scheduled" or "timezone_based"

Example input: `{"campaign_id":"<campaign_id>","delivery":"instant"}`

### `mailerlitemcp_send_test_automation`

Send Test Automation · Write

Send a test run of an automation to a specified email address.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `automation_id` (`string`, required): ID of automation to test
- `email` (`string`, required): Your email address to receive the test emails

Example input: `{"automation_id":"<automation_id>","email":"<email>"}`

### `mailerlitemcp_unassign_subscriber_from_group`

Unassign Subscriber From Group · Write

Remove a subscriber from a group by subscriber ID and group ID.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): The ID of the group
- `subscriber_id` (`string`, required): The ID or email of the subscriber

Example input: `{"group_id":"<group_id>","subscriber_id":"<subscriber_id>"}`

### `mailerlitemcp_update_automation_delay`

Update Automation Delay · Write

Update the delay duration and unit for a specific step in an automation.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `automation_id` (`string`, required): Automation ID
- `step_index` (`number`, required): Delay step index (0-based, only counts delay steps)
- `unit` (`string`, required): Delay duration unit. One of: `minutes`, `hours`, `days`.
- `value` (`number`, required): Delay duration value (must be positive)

Example input: `{"automation_id":"<automation_id>","step_index":1,"unit":"minutes","value":1}`

### `mailerlitemcp_update_automation_email`

Update Automation Email · Write

Update the subject and plain text content for an email step in an automation.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `automation_id` (`string`, required): Automation ID
- `step_index` (`number`, required): Email step index (0-based, only counts email steps)
- `subject` (`string`, required): Email subject line
- `plain_text` (`string`, optional): Plain text email content

Example input: `{"automation_id":"<automation_id>","step_index":1,"subject":"<subject>"}`

### `mailerlitemcp_update_campaign`

Update Campaign · Write

Update the name, subject, sender, or content of an existing campaign.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign to update
- `content` (`string`, optional): New HTML content
- `from` (`string`, optional): New sender email
- `from_name` (`string`, optional): New sender name
- `name` (`string`, optional): New campaign name
- `subject` (`string`, optional): New email subject

Example input: `{"campaign_id":"<campaign_id>"}`

### `mailerlitemcp_update_field`

Update Field · Write

Rename a custom subscriber field.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `field_id` (`string`, required): The ID of the field to update
- `name` (`string`, required): The new name for the field

Example input: `{"field_id":"<field_id>","name":"<name>"}`

### `mailerlitemcp_update_form`

Update Form · Write

Update the name of an existing signup form.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `form_id` (`string`, required): The ID of the form to update
- `name` (`string`, optional): New name for the form

Example input: `{"form_id":"<form_id>"}`

### `mailerlitemcp_update_group`

Update Group · Write

Rename an existing subscriber group.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): The ID of the group to update
- `name` (`string`, required): The new name for the group

Example input: `{"group_id":"<group_id>","name":"<name>"}`

### `mailerlitemcp_update_segment`

Update Segment · Write

Update the name of an existing segment.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): New name for the segment
- `segment_id` (`string`, required): The ID of the segment to update

Example input: `{"name":"<name>","segment_id":"<segment_id>"}`

### `mailerlitemcp_update_subscriber`

Update Subscriber · Write

Update an existing subscriber's name, status, or custom fields.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `subscriber_id` (`string`, required): The ID or email of the subscriber
- `fields` (`object`, optional): Custom fields to update
- `name` (`string`, optional): The new name for the subscriber

Example input: `{"subscriber_id":"<subscriber_id>"}`

### `mailerlitemcp_update_webhook`

Update Webhook · Write

Update the configuration of an existing webhook.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `webhook_id` (`string`, required): The ID of the webhook to update
- `batchable` (`boolean`, optional): Required as true for campaign.open, campaign.click, and subscriber.deleted events
- `enabled` (`boolean`, optional): Whether the webhook is enabled
- `events` (`array`, optional): Webhook events to subscribe to
- `name` (`string`, optional): A name for the webhook
- `url` (`string`, optional): The URL to send webhook payloads to

Example input: `{"webhook_id":"<webhook_id>"}`

### `mailerlitemcp_create_automation`

Create Automation · Destructive

Create a new automation workflow with a trigger type, trigger config, and ordered steps (email or delay).

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name for the automation
- `steps` (`array`, required): Steps in order (email or delay)
- `trigger_config` (`object`, required): Trigger configuration (group_ids for subscriber_joins_group, segment_id for subscriber_joins_segment, form_id for form_completed, shop_id for abandoned_cart)
- `trigger_type` (`string`, required): Trigger type. One of: `subscriber_joins_group`, `form_completed`, `abandoned_cart`, `subscriber_joins_segment`, `subscriber_updated`, `subscriber_added_via_api`, `date_anniversary`, `link_click`, `campaign_opened`, `campaign_finished`.

Example input: `{"name":"<name>","steps":[],"trigger_config":{},"trigger_type":"subscriber_joins_group"}`

### `mailerlitemcp_delete_automation`

Delete Automation · Destructive

Permanently delete an automation workflow by its automation ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `automation_id` (`string`, required): The ID of the automation to delete

Example input: `{"automation_id":"<automation_id>"}`

### `mailerlitemcp_delete_campaign`

Delete Campaign · Destructive

Permanently delete a campaign by its campaign ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): The ID of the campaign to delete

Example input: `{"campaign_id":"<campaign_id>"}`

### `mailerlitemcp_delete_field`

Delete Field · Destructive

Delete a custom subscriber field by its field ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `field_id` (`string`, required): The ID of the field to delete

Example input: `{"field_id":"<field_id>"}`

### `mailerlitemcp_delete_form`

Delete Form · Destructive

Delete a signup form by its form ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `form_id` (`string`, required): The ID of the form to delete

Example input: `{"form_id":"<form_id>"}`

### `mailerlitemcp_delete_group`

Delete Group · Destructive

Delete a subscriber group by its group ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): The ID of the group to delete

Example input: `{"group_id":"<group_id>"}`

### `mailerlitemcp_delete_segment`

Delete Segment · Destructive

Delete a dynamic segment by its segment ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `segment_id` (`string`, required): The ID of the segment to delete

Example input: `{"segment_id":"<segment_id>"}`

### `mailerlitemcp_delete_subscriber`

Delete Subscriber · Destructive

Permanently delete a subscriber by their subscriber ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `subscriber_id` (`string`, required): The ID or email of the subscriber to delete

Example input: `{"subscriber_id":"<subscriber_id>"}`

### `mailerlitemcp_delete_webhook`

Delete Webhook · Destructive

Delete a webhook by its webhook ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `webhook_id` (`string`, required): The ID of the webhook to delete

Example input: `{"webhook_id":"<webhook_id>"}`

### `mailerlitemcp_install_template`

Install Template · Destructive

Install a MailerLite email template into your account by template ID.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `template_id` (`string`, required): ID of template to install

Example input: `{"template_id":"<template_id>"}`

### `mailerlitemcp_manage_ecommerce_cart_items`

Manage E-commerce Cart Items · Destructive

List, fetch, create, update or delete the line items of a cart. Requires `shop_id` and `cart_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, create, update, delete. One of: `list`, `get`, `create`, `update`, `delete`.
- `cart_id` (`string`, required): Parent cart id (required for all actions)
- `shop_id` (`string`, required): Parent shop id (required for all actions)
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for create and update actions. Fields: ecommerce_product_id (integer, required), variant (string), quantity (integer, default 1), price (float)
- `id` (`string`, optional): Resource id — required for get, update and delete actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list","cart_id":"<cart_id>","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_carts`

Manage E-commerce Carts · Destructive

List, fetch or update shopping carts within a shop (carts cannot be created or deleted via the API). Requires `shop_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, update. One of: `list`, `get`, `update`.
- `shop_id` (`string`, required): Parent shop id (required for all actions)
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for update actions. Fields: checkout_url (string), cart_total (float)
- `id` (`string`, optional): Resource id — required for get and update actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_categories`

Manage E-commerce Categories · Destructive

List, fetch, create, update, delete or bulk-import product categories within a shop. Requires `shop_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, create, update, delete, import. One of: `list`, `get`, `create`, `update`, `delete`, `import`.
- `shop_id` (`string`, required): Parent shop id (required for all actions)
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for create, update and import actions. Fields: name (string, required), exclude_from_automations (boolean)
- `id` (`string`, optional): Resource id — required for get, update and delete actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_category_products`

Manage E-commerce Category Products · Destructive

List the products in a category, or attach/detach a product to/from a category. Requires `shop_id` and `category_id`; attach/detach also require `product_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation: list, attach, detach. One of: `list`, `attach`, `detach`.
- `category_id` (`string`, required): Category id
- `shop_id` (`string`, required): Parent shop id
- `cursor` (`string`, optional): Pagination cursor for list
- `limit` (`integer`, optional): Page size for list (1-100)
- `product_id` (`string`, optional): Product id — required for attach and detach

Example input: `{"action":"list","category_id":"<category_id>","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_customers`

Manage E-commerce Customers · Destructive

List, fetch, create, update or delete customers within a shop. Requires `shop_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, create, update, delete. One of: `list`, `get`, `create`, `update`, `delete`.
- `shop_id` (`string`, required): Parent shop id (required for all actions)
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for create and update actions. Fields: email (string, required), accepts_marketing (boolean), total_spent (float), create_subscriber (boolean)
- `id` (`string`, optional): Resource id — required for get, update and delete actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_orders`

Manage E-commerce Orders · Destructive

List, fetch, create, update, delete or bulk-import orders within a shop. Requires `shop_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, create, update, delete, import. One of: `list`, `get`, `create`, `update`, `delete`, `import`.
- `shop_id` (`string`, required): Parent shop id (required for all actions)
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for create and update actions. Fields: customer (object, required, see customer fields), cart (array, required, list of cart items), status (string, pending|complete), total_price (float)
- `id` (`string`, optional): Resource id — required for get, update and delete actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_products`

Manage E-commerce Products · Destructive

List, fetch, create, update, delete or bulk-import products within a shop. Requires `shop_id`.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, create, update, delete, import. One of: `list`, `get`, `create`, `update`, `delete`, `import`.
- `shop_id` (`string`, required): Parent shop id (required for all actions)
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for create, update and import actions. Fields: name (string, required), price (float), url (string), image (string, image url), short_description (string, max 255), description (string), exclude_from_automations (boolean)
- `id` (`string`, optional): Resource id — required for get, update and delete actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list","shop_id":"<shop_id>"}`

### `mailerlitemcp_manage_ecommerce_shops`

Manage E-commerce Shops · Destructive

List, fetch, create, update or delete MailerLite e-commerce shops. Use `id` as the shop id for get/update/delete.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Operation to perform: list, get, create, update, delete. One of: `list`, `get`, `create`, `update`, `delete`.
- `cursor` (`string`, optional): Pagination cursor for list
- `data` (`object`, optional): Request body for create and update actions. Fields: name (string, required), url (string, required), currency (string, required, ISO 4217 e.g. EUR), platform (string), group_id (integer), enable_popups (boolean), enabled (boolean), access_data (string)
- `id` (`string`, optional): Resource id — required for get, update and delete actions
- `limit` (`integer`, optional): Page size for list (1-100)

Example input: `{"action":"list"}`

## Related

Other Marketing connectors ([all 59](/agentkit/connectors/?category=marketing)):

- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Mailchimp](/agentkit/connectors/mailchimp/): Scalekit connector, OAuth, 73 tools
- [Twitter / X](/agentkit/connectors/twitteroauth/): Scalekit connector, OAuth, 92 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
