cli-anything-mailchimp

v2026.09.24

CLI harness for the Mailchimp Marketing API v3.0 — 303 commands across 30 resource groups (lists, campaigns, reports, automations, ecommerce, templates, and more). Supports JSON output and interactive REPL mode.

GitHub
Install command
npx skhub add hkuds/cli-anything-mailchimp
Markdown
SKILL.md

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.
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Apache-2.0

Source path

skills/cli-anything-mailchimp

Default branch

main

Latest commit

34f5195

Tree SHA

a303534