Skip to main content
Glama

Space Monkey Mailchimp Dashboard

Browse member directory

sm_list_members
Read-onlyIdempotent

Browse or search a project's full member directory. Use when you need people by rating, tag, status or free-text search rather than by engagement rank.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
repNoFilter by an exact match on the assigned sales representative's name. Omit to include members assigned to any rep.
tagNoFilter by an exact match on a Mailchimp tag or segment name. Omit to include members with any tags.
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters.
leaderNoFilter the directory to include only recognized leaders ('true'), exclude leaders ('false'), or ignore leader status ('all'). Defaults to "all" when omitted.all
regionNoFilter members by their exact region or state name as recognized by Mailchimp geography data. Omit to include all regions.
searchNoFilter the directory 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 directory results. Defaults to sorting alphabetically by email address. The snake_case spellings matching response field names (email_address, member_rating, is_leader, company_name, rep_name, timestamp_opt, last_changed, last_activity, status, tags, dimension_one, dimension_two, dimension_three, dimension_four) are canonical. 'email', 'rating', 'leader', 'company', 'rep', 'signup', 'lastChanged', and 'lastActivity' are accepted deprecated aliases kept for backward compatibility and sort identically to their canonical equivalents. Sorting by company/company_name, rep/rep_name, or dimension_one..dimension_four falls back to ordering by email address when the corresponding merge field is unmapped. 'tags' sorts the raw underlying JSON string, not the string array returned in the response. 'name' is a composite sort across last name, first name, and company name and has no single corresponding response field.email
statusNoFilter members by their current Mailchimp subscription status. Use 'subscribed', 'unsubscribed', 'cleaned', or 'all' to include everyone. Defaults to "all" when omitted.all
countryNoFilter members by their exact two-letter ISO country code (e.g. 'US', 'GB'). Omit to include all countries.
sortDirNoThe direction to sort the directory results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "asc" when omitted.asc
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 members whose interactions appear to be automated bot activity. Select 'suspected-bot' for only bots, 'clean' to exclude bots, or 'all' to ignore. Defaults to "all" when omitted.all
maxRatingNoMaximum Mailchimp member star rating to include, from 1 to 5. Omit to include every rating.
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.
dimensionOneNoFilter members by an exact match on custom dimension one. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip.
dimensionTwoNoFilter members by an exact match on custom dimension two. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip.
dimensionFourNoFilter members by an exact match on custom dimension four. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip.
insiderFilterNoFilter out members with internal company email domains or recognized insider addresses. Select 'exclude' to hide them, 'only' to show only them, or 'all' to ignore. Defaults to "all" when omitted.all
dimensionThreeNoFilter members by an exact match on custom dimension three. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip.

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 if additional results exist beyond this page.
membersNoMember directory rows.
pageSizeNoThe maximum number of items returned in this page.
projectIdNoAn opaque alphanumeric project identifier of 8 or more characters identifying a Space Monkey Project. Treat this value as entirely opaque; do not parse, sequentialize, or auto-generate it.
nextCursorNoA keyset cursor marking the continuation point. Contract: this value is non-null if and only if `hasMore` is true. Clients MUST echo this token verbatim on the subsequent request and MUST NEVER attempt to parse or manually construct it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / sortBy / description
      Previous value: -"The field used to order the directory results. Defaults to sorting alphabetically by email address."New value: +"The field used to order the directory results. Defaults to sorting alphabetically by email address. The snake_case spellings matching response field names (email_address, member_rating, is_leader, company_name, rep_name, timestamp_opt, last_changed, last_activity, status, tags, dimension_one, dimension_two, dimension_three, dimension_four) are canonical. 'email', 'rating', 'leader', 'company', 'rep', 'signup', 'lastChanged', and 'lastActivity' are accepted deprecated aliases kept for backward compatibility and sort identically to their canonical equivalents. Sorting by company/company_name, rep/rep_name, or dimension_one..dimension_four falls back to ordering by email address when the corresponding merge field is unmapped. 'tags' sorts the raw underlying JSON string, not the string array returned in the response. 'name' is a composite sort across last name, first name, and company name and has no single corresponding response field."
    • changedInput schema / properties / sortBy / enum
      Previous value: -[
      -  "email",
      -  "name",
      -  "status",
      -  "rating",
      -  "leader",
      -  "company",
      -  "rep",
      -  "tags",
      -  "signup",
      -  "lastChanged",
      -  "lastActivity",
      -  "dimension_one",
      -  "dimension_two",
      -  "dimension_three",
      -  "dimension_four"
      -]New value: +[
      +  "email",
      +  "name",
      +  "status",
      +  "rating",
      +  "leader",
      +  "company",
      +  "rep",
      +  "tags",
      +  "signup",
      +  "lastChanged",
      +  "lastActivity",
      +  "dimension_one",
      +  "dimension_two",
      +  "dimension_three",
      +  "dimension_four",
      +  "email_address",
      +  "member_rating",
      +  "is_leader",
      +  "company_name",
      +  "rep_name",
      +  "timestamp_opt",
      +  "last_changed",
      +  "last_activity"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / sortBy / enum
      Added value: +[
      +  "email",
      +  "name",
      +  "status",
      +  "rating",
      +  "leader",
      +  "company",
      +  "rep",
      +  "tags",
      +  "signup",
      +  "lastChanged",
      +  "lastActivity",
      +  "dimension_one",
      +  "dimension_two",
      +  "dimension_three",
      +  "dimension_four"
      +]
  3. Changed19 schema fields changed
    • changedOutput schema / description
      Previous value: -"Output for the sm_list_members tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_list_members tool. Failure payloads arrive in the same envelope as { error, code }."
    • addedOutput schema / properties / members / description
      Added value: +"Member directory rows."
    • addedOutput schema / properties / members / items / properties / companyName / description
      Added value: +"The company associated with the member, or null when unknown."
    • addedOutput schema / properties / members / items / properties / countryCode / description
      Added value: +"Two-letter country code for the member, or null when unknown."
    • addedOutput schema / properties / members / items / properties / dimensionFour / description
      Added value: +"Fourth custom dimension value for the member, or null."
    • addedOutput schema / properties / members / items / properties / dimensionOne / description
      Added value: +"First custom dimension value for the member, or null."
    • addedOutput schema / properties / members / items / properties / dimensionThree / description
      Added value: +"Third custom dimension value for the member, or null."
    • addedOutput schema / properties / members / items / properties / dimensionTwo / description
      Added value: +"Second custom dimension value for the member, or null."
    • addedOutput schema / properties / members / items / properties / emailAddress / description
      Added value: +"The member's email address."
    • addedOutput schema / properties / members / items / properties / firstName / description
      Added value: +"The member's first name, or null when unavailable."
    • addedOutput schema / properties / members / items / properties / isLeader / description
      Added value: +"True when the member qualifies as a leader by engagement."
    • addedOutput schema / properties / members / items / properties / lastName / description
      Added value: +"The member's last name, or null when unavailable."
    • addedOutput schema / properties / members / items / properties / memberRating / description
      Added value: +"Integer Mailchimp engagement rating for the member (1-5), or null when unrated."
    • addedOutput schema / properties / members / items / properties / region / description
      Added value: +"Region or state-level location string, or null when unknown."
    • addedOutput schema / properties / members / items / properties / repName / description
      Added value: +"Internal owner or rep assigned to the member, or null when unassigned."
    • addedOutput schema / properties / members / items / properties / status / description
      Added value: +"Subscription status of the member."
    • addedOutput schema / properties / members / items / properties / subscriberHash / description
      Added value: +"Opaque 32-hex-character per-member identifier (MD5 of the lowercased/trimmed email address). It is deterministic and stable across calls, making it safe as a global join key when correlating a member across tools, though it will change if the member changes email address."
    • addedOutput schema / properties / members / items / properties / tags / description
      Added value: +"Tag identifiers attached to the member."
    • addedOutput schema / properties / members / items / properties / vip / description
      Added value: +"True when the member is flagged VIP."
  4. Changed21 schema fields changed
    • addedInput schema / properties / botFilter / description
      Added value: +"Filter out members whose interactions appear to be automated bot activity. Select 'suspected-bot' for only bots, 'clean' to exclude bots, or 'all' to ignore. Defaults to \"all\" when omitted."
    • addedInput schema / properties / country / description
      Added value: +"Filter members by their exact two-letter ISO country code (e.g. 'US', 'GB'). Omit to include all countries."
    • addedInput schema / properties / cursor / description
      Added value: +"Opaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters."
    • addedInput schema / properties / dimensionFour / description
      Added value: +"Filter members by an exact match on custom dimension four. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip."
    • addedInput schema / properties / dimensionOne / description
      Added value: +"Filter members by an exact match on custom dimension one. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip."
    • addedInput schema / properties / dimensionThree / description
      Added value: +"Filter members by an exact match on custom dimension three. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip."
    • addedInput schema / properties / dimensionTwo / description
      Added value: +"Filter members by an exact match on custom dimension two. Dimension values are derived from mapped Mailchimp merge fields. Omit to skip."
    • addedInput schema / properties / insiderFilter / description
      Added value: +"Filter out members with internal company email domains or recognized insider addresses. Select 'exclude' to hide them, 'only' to show only them, or 'all' to ignore. Defaults to \"all\" when omitted."
    • addedInput schema / properties / leader / description
      Added value: +"Filter the directory to include only recognized leaders ('true'), exclude leaders ('false'), or ignore leader status ('all'). Defaults to \"all\" when omitted."
    • addedInput schema / properties / maxRating / description
      Added value: +"Maximum Mailchimp member star rating to include, from 1 to 5. Omit to include every rating."
    • addedInput schema / properties / minRating / description
      Added value: +"Minimum Mailchimp member star rating to include, from 1 to 5. Omit to include every rating."
    • addedInput schema / properties / pageSize / description
      Added value: +"Maximum 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."
    • addedInput schema / properties / projectId / description
      Added value: +"Required. 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."
    • addedInput schema / properties / region / description
      Added value: +"Filter members by their exact region or state name as recognized by Mailchimp geography data. Omit to include all regions."
    • addedInput schema / properties / rep / description
      Added value: +"Filter by an exact match on the assigned sales representative's name. Omit to include members assigned to any rep."
    • addedInput schema / properties / search / description
      Added value: +"Filter the directory by a case-insensitive partial match on email address, first name, or last name. Omit to skip text filtering."
    • addedInput schema / properties / sortBy / description
      Added value: +"The field used to order the directory results. Defaults to sorting alphabetically by email address."
    • addedInput schema / properties / sortDir / description
      Added value: +"The direction to sort the directory results. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"asc\" when omitted."
    • addedInput schema / properties / status / description
      Added value: +"Filter members by their current Mailchimp subscription status. Use 'subscribed', 'unsubscribed', 'cleaned', or 'all' to include everyone. Defaults to \"all\" when omitted."
    • addedInput schema / properties / tag / description
      Added value: +"Filter by an exact match on a Mailchimp tag or segment name. Omit to include members with any tags."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Output for the sm_list_members tool. Failure payloads arrive in the same envelope as { error, message, code }.",
      +  "properties": {
      +    "code": {
      +      "description": "A 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.",
      +      "type": "string"
      +    },
      +    "error": {
      +      "description": "A human-readable error message detailing what went wrong.",
      +      "type": "string"
      +    },
      +    "hasMore": {
      +      "description": "True if additional results exist beyond this page.",
      +      "type": "boolean"
      +    },
      +    "members": {
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "Represents a single member in the paginated directory.",
      +        "properties": {
      +          "companyName": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "countryCode": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "dimensionFour": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "dimensionOne": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "dimensionThree": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "dimensionTwo": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "emailAddress": {
      +            "type": "string"
      +          },
      +          "firstName": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "isLeader": {
      +            "type": "boolean"
      +          },
      +          "lastActivity": {
      +            "description": "ISO 8601 UTC timestamp.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "lastChanged": {
      +            "description": "ISO 8601 UTC timestamp.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "lastName": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "memberRating": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "region": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "repName": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "type": "string"
      +          },
      +          "subscriberHash": {
      +            "type": "string"
      +          },
      +          "tags": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "timestampOpt": {
      +            "description": "ISO 8601 UTC timestamp.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vip": {
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "nextCursor": {
      +      "description": "A keyset cursor marking the continuation point. Contract: this value is non-null if and only if `hasMore` is true. Clients MUST echo this token verbatim on the subsequent request and MUST NEVER attempt to parse or manually construct it.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "pageSize": {
      +      "description": "The maximum number of items returned in this page.",
      +      "type": "integer"
      +    },
      +    "projectId": {
      +      "description": "An opaque alphanumeric project identifier of 8 or more characters identifying a Space Monkey Project. Treat this value as entirely opaque; do not parse, sequentialize, or auto-generate it.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. First observed

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered externally. The description adds 'full member directory' scope but says nothing about pagination behavior, result limits, or dataset size — all of which the schema covers instead. Modest added value only.

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

Conciseness5/5

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

Two sentences, both earning their place: the first states what the tool does, the second states when to use it. Front-loaded and free of repetition of schema content.

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

Completeness4/5

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

With an output schema present, return values need not be described, and the exhaustive input schema covers all 20 filters and pagination. The description is sufficient for correct invocation, though guidance on cursor replay or combining filters would have made it fully self-contained.

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% across all 20 parameters, so the schema already carries full parameter meaning. The description's mention of rating, tag, status, and free-text search maps loosely onto minRating/maxRating, tag, status, and search, but adds no syntax, defaults, or edge cases beyond what the schema documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: browsing/searching a project's full member directory. It also implicitly contrasts with engagement-ranked siblings via 'rather than by engagement rank', though it never names an alternative tool (e.g. sm_list_leaders or sm_list_at_risk). Clear purpose, but sibling differentiation is left partly to inference.

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

Usage Guidelines4/5

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

It gives an explicit use condition — when you need people by rating, tag, status, or free-text search — and an exclusion against engagement-rank-based retrieval. It stops short of naming the specific alternative tools an agent should pick instead, so routing still requires a guess.

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