📘 Khy-OS 文档站 🧭 新手先读:核心概念

cli-anything-mailchimp


name: "cli-anything-mailchimp"
description: 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.


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.