Skip to main content
Glama

Space Monkey Mailchimp Dashboard

List Campaign Responders

sm_list_campaign_responders
Read-onlyIdempotent

List the members who registered a tracked response to one campaign — opened, clicked, bounced or unsubscribed — never the full send list; emailsSent is echoed so the unenumerated majority stays visible as a denominator. Narrow with action (clicked-only is usually a fraction of responders), engagementType, variant, rating or score filters; subscriberHash is the MD5 of the downcased email and joins to member-centric tools. For the campaign's own report use sm_get_campaign, for member-to-campaign history use sm_get_member_campaigns (the inverse view), and for the whole directory use sm_list_members. Results are paginated with an opaque keyset cursor valid for 24 hours and pageSize capped at 100 rows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionNoNarrow rows to one tracked response: all (default), opened, clicked, bounced or unsubscribed. action=clicked asks whether a member ever clicked, regardless of anything else they did. Clicked-only is usually a fraction of the responder set, so use it before paging through everything.all
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Valid for 24 hours from issuance and bound to the exact query parameters used to generate it — it is not signed, just scoped; changing any filter, sort field, or sort direction while paginating causes the request to fail with a CURSOR_QUERY_MISMATCH error rather than silently re-scoping the results.
leaderNoFilter responders to include only recognized leaders ('true'), exclude leaders ('false'), or ignore leader status ('all', default).all
regionNoFilter responders by their exact region or state name as recognized by Mailchimp geography data. Omit to include all regions.
searchNoFilter responders by a case-insensitive partial match on email address, first name, or last name. Omit to skip text filtering.
sortByNoThe field used to order the responder results. Each value is the snake_case spelling of the matching response field: email_address, last_name, open_count, click_count, engagement_score, member_rating, variant_label, or engagement_type. Defaults to sorting by engagement_type.engagement_type
countryNoFilter responders by their exact two-letter ISO country code (e.g. 'US', 'GB'). Omit to include all countries.
sortDirNoThe direction to sort the responder results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "desc" when omitted.desc
variantNoFilter responders by an exact match on the campaign variant label (e.g. 'A', 'B', or 'Campaign' for non-variate campaigns). Omit to include responders across all variants.
maxOpensNoMaximum number of opens (open_count) allowed to include the responder in results. Omit for no maximum.
maxScoreNoInclusive upper bound (0-100) on the member's overall engagement percentile score (engagementScore). Identical in meaning to the leaderboard's leaderMaxScore. Omit for no maximum.
minOpensNoMinimum number of opens (open_count) required to include the responder in results. Omit for no minimum.
minScoreNoInclusive lower bound (0-100) on the member's overall engagement percentile score (engagementScore). Identical in meaning to the leaderboard's leaderMinScore. Omit for no minimum.
pageSizeNoMaximum number of rows to return per page. Omit to use the default page size of 100. MCP tool calls are capped at 100 rows per page to protect the model's context window.
botFilterNoFilter out responders whose interactions appear to be automated bot activity. Select 'suspected-bot' for only bots, 'clean' to exclude bots, or 'all' (default) to ignore.all
maxClicksNoMaximum number of clicks (click_count) allowed to include the responder in results. Omit for no maximum.
maxRatingNoMaximum Mailchimp member star rating to include, from 1 to 5. Omit to include every rating.
minClicksNoMinimum number of clicks (click_count) required to include the responder in results. Omit for no minimum.
minRatingNoMinimum Mailchimp member star rating to include, from 1 to 5. Omit to include every rating.
projectIdYesRequired. The opaque alphanumeric project identifier of 8 or more characters to scope this request to. Call GET /_api/public/v1/enterprise/projects to list the project IDs available to your API key. Omitting it returns 400 VALIDATION_ERROR.
campaignIdYesThe opaque string identifier for the campaign as assigned by Mailchimp. List campaigns to obtain this ID. If the ID is invalid or does not exist in the project, the endpoint will return a 404 error.
insiderFilterNoFilter out responders with internal company email domains or recognized insider addresses. Select 'exclude' to hide them, 'only' to show only them. Defaults to 'all', which applies no insider filtering.all
engagementTypeNoGrade each responder by their highest engagement: click if clickCount is above zero, otherwise open; all (default) applies no grading. Where action=clicked asks whether a member ever clicked, engagementType=open asks whether clicking was their highest form of engagement — the two filters answer different questions.all

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeNoA machine-readable identifier for the error type. For the full code taxonomy, see the sm_get_schema tool or the Enterprise API OpenAPI ErrorResponse component.
errorNoA human-readable error message detailing what went wrong.
hasMoreNoTrue when additional pages remain past the current cursor.
pageSizeNoNumber of rows per page in the current request.
projectIdNoAn opaque alphanumeric project identifier of 8 or more characters identifying the Space Monkey Project the returned data is scoped to.
campaignIdNoCampaign identifier.
emailsSentNoCampaign-level send total; this is the denominator that is deliberately NOT enumerated by this tool.
nextCursorNoOpaque cursor to request the next page, or null when no more results.
respondersNoMembers who registered a tracked response to the campaign.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely non-obvious behavior beyond them: the keyset cursor is opaque and valid 24 hours, pageSize is capped at 100, and emailsSent is echoed so the unenumerated majority remains a visible denominator. It stops short of describing the cursor's query-binding failure mode, which the schema covers instead.

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

Conciseness4/5

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

Three dense sentences, front-loaded with scope, then filters, then sibling routing, then pagination mechanics. No filler, though the single long sentence packing filters and subscriberHash is heavy and would parse more easily split.

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

Completeness5/5

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

An output schema exists, so return values need not be described. For a high-parameter list tool, the description covers scope, filter intent, routing, and pagination constraints — everything an agent needs to invoke it correctly.

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 description coverage is 100% and the 23 parameters are each documented in the schema itself, including the action-vs-engagementType distinction and the cursor mismatch behavior. The description reinforces the filter set and the subscriberHash meaning (MD5 of downcased email joining to member-centric tools), but mostly restates what the schema already provides, so baseline 3 applies.

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?

States a specific verb and resource (list members who responded to one campaign) and immediately draws the boundary against the naive reading — 'never the full send list'. It also names the sibling views it is not (sm_get_campaign, sm_get_member_campaigns, sm_list_members), so an agent can differentiate without opening a schema.

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

Usage Guidelines5/5

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

Explicit routing: use sm_get_campaign for the campaign report, sm_get_member_campaigns for member-to-campaign history ('the inverse view'), and sm_list_members for the whole directory. It also gives an in-tool heuristic ('clicked-only is usually a fraction of responders') for when to narrow before paging.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources