Skip to main content
Glama
@kieksme/listmonk-mcp

@kieksme/listmonk-mcp

by kieksme

Import Subscribers

listmonk_import_subscribers

Bulk-import subscribers from a ZIP archive of CSV files into selected Listmonk lists. Start the asynchronous import, then poll the import status tool to track progress.

Instructions

Bulk-imports subscribers from a ZIP archive of one or more CSV files into the given target lists. Runs asynchronously — poll listmonk_get_import_status afterwards to track progress.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "file_name": "<file_name>",
      "file_content_base64": "<file_content_base64>",
      "list_ids": "<list_ids>"
    },
    "name": "listmonk_import_subscribers"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNosubscribe
list_idsYesList ids to import subscribers into.
delimiterNo,
file_nameYesFilename, e.g. 'subscribers.zip'.
overwriteNoOverwrite existing subscribers' data on conflict.
file_content_base64YesBase64-encoded ZIP archive containing one or more CSV files.
subscription_statusNounconfirmed

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.3.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-idempotent, open-world write, and the description adds the key operational trait they do not cover: the import is asynchronous and requires polling a specific sibling tool. It still omits conflict/deduplication behavior, what a partially failed import looks like, and whether the job can be cancelled via listmonk_stop_import_subscribers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first states the operation and its input shape, the second the asynchronous contract and the follow-up call. No filler and the actionable polling instruction is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter destructive-capable bulk write with no output schema, the async/polling disclosure is the most important piece and it is present. However, nothing explains how duplicates or existing subscribers are handled, how overwrite and mode interact, or what to expect on success, so an agent could still misuse the options.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 57%, and the description only reinforces file_content_base64 (ZIP of CSVs) and list_ids (target lists). It adds nothing about mode (subscribe vs blocklist), overwrite on conflict, subscription_status, or delimiter, leaving half the parameters to bare enum/default values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (bulk-imports), resource (subscribers), input format (ZIP archive of one or more CSV files), and destination (given target lists). This clearly separates it from single-record siblings like listmonk_create_subscriber and from listmonk_manage_subscriber_lists_bulk, which does not take a file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent this runs asynchronously and to poll listmonk_get_import_status afterwards, which is direct when-to-use-next guidance. It stops short of stating when to prefer this over bulk siblings such as blocklist_subscribers_bulk or blocklist_subscribers_by_query, so the alternative-selection guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools