New to Claude Skills? Learn how to install them →

hkuds on GitHub

Mailchimp CLI

Free

Manage Mailchimp campaigns and audiences from your terminal.

Get this skill

Free · Opens the source repo

What Mailchimp CLI does

The Mailchimp CLI is a command-line interface specifically designed for interacting with the Mailchimp Marketing API v3.0. It provides a comprehensive set of commands that allow developers and marketers to manage various aspects of their Mailchimp accounts directly from the terminal. With 303 commands spanning 30 resource groups, users can efficiently handle tasks related to audiences, campaigns, reports, automations, e-commerce, and more.

This CLI tool enables users to create, update, and delete audiences, manage campaign workflows, and retrieve detailed reports on campaign performance. Each command is structured to facilitate easy interaction with the API, supporting both JSON output for integration with other tools and an interactive REPL mode for quick command execution. This makes it suitable for both automated scripts and manual operations.

For developers and marketers who prefer working in a terminal environment, this CLI offers a powerful way to streamline Mailchimp operations. It is particularly beneficial for those who manage large email lists or run multiple campaigns, as it allows for batch operations and detailed reporting without the need for a graphical interface.

To use this CLI, you need to have Python 3.10 or higher installed, along with your Mailchimp API key configured as an environment variable. This setup ensures that you can quickly access all functionalities provided by the Mailchimp API, making it a valuable addition to any marketing toolkit.

When to use it

Use this tool when you need to automate Mailchimp tasks, manage large audiences, or run campaigns directly from your command line.

When not to use it

This CLI is not suitable for users who prefer a graphical interface or those who need to perform complex visual design tasks within Mailchimp.

What you can build with it

Automating Campaign Management

Use the Mailchimp CLI to schedule, send, and manage multiple email campaigns without manual intervention.

Managing Large Audiences

Quickly create, update, and manage large lists of subscribers using command-line commands for efficiency.

Generating Reports

Retrieve detailed reports on campaign performance and subscriber activity directly from your terminal.

How to install Mailchimp CLI

View source

1. Install with the skills CLI

npx skills add hkuds/cli-anything/skills --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by hkuds

cli-anything-mailchimp

Identity

An agent-native CLI for the Mailchimp Marketing API v3.0, built on the CLI-Anything framework.

What This CLI Does

  • Manage audiences (lists) — create, update, delete lists; add/update/archive members; manage merge fields, segments, tags, and webhooks.
  • Run campaigns — create, schedule, send, pause, replicate, and analyse email campaigns.
  • Read reports — open rates, click rates, bounce stats, unsubscribes, email activity, geographic data.
  • Control automations — create and manage automated email workflows.
  • Manage e-commerce — stores, orders, customers, products, carts, and promo codes.
  • Use templates, file manager, landing pages, SMS campaigns, surveys, and all other Marketing API resources.

Prerequisites

  • Python 3.10+
  • MAILCHIMP_API_KEY environment variable set to your API key (including datacenter suffix, e.g. abc123-us8)

Installation

# From the CLI-Anything repo (once merged):
pip install git+https://github.com/HKUDS/CLI-Anything.git#subdirectory=mailchimp/agent-harness

# During development:
cd mailchimp/agent-harness && pip install -e .

Command Reference

Root

CommandDescription
cli-anything-mailchimp pingHealth check — confirms API connectivity
cli-anything-mailchimp root listGet account info
cli-anything-mailchimp --json <cmd>Output any command as JSON
cli-anything-mailchimpLaunch interactive REPL

Lists (Audiences)

CommandDescription
lists listList all audiences
lists get <LIST_ID>Get audience info
lists create --data '<json>'Create audience
lists update <LIST_ID> --data '<json>'Update audience
lists delete <LIST_ID>Delete audience
lists list-lists-id-members <LIST_ID>List members
lists get-lists-id-members-id <LIST_ID> <SUBSCRIBER_HASH>Get member by MD5 hash
lists create-lists-id-members <LIST_ID> --data '<json>'Add member
lists list-lists-id-merge-fields <LIST_ID>List merge fields
lists create-lists-id-merge-fields <LIST_ID> --data '<json>'Add merge field
lists list-lists-id-segments <LIST_ID>List segments
lists list-list-member-tags <LIST_ID> <SUBSCRIBER_HASH>List member tags
lists create-list-member-tags <LIST_ID> <SUBSCRIBER_HASH> --data '<json>'Add/remove member tags
lists list-lists-id-webhooks <LIST_ID>List webhooks
lists create-lists-id-webhooks <LIST_ID> --data '<json>'Add webhook

Campaigns

CommandDescription
campaigns listList campaigns
campaigns get <CAMPAIGN_ID>Get campaign info
campaigns create --data '<json>'Create campaign
campaigns update <CAMPAIGN_ID> --data '<json>'Update campaign settings
campaigns delete <CAMPAIGN_ID>Delete campaign
campaigns send <CAMPAIGN_ID>Send campaign immediately
campaigns schedule <CAMPAIGN_ID> --data '<json>'Schedule campaign
campaigns cancel-send <CAMPAIGN_ID>Cancel scheduled send
campaigns pause <CAMPAIGN_ID>Pause RSS campaign
campaigns resume <CAMPAIGN_ID>Resume RSS campaign
campaigns replicate <CAMPAIGN_ID>Duplicate campaign
campaigns list-content <CAMPAIGN_ID>Get campaign content
campaigns list-send-checklist <CAMPAIGN_ID>Pre-send checklist

Reports

CommandDescription
reports listList all campaign reports
reports get <CAMPAIGN_ID>Get campaign summary report
reports list-email-activity <CAMPAIGN_ID>Per-subscriber open/click activity
reports list-click-details <CAMPAIGN_ID>Link click breakdown
reports list-open-details <CAMPAIGN_ID>Per-subscriber opens
reports list-unsubscribed <CAMPAIGN_ID>Unsubscribers
reports list-locations <CAMPAIGN_ID>Geographic breakdown
reports list-domain-performance <CAMPAIGN_ID>Per-domain stats

Automations

CommandDescription
automations listList automations
automations get <WORKFLOW_ID>Get automation info
automations create --data '<json>'Create automation
automations pause <WORKFLOW_ID>Pause automation
automations start <WORKFLOW_ID>Start automation
automations archive <WORKFLOW_ID>Archive automation
automations list-emails <WORKFLOW_ID>List automation emails

E-commerce

CommandDescription
ecommerce list-ecommerce-storesList stores
ecommerce get <STORE_ID>Get store info
ecommerce create --data '<json>'Add store
ecommerce list-ecommerce-stores-id-orders <STORE_ID>List orders
ecommerce list-ecommerce-stores-id-products <STORE_ID>List products
ecommerce list-ecommerce-stores-id-customers <STORE_ID>List customers
ecommerce list-ecommerce-stores-id-carts <STORE_ID>List carts
ecommerce list-ecommerce-stores-id-promocodes <PROMO_RULE_ID> <STORE_ID>List promo codes

Other Resources

GroupDescription
templatesEmail templates (list, get, create, update, delete)
template-foldersTemplate folders
campaign-foldersCampaign folders
file-managerFiles and folders in the file manager
landing-pagesLanding pages (list, create, publish, unpublish)
sms-campaignsSMS campaigns (10 operations)
surveysSurveys (list, get, publish)
reportingFacebook ad and landing page reporting
search-campaignsSearch campaigns by query
search-membersSearch members across all audiences
batchesBatch API operations
batch-webhooksBatch operation webhooks
verified-domainsEmail domain verification
authorized-appsOAuth connected apps
connected-sitesConnected site integrations
conversationsInbox conversations
activity-feedAccount activity feed
account-exportsAccount data exports

JSON Output

All commands support --json at the root level:

# List all audiences as JSON
cli-anything-mailchimp --json lists list

# Get a campaign report as JSON
cli-anything-mailchimp --json reports get abc123def

# Pipe to jq — use the native Mailchimp field name for the resource
cli-anything-mailchimp --json lists list | jq '.lists[].name'
cli-anything-mailchimp --json campaigns list | jq '.campaigns[].id'

Envelope shapes (native Mailchimp API response — use the resource-specific key):

// List endpoints — key matches the resource name (lists, campaigns, members, etc.)
{"lists": [...], "total_items": 42, "_links": [...]}
{"campaigns": [...], "total_items": 10, "_links": [...]}

// Single resource GET / POST / PATCH
{"id": "abc123", "name": "My List", ...}

// DELETE
{"ok": true, "message": "Deleted."}

// Error
{"ok": false, "message": "Resource Not Found: ...", "data": {...}}

Common Agent Patterns

# Get account health
cli-anything-mailchimp --json ping | jq '.health_status'

# List all audience IDs and names
cli-anything-mailchimp --json lists list | jq '.lists[] | {id, name}'

# Find all subscribed members in an audience
cli-anything-mailchimp --json lists list-lists-id-members <list_id> --status subscribed | jq '.members[].email_address'

# Create a campaign and get its send checklist
cli-anything-mailchimp --json campaigns create --data '{"type":"regular","settings":{"subject_line":"Hello","from_name":"Me","reply_to":"me@example.com"}}' | jq '.id'
cli-anything-mailchimp --json campaigns list-send-checklist <campaign_id> | jq '.items[] | select(.result == false)'

# Get unsubscribes for a sent campaign
cli-anything-mailchimp --json reports list-unsubscribed <campaign_id> | jq '.unsubscribes[].email_address'

# Add a member to an audience (subscriber hash = MD5 of lowercased email)
cli-anything-mailchimp --json lists create-members <list_id> --data '{"email_address":"user@example.com","status":"subscribed"}'

# Search for a member across all audiences
cli-anything-mailchimp --json search-members list --query "user@example.com" | jq '.exact_matches.members[]'

Interactive REPL

Run cli-anything-mailchimp with no arguments to enter the REPL:

◆  cli-anything · Mailchimp
   v0.1.0
   Type help for commands, quit to exit

◆ mailchimp ❯ ping
  ✓ {"health_status": "Everything's Chimpy!"}

◆ mailchimp ❯ --json lists list
{"lists": [...], "total_items": 3, "_links": [...]}

◆ mailchimp ❯ quit

Notes

  • Subscriber hash: Mailchimp identifies members by the MD5 hash of their lowercased email. Compute with python -c "import hashlib; email='email@example.com'; print(hashlib.md5(email.strip().lower().encode()).hexdigest())".
  • Body payloads: All POST/PATCH/PUT commands accept --data '<json>'. See Mailchimp API docs for the schema of each endpoint.
  • Datacenter: Your API key ends in -us8, -eu2, etc. The CLI extracts this automatically — include it in MAILCHIMP_API_KEY.
  • Rate limits: The Marketing API rate-limits at 10 concurrent connections and a rolling per-account limit. For bulk operations, use the batches group.

Frequently asked questions about Mailchimp CLI

Similar skills