convertkit-automation
Original:🇺🇸 English
Not Translated
Automate ConvertKit (Kit) tasks via Rube MCP (Composio): manage subscribers, tags, broadcasts, and broadcast stats. Always search tools first for current schemas.
3installs
Sourcedavepoon/buildwithclaude
Added on
NPX Install
npx skill4agent add davepoon/buildwithclaude convertkit-automationSKILL.md Content
ConvertKit (Kit) Automation via Rube MCP
Automate ConvertKit (now known as Kit) email marketing operations through Composio's Kit toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/kit
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Kit connection via with toolkit
RUBE_MANAGE_CONNECTIONSkit - Always call first to get current tool schemas
RUBE_SEARCH_TOOLS
Setup
Get Rube MCP: Add as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
https://rube.app/mcp- Verify Rube MCP is available by confirming responds
RUBE_SEARCH_TOOLS - Call with toolkit
RUBE_MANAGE_CONNECTIONSkit - If connection is not ACTIVE, follow the returned auth link to complete Kit authentication
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. List and Search Subscribers
When to use: User wants to browse, search, or filter email subscribers
Tool sequence:
- - List subscribers with filters and pagination [Required]
KIT_LIST_SUBSCRIBERS
Key parameters:
- : Filter by status ('active' or 'inactive')
status - : Exact email to search for
email_address - /
created_after: Date range filter (YYYY-MM-DD)created_before - /
updated_after: Date range filter (YYYY-MM-DD)updated_before - : Sort by 'id', 'cancelled_at', or 'updated_at'
sort_field - : 'asc' or 'desc'
sort_order - : Results per page (min 1)
per_page - /
after: Cursor strings for paginationbefore - : Set to 'true' to get total subscriber count
include_total_count
Pitfalls:
- If is 'cancelled_at', the
sort_fieldmust be set to 'cancelled'status - Date filters use YYYY-MM-DD format (no time component)
- is an exact match; partial email search is not supported
email_address - Pagination uses cursor-based approach with /
aftercursor stringsbefore - is a string 'true', not a boolean
include_total_count
2. Manage Subscriber Tags
When to use: User wants to tag subscribers for segmentation
Tool sequence:
- - Find subscriber ID by email [Prerequisite]
KIT_LIST_SUBSCRIBERS - - Associate a subscriber with a tag [Required]
KIT_TAG_SUBSCRIBER - - List subscribers for a specific tag [Optional]
KIT_LIST_TAG_SUBSCRIBERS
Key parameters for tagging:
- : Numeric tag ID (required)
tag_id - : Numeric subscriber ID (required)
subscriber_id
Pitfalls:
- Both and
tag_idmust be positive integerssubscriber_id - Tag IDs must reference existing tags; tags are created via the Kit web UI
- Tagging an already-tagged subscriber is idempotent (no error)
- Subscriber IDs are returned from LIST_SUBSCRIBERS; use filter to find specific subscribers
email_address
3. Unsubscribe a Subscriber
When to use: User wants to unsubscribe a subscriber from all communications
Tool sequence:
- - Find subscriber ID [Prerequisite]
KIT_LIST_SUBSCRIBERS - - Unsubscribe the subscriber [Required]
KIT_DELETE_SUBSCRIBER
Key parameters:
- : Subscriber ID (required, positive integer)
id
Pitfalls:
- This permanently unsubscribes the subscriber from ALL email communications
- The subscriber's historical data is retained but they will no longer receive emails
- Operation is idempotent; unsubscribing an already-unsubscribed subscriber succeeds without error
- Returns empty response (HTTP 204 No Content) on success
- Subscriber ID must exist; non-existent IDs return 404
4. List and View Broadcasts
When to use: User wants to browse email broadcasts or get details of a specific one
Tool sequence:
- - List all broadcasts with pagination [Required]
KIT_LIST_BROADCASTS - - Get detailed information for a specific broadcast [Optional]
KIT_GET_BROADCAST - - Get performance statistics for a broadcast [Optional]
KIT_GET_BROADCAST_STATS
Key parameters for listing:
- : Results per page (1-500)
per_page - /
after: Cursor strings for paginationbefore - : Set to 'true' for total count
include_total_count
Key parameters for details:
- : Broadcast ID (required, positive integer)
id
Pitfalls:
- max is 500 for broadcasts
per_page - Broadcast stats are only available for sent broadcasts
- Draft broadcasts will not have stats
- Broadcast IDs are numeric integers
5. Delete a Broadcast
When to use: User wants to permanently remove a broadcast
Tool sequence:
- - Find the broadcast to delete [Prerequisite]
KIT_LIST_BROADCASTS - - Verify it is the correct broadcast [Optional]
KIT_GET_BROADCAST - - Permanently delete the broadcast [Required]
KIT_DELETE_BROADCAST
Key parameters:
- : Broadcast ID (required)
id
Pitfalls:
- Deletion is permanent and cannot be undone
- Deleting a sent broadcast removes it but does not unsend the emails
- Confirm the broadcast ID before deleting
Common Patterns
Subscriber Lookup by Email
1. Call KIT_LIST_SUBSCRIBERS with email_address='user@example.com'
2. Extract subscriber ID from the response
3. Use ID for tagging, unsubscribing, or other operationsPagination
Kit uses cursor-based pagination:
- Check response for cursor value
after - Pass cursor as parameter in next request
after - Continue until no more cursor is returned
- Use to track progress
include_total_count: 'true'
Tag-Based Segmentation
1. Create tags in Kit web UI
2. Use KIT_TAG_SUBSCRIBER to assign tags to subscribers
3. Use KIT_LIST_TAG_SUBSCRIBERS to view subscribers per tagKnown Pitfalls
ID Formats:
- Subscriber IDs: positive integers (e.g., 3887204736)
- Tag IDs: positive integers
- Broadcast IDs: positive integers
- All IDs are numeric, not strings
Status Values:
- Subscriber statuses: 'active', 'inactive', 'cancelled'
- Some operations are restricted by status (e.g., sorting by cancelled_at requires status='cancelled')
String vs Boolean Parameters:
- is a string 'true', not a boolean true
include_total_count - is a string enum: 'asc' or 'desc'
sort_order
Rate Limits:
- Kit API has per-account rate limits
- Implement backoff on 429 responses
- Bulk operations should be paced appropriately
Response Parsing:
- Response data may be nested under or
datadata.data - Parse defensively with fallback patterns
- Cursor values are opaque strings; use exactly as returned
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List subscribers | KIT_LIST_SUBSCRIBERS | status, email_address, per_page |
| Tag subscriber | KIT_TAG_SUBSCRIBER | tag_id, subscriber_id |
| List tag subscribers | KIT_LIST_TAG_SUBSCRIBERS | tag_id |
| Unsubscribe | KIT_DELETE_SUBSCRIBER | id |
| List broadcasts | KIT_LIST_BROADCASTS | per_page, after |
| Get broadcast | KIT_GET_BROADCAST | id |
| Get broadcast stats | KIT_GET_BROADCAST_STATS | id |
| Delete broadcast | KIT_DELETE_BROADCAST | id |
Powered by Composio