add_automation_step
ChatGPTAdd a new email or delay step to an EXISTING automation. By default the step is appended at the end of the flow; pass after_step_id to insert it right after a specific step instead (get step ids from dry_run_automation). IMPORTANT: like create_automation, an email step's HTML content cannot be authored via the API — design it in the dashboard, or set the subject/content afterwards with update_automation_email / update_automation_email_content. The automation must be disabled to add steps.
add_subscriber
ChatGPTCreate a MailerLite subscriber, or update an existing subscriber with the same email. It can also change status, group membership, and resubscribe a previously unsubscribed subscriber.
assign_subscriber_to_group
ChatGPTAdd a subscriber to a group. If no subscriber matches the ID/email or no group matches the ID, this returns a normal (non-error) result with found: false rather than failing — a missing subscriber or group is an expected outcome, not a tool error.
batch_requests
ChatGPTExecute multiple MailerLite API requests in a single call. Requests may create, overwrite, or delete account data depending on their HTTP methods. Maximum 50 requests per batch. Paths must start with "api/". Webhooks are not supported in batch requests.
build_custom_automation
ChatGPTValidate an automation plan and discover the resources it needs BEFORE creating it. This is a dry validation step and does NOT create anything. Args: - trigger_type (enum): subscriber_joins_group | form_completed | abandoned_cart | subscriber_joins_segment. - steps (array): Planned steps in order; each { type: "email" | "delay", email_subject?, delay_value?, delay_unit? }. - resource_type (enum, optional): group | form | shop | segment. Defaults based on trigger_type. - resource_name (string, optional): Partial-match filter for the resource lookup. Returns: { valid, warnings[], complexity, available_resources[], resource_type }. warnings flag issues (missing subjects, emails too close together, no matching resource); available_resources lists the IDs to wire into create_automation's trigger_config. Examples: - Check a 3-email welcome flow and get the group IDs before calling create_automation. - Resolve any warnings, then call create_automation.
cancel_campaign
ChatGPTCancel a scheduled campaign
copy_automation_step
ChatGPTDuplicate a step, with its configuration, and insert the copy into the workflow. By default the copy becomes the first step; pass parent_id to place it after a specific step instead. The automation must be disabled and under its step limit.
create_automation
ChatGPTCreate a new automation workflow in MailerLite, including its trigger and an ordered list of email and delay steps. IMPORTANT: This creates real resources. Email steps are created without HTML content — use update_automation_email_content to author the HTML body via the API, or design each email in the MailerLite visual editor. The new automation is left inactive. Args: - name (string): Automation name. - trigger_type (enum): What starts the automation (e.g. subscriber_joins_group, form_completed, abandoned_cart, subscriber_joins_segment). - trigger_config (object): Trigger-specific IDs — group_ids for subscriber_joins_group, segment_id for subscriber_joins_segment, form_id (+ form_type) for form_completed, shop_id for abandoned_cart. Look IDs up first with list_resources. - steps (array): Ordered steps; each is { type: "email" | "delay" }. Email steps take email_subject; delay steps take delay_value and delay_unit. Returns: a structured result with automation_id, dashboard_url, steps_created, email_steps_count, and next_steps guidance. Examples: - Welcome series: trigger_type="subscriber_joins_group", trigger_config={ group_ids: ["123"] }, steps=[{ type: "email", email_subject: "Welcome" }, { type: "delay", delay_value: 2, delay_unit: "days" }, { type: "email", email_subject: "Getting started" }]. - Validate the plan with build_custom_automation and confirm IDs with list_resources first.
create_campaign
ChatGPTCreate a new email campaign. The "from" email must be a verified sender on the account — this is verified automatically before the campaign is created; check Settings > Domains in the MailerLite dashboard if you need to add or verify a sender.
create_field
ChatGPTCreate a new custom subscriber field
create_form
ChatGPTCreate a new signup form. Requires at least one group ID — use list_resources with resource_type "group" to find available groups first. Do not guess or invent group IDs.
create_group
ChatGPTCreate a new subscriber group
create_segment
ChatGPTCreate a new subscriber segment, with or without filter rules. Filter format: [[{"operator": "...", "args": [...]}]] — an array of AND groups; groups are OR'd together. Do NOT wrap it in a {"rules": [...]} object. Reference for common operators (args[0] is always the field): - in_last / not_in_last — args: [field, N, unit]; unit is one of y,M,w,d,h,m,s. field: subscribed_at, last_sent_at, last_activity_at, last_open_at, last_click_at, created_at. Example — opened in the last 90 days: ["last_open_at", 90, "d"] - less / greater — args: [field, value]. field: opens_count, clicks_count, sent, open_rate, click_rate. Example — click rate under 20%: ["click_rate", 20] - equals — args: [field, value]. field: source, opens_count, clicks_count, sent, timezone_id, open_rate, click_rate, location.country_code - doesnt_equal — args: [field, value]. field: source, timezone_id, location.country_code - in_any / not_in_any — args: [field, value | [values]]. field: groups, campaigns.sent/opened/clicked/delivered, automations.active/completed (not_in_any also allows automations.all), ecommerce.purchased_products.product_id/variant_id, location.country_code - in_all / not_in_all — args: [field, [values]]. field: groups only - is_set — args: [field] (no value). field: campaigns.sent/opened/clicked/delivered, timezone_id, location.country_code, automations.active/completed - is_not_set — args: [field] (no value). field: groups, campaigns.sent/opened/clicked/delivered, timezone_id, location.country_code, automations.active/completed/all, ecommerce.purchased_products.product_id - before / after — args: [field, date]. field: subscribed_at, created_at - matches / doesnt_match / contains / doesnt_contain — args: [field, value]. field: email only - text_field_contains/doesnt_contain/equals/doesnt_equal, numeric_field_less/less_or_equal/greater/greater_or_equal/equals/doesnt_equal, date_field_less/less_or_equal/greater/greater_or_equal/equals/doesnt_equal/in_last/after_interval, field_is_set/field_is_not_set — for CUSTOM fields only; args[0] is the field's ID from list_fields, as a STRING (e.g. "5", not 5) Example — opened in the last 90 days AND click rate under 20%: [[{"operator": "in_last", "args": ["last_open_at", 90, "d"]}, {"operator": "less", "args": ["click_rate", 20]}]] An invalid operator/field pairing is rejected locally with the valid options before the API is called. Omit filter to create a name-only segment and configure rules later in the dashboard.
create_webhook
ChatGPTCreate a new webhook. Events requiring batchable=true: campaign.open, campaign.click, subscriber.deleted
delete_automation
ChatGPTDelete an automation
delete_automation_step
ChatGPTDelete a step from an automation's workflow. For condition or A/B test steps, branch_to_delete says what happens to the branches below it: "all" removes every branch, or "yes"/"no"/"a_path"/"b_path"/"c_path" keeps that one branch and reattaches it in the step's place. A step that another step depends on — the target of a "go to step" action, of a condition, or of a delay's "continue from chosen step" — cannot be deleted until that reference is removed. The automation must be disabled.
delete_campaign
ChatGPTDelete a campaign
delete_field
ChatGPTDelete a custom subscriber field
delete_form
ChatGPTDelete a form
delete_group
ChatGPTDelete a subscriber group
delete_segment
ChatGPTDelete a segment.
delete_subscriber
ChatGPTDelete a subscriber from the account. If no subscriber matches the ID, this returns a normal (non-error) result with success: false rather than failing — a missing subscriber is an expected outcome, not a tool error.
delete_webhook
ChatGPTDelete a webhook
discover_automation_templates
ChatGPTBrowse pre-built automation workflow templates, optionally matched to a user's goal. Returns each template's id, name, trigger, and step flow. Args: - type (enum): all | welcome | promotion | reminder | event | feedback | date. - user_intent (string, optional): The user's goal (e.g. "abandoned cart") used for keyword matching against template names/descriptions. Returns: { templates: [{ id, name, trigger_label, complexity, email_count, total_duration, steps[], steps_are_sample }], matched, match_method }. When a template has no real step data from the API, "steps" is filled with an illustrative sample flow and "steps_are_sample" is set to true. Examples: - "show me welcome templates" -> type="welcome". - To create an automation from a result, pass its numeric id to install_template.
dry_run_automation
ChatGPTSimulate automation flow without sending real emails.
fetch
ChatGPTFetch the full record for a single MailerLite resource using an identifier returned by the search tool. Always call search first to obtain this id — never guess or fabricate one. Args: - id (string, required): A prefixed identifier from search results formatted "<kind>:<id>" where kind is campaign, group, form, automation, or segment (e.g. "campaign:123"). Alternatively, a bare id (no prefix) if "type" is also given. - type (string, optional): One of campaign, group, form, automation, segment. Required only when "id" is a bare id without a "<kind>:" prefix. Returns: { "id": string, "title": string, "text": string, "url": string, "metadata": object }. "text" is the full resource serialized as JSON; "metadata" carries kind-specific summary fields (e.g. status/type for campaigns, active_count for groups). Examples: - After search returns "automation:012" -> fetch with id="automation:012". - If you already have a bare numeric id and know its kind -> fetch with id="123", type="group". - An id without a "<kind>:" prefix and no "type" argument, an unsupported kind, or an id that matches nothing returns an actionable error telling you to call search first.
get_auth_status
ChatGPTGet current authentication status for this MailerLite connection.
get_automation_activity
ChatGPTGet activity log for an automation. Filter by status (completed, active, canceled, failed), date range, and subscriber email.
get_campaign
ChatGPTGet details of a specific campaign. If no campaign matches the ID, this returns a normal (non-error) result with found: false rather than failing — a missing campaign is an expected outcome, not a tool error.
get_campaign_link_recipients
ChatGPTGet subscribers who clicked a specific link in a campaign.
get_campaign_links
ChatGPTGet all tracked links in a sent campaign, including their IDs, URLs, and click counts.
get_campaign_subscribers
ChatGPTGet subscriber activity for a sent campaign (opens, clicks, etc.). Results are page-paginated — increment the page number to fetch more results.
get_dashboard_link
ChatGPTGenerate a MailerLite dashboard URL for a resource, or for an account-level settings destination. resource_type: "automation", "campaign", "form", or "segment" (each needs resource_id); "group" (with resource_id, links to that group's filtered subscriber list; without it, links to the groups list); or one of the settings_ types — "settings_domains" (domain/sender verification), "settings_account" (company profile, postal address), "settings_api" (API keys), "settings_billing" (subscription, plan, invoices), "settings_security" (two-factor authentication enforcement), "settings_profile" (password, name, photo, email, language, newsletter — on the SSO account profile), "settings_team" (team members), "settings_webhooks" (webhook management), "settings_notifications" (email notifications), "settings_integrations" (integrations overview), "settings_subscribe" (double opt-in settings), "settings_unsubscribe" (unsubscribe page), "settings_preference_center" (subscriber preference center), "settings_brand_styles" (brand styles) — none of the settings_ types need resource_id.
get_form
ChatGPTGet details of a specific form
get_form_subscribers
ChatGPTGet subscribers who signed up via a specific form. Results are page-paginated — increment the page number to fetch more results.
get_group_subscribers
ChatGPTGet subscribers in a specific group. Results are cursor-paginated — pass the cursor from the previous response to fetch the next page. If no group matches the ID, this returns a normal (non-error) result with found: false rather than failing — a missing group is an expected outcome, not a tool error.
get_more_tools
ChatGPTCheck for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.
get_segment
ChatGPTGet details of a specific segment
get_segment_subscribers
ChatGPTGet subscribers belonging to a specific segment. Results are cursor-paginated — pass the cursor from the previous response to fetch the next page.
get_subscriber
ChatGPTGet subscriber information by ID or email. Requires an ID or email — MailerLite has no way to look subscribers up by name. If you only have a name, ask the user for the subscriber's email or ID rather than calling list_subscribers to search for them. If no subscriber matches, this returns a normal (non-error) result with found: false rather than failing — a missing subscriber is an expected outcome, not a tool error.
get_subscriber_activity
ChatGPTGet activity history for a subscriber (opens, clicks, etc.). If no subscriber matches the ID or email, this returns a normal (non-error) result with found: false rather than failing — a missing subscriber is an expected outcome, not a tool error.
get_subscriber_count
ChatGPTGet the count of subscribers in the account. By default returns the total across all statuses; pass status to get the count for just that status (e.g. unsubscribed).
get_webhook
ChatGPTGet a specific webhook by ID
import_subscribers_to_group
ChatGPTImport multiple subscribers to a group at once. Existing subscribers may be updated or resubscribed, and enabling autoresponders can send automation emails.
install_template
ChatGPTInstall a pre-built automation template, creating a new (inactive) automation in the account. You MUST obtain template_id from discover_automation_templates first — template IDs are long numeric strings (e.g. "178927102220830454"); a non-numeric value is rejected. Args: - template_id (string): Numeric template ID from discover_automation_templates results. Returns: { success, automation_id, automation_name, dashboard_url, next_steps }. Examples: - After discover returns a "Welcome series" template with id "178...", call install_template with that exact id. - Emails still need to be designed in the dashboard after installing.
list_automations
ChatGPTList automations in the account. Each automation's status (active, inactive, broken, or draft) is derived from its enabled/complete/broken flags, since the API has no native status field. Results are page-paginated — increment the page number to fetch more results.
list_campaign_languages
ChatGPTList languages available for campaign localization, with their numeric IDs, for use as language_id on create_campaign or update_campaign.
list_campaigns
ChatGPTList campaigns with optional status and type filters. Results are cursor-paginated — pass the cursor from the previous response to fetch the next page.
list_email_templates
ChatGPTList email templates (visual designs) with optional search filter.
list_fields
ChatGPTList all custom subscriber fields
list_form_templates
ChatGPTList form design templates by type (popup, promotion, or embedded).
list_forms
ChatGPTList forms by type (popup, embedded, or promotion). Results are page-paginated — increment the page number to fetch more results.
list_resources
ChatGPTList resources by type: "group", "form", "shop", or "segment" (plurals like "groups" are also accepted).
list_segments
ChatGPTList subscriber segments. Results are page-paginated — increment the page number to fetch more results.
list_subscribers
ChatGPTList subscribers in the account. Results are cursor-paginated (default 25 per page) — pass the cursor from the previous response to fetch the next page. This tool cannot filter by name — MailerLite's API only supports filtering by status. Do not use this to search for or look up one specific subscriber; use get_subscriber with an ID/email instead, or ask the user for one.
list_timezones
ChatGPTList timezones and their numeric IDs, for use as schedule.timezone_id when scheduling a campaign. Pass search (e.g. "Vilnius", "+02:00") to filter instead of listing all ~400 rows.
list_webhooks
ChatGPTList all webhooks
manage_ecommerce_cart_items
ChatGPTList, fetch, create, update or delete the line items of a cart. Requires shop_id and cart_id.
manage_ecommerce_carts
ChatGPTUpdate a shopping cart within a shop (carts cannot be created or deleted via the API). Requires shop_id.
manage_ecommerce_categories
ChatGPTList, fetch, create, update, delete or bulk-import product categories within a shop. Requires shop_id.
manage_ecommerce_category_products
ChatGPTList 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.
manage_ecommerce_customers
ChatGPTList, fetch, create, update or delete customers within a shop. Requires shop_id.
manage_ecommerce_orders
ChatGPTList, fetch, create, update, delete or bulk-import orders within a shop. Requires shop_id.
manage_ecommerce_products
ChatGPTList, fetch, create, update, delete or bulk-import products within a shop. Requires shop_id.
manage_ecommerce_shops
ChatGPTList, fetch, create, update or delete MailerLite e-commerce shops. Use id as the shop id for get/update/delete.
reorder_automation_step
ChatGPTMove a step — and everything below it — to a new position in an automation's workflow. Pass new_parent_step_id to place it after another step, or omit it to make it the first step. The automation must be disabled.
replace_automation_trigger
ChatGPTChange an automation trigger's TYPE (e.g. from subscriber_joins_group to subscriber_joins_segment). This clears the trigger's configuration — follow up with update_automation_trigger to set the new type's data. The automation must be disabled to edit its trigger.
schedule_campaign
ChatGPTSchedule a campaign to be sent. Requires a verified sender on the account. Use delivery "instant" to send immediately, or "scheduled" with a schedule object to send at a specific time.
search
ChatGPTSearch across MailerLite campaigns, groups, forms, automations, and segments by free-text query, matching names and key fields (subject, type, status, slug). This is a discovery tool that returns lightweight result stubs, not full records. To get the full details of a result, pass its id to the fetch tool. Always call search before fetch — fetch requires an id from these results (or a bare id plus an explicit type; see the fetch tool description). Args: - query (string, required): Case-insensitive text to match across resource names and fields. - limit (number): Max results, 1-20 (default 10). Returns: { "results": [{ "id": string, "title": string, "url": string }], "warnings"?: string[] }. Each id is a prefixed identifier like "campaign:123", "group:456", "form:789", "automation:012", or "segment:345" — pass it verbatim to fetch. Returns an empty results array when nothing matches. Limitations: only the first 50 records of each resource type are searched; use the list_* tools to browse everything. "warnings" lists types that failed or were truncated; empty results with no warnings mean nothing matched. If every lookup fails, the tool returns an error. Examples: - "find my black friday campaign" -> query="black friday" - "which welcome automation do I have" -> query="welcome" - For unfiltered listing use list_campaigns / list_automations / list_resources instead.
select_resource
ChatGPTConfirms a user-selected resource (group, form, shop, or segment).
send_test_automation
ChatGPTSend test emails from an automation.
start_automation_conversation
ChatGPTAnalyze a user's automation request and return the clarifying questions needed before building it. Use this FIRST when a user wants to create an automation but has not specified the trigger, the target resource, and the timing. It returns the questions to ask; it does NOT create anything or call the API. Args: - user_request (string): The user's verbatim automation request. Returns: a conversation guide with detected.{ has_trigger_type, has_resource_name, has_timing_info }, questions_to_ask[], and instructions for how to proceed. Examples: - "I want to set up a welcome email" -> returns questions about trigger, resource, and timing. - Once you already have trigger + resource + timing, skip this and go to build_custom_automation / create_automation.
unassign_subscriber_from_group
ChatGPTRemove a subscriber from a group
update_automation_delay
ChatGPTUpdate the duration of a delay step in an automation.
update_automation_email
ChatGPTUpdate the subject line and plain text content of an email step in an automation.
update_automation_email_content
ChatGPTReplace the HTML body of an automation email. This overwrites the existing email design — any content previously created in the dashboard editor is lost. Use update_automation_email to change the subject or plain text instead.
update_automation_trigger
ChatGPTUpdate the configuration of an automation's existing trigger — for example the group_ids for subscriber_joins_group, or the segment_id for subscriber_joins_segment. Send the COMPLETE config in data: fields you leave out are cleared, not kept. This cannot change the trigger's TYPE — use replace_automation_trigger for that. The automation must be disabled to edit its trigger. Args: - automation_id (string): The automation to update. - trigger_id (string, optional): Omit it when the automation has exactly one trigger (the common case) — it resolves automatically. - data (object): Complete trigger configuration for the trigger's type, e.g. { group_ids: [...], exclude_group_ids: [] } for subscriber_joins_group, or { segment_id: "..." } for subscriber_joins_segment.
update_campaign
ChatGPTUpdate campaign details. name is optional — if omitted, the campaign's existing name is preserved automatically, so subject/content-only edits don't require knowing or inventing a name. Only campaigns with status "draft" can be updated. Omitting groups and segments leaves existing recipients unchanged.
update_field
ChatGPTUpdate a custom subscriber field name
update_form
ChatGPTUpdate a form name
update_group
ChatGPTUpdate a group name
update_segment
ChatGPTUpdate a segment name
update_subscriber
ChatGPTUpdate subscriber information.
update_webhook
ChatGPTUpdate an existing webhook
validate_email_content
ChatGPTValidate 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.
validate_subject_lines
ChatGPTValidate 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.
add_subscriber
Claudeassign_subscriber_to_group
Claudecancel_campaign
Claudecreate_automation
Claudecreate_campaign
Claudecreate_group
Claudecreate_webhook
Claudedelete_automation
Claudedelete_campaign
Claudedelete_form
Claudedelete_group
Claudedelete_segment
Claudedelete_subscriber
Claudedelete_webhook
Claudeforget_subscriber
Claudeget_auth_status
Claudeget_automation
Claudeget_automation_activity
Claudeget_campaign
Claudeget_campaign_subscribers
Claudeget_form
Claudeget_form_subscribers
Claudeget_group_subscribers
Claudeget_single_import
Claudeget_subscriber
Claudeget_subscriber_activity
Claudeget_subscriber_count
Claudeget_subscribers_in_segment
Claudeget_webhook
Claudeimport_subscribers_to_group
Claudelist_automations
Claudelist_campaigns
Claudelist_forms
Claudelist_groups
Claudelist_segments
Claudelist_subscribers
Claudelist_webhooks
Claudeschedule_campaign
Claudeunassign_subscriber_from_group
Claudeupdate_campaign
Claudeupdate_form
Claudeupdate_group
Claudeupdate_segment
Claudeupdate_subscriber
Claudeupdate_webhook
Claude