Skip to main content
Glama

Space Monkey Mailchimp Dashboard

Server Details

Mailchimp engagement intelligence for AI agents: campaign analytics and audience insights.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 26 tools

Disambiguation4/5

Tools target distinct resources and actions, and descriptions explicitly cross-reference and exclude one another (e.g., insights tiers, member views, campaign report types). However, the three insight tiers and multiple member/campaign report tools still leave a few boundaries that require careful reading to avoid misselection.

Naming Consistency5/5

All 26 tools follow a consistent sm_verb_noun snake_case pattern (get/list plus resource), with clear prefixes and no deviations. The convention is predictable throughout.

Tool Count3/5

26 tools is heavy for a dashboard and the surface could be consolidated (e.g., insights tiers, member report views). Each tool maps to a distinct report, but the count sits above the typical well-scoped range and borders on fragmentation.

Completeness4/5

The surface covers account, projects, campaigns, campaign reports, insights, members, segments, growth, geo, timeline, at-risk/leaders/responders, prompts, schema, sync runs, and knowledge. Minor gaps remain, such as campaign content/search and any write operations, but analytical coverage is strong.

Available Tools

26 tools
sm_get_accountGet account and quotasA
Read-onlyIdempotent
Inspect

Introspect the API key's own account — effective tier, per-service entitlements, current hour/month quota usage and project count. Use it to check headroom or diagnose a 403/429 before retrying.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
tierNoTier information for the enterprise account.
errorNoA human-readable error message detailing what went wrong.
usageNoCurrent-hour and current-month quota usage.
accountNoBasic enterprise account details.
entitlementsNoPer-service entitlement rows defining allowed access.
projectCountNoNumber of projects this key can read.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior Mend. The description adds valuable context by revealing what specific account data is inspected and by tying the tool to quota/error diagnosis, which helps the agent anticipate the nature of the response and the practical use case.

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, each earning its place. The first describes what the tool returns, and the second gives actionable guidance on when to use it. No filler, no repetition of schema or annotation information.

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?

For a zero-parameter, read-only introspection tool with rich annotations and an output schema, the description is complete. It covers what data is returnedaine, why an agent would call it, and how to interpret its role in retry/error handling. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is fully documented as an empty object, so parameter semantics are trivially satisfied. The description reinforces that the tool introspects the API key's own context, which further removes any ambiguity about what the agent needs to pass.

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?

The description states a specific verb ('Introspect'), a precise resource ('the API key's own account'), and concrete data returned (effective tier, per-service entitlements, quota usage, project count). It clearly distinguishes itself from the sibling sm_get_* tools by scoping to the caller's own account rather than campaigns, members, projects, or sync runs.

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?

The description gives explicit use cases: checking headroom and diagnosing 403/429 errors before retrying. It does not name alternatives or explicitly say when not to use it, but the self-account scope and quota focus provide enough context for an agent to select this tool versus the get/list siblings.

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

sm_get_campaignGet campaign reportA
Read-onlyIdempotent
Inspect

Load one campaign's full report — delivery, open, click, click-to-open and bounce rates plus campaign metadata. Use after you have identified a campaign of interest. Returns a fixed-size set of campaign-level aggregates in one call regardless of audience size; per-variant, funnel and geography breakdowns are on sm_get_variate, not here.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
reportNoComprehensive details for a single campaign. May be null.
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.
performanceNoDetailed performance for individual campaigns. May be null.
campaignMetaNoMetadata for a campaign, including raw stringified JSON variate settings. May be null.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds a genuine behavioral trait beyond that: the return is a fixed-size set of campaign-level aggregates in one call regardless of audience size, which tells the agent the cost/shape is constant. No contradiction with annotations.

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, front-loaded with the core action and payload, followed by usage routing and scoping exclusions. Every clause carries information; no filler.

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 explained in prose. The description covers purpose, timing, scope limits, and the sibling that handles excluded breakdowns — 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 both projectId and campaignId are fully documented in the schema including error behavior (400 VALIDATION_ERROR, 404). The description adds no additional parameter meaning, so the baseline of 3 is correct.

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 (load one campaign's full report) and enumerates the metric families returned (delivery, open, click, click-to-open, bounce). It explicitly names what it is not, contrasting with sm_get_variate for per-variant, funnel and geography breakdowns, so an agent can distinguish it from siblings 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?

Gives explicit timing guidance ('Use after you have identified a campaign of interest') and routes the agent to the alternative (sm_get_variate) with the condition that selects it. Nothing about when/when-not is left to inference.

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

sm_get_campaign_post_mortemGet campaign post-mortemA
Read-onlyIdempotent
Inspect

Produce a full post-mortem of one sent campaign: summary metadata, delivery and performance rates, engagement velocity (time-to-first-open and hourly engagement), audience quality, and per-variant breakdown when the campaign is an A/B test. Combines the detail, velocity, audience-quality and variate views into one report. All metrics come from synced BigQuery tables, so they are only as current as the project last sync run.

ParametersJSON Schema
NameRequiredDescriptionDefault
botFilterNoFilter out members whose interactions appear to be automated bot activity. Select 'suspected-bot' for only bots, 'clean' to exclude bots, or 'all' (default) to ignore.all
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
summaryNoShort human-readable summary for the enclosing item.
variateNoMay be null.
velocityNoMay be null.
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.
performanceNoComprehensive details for a single campaign. May be null.
audienceQualityNoMay be null.

TDQS

A4.2/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), so the bar is lower. The description adds genuinely useful behavior beyond them: 'All metrics come from synced BigQuery tables, so they are only as current as the project last sync run' — a data-freshness caveat the agent needs to interpret results.

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 front-loaded sentences: purpose and contents first, then the consolidation claim, then the data-freshness caveat. Dense but each sentence earns its place; the list of report sections is the only slightly padded element.

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?

Given an output schema exists, the description need not explain return values — yet it still maps the report's sections, defines scope (one sent campaign, per-variant only for A/B), and flags the sync-driven freshness limit. Nothing an agent needs to call it correctly is missing.

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%, so projectId, campaignId and the botFilter enum are already fully documented in the schema. The description adds no parameter syntax or format detail beyond it; baseline 3 is appropriate.

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?

Specific verb ('Produce a full post-mortem') + resource ('one sent campaign'), and it enumerates the exact contents: summary metadata, delivery/performance rates, engagement velocity, audience quality, per-variant breakdown. The line 'Combines the detail, velocity, audience-quality and variate views into one report' implicitly separates it from sibling point-views such as sm_get_variate and sm_get_campaign.

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?

Usage context is clear: one sent campaign, with variant breakdown only 'when the campaign is an A/B test'. The 'combines ... into one report' phrasing tells the agent to prefer this over calling the individual view tools piecemeal. No explicit when-not or prerequisite guidance, so it falls short of a 5.

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

sm_get_insights_advancedGet advanced insightsA
Read-onlyIdempotent
Inspect

Get deeper audience analytics for a project: engagement distribution, tag and segment summaries, subscriber-growth baseline with churn decomposition, and campaign consistency. Use when basic insights cannot explain a change. Excludes the per-campaign performance table, single-campaign detail, list overview and the engagement and send-volume trends — use sm_get_insights_basic for those. Excludes campaign fatigue, subject-line keywords, send-time heatmap, monthly trend and audience health — use sm_get_insights_expert. All three insight tiers also return campaign averages, previous-period averages, audience summary and auto-generated insights.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoInclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default.
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.
startDateNoInclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded.
campaignIdNoThe 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.
maxSendVolumeNoMaximum number of emails sent to include a campaign in the insights aggregations. Omit to impose no upper bound.
minSendVolumeNoMinimum number of emails sent to include a campaign in the insights aggregations. Omit to use the system default threshold.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
insightsNoAuto-generated insight objects pairing a title with a descriptive sentence.
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.
tagSummaryNoTag summary rows.
segmentSummaryNoSegment summary rows.
audienceSummaryNoCurrent audience status rollup: one row per member status with the member count.
campaignAveragesNoSingle summary row of aggregate campaign metrics for the current period.
subscriberGrowthNoAudience growth rows over time, bucketed by member status.
campaignDateRangeNoOverall chronological range of campaigns. May be null.
computedThresholdNoThreshold computed for the analysis, or null when not applicable.
campaignConsistencyNoStatistical consistency metrics for campaign performance. May be null.
engagementDistributionNoMembers bucketed by engagement rating.
previousPeriodAveragesNoSingle summary row of aggregate campaign metrics for the prior comparison period.
subscriberGrowthBaselineNoBaseline subscriber number used for growth comparison.
subscriberGrowthBaselineChurnNoBaseline churn number used for growth comparison.
subscriberGrowthBaselineSubscribedNoBaseline subscribed count used for growth comparison.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the non-mutating and safe nature is covered. The description adds behavioral context beyond annotations: the conditional usage ('when basic insights cannot explain a change'), the explicit exclusion list, and the fact that all three tiers return campaign averages, previous-period averages, audience summary, and auto-generated insights. It does not contradict annotations and adds scope and shared-output context, though it omits details like error handling or pagination, which is acceptable given the rich annotation coverage.

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?

The description is front-loaded with purpose and components, then states the usage condition, then lists exclusions and sibling references, and ends with the shared-output note. Every sentence serves a purpose, though it is slightly verbose due to the detailed exclusion lists. This is a strong 4; a 5 would require even tighter grouping of the exclusions.

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?

Given the tool's moderate complexity (6 parameters, 1 required, output schema available) and rich annotations, the description adequately covers the decision points: when to use, what it returns, what it excludes, and what overlaps with other tools. The parameters are fully explained in the schema, and the output is defined by the output schema. The description leaves no critical ambiguity for an agent to select or invoke it correctly. A 4 is appropriate; a 5 would be reserved for even more exhaustive edge-case guidance that is not necessary here.

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% per the context, and each parameter (projectId, startDate, endDate, campaignId, minSendVolume, maxSendVolume) is already documented with formats, defaults, and constraints. The description does not add any parameter-specific meaning—it only describes the output scope. Per the rubric, a high schema coverage yields a baseline of 3, and since the description contributes no extra parameter semantics, this remains a 3.

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?

The description starts with a specific verb ('Get') and clearly specifies the resource ('deeper audience analytics') followed by a concrete list of included analyses: engagement distribution, tag and segment summaries, subscriber-growth baseline with churn decomposition, and campaign consistency. It also names the sibling tools that handle the excluded items, making it unambiguous how this tool differs from sm_get_insights_basic and sm_get_insights_expert.

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?

It explicitly states when to use this tool ('Use when basic insights cannot explain a change') and then lists exactly what is excluded and which sibling to use instead (sm_get_insights_basic for per-campaign performance table, single-campaign detail, list overview, engagement/send-volume trends; sm_get_insights_expert for campaign fatigue, subject-line keywords, send-time heatmap, monthly trend, audience health). Additionally, it notes the shared outputs across all three tiers, giving clear routing instructions.

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

sm_get_insights_basicGet basic insightsA
Read-onlyIdempotent
Inspect

Get headline campaign and audience performance for a project: per-campaign performance table, single-campaign detail, list overview, engagement and send-volume trends, subscriber-growth series, and period-over-period averages. Start here for "how are we doing". Excludes engagement distribution, tag and segment summaries, growth baseline/churn decomposition and campaign consistency — use sm_get_insights_advanced for those. Excludes campaign fatigue, subject-line keywords, send-time heatmap, monthly trend and audience health — use sm_get_insights_expert. For the member-composition view (status, rating, rep and language counts) use sm_get_member_overview, and for signup cohorts, churn and retention use sm_get_member_growth; the list overview and subscriber-growth series here are Mailchimp-list and audience-trend views, not member-level lifecycle. All three insight tiers also return campaign averages, previous-period averages, audience summary and auto-generated insights.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoFilter the campaigns table section by a case-insensitive partial match on text or subject line. Note: this does not narrow the aggregate stats.
endDateNoInclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default.
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.
startDateNoInclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded.
campaignIdNoThe 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.
maxSendVolumeNoMaximum number of emails sent to include a campaign in the insights aggregations. Omit to impose no upper bound.
minSendVolumeNoMinimum number of emails sent to include a campaign in the insights aggregations. Omit to use the system default threshold.
campaignSortByNoThe field used to order the campaigns table within the insights payload. Defaults to sorting by send time.send_time
campaignSortDirectionNoThe direction to sort the campaigns table within the insights payload. Can be 'asc' for ascending or 'desc' for descending. Defaults to "desc" when omitted.desc

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
insightsNoAuto-generated insight objects pairing a title with a descriptive sentence.
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.
listOverviewNoPer-list overview: one row per Mailchimp audience with size and health metrics.
campaignTotalNoTotal campaigns in the period.
campaignDetailNoComprehensive details for a single campaign. May be null.
audienceSummaryNoCurrent audience status rollup: one row per member status with the member count.
engagementTrendNoMonth-over-month engagement trend rows.
sendVolumeTrendNoMonth-over-month send volume rows.
campaignAveragesNoSingle summary row of aggregate campaign metrics for the current period.
subscriberGrowthNoAudience growth rows over time, bucketed by member status.
computedThresholdNoThreshold value computed for the current analysis, or null when not applicable.
campaignPerformanceNoPer-campaign performance rows for the period, with send, open, click, bounce and unsubscribe metrics.
previousPeriodAveragesNoSingle summary row of aggregate campaign metrics for the prior comparison period.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish readOnly, idempotent, open-world, and non-destructive behavior, and the description adds meaningful context beyond that. It discloses not only what the endpoint returns but also what it deliberately excludes, and it clarifies that the list/subscriber views are Mailchimp-level rather than member-level lifecycle, preventing semantic misinterpretation.

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?

The description is long but every sentence earns its place: it front-loads the main purpose, then uses exclusion lists to steer the agent to the correct sibling tools. The final sentence about shared output across all three insight tiers prevents a misleading assumption that 'basic' lacks common aggregates.

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?

Given the tool's complexity, the fully detailed input schema, the output schema, and the rich sibling set, the description is remarkably complete. It covers purpose, scope, exclusions, alternatives, and cross-tier behavior, leaving no major gap an agent would need to resolve by trial and error.

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%, so the schema already documents all nine parameters thoroughly. The description itself adds little parameter-level meaning beyond implying the project scope, but since the baseline is 3 for high schema coverage, no deduction is warranted.

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?

The description opens with a specific verb and resource: 'Get headline campaign and audience performance for a project' and then enumerates concrete output sections. It also clearly distinguishes itself from sm_get_insights_advanced, sm_get_insights_expert, sm_get_member_overview, and sm_get_member_growth, so an agent can disambiguate it from nearby siblings.

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?

The description explicitly says 'Start here for "how are we doing"', which tells the agent when to select this tool. It also lists exactly which capabilities are excluded and explicitly names the alternative tool for each excluded category, giving clear when-to-use versus when-to-use-another guidance.

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

sm_get_insights_expertGet expert insightsA
Read-onlyIdempotent
Inspect

Get expert diagnostics explaining why performance is moving: campaign fatigue, subject-line keywords, timezone-aware send-time heatmap, monthly trend and audience health, plus engagement distribution and campaign consistency (also available from sm_get_insights_advanced). Use only after basic or advanced have established what changed. Excludes the per-campaign performance table, single-campaign detail, list overview and the engagement and send-volume trends — use sm_get_insights_basic. Excludes tag and segment summaries and the subscriber-growth series and baselines — use sm_get_insights_advanced. All three insight tiers also return campaign averages, previous-period averages, audience summary and auto-generated insights.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoInclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default.
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.
startDateNoInclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded.
campaignIdNoThe 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.
maxSendVolumeNoMaximum number of emails sent to include a campaign in the insights aggregations. Omit to impose no upper bound.
minSendVolumeNoMinimum number of emails sent to include a campaign in the insights aggregations. Omit to use the system default threshold.
heatmapTimezoneNoThe valid IANA timezone string (e.g. 'America/New_York') used to align the send-time heatmap distribution. Omit to use UTC.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
insightsNoAuto-generated insight objects pairing a title with a descriptive sentence.
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.
monthlyTrendNoPer-quarter (or month) trend rows for the diagnostic period.
audienceHealthNoAudience health rows with member counts by status and engagement band.
audienceSummaryNoCurrent audience status rollup: one row per member status with the member count.
campaignFatigueNoPer-frequency bucket showing how engagement moves as send frequency changes.
sendTimeHeatmapNoSend-time heatmap rows bucketed by day of week and hour.
campaignAveragesNoSingle summary row of aggregate campaign metrics for the current period.
sendTimeInsightsNoAuto-generated send-time insight objects.
campaignConsistencyNoStatistical consistency metrics for campaign performance. May be null.
subjectLineKeywordsNoSubject-line keyword rows with impact on open and click rate.
engagementDistributionNoMembers bucketed by engagement rating.
previousPeriodAveragesNoSingle summary row of aggregate campaign metrics for the prior comparison period.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond that: it clarifies the tool's analytic scope, what it deliberately excludes, and what it shares with the other insight tiers. No contradictory or hidden behavior is left unaddressed.

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?

The description is dense but every sentence earns its place: scope, usage timing, exclusions with sibling routing, and shared return elements. It is not as tight as a two-sentence definition, but the length is justified by the need to differentiate among three insight tiers.

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?

Given the output schema, annotations, and sibling context, the description is complete: it tells the agent what the tool returns, when to call it, which tools to use instead for excluded content, and what all insight tiers share. An agent can select and invoke this tool correctly without further inference.

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%, so the parameters are already fully documented in the input schema. The description does not need to restate parameter semantics, and while it references timezone-aware heatmap behavior, it does not materially add beyond the schema. Baseline 3 is appropriate.

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?

The description uses a specific verb ('Get'), names the resource ('expert diagnostics'), and enumerates the concrete insight types it returns. It also explicitly distinguishes this tier from its basic and advanced siblings, so an agent can identify the tool's unique purpose.

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?

The description states when to use it ('Use only after basic or advanced have established what changed') and gives explicit exclusions with routing to sm_get_insights_basic and sm_get_insights_advanced. This is clear, actionable guidance with named alternatives.

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

sm_get_knowledgeGet analyst knowledgeA
Read-onlyIdempotent
Inspect

Returns Space Monkey's MCP knowledge documents (analyst preamble, metric guardrails, live OpenAPI schema URL) as tool output for clients that cannot read MCP resources — read this before interpreting any Space Monkey metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional short topic selector to fetch a single knowledge document (one of: analyst-preamble, metric-guardrails, openapi, faq). Omit this parameter to receive a compact topic index.

Output Schema

ParametersJSON Schema
NameRequiredDescription
uriNoMCP resource URI for the knowledge document or topic.
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.
textNoFull rendered text of the enclosing document or prompt.
errorNoA human-readable error message detailing what went wrong.
titleNoHuman-readable title for the enclosing item.
topicNoTopic key, or null when the request did not match a single topic.
topicsNoAvailable knowledge topics.
versionNoVersion string for the enclosing catalog or document.
descriptionNoHuman-readable description of the enclosing item.
lastUpdatedNoISO 8601 instant

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, non-destructive, closed-world), so the lighter bar applies. The description adds genuine context by explaining it exists as a fallback for clients lacking resource-read support, which the annotations do not convey.

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?

A single front-loaded sentence with a parenthetical enumeration and an em-dash clause that carries the usage trigger. Dense but every clause earns its place; only slightly run-on.

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?

An output schema exists, so return format needn't be restated, and annotations already cover the safety profile. Purpose, contents, and the usage trigger are all present, leaving only minor gaps around the parametrized topic fetch.

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 single optional 'topic' enum is fully documented upstream, so the baseline of 3 applies. The description names three of the four topics but omits 'faq' and never mentions the omit-to-get-index behavior, adding little beyond the schema.

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?

States a specific verb and resource ('Returns ... knowledge documents') and enumerates the payload (analyst preamble, metric guardrails, OpenAPI schema URL), so an agent knows exactly what comes back. It does not explicitly contrast itself with nearby siblings like sm_get_prompt or sm_get_schema, which keeps it short of a 5.

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?

Gives a clear trigger ('read this before interpreting any Space Monkey metrics') and a scope condition ('for clients that cannot read MCP resources'), implicitly routing resource-capable clients elsewhere. It stops short of naming a specific alternative tool or stating when-not to call it in more absolute terms.

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

sm_get_memberGet member profileA
Read-onlyIdempotent
Inspect

Load one member's full profile — title, company, tags, clicked URLs, engagement percentile, at-risk state and bot detection. Use for pre-call briefs and to enrich a shortlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.
subscriberHashYesThe member's Mailchimp-style lowercase MD5 subscriber hash (canonical member key).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
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.
clickedUrlsNoURLs the member has clicked with click counts.
atRiskStatusNoEvaluation of churn risk based on activity fall-off. May be null.
botDetectionNoMetrics for suspected automated bot activity. Note: this object is only present when bot activity was detected. May be null.
monthlyTrendNoPer-quarter (or month) trend rows for the diagnostic period.
memberProfileNoCore profile information for an individual member. May be null.
subscriberHashNoThe 32-character lowercase hex MD5 hash of the member's downcased email address. This is the canonical unique identifier for members exposed across the Enterprise API, identical to Mailchimp's core behavior. The API will never expose internal synthetic BigQuery UUIDs.
activityTimelineNoThe member's raw activity events in time order.
audienceAveragesNoComparative audience averages for context against an individual member. May be null.
engagementByHourNoMember's tracked actions bucketed by hour.
campaignResponsesNoPer-campaign response rows for this member.
engagementProfileNoCalculated overall engagement statistics for an individual member. May be null.
campaignConsistencyNoHow consistently this member engages compared to standard. May be null.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description doesn't need to cover side effects. It adds light context about the profile's scope and included fields, but does not disclose error behavior, permissions, rate limits, or other behavioral traits beyond what annotations provide.

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?

A single front-loaded sentence states the operation, the exact data returned, and the intended use cases without filler. Every element earns its place.

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?

With two clearly documented required parameters, a rich output schema, and annotations covering safety/idempotency, the description is sufficient for an agent to decide to call and invoke the tool. It also orients the agent across a large sibling set with the 'full profile' framing and use-case guidance.

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%, with detailed documentation for projectId and subscriberHash including failure mode and regex pattern, so the schema does the heavy lifting. The description contributes nothing parameter-specific, so baseline 3 is appropriate.

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?

The description opens with a specific verb and resource ('Load one member's full profile') and enumerates the content (title, company, tags, clicked URLs, engagement percentile, at-risk state, bot detection), making the tool's purpose unmistakable. 'One member' separates it from list tools, and the field list distinguishes it from the other sm_get_member_* siblings.

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?

The description explicitly anchors usage to pre-call briefs and shortlist enrichment, giving clear context for when the tool is appropriate. It does not name alternatives or state when not to use it, but the use-case sentence is enough to guide selection among the many sibling tools.

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

sm_get_member_campaignsGet member campaign responsesA
Read-onlyIdempotent
Inspect

List the individual campaigns one member received, opened or clicked. This email-level drill-down is often empty even for highly engaged members, so always keep a fallback. For the inverse view — the members who responded to one campaign — use sm_list_campaign_responders.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters.
dateToNoInclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default.
sortByNoThe field used to order the member campaigns list. Defaults to the send time of the campaign.send_time
sortDirNoThe direction to sort the campaign results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "desc" when omitted.desc
dateFromNoInclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded.
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.
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.
openedFilterNoFilter timeline events to only those where the campaign was opened, not opened, or 'all' to ignore open status. Defaults to "all" when omitted.all
clickedFilterNoFilter timeline events to only those where the campaign was clicked, not clicked, or 'all' to ignore click status. Defaults to "all" when omitted.all
maxTimeToOpenNoMaximum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no upper bound.
minTimeToOpenNoMinimum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no lower bound.
subjectFilterNoFilter the timeline by a case-insensitive partial match on the campaign subject line. Omit to include all subjects.
maxTimeToClickNoMaximum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no upper bound.
minTimeToClickNoMinimum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no lower bound.
subscriberHashYesThe member's Mailchimp-style lowercase MD5 subscriber hash (canonical member key).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
dataNoResponse rows for the enclosing tool.
errorNoA human-readable error message detailing what went wrong.
hasMoreNoTrue if additional results exist beyond this page.
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.
subscriberHashNoThe 32-character lowercase hex MD5 hash of the member's downcased email address. This is the canonical unique identifier for members exposed across the Enterprise API, identical to Mailchimp's core behavior. The API will never expose internal synthetic BigQuery UUIDs.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds a genuinely useful behavioral trait: the result set is frequently empty even for highly engaged members, warning the agent against treating an empty list as an error. It stops short of describing pagination or return shape, but an output schema exists.

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?

Three short sentences, front-loaded with purpose, then the empty-result caveat, then the alternative tool. No filler; each sentence earns its place.

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?

With a rich output schema, full parameter documentation, and annotations covering safety and openness, the description only needs to supply purpose, the empty-result caveat and sibling routing — all of which it does. Nothing needed to call it correctly is missing.

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 15 parameters, including enums, defaults, formats and cursor semantics, so the schema carries the full burden. The description adds no parameter-level meaning beyond it, making the baseline 3 appropriate.

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 (List) and resource (individual campaigns a member received/opened/clicked), and explicitly contrasts with the sibling sm_list_campaign_responders as the 'inverse view'. An agent can distinguish this from the sibling without opening either 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?

Names the alternative tool and the condition that selects it ('members who responded to one campaign'). It also gives a practical usage caveat — this drill-down is often empty even for engaged members, so keep a fallback — which is real routing guidance.

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

sm_get_member_geoGet audience geographyA
Read-onlyIdempotent
Inspect

Get the country and region distribution of a project's members. Use for territory, event and travel-planning questions. Country is inferred from the member's region where possible (US states and Canadian provinces map to US and CA) before falling back to stored country data, with unresolvable values bucketed as Unknown; regions stays null unless countryCode is passed.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.
countryCodeNoTwo-letter ISO country code to drill into, matched case-insensitively (e.g. 'US', 'CA'). Omit it and `regions` comes back null while `countries` and `allRegions` still cover the whole audience; pass it and `regions` returns that country's region breakdown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
regionsNoRegion detail for the selected country, or null when no country was narrowed.
countriesNoPer-country membership rows.
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.
allRegionsNoPer-region membership rows across all countries.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent and open-world, so safety is covered. Beyond that the description discloses meaningful derivation behavior: country is inferred from region (US states/CA provinces mapped), falls back to stored country data, and unresolvable values are bucketed as Unknown, plus the non-obvious rule that regions is null unless countryCode is passed.

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 the purpose and followed by usage context and the derivation caveat. Slight redundancy with the schema on the countryCode/regions behavior keeps it from a 5.

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-shape explanation is unnecessary. The description supplies the usage context and the data-derivation edge cases (region inference, Unknown bucket, conditional regions) that an agent needs to interpret results 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 both parameters are thoroughly documented there, including the countryCode case-insensitivity and the regions-null behavior. The description largely restates that schema contract rather than adding new syntax or format guidance, so the 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: 'Get the country and region distribution of a project's members.' This is precise enough to separate it from sibling member-metrics tools such as sm_get_member_overview or sm_get_member_growth without opening either schema.

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?

'Use for territory, event and travel-planning questions' gives a concrete use context and implies the questions this tool answers. It stops short of naming when-not-to-use or an explicit alternative sibling, so it is not a full 5.

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

sm_get_member_growthGet audience growthA
Read-onlyIdempotent
Inspect

Get signup cohorts, churn timeline and cohort retention. Use for list-growth and attrition questions. A cohortRetention row is the current status breakdown of members who signed up in that month, not retention at month N after signup; signup month falls back to last-changed or sync time when Mailchimp has no opt-in timestamp. For the audience size trend over time — subscriber counts bucketed by status month over month — use the subscriber-growth series in sm_get_insights_basic; this returns signup cohorts, churn and retention rather than a status trend.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
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.
churnTimelineNoChurn timeline rows bucketed by month and status.
signupCohortsNoSignup cohort rows.
cohortRetentionNoCohort retention rows bucketed by signup month and status.

TDQS

A4.5/5.0
Behavior4/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 covered. The description adds important data interpretation context: a cohortRetention row is a current status breakdown for the signup month, not retention at month N, and signup month may fall back to last-changed or sync time when Mailchimp lacks an opt-in timestamp.

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?

The description is front-loaded with purpose, then usage, then a critical caveat, then an explicit alternative. Each sentence serves a distinct function, and the dense but necessary routing sentence prevents the most likely misuse.

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?

Given rich annotations, a complete output schema, and 100% schema description coverage, the description supplies everything the agent needs beyond structured fields: purpose, usage context, key interpretation caveat, and alternative routing. No meaningful gap remains for correct tool selection or invocation.

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 single projectId parameter is already fully documented in the schema, including the required behavior and error case. The description adds no parameter-level semantics beyond what the schema already provides, so the baseline of 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?

The description names the exact returned artifacts — signup cohorts, churn timeline, and cohort retention — and explicitly distinguishes this tool from the subscriber-growth series in sm_get_insights_basic. An agent can identify both the tool's scope and its closest alternative without opening any 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?

It states the intended question types ('list-growth and attrition') and explicitly routes audience-size-over-time questions to sm_get_insights_basic instead. This provides clear when-to-use and when-not-to-use guidance with a named alternative.

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

sm_get_member_overviewGet audience overviewA
Read-onlyIdempotent
Inspect

Get aggregate audience composition for a project — totals plus status, rating, rep and language breakdowns. Use for a quick shape-of-the-list answer. Not paginated: totals and the status and rating breakdowns cover every member, but the language list is truncated to the top 20 and the rep and custom-dimension lists to the top 25, and the rep block is absent unless the project maps an owner merge field. For Mailchimp-list health — per-audience sizes, unsubscribe and cleaned counts, open and click rates — use the list overview in sm_get_insights_basic; this tool is the member-composition view (status, rating, rep, language) instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
totalsNoTop-level member aggregate statistics.
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.
repDistributionNoMembers bucketed by assigned rep.
statusBreakdownNoMembers bucketed by subscription status.
ratingDistributionNoMembers bucketed by rating.
languageDistributionNoMembers bucketed by language.
dimensionDistributionsNoPer-dimension slot distribution rows.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses non-obvious behavior: it is not paginated, language is truncated to the top 20, rep and custom-dimension lists to the top 25, and the rep block is omitted unless the project maps an owner merge field. These constraints are not derivable from any structured field and materially affect how an agent interprets the output.

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?

Purpose and usage are front-loaded, and the dense truncation sentence earns its length by conveying three distinct limits. It is slightly verbose and could split the truncation clause, but very little is wasted.

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?

With an output schema present, the description need not explain return values, and it still covers scope, truncation behavior, conditional omission of the rep block, and alternative-tool routing. Nothing an agent needs to call this correctly is missing.

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?

There is a single parameter (projectId) with 100% schema description coverage, so the schema already documents its format, sourcing endpoint, and the 400 VALIDATION_ERROR on omission. The description adds no additional parameter meaning, making the 3 baseline appropriate given the schema does the heavy lifting.

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?

The first sentence names a specific verb and resource ('aggregate audience composition for a project') and enumerates the exact dimensions returned: totals, status, rating, rep, and language breakdowns. It also explicitly differentiates itself from siblings by contrasting the 'member-composition view' with the Mailchimp-list health view in sm_get_insights_basic.

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?

It states when to use it ('quick shape-of-the-list answer') and names a concrete alternative with the condition that selects it ('For Mailchimp-list health ... use the list overview in sm_get_insights_basic'). The routing between the two tools is unambiguous.

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

sm_get_member_segmentsGet tags and segmentsA
Read-onlyIdempotent
Inspect

Get tags and segments with their engagement and status breakdowns. Use to turn an event or interest tag into a working audience. Every tag and segment is returned in one unpaginated call, but untagged members are excluded from the tag list and surface only as a separate untaggedCount, and tag engagement rates exclude insiders while tag member counts do not.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
tagsNoTag rows with member counts.
errorNoA human-readable error message detailing what went wrong.
segmentsNoSegment rows with member counts.
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.
totalCountNoTotal members in the audience.
tagEngagementNoPer-tag engagement rollup rows.
untaggedCountNoMembers with no tags.
subscribedCountNoSubscribed members in the audience.
tagStatusBreakdownNoTag-by-status member count rows.
overallAvgEngagementNoAudience-wide mean engagement score.

TDQS

A4/5.0
Behavior5/5

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

The description discloses behavior the annotations cannot: the call is unpaginated and returns every tag/segment, untagged members are excluded from the tag list and only appear via a separate untaggedCount, and engagement rates exclude insiders while member counts do not. These are non-obvious, outcome-shaping facts an agent would otherwise misread.

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?

Purpose and the audience-building use case are front-loaded, and each sentence carries distinct information with no filler. The final sentence stacks three separate caveats into one long clause, which slightly hurts scannability.

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 needn't be documented; the description instead covers the count/rate caveats and the no-pagination behavior, which are exactly the gaps an agent would otherwise trip on. Nothing needed to call it correctly is missing.

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?

With a single parameter and 100% schema description coverage, the schema already fully documents projectId (format, listing endpoint, 400 VALIDATION_ERROR on omission). The description adds nothing parameter-level, so the baseline of 3 applies.

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?

States a specific verb and resource ("Get tags and segments") plus the payload shape ("engagement and status breakdowns"), which is enough to separate it from sm_list_members or sm_get_member over similar data. It never names a sibling explicitly, so it falls short of the top band's sibling differentiation.

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

Usage Guidelines3/5

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

"Use to turn an event or interest tag into a working audience" gives one concrete motivating context, which is more than nothing. But there is no when-not guidance, no prerequisites, and no routing to alternatives such as sm_list_members or sm_get_member_campaigns when a plain member listing is what's needed.

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

sm_get_member_timelineGet member activity timelineA
Read-onlyIdempotent
Inspect

Replay one member's raw activity events in time order. Use to establish when someone last paid attention and what triggered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters.
dateToNoInclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default.
sortByNoThe field used to order the timeline. Defaults to ordering by the most recent timestamp first.timestamp
sortDirNoThe direction to sort the timeline results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "desc" when omitted.desc
dateFromNoInclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded.
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.
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.
openedFilterNoFilter timeline events to only those where the campaign was opened, not opened, or 'all' to ignore open status. Defaults to "all" when omitted.all
clickedFilterNoFilter timeline events to only those where the campaign was clicked, not clicked, or 'all' to ignore click status. Defaults to "all" when omitted.all
maxTimeToOpenNoMaximum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no upper bound.
minTimeToOpenNoMinimum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no lower bound.
subjectFilterNoFilter the timeline by a case-insensitive partial match on the campaign subject line. Omit to include all subjects.
maxTimeToClickNoMaximum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no upper bound.
minTimeToClickNoMinimum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no lower bound.
subscriberHashYesThe member's Mailchimp-style lowercase MD5 subscriber hash (canonical member key).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
dataNoResponse rows for the enclosing tool.
errorNoA human-readable error message detailing what went wrong.
hasMoreNoTrue if additional results exist beyond this page.
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.
subscriberHashNoThe 32-character lowercase hex MD5 hash of the member's downcased email address. This is the canonical unique identifier for members exposed across the Enterprise API, identical to Mailchimp's core behavior. The API will never expose internal synthetic BigQuery UUIDs.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, so the description only needs to add context beyond that. It adds that events are 'raw' and returned 'in time order,' which is useful, but it does not disclose additional behavioral traits such as pagination defaults or result size. Pagination is documented in the schema, and this is acceptable given strong annotation coverage.

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?

The description is two short sentences with no filler: the first states the core action and scope, and the second gives the practical use case. Every word earns its place, and the key behavior is front-loaded.

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?

Despite the tool's 15 parameters, the full schema describes every parameter, an output schema exists, and annotations cover safety semantics. The description supplies the missing contextual layer: what the tool is for and when to use it. Nothing essential for selecting or invoking the tool is missing.

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 schema already provides detailed descriptions for all 15 parameters, including defaults, formats, and constraints. The description adds little parameter-level meaning beyond implying the subscriberHash identifies the member, so the baseline of 3 is appropriate.

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?

The description uses a specific verb and resource: 'Replay one member's raw activity events in time order.' This clearly identifies the tool as an event-level timeline for a single member and distinguishes it from sibling tools like sm_get_member_overview or sm_get_member_campaigns, which imply aggregated or campaign-level views.

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?

The second sentence provides an explicit intended use: 'Use to establish when someone last paid attention and what triggered it.' This gives clear context for when the tool is appropriate, though it does not explicitly state when not to use it or name alternative tools.

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

sm_get_promptRender prompt workflowA
Read-onlyIdempotent
Inspect

Render one Space Monkey prompt workflow with concrete argument values, returning the complete instruction text ready to follow, plus the effective arguments that were bound (provided values plus defaults for omitted optionals). Prompt names and their arguments come from sm_list_prompts. If the rendered text still contains {{tokens}} such as {{projectId}} or {{company}}, a required argument was not provided; call again with it filled. The rendered text references sm_ tools by name; call them as instructed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPrompt name from sm_list_prompts, e.g. sm_brief_before_call.
argumentsNoArgument values for the prompt, keyed by argument name (e.g. {"company": "Conversion Sciences", "email": "brian@example.com"}). Omit optional arguments to use their defaults. Multi-line values are supported.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
nameNoPrompt name.
textNoRendered prompt body with values substituted.
errorNoA human-readable error message detailing what went wrong.
argumentsNoArgument values used for rendering.
descriptionNoPrompt description.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the non-obvious failure signal based on unresolved {{tokens}}, explains that the returned arguments include defaults, and clarifies that the output is the rendered instruction text rather than an execution result. This meaningfully improves an agent's ability to verify and recover from incomplete input.

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?

The four sentences are front-loaded with the core action and outputs, then address error detection and next steps. Every sentence earns its place with no redundant filler, keeping the definition informative without becoming bloated.

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?

Combined with the complete input schema, output schema, and annotations, the description covers valid prompt name sourcing, argument binding, missing-token failure handling, and subsequent tool usage. An agent has everything needed to invoke the tool correctly and respond to incomplete renders.

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%: both 'name' and 'arguments' already document their meaning, examples, and default behavior in detail. The description reinforces the source of names and the default-binding behavior, but adds no material parameter-level information beyond the schema, so the baseline 3 is appropriate.

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?

The description opens with 'Render one Space Monkey prompt workflow with concrete argument values' – a specific verb, resource, and operation. It clearly defines outputs as 'complete instruction text ready to follow' plus 'effective arguments', and explicitly names sm_list_prompts as the source of names, which helps distinguish it from sibling listing tools.

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 provides clear operational context: obtain prompt names from sm_list_prompts, fill missing required arguments if {{tokens}} remain, and call referenced sm_ tools afterwards. It lacks an explicit 'do not use this when...' or direct comparison with alternatives, so it is not a perfect 5.

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

sm_get_schemaGet API schema catalogA
Read-onlyIdempotent
Inspect

Get the Enterprise API's OpenAPI-derived schema catalog. Omitting operation returns a compact index of every Enterprise API operation; passing a tool name, full path, or path suffix returns that one operation's full parameters and resolved response schemas. Use before calling an unfamiliar tool to confirm its exact fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNoOptional selector for one Enterprise API operation. Omit this parameter to receive a compact index of every Enterprise API operation. Pass a tool name (e.g. sm_list_leaders), a full path (e.g. /_api/public/v1/enterprise/members/detail), or a path suffix (e.g. members/detail) to receive that operation's full parameters and resolved response schemas.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
pathNoURL path for the operation.
errorNoA human-readable error message detailing what went wrong.
methodNoHTTP method for the operation.
toolNameNoMCP tool wrapping the operation, or null when none.
operationNoFull OpenAPI operation object.
schemaUrlNoURL of the live OpenAPI document.
componentsNoOpenAPI components object referenced by operations.
operationsNoCatalog entries for each Enterprise API operation.
operationCountNoNumber of operations catalogued.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this as read-only, idempotent, and non-destructive, so the bar for behavioral disclosure is lower. The description adds meaningful behavioral detail by explaining that omitting `operation` returns a compact index and passing a selector returns full parameters and resolved response schemas. This goes beyond the annotations without contradicting them.

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?

Three sentences with no filler. The most important information (what the tool returns and the two modes) is front-loaded, and the usage guidance is placed at the end as a natural conclusion. Every sentence earns its place.

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?

Given the annotations, a rich output schema, and a fully documented single optional parameter, the description is complete. An agent knows when to call it, what the two modes do, and how to select a target operation. No critical behavioral or usage context is missing.

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?

The schema itself already provides 100% coverage of the single `operation` parameter, including the omission behavior and acceptable selector forms. The description largely restates this information rather than adding new meaning, so the baseline score of 3 is appropriate.

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?

The description names a specific verb ('Get') and resource ('Enterprise API's OpenAPI-derived schema catalog'), and clearly distinguishes this meta-tool from the many sm_get_* and sm_list_* siblings by explaining it returns schema information rather than business data. The dual-mode behavior (index vs. single operation) makes the purpose unmistakable.

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?

The description explicitly says to use the tool 'before calling an unfamiliar tool to confirm its exact fields,' which gives clear contextual guidance. It does not explicitly enumerate when not to use it or name alternative tools, but the guidance is specific enough that an agent can infer the appropriate invocation context.

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

sm_get_sync_runGet sync run detailA
Read-onlyIdempotent
Inspect

Load one sync run's full detail — per-stage results, progress, lookback window and pending batch count. Use after sm_list_sync_runs to explain why data is stale or a run failed. Failure detail lands in one of two places and rarely both: orchestration failures set run.errorMessage with no stage rows, while per-data-type failures leave it null and record the message on results[].errorMessage, so check both and treat status as the failure signal.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesThe opaque 8-character hash ID correlating to the sync run.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runNoDetails for a specific sync run. Omits projectName, retryCount, resultsCount, and totalTables carried by the list row.
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.
resultsNoPer-stage results for the sync run.
progressNoPer-data-type progress rows for the sync run.
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.
pendingBatchCountNoNumber of batches still queued for processing.
lookbackWindowDaysNoNumber of days of history the sync covers.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare this a safe, idempotent read, but the description goes well beyond them by disclosing the two distinct failure-recording paths (orchestration errors in run.errorMessage with null results, per-data-type errors in results[].errorMessage with null run.errorMessage) and instructing the agent to treat status as the failure signal. This is the kind of non-obvious behavior that prevents misdiagnosis.

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?

Three sentences, zero filler, and the core purpose leads. The longest sentence carries genuinely load-bearing failure-mode guidance rather than padding.

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 re-explained; the description instead supplies the interpretation guidance the output schema can't (how to read errorMessage across two locations). Nothing an agent needs to call and correctly interpret this tool is missing.

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?

With 100% schema description coverage on both required parameters, the schema already documents runId and projectId fully. The description adds no syntax, format, or constraint detail for the parameters themselves, 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 (Load) and resource (one sync run's full detail), then enumerates exactly what the payload contains (per-stage results, progress, lookback window, pending batch count). It also names sm_list_sync_runs, so an agent can place it relative to its closest sibling.

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?

Explicitly prescribes the workflow: 'Use after sm_list_sync_runs to explain why data is stale or a run failed.' Both the predecessor tool and the diagnostic intent are stated, leaving nothing to inference.

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

sm_get_variateAnalyze variate campaignA
Read-onlyIdempotent
Inspect

Analyse a variate (A/B) campaign — per-variant reports, statistical significance, engagement velocity, audience quality and geo split. Only meaningful for multivariate campaigns. All metrics come from synced BigQuery tables rather than a live Mailchimp read, so they are only as current as the project's last sync run, whose cadence is per-project: manual, daily or weekly.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
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.
funnelDataNoPer-variant funnel rows from recipients through unique clickers.
geoBreakdownNoPer-variant geography rollup rows.
variantReportsNoPer-variant performance rows.
audienceQualityNoPer-variant audience-quality rows.
timeToFirstOpenNoPer-variant time-to-first-open statistics.
engagementVelocityNoPer-variant engagement velocity rows.

TDQS

A4.1/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). The description adds genuinely non-obvious behavior: metrics are sourced from synced BigQuery tables, not a live Mailchimp read, so freshness depends on a per-project sync cadence (manual/daily/weekly). That is exactly the kind of caveat annotations cannot express.

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 sentences, no filler. The data-freshness caveat is slightly buried at the end, but the sentence is information-dense rather than padded, so the only minor deduction is for front-loading of the most decision-relevant caveat.

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?

An output schema exists, so return values need not be explained, and the description still helpfully enumerates the report sections. Combined with the sync-lag disclosure and the multivariate scoping, an agent has what it needs to call this correctly; the only gap is not naming the fallback tool for non-variate campaigns.

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% — both projectId and campaignId are thoroughly documented in the schema, including error behavior. The description adds no parameter-level detail, so the baseline 3 is appropriate.

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 ('Analyse') and resource ('variate (A/B) campaign') and enumerates exactly what is returned: per-variant reports, statistical significance, engagement velocity, audience quality, geo split. It also distinguishes itself from the sibling insights tools by being scoped to multivariate campaigns only.

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?

Gives an explicit applicability condition — 'Only meaningful for multivariate campaigns' — which routes the agent away from using it on standard campaigns (cf. sm_get_insights_basic/advanced/expert). It does not, however, name which sibling to use instead when the campaign is not multivariate.

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

sm_list_at_riskFind at-risk membersA
Read-onlyIdempotent
Inspect

Find previously engaged members whose recent activity has collapsed, for building save lists. Note its engagementScore is a raw decayed score that can be negative, unlike the leaders percentile.

ParametersJSON Schema
NameRequiredDescriptionDefault
repNoFilter by an exact match on the assigned sales representative's name. Omit to include members assigned to any rep.
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters.
searchNoFilter subscribers by a case-insensitive partial match on their email address, first name, or last name. Omit to skip text filtering.
sortByNoThe field used to order the at-risk subscribers list. Defaults to the number of recent active actions.active_actions_recent
sortDirNoThe direction to sort the at-risk results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "asc" when omitted.asc
maxPriorNoMaximum count of engagement actions prior to the recent drop-off. Omit to impose no upper bound.
minPriorNoMinimum count of engagement actions prior to the recent drop-off. Omit to impose no lower bound.
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.
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

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
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.
subscribersNoAt-risk member rows.
distributionNoRating-bucket distribution of the at-risk population.
quadrantDataNoPer-member rows for the prior-vs-recent activity quadrant.
repBreakdownNoPer-rep rollup of the at-risk population.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds a non-obvious interpretive fact: engagementScore is raw and decayed and can be negative, unlike a percentile, which prevents an agent from misreading values. This is useful context beyond the annotations and does not contradict them.

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 with no filler; the first front-loads the verb, resource, and purpose, and the second adds the critical score caveat. It avoids repeating anything already present in the title or schema.

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?

For a 13-parameter list tool with a full output schema, the description gives the core at-risk definition and the one caveat most likely to trip up an agent. It could say a bit more about which sibling to choose in ambiguous cases, but nothing essential to calling it correctly is missing.

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 coverage is 100%, with every parameter already documented including defaults, enums, and required projectId. The description's score caveat applies to a returned or output field rather than to input parameters, so it adds no essential parameter-level meaning. Baseline 3 is appropriate.

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 action, 'Find previously engaged members whose recent activity has collapsed', and a concrete purpose, 'for building save lists'. This expands the title and clearly separates it from sibling list tools like sm_list_members and sm_list_leaders.

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?

Gives a clear use case (building save lists) and a hint about when to prefer it over the leaders tool via the 'unlike the leaders percentile' note. It does not enumerate exclusions or explicitly name the alternative tool, so it stops short of full when/when-not guidance.

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

sm_list_campaign_respondersList Campaign RespondersA
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

sm_list_campaignsList campaignsA
Read-onlyIdempotent
Inspect

List a project's campaigns with performance metrics. Use to map a member's lastActivityAt onto a real send, or to find the latest house send by send_time.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters.
searchNoFilter campaigns by a case-insensitive partial match on the subject line or specific internal campaign IDs. Omit to skip text filtering.
sortByNoThe field used to order the campaigns list. Defaults to sorting by the most recent send time first.send_time
endDateNoInclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default.
sortDirNoThe direction to sort the campaign results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "desc" when omitted.desc
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.
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.
startDateNoInclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded.
maxSendVolumeNoMaximum number of emails sent to include the campaign in the results. Omit to impose no upper bound.
minSendVolumeNoMinimum number of emails sent to include the campaign in the results. Omit to use the system default threshold.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
pageSizeNoThe maximum number of items returned in this page.
campaignsNoCampaign rows with performance metrics.
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.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by noting the tool returns performance metrics and by framing the two use cases. It does not describe pagination behavior or default sorting, but the schema covers those details, so the description adds reasonable value beyond annotations.

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 with zero waste. The first sentence states the core function, and the second gives concrete use cases. Every word earns its place.

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?

The tool has a rich schema (10 params, all documented) and an output schema, so the description doesn't need to explain return values. The use cases add practical context for an agent. It could mention pagination or default sorting, but those are already in the schema, so the description is complete enough for a list tool.

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%, so the schema already documents all 10 parameters thoroughly. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline 3 is appropriate.

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?

The description states a specific verb ('List'), a resource ('a project's campaigns'), and the key output ('with performance metrics'). It also names two concrete use cases (mapping lastActivityAt onto a real send, finding the latest house send by send_time), which distinguishes it from sibling tools like sm_get_campaign or sm_get_member_campaigns.

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?

The description gives clear context for when to use the tool ('Use to map a member's lastActivityAt onto a real send, or to find the latest house send by send_time'). It does not explicitly name alternatives or exclusions, but the use cases imply when this list tool is appropriate versus a get tool.

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

sm_list_leadersRank engaged leadersA
Read-onlyIdempotent
Inspect

Rank the most engaged members of a project by engagement percentile. Use when you need who is paying attention right now, filtered by rep, tag, rating, status or bot/insider rules. engagementScore is a 0-100 percentile here (at-risk tools use a raw score that can go negative), memberRating is Mailchimp's 1-5 rating, and subscriberHash is the MD5 of the member's downcased email, the join key for member-centric tools. Results are paginated with pageSize capped at 100 rows.

ParametersJSON 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.
searchNoFilter leaders by a case-insensitive partial match on their email address, first name, or last name. Omit to skip text filtering.
sortByNoThe field used to order the leaderboard results. Defaults to sorting by the highest engagement score first.engagement_score
statusNoFilter members by their specific leader status (e.g. VIP or standard leader). Select 'all' to include every status. Defaults to "all" when omitted.all
sortDirNoThe direction to sort the leaderboard results. Can be 'asc' for ascending or 'desc' for descending. Defaults to "desc" when omitted.desc
maxScoreNoMaximum engagement score percentile to include. The score ranges from 0 to 100. Omit to impose no maximum bound.
minScoreNoMinimum engagement score percentile to include. The score ranges from 0 to 100. Omit to impose no minimum bound.
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.
leaderOnlyNoRestrict the leaderboard strictly to members recognized as highly engaged leaders. Set to false to include the broader audience in the engagement rank. Defaults to true when omitted.
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

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
leadersNoLeader member rows ranked by engagement.
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.
repOptionsNoDistinct rep values available for filtering.
tagOptionsNoDistinct tag values available for filtering.
summaryStatsNoOverall summary stats for leaders. Note: avgScore is actually the average member RATING, preserved for now.
leaderboardDistributionNoLeaderboard tier buckets from highest to lowest engagement.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile needs no restatement. The description earns credit for disclosing real behavioral quirks: engagementScore is a 0-100 percentile here whereas at-risk tools use a raw score that can go negative, memberRating is Mailchimp's 1-5 scale, and subscriberHash is the MD5 of the downcased email used as the join key. It also states pagination is capped at 100 rows. It doesn't cover rate limits or result ordering nuances beyond the default.

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?

The paragraph is tightly structured and front-loads the core ranking purpose before usage context and the engagementScore/memberRating/subscriberHash semantics. It is a single well-organized block with no filler, though it could be split for faster scanning by an agent.

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?

Given 16 parameters, five enums, and a rich schema plus an output schema, the description covers the essentials an agent needs: what it ranks, primary filters, score semantics, and the pagination cap. It omits how sorting interacts with percentile scores and does not mention the default leaderOnly=true behavior, which is a notable gap for a tool whose default changes the result set.

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%, so the schema already documents all 16 parameters, including enums, defaults, and bounds. The description adds semantic color rather than parameter documentation: it explains the percentile vs raw-score distinction and the subscriberHash join key, which helps interpretation but is not tied to specific parameters. Baseline 3 applies when the schema does the heavy lifting.

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 opens with a specific verb and resource: 'Rank the most engaged members of a project by engagement percentile.' This clearly distinguishes it from sibling list tools like sm_list_members and sm_list_at_risk by naming the ranking behavior and the engagement-percentile basis. It stops short of naming a sibling alternative explicitly, so it lands just shy of a 5.

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?

The second sentence gives a use context ('when you need who is paying attention right now') and enumerates the applicable filters (rep, tag, rating, status, bot/insider rules). It does not explicitly route the agent to sm_list_at_risk or explain when to choose this list over the general member list, which keeps it out of the 5 band.

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

sm_list_membersBrowse member directoryA
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

sm_list_projectsList projectsA
Read-onlyIdempotent
Inspect

Resolve which Space Monkey projects this API key can read. Call this first when the user names a company rather than a project ID, and match on companyName — never silently mix projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
countNoNumber of projects returned.
errorNoA human-readable error message detailing what went wrong.
projectsNoProject rows this key can read.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive, so the description's job is to add context. It does: the tool is scoped to the API key's readable projects, it resolves company names, and it must not silently merge projects. This meaningfully extends beyond the structured annotations.

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 tight sentences with no filler. The primary action is front-loaded, and the usage rule is stated in a compact, memorable way.

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?

With no parameters, an output schema, and annotations covering safety and idempotency, the description provides all remaining context an agent needs: when to call it, what it resolves, and a critical matching constraint. Nothing is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to explain about parameters. The mention of companyName gives useful conceptual context even though it is not a formal parameter.

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?

The description uses a specific verb ('Resolve') and a clear resource ('which Space Monkey projects this API key can read'), immediately distinguishing this from sibling list tools. It also frames the tool's role as a lookup/discovery operation rather than a generic list.

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?

It gives an explicit trigger condition: 'Call this first when the user names a company rather than a project ID.' It also provides a behavioral rule ('match on companyName') and a firm exclusion ('never silently mix projects'), which is strong guidance for an agent choosing between this and other tools.

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

sm_list_promptsList prompt workflowsA
Read-onlyIdempotent
Inspect

List the Space Monkey prompt workflows: user-invocable recipes that chain sm_ tools into this week's sales actions (build call sheets, strike after a send, save cooling leaders, harvest an event, brief before a call). Each entry lists its arguments and its category. Use sm_get_prompt to render one with concrete argument values, then follow the rendered instructions to run the workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
promptsNoPrompt workflow rows.
versionNoVersion string for the enclosing catalog or document.
lastUpdatedNoISO 8601 instant the underlying data was last refreshed.
promptCountNoNumber of prompts in the catalog.
catalogSourceNoSource descriptor for the enclosing catalog.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe/read-only nature is covered. The description adds useful behavioral context: these are user-invocable recipes that chain sm_ tools and require following rendered instructions to execute, which indicates this tool only lists metadata rather than running workflows.

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?

The description is two sentences with no filler. It front-loads the action and resource, gives illustrative examples, and ends with a practical next step, all in a compact and scannable structure.

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?

For a zero-argument, read-only list tool with a rich annotation set and an output schema, the description provides everything an agent needs: what is listed, what each entry contains, and how to proceed with sm_get_prompt. No critical behavioral or usage details are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero input parameters and 100% schema coverage, so there are no parameter semantics for the description to clarify. The description still adds relevant context by noting that each returned entry lists its arguments and category, which is helpful for understanding the output.

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?

The description uses a specific verb ('List') and a specific resource ('Space Monkey prompt workflows'), and distinguishes this tool from the sibling sm_get_prompt by framing listing vs. rendering. It also gives concrete examples of what these workflows are, so an agent can identify the tool's purpose without ambiguity.

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?

The description explicitly directs the agent to use sm_get_prompt after listing, saying to render one with concrete argument values and then follow the rendered instructions. This provides clear routing to the relevant sibling, though it does not enumerate when not to use this tool relative to other list tools.

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

sm_list_sync_runsList sync runsA
Read-onlyIdempotent
Inspect

List recent data-pipeline sync runs with status and results. Operational tool for checking data freshness before trusting an analysis. Results are paginated with pageSize capped at 100 rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque keyset pagination cursor returned as `nextCursor` by the previous page. Must be replayed with identical query filters.
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.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.
runsNoSync run rows.
errorNoA human-readable error message detailing what went wrong.
hasMoreNoTrue if additional results exist beyond this page.
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.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds pagination behavior and the 100-row cap, but the cap is already stated verbatim in the pageSize schema, and the 'recent' window, cursor replay rules, and ordering are left unspecified.

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 short sentences, front-loaded with the action and resource before context and pagination notes. Nothing is redundant, though 'with status and results' and the cap sentence are marginally low-value given the schema.

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, annotations covering safety, and 100% parameter coverage, the description does not need to explain return values. It supplies the missing use-case framing; only the undefined 'recent' window is a small gap for a paginated list tool.

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%, so cursor, pageSize and projectId are all fully documented with constraints and defaults. The description restates the pageSize cap without adding syntax or semantics beyond what the schema provides; baseline 3 applies.

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?

States a specific verb and resource ('List recent data-pipeline sync runs') plus what each row carries ('status and results'), which is enough to distinguish it from sm_get_sync_run's single-run lookup. It never names a sibling explicitly, so the differentiation is implied by 'list recent' rather than stated.

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?

Provides a clear operational context: 'checking data freshness before trusting an analysis.' That tells the agent when the tool is relevant, but gives no when-not condition and does not route to sm_get_sync_run for drilling into a specific run.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedsm_get_campaign_post_mortem9 fields changed
      • addedInput schema / properties / botFilter
        Added value: +{
        +  "default": "all",
        +  "description": "Filter out members whose interactions appear to be automated bot activity. Select 'suspected-bot' for only bots, 'clean' to exclude bots, or 'all' (default) to ignore.",
        +  "enum": [
        +    "all",
        +    "suspected-bot",
        +    "clean"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / audienceQuality / items / properties / repeatClickers / description
        Added value: +"Members who clicked more than once."
      • addedOutput schema / properties / audienceQuality / items / properties / repeatOpeners / description
        Added value: +"Members who opened more than once."
      • addedOutput schema / properties / summary / properties / isVariate / description
        Added value: +"True when the campaign is an A/B (variate) test."
      • addedOutput schema / properties / variate / properties / audienceQuality / items / properties / repeatClickers / description
        Added value: +"Members who clicked more than once."
      • addedOutput schema / properties / variate / properties / audienceQuality / items / properties / repeatOpeners / description
        Added value: +"Members who opened more than once."
      • addedOutput schema / properties / variate / properties / geoBreakdown / items / properties / engagedCount / description
        Added value: +"Engaged members in the region."
      • addedOutput schema / properties / variate / properties / geoBreakdown / items / properties / stateRegion / description
        Added value: +"State or region."
      • addedOutput schema / properties / velocity / properties / hourlyEngagement / description
        Added value: +"Hourly open and click counts after send."
  2. 1 tool update
    • Changedsm_get_knowledge2 fields changed
      • changedInput schema / properties / topic / description
        Previous value: -"Optional short topic selector to fetch a single knowledge document (one of: analyst-preamble, metric-guardrails, openapi, faq). Omit this parameter to receive every knowledge document."New value: +"Optional short topic selector to fetch a single knowledge document (one of: analyst-preamble, metric-guardrails, openapi, faq). Omit this parameter to receive a compact topic index."
      • removedOutput schema / properties / documents
        Removed value: -{
        -  "description": "Knowledge documents matching the request.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "description": {
        -        "description": "Document description.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Document body text.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Document title.",
        -        "type": "string"
        -      },
        -      "topic": {
        -        "description": "Topic key the document belongs to.",
        -        "type": "string"
        -      },
        -      "uri": {
        -        "description": "Resource URI for the document.",
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
  3. 1 tool update
    • Addedsm_get_campaign_post_mortem
  4. 1 tool update
    • Changedsm_get_knowledge2 fields changed
      • changedInput schema / properties / topic / description
        Previous value: -"Optional short topic selector to fetch a single knowledge document (one of: analyst-preamble, metric-guardrails, openapi). Omit this parameter to receive every knowledge document."New value: +"Optional short topic selector to fetch a single knowledge document (one of: analyst-preamble, metric-guardrails, openapi, faq). Omit this parameter to receive every knowledge document."
      • changedInput schema / properties / topic / enum
        Previous value: -[
        -  "analyst-preamble",
        -  "metric-guardrails",
        -  "openapi"
        -]New value: +[
        +  "analyst-preamble",
        +  "metric-guardrails",
        +  "openapi",
        +  "faq"
        +]
  5. 2 tool updates
    • Addedsm_list_campaign_responders
    • Changedsm_list_members2 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"
        +]
  6. 2 tool updates
    • Changedsm_get_member_geo1 field changed
      • changedInput schema / properties / countryCode / description
        Previous value: -"Isolate distribution to a specific ISO country code."New value: +"Two-letter ISO country code to drill into, matched case-insensitively (e.g. 'US', 'CA'). Omit it and `regions` comes back null while `countries` and `allRegions` still cover the whole audience; pass it and `regions` returns that country's region breakdown."
    • Changedsm_list_members1 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"
        +]
  7. 24 tool updates
    • Changedsm_get_account6 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_account tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_account tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / account / properties / displayName / description
        Added value: +"Human-readable account name."
      • addedOutput schema / properties / entitlements / description
        Added value: +"Per-service entitlement rows defining allowed access."
      • addedOutput schema / properties / projectCount / description
        Added value: +"Number of projects this key can read."
      • addedOutput schema / properties / tier / properties / displayName / description
        Added value: +"Human-readable tier name."
      • addedOutput schema / properties / usage / description
        Added value: +"Current-hour and current-month quota usage."
    • Changedsm_get_campaign39 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_campaign tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_campaign tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / campaignMeta / properties / campaignType / description
        Added value: +"Mailchimp campaign type, or null when unknown."
      • addedOutput schema / properties / performance / properties / bounceRate / description
        Added value: +"Bounces divided by emails sent, as a percentage from 0 to 100."
      • addedOutput schema / properties / performance / properties / campaignId / description
        Added value: +"Campaign identifier."
      • addedOutput schema / properties / performance / properties / clickRate / description
        Added value: +"Unique clicks divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / performance / properties / clickToOpenRate / description
        Added value: +"Unique clicks divided by unique opens, as a percentage from 0 to 100."
      • addedOutput schema / properties / performance / properties / clicksTotal / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / performance / properties / deliveries / description
        Added value: +"Number of emails accepted for delivery by the receiving mail system."
      • addedOutput schema / properties / performance / properties / deliveryRate / description
        Added value: +"Delivered divided by emails sent, as a percentage from 0 to 100."
      • addedOutput schema / properties / performance / properties / emailsSent / description
        Added value: +"Emails the campaign sent."
      • addedOutput schema / properties / performance / properties / openRate / description
        Added value: +"Unique opens divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / performance / properties / opensTotal / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / performance / properties / subjectLine / description
        Added value: +"Campaign subject line."
      • addedOutput schema / properties / performance / properties / totalBounces / description
        Added value: +"Hard plus soft bounces for the campaign."
      • addedOutput schema / properties / performance / properties / uniqueClicks / description
        Added value: +"Number of distinct members who clicked at least once."
      • addedOutput schema / properties / performance / properties / uniqueOpens / description
        Added value: +"Number of distinct members who opened at least once."
      • addedOutput schema / properties / performance / properties / unsubscribeRate / description
        Added value: +"Unsubscribes divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / performance / properties / unsubscribed / description
        Added value: +"Unsubscribes for the campaign."
      • addedOutput schema / properties / report / properties / abuseReports / description
        Added value: +"Number of recipients who reported the campaign as spam."
      • addedOutput schema / properties / report / properties / bounceRate / description
        Added value: +"Bounces divided by emails sent, as a percentage from 0 to 100."
      • addedOutput schema / properties / report / properties / campaignId / description
        Added value: +"Stable identifier for a Mailchimp campaign. Use it to join rows across tools or drill into sm_get_campaign."
      • addedOutput schema / properties / report / properties / campaignType / description
        Added value: +"Mailchimp campaign type."
      • addedOutput schema / properties / report / properties / clickRate / description
        Added value: +"Unique clicks divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / report / properties / clickToOpenRate / description
        Added value: +"Unique clicks divided by unique opens, as a percentage from 0 to 100."
      • addedOutput schema / properties / report / properties / delivered / description
        Added value: +"Number of emails accepted for delivery by the receiving mail system."
      • addedOutput schema / properties / report / properties / deliveryRate / description
        Added value: +"Delivered divided by emails sent, as a percentage from 0 to 100."
      • addedOutput schema / properties / report / properties / emailsSent / description
        Added value: +"Number of emails the campaign attempted to send to recipients."
      • addedOutput schema / properties / report / properties / forwardsCount / description
        Added value: +"Number of forward events. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / report / properties / hardBounces / description
        Added value: +"Emails rejected for permanent reasons such as an invalid address. Not retried."
      • addedOutput schema / properties / report / properties / listName / description
        Added value: +"Audience the campaign was sent to."
      • addedOutput schema / properties / report / properties / openRate / description
        Added value: +"Unique opens divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / report / properties / previewText / description
        Added value: +"Preview text for the campaign."
      • addedOutput schema / properties / report / properties / softBounces / description
        Added value: +"Emails rejected for temporary reasons. Mailchimp may retry delivery."
      • addedOutput schema / properties / report / properties / subjectLine / description
        Added value: +"The campaign subject line as sent."
      • addedOutput schema / properties / report / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / report / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / report / properties / uniqueClicks / description
        Added value: +"Number of distinct members who clicked at least once."
      • addedOutput schema / properties / report / properties / uniqueOpens / description
        Added value: +"Number of distinct members who opened at least once."
      • addedOutput schema / properties / report / properties / unsubscribes / description
        Added value: +"Number of unsubscribe events for the campaign."
    • Changedsm_get_insights_advanced68 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_insights_advanced tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_insights_advanced tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / audienceSummary / description
        Added value: +"Current audience status rollup: one row per member status with the member count."
      • addedOutput schema / properties / audienceSummary / items / properties / memberCount / description
        Added value: +"Members in the status."
      • addedOutput schema / properties / audienceSummary / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / campaignAverages / description
        Added value: +"Single summary row of aggregate campaign metrics for the current period."
      • addedOutput schema / properties / campaignAverages / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent per campaign in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalAbuseReports / description
        Added value: +"Total abuse reports across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / campaignAverages / items / properties / totalCampaigns / description
        Added value: +"Total number of campaigns the enclosing summary covers."
      • addedOutput schema / properties / campaignAverages / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / campaignAverages / items / properties / totalEmailsSent / description
        Added value: +"Total emails sent across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalForwards / description
        Added value: +"Total forward events across the campaigns in the enclosing summary. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / campaignAverages / items / properties / totalHardBounces / description
        Added value: +"Total permanent bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / campaignAverages / items / properties / totalSoftBounces / description
        Added value: +"Total temporary bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalUnsubscribes / description
        Added value: +"Total unsubscribe events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignConsistency / properties / clickRateStddev / description
        Added value: +"Click-rate standard deviation."
      • addedOutput schema / properties / campaignConsistency / properties / maxClickRate / description
        Added value: +"Highest click rate."
      • addedOutput schema / properties / campaignConsistency / properties / maxOpenRate / description
        Added value: +"Highest open rate."
      • addedOutput schema / properties / campaignConsistency / properties / medianClickRate / description
        Added value: +"Median click rate."
      • addedOutput schema / properties / campaignConsistency / properties / medianOpenRate / description
        Added value: +"Median open rate."
      • addedOutput schema / properties / campaignConsistency / properties / minClickRate / description
        Added value: +"Lowest click rate."
      • addedOutput schema / properties / campaignConsistency / properties / minOpenRate / description
        Added value: +"Lowest open rate."
      • addedOutput schema / properties / campaignConsistency / properties / openRateStddev / description
        Added value: +"Open-rate standard deviation."
      • addedOutput schema / properties / computedThreshold / description
        Added value: +"Threshold computed for the analysis, or null when not applicable."
      • addedOutput schema / properties / engagementDistribution / description
        Added value: +"Members bucketed by engagement rating."
      • addedOutput schema / properties / engagementDistribution / items / properties / memberCount / description
        Added value: +"Members in the bucket."
      • addedOutput schema / properties / engagementDistribution / items / properties / memberRating / description
        Added value: +"Engagement rating bucket, or null."
      • addedOutput schema / properties / insights / description
        Added value: +"Auto-generated insight objects pairing a title with a descriptive sentence."
      • addedOutput schema / properties / insights / items / properties / description / description
        Added value: +"Insight explanation."
      • addedOutput schema / properties / insights / items / properties / title / description
        Added value: +"Insight title."
      • addedOutput schema / properties / previousPeriodAverages / description
        Added value: +"Single summary row of aggregate campaign metrics for the prior comparison period."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent per campaign in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalAbuseReports / description
        Added value: +"Total abuse reports across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalCampaigns / description
        Added value: +"Total number of campaigns the enclosing summary covers."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalEmailsSent / description
        Added value: +"Total emails sent across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalForwards / description
        Added value: +"Total forward events across the campaigns in the enclosing summary. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalHardBounces / description
        Added value: +"Total permanent bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalSoftBounces / description
        Added value: +"Total temporary bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalUnsubscribes / description
        Added value: +"Total unsubscribe events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / segmentSummary / description
        Added value: +"Segment summary rows."
      • addedOutput schema / properties / segmentSummary / items / properties / memberCount / description
        Added value: +"Members in the segment."
      • addedOutput schema / properties / segmentSummary / items / properties / name / description
        Added value: +"Segment name."
      • addedOutput schema / properties / segmentSummary / items / properties / segmentId / description
        Added value: +"Segment identifier."
      • addedOutput schema / properties / segmentSummary / items / properties / segmentType / description
        Added value: +"Segment type, or null."
      • addedOutput schema / properties / subscriberGrowth / description
        Added value: +"Audience growth rows over time, bucketed by member status."
      • addedOutput schema / properties / subscriberGrowth / items / properties / memberCount / description
        Added value: +"Members in the status."
      • addedOutput schema / properties / subscriberGrowth / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / subscriberGrowthBaseline / description
        Added value: +"Baseline subscriber number used for growth comparison."
      • addedOutput schema / properties / subscriberGrowthBaselineChurn / description
        Added value: +"Baseline churn number used for growth comparison."
      • addedOutput schema / properties / subscriberGrowthBaselineSubscribed / description
        Added value: +"Baseline subscribed count used for growth comparison."
      • addedOutput schema / properties / tagSummary / description
        Added value: +"Tag summary rows."
      • addedOutput schema / properties / tagSummary / items / properties / memberCount / description
        Added value: +"Members carrying the tag."
      • addedOutput schema / properties / tagSummary / items / properties / name / description
        Added value: +"Tag name."
      • addedOutput schema / properties / tagSummary / items / properties / tagId / description
        Added value: +"Tag identifier."
    • Changedsm_get_insights_basic99 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_insights_basic tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_insights_basic tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / audienceSummary / description
        Added value: +"Current audience status rollup: one row per member status with the member count."
      • addedOutput schema / properties / audienceSummary / items / properties / memberCount / description
        Added value: +"Members in the status."
      • addedOutput schema / properties / audienceSummary / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / campaignAverages / description
        Added value: +"Single summary row of aggregate campaign metrics for the current period."
      • addedOutput schema / properties / campaignAverages / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent per campaign in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalAbuseReports / description
        Added value: +"Total abuse reports across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / campaignAverages / items / properties / totalCampaigns / description
        Added value: +"Total number of campaigns the enclosing summary covers."
      • addedOutput schema / properties / campaignAverages / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / campaignAverages / items / properties / totalEmailsSent / description
        Added value: +"Total emails sent across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalForwards / description
        Added value: +"Total forward events across the campaigns in the enclosing summary. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / campaignAverages / items / properties / totalHardBounces / description
        Added value: +"Total permanent bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / campaignAverages / items / properties / totalSoftBounces / description
        Added value: +"Total temporary bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalUnsubscribes / description
        Added value: +"Total unsubscribe events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignDetail / properties / abuseReports / description
        Added value: +"Abuse reports."
      • addedOutput schema / properties / campaignDetail / properties / bounceRate / description
        Added value: +"Bounce rate (0-100)."
      • addedOutput schema / properties / campaignDetail / properties / campaignId / description
        Added value: +"Campaign identifier."
      • addedOutput schema / properties / campaignDetail / properties / campaignType / description
        Added value: +"Mailchimp campaign type."
      • addedOutput schema / properties / campaignDetail / properties / clickRate / description
        Added value: +"Click rate (0-100)."
      • addedOutput schema / properties / campaignDetail / properties / clickToOpenRate / description
        Added value: +"Click-to-open rate (0-100)."
      • addedOutput schema / properties / campaignDetail / properties / delivered / description
        Added value: +"Emails delivered."
      • addedOutput schema / properties / campaignDetail / properties / deliveryRate / description
        Added value: +"Delivery rate (0-100)."
      • addedOutput schema / properties / campaignDetail / properties / emailsSent / description
        Added value: +"Emails sent."
      • addedOutput schema / properties / campaignDetail / properties / forwardsCount / description
        Added value: +"Number of forward events. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / campaignDetail / properties / hardBounces / description
        Added value: +"Hard bounces."
      • addedOutput schema / properties / campaignDetail / properties / listName / description
        Added value: +"Audience name."
      • addedOutput schema / properties / campaignDetail / properties / openRate / description
        Added value: +"Open rate (0-100)."
      • addedOutput schema / properties / campaignDetail / properties / previewText / description
        Added value: +"Preview text."
      • addedOutput schema / properties / campaignDetail / properties / softBounces / description
        Added value: +"Soft bounces."
      • addedOutput schema / properties / campaignDetail / properties / subjectLine / description
        Added value: +"Campaign subject line."
      • addedOutput schema / properties / campaignDetail / properties / totalClicks / description
        Added value: +"Total click events."
      • addedOutput schema / properties / campaignDetail / properties / totalOpens / description
        Added value: +"Total open events."
      • addedOutput schema / properties / campaignDetail / properties / uniqueClicks / description
        Added value: +"Distinct clickers."
      • addedOutput schema / properties / campaignDetail / properties / uniqueOpens / description
        Added value: +"Distinct openers."
      • addedOutput schema / properties / campaignDetail / properties / unsubscribes / description
        Added value: +"Unsubscribes."
      • addedOutput schema / properties / campaignPerformance / description
        Added value: +"Per-campaign performance rows for the period, with send, open, click, bounce and unsubscribe metrics."
      • addedOutput schema / properties / campaignPerformance / items / properties / bounceRate / description
        Added value: +"Bounces divided by emails sent, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaignPerformance / items / properties / campaignId / description
        Added value: +"Campaign identifier."
      • addedOutput schema / properties / campaignPerformance / items / properties / clickRate / description
        Added value: +"Unique clicks divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaignPerformance / items / properties / clickToOpenRate / description
        Added value: +"Unique clicks divided by unique opens, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaignPerformance / items / properties / clicksTotal / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / campaignPerformance / items / properties / deliveries / description
        Added value: +"Number of emails accepted for delivery by the receiving mail system."
      • addedOutput schema / properties / campaignPerformance / items / properties / deliveryRate / description
        Added value: +"Delivered divided by emails sent, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaignPerformance / items / properties / emailsSent / description
        Added value: +"Number of emails the campaign attempted to send to recipients."
      • addedOutput schema / properties / campaignPerformance / items / properties / openRate / description
        Added value: +"Unique opens divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaignPerformance / items / properties / opensTotal / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / campaignPerformance / items / properties / subjectLine / description
        Added value: +"Campaign subject line."
      • addedOutput schema / properties / campaignPerformance / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / campaignPerformance / items / properties / uniqueClicks / description
        Added value: +"Number of distinct members who clicked at least once."
      • addedOutput schema / properties / campaignPerformance / items / properties / uniqueOpens / description
        Added value: +"Number of distinct members who opened at least once."
      • addedOutput schema / properties / campaignPerformance / items / properties / unsubscribeRate / description
        Added value: +"Unsubscribes divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaignPerformance / items / properties / unsubscribed / description
        Added value: +"Recipients who unsubscribed, when the enclosing row is per-campaign."
      • addedOutput schema / properties / campaignTotal / description
        Added value: +"Total campaigns in the period."
      • addedOutput schema / properties / computedThreshold / description
        Added value: +"Threshold value computed for the current analysis, or null when not applicable."
      • addedOutput schema / properties / engagementTrend / description
        Added value: +"Month-over-month engagement trend rows."
      • addedOutput schema / properties / engagementTrend / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / engagementTrend / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / engagementTrend / items / properties / campaignCount / description
        Added value: +"Campaigns in the month."
      • addedOutput schema / properties / insights / description
        Added value: +"Auto-generated insight objects pairing a title with a descriptive sentence."
      • addedOutput schema / properties / insights / items / properties / description / description
        Added value: +"Insight explanation."
      • addedOutput schema / properties / insights / items / properties / title / description
        Added value: +"Insight title."
      • addedOutput schema / properties / listOverview / description
        Added value: +"Per-list overview: one row per Mailchimp audience with size and health metrics."
      • addedOutput schema / properties / listOverview / items / properties / cleanedCount / description
        Added value: +"Cleaned members in the audience."
      • addedOutput schema / properties / listOverview / items / properties / clickRate / description
        Added value: +"Unique clicks divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / listOverview / items / properties / memberCount / description
        Added value: +"Members in the audience."
      • addedOutput schema / properties / listOverview / items / properties / name / description
        Added value: +"Audience name."
      • addedOutput schema / properties / listOverview / items / properties / openRate / description
        Added value: +"Unique opens divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / listOverview / items / properties / unsubscribeCount / description
        Added value: +"Unsubscribed members in the audience."
      • addedOutput schema / properties / previousPeriodAverages / description
        Added value: +"Single summary row of aggregate campaign metrics for the prior comparison period."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent per campaign in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalAbuseReports / description
        Added value: +"Total abuse reports across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalCampaigns / description
        Added value: +"Total number of campaigns the enclosing summary covers."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalEmailsSent / description
        Added value: +"Total emails sent across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalForwards / description
        Added value: +"Total forward events across the campaigns in the enclosing summary. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalHardBounces / description
        Added value: +"Total permanent bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalSoftBounces / description
        Added value: +"Total temporary bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalUnsubscribes / description
        Added value: +"Total unsubscribe events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / sendVolumeTrend / description
        Added value: +"Month-over-month send volume rows."
      • addedOutput schema / properties / sendVolumeTrend / items / properties / campaignCount / description
        Added value: +"Campaigns sent in the month."
      • addedOutput schema / properties / sendVolumeTrend / items / properties / month / description
        Added value: +"Year-month for the row."
      • addedOutput schema / properties / sendVolumeTrend / items / properties / totalEmailsSent / description
        Added value: +"Emails sent in the month."
      • addedOutput schema / properties / subscriberGrowth / description
        Added value: +"Audience growth rows over time, bucketed by member status."
      • addedOutput schema / properties / subscriberGrowth / items / properties / memberCount / description
        Added value: +"Members in the status."
      • addedOutput schema / properties / subscriberGrowth / items / properties / status / description
        Added value: +"Subscription status."
    • Changedsm_get_insights_expert87 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_insights_expert tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_insights_expert tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / audienceHealth / description
        Added value: +"Audience health rows with member counts by status and engagement band."
      • addedOutput schema / properties / audienceHealth / items / properties / avgMemberRating / description
        Added value: +"Mean member rating."
      • addedOutput schema / properties / audienceHealth / items / properties / cleanedCount / description
        Added value: +"Cleaned members."
      • addedOutput schema / properties / audienceHealth / items / properties / highEngagementCount / description
        Added value: +"High-engagement members."
      • addedOutput schema / properties / audienceHealth / items / properties / lowEngagementCount / description
        Added value: +"Low-engagement members."
      • addedOutput schema / properties / audienceHealth / items / properties / subscribedCount / description
        Added value: +"Subscribed members."
      • addedOutput schema / properties / audienceHealth / items / properties / totalMembers / description
        Added value: +"Total members."
      • addedOutput schema / properties / audienceHealth / items / properties / unsubscribedCount / description
        Added value: +"Unsubscribed members."
      • addedOutput schema / properties / audienceSummary / description
        Added value: +"Current audience status rollup: one row per member status with the member count."
      • addedOutput schema / properties / audienceSummary / items / properties / memberCount / description
        Added value: +"Members in the status."
      • addedOutput schema / properties / audienceSummary / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / campaignAverages / description
        Added value: +"Single summary row of aggregate campaign metrics for the current period."
      • addedOutput schema / properties / campaignAverages / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent per campaign in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalAbuseReports / description
        Added value: +"Total abuse reports across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / campaignAverages / items / properties / totalCampaigns / description
        Added value: +"Total number of campaigns the enclosing summary covers."
      • addedOutput schema / properties / campaignAverages / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / campaignAverages / items / properties / totalEmailsSent / description
        Added value: +"Total emails sent across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalForwards / description
        Added value: +"Total forward events across the campaigns in the enclosing summary. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / campaignAverages / items / properties / totalHardBounces / description
        Added value: +"Total permanent bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / campaignAverages / items / properties / totalSoftBounces / description
        Added value: +"Total temporary bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignAverages / items / properties / totalUnsubscribes / description
        Added value: +"Total unsubscribe events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / campaignConsistency / properties / clickRateStddev / description
        Added value: +"Click-rate standard deviation."
      • addedOutput schema / properties / campaignConsistency / properties / maxClickRate / description
        Added value: +"Highest click rate."
      • addedOutput schema / properties / campaignConsistency / properties / maxOpenRate / description
        Added value: +"Highest open rate."
      • addedOutput schema / properties / campaignConsistency / properties / medianClickRate / description
        Added value: +"Median click rate."
      • addedOutput schema / properties / campaignConsistency / properties / medianOpenRate / description
        Added value: +"Median open rate."
      • addedOutput schema / properties / campaignConsistency / properties / minClickRate / description
        Added value: +"Lowest click rate."
      • addedOutput schema / properties / campaignConsistency / properties / minOpenRate / description
        Added value: +"Lowest open rate."
      • addedOutput schema / properties / campaignConsistency / properties / openRateStddev / description
        Added value: +"Open-rate standard deviation."
      • addedOutput schema / properties / campaignFatigue / description
        Added value: +"Per-frequency bucket showing how engagement moves as send frequency changes."
      • addedOutput schema / properties / campaignFatigue / items / properties / avgClickRate / description
        Added value: +"Mean click rate in the bucket."
      • addedOutput schema / properties / campaignFatigue / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate in the bucket."
      • addedOutput schema / properties / campaignFatigue / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent in the bucket."
      • addedOutput schema / properties / campaignFatigue / items / properties / avgOpenRate / description
        Added value: +"Mean open rate in the bucket."
      • addedOutput schema / properties / campaignFatigue / items / properties / campaignCount / description
        Added value: +"Campaigns in the frequency bucket."
      • addedOutput schema / properties / engagementDistribution / description
        Added value: +"Members bucketed by engagement rating."
      • addedOutput schema / properties / engagementDistribution / items / properties / memberCount / description
        Added value: +"Members in the bucket."
      • addedOutput schema / properties / engagementDistribution / items / properties / memberRating / description
        Added value: +"Engagement rating bucket, or null."
      • addedOutput schema / properties / insights / description
        Added value: +"Auto-generated insight objects pairing a title with a descriptive sentence."
      • addedOutput schema / properties / insights / items / properties / description / description
        Added value: +"Insight explanation."
      • addedOutput schema / properties / insights / items / properties / title / description
        Added value: +"Insight title."
      • addedOutput schema / properties / monthlyTrend / description
        Added value: +"Per-quarter (or month) trend rows for the diagnostic period."
      • addedOutput schema / properties / monthlyTrend / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate in the period, or null."
      • addedOutput schema / properties / monthlyTrend / items / properties / avgClickRate / description
        Added value: +"Mean click rate in the period."
      • addedOutput schema / properties / monthlyTrend / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate in the period."
      • addedOutput schema / properties / monthlyTrend / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate in the period, or null."
      • addedOutput schema / properties / monthlyTrend / items / properties / avgOpenRate / description
        Added value: +"Mean open rate in the period."
      • addedOutput schema / properties / monthlyTrend / items / properties / campaignCount / description
        Added value: +"Campaigns in the period."
      • addedOutput schema / properties / monthlyTrend / items / properties / totalEmailsSent / description
        Added value: +"Emails sent in the period, or null."
      • addedOutput schema / properties / monthlyTrend / items / properties / yearQuarter / description
        Added value: +"Year-quarter for the row."
      • addedOutput schema / properties / previousPeriodAverages / description
        Added value: +"Single summary row of aggregate campaign metrics for the prior comparison period."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgBounceRate / description
        Added value: +"Mean bounce rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgClickRate / description
        Added value: +"Mean click rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgClickToOpenRate / description
        Added value: +"Mean click-to-open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgDeliveryRate / description
        Added value: +"Mean delivery rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgEmailsSent / description
        Added value: +"Mean emails sent per campaign in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / avgOpenRate / description
        Added value: +"Mean open rate across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalAbuseReports / description
        Added value: +"Total abuse reports across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalBounces / description
        Added value: +"Hard plus soft bounces."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalCampaigns / description
        Added value: +"Total number of campaigns the enclosing summary covers."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalEmailsSent / description
        Added value: +"Total emails sent across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalForwards / description
        Added value: +"Total forward events across the campaigns in the enclosing summary. Forwards are not a working metric and must never be used to rank, recommend, or brief."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalHardBounces / description
        Added value: +"Total permanent bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalSoftBounces / description
        Added value: +"Total temporary bounce events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / previousPeriodAverages / items / properties / totalUnsubscribes / description
        Added value: +"Total unsubscribe events across the campaigns in the enclosing summary."
      • addedOutput schema / properties / sendTimeHeatmap / description
        Added value: +"Send-time heatmap rows bucketed by day of week and hour."
      • addedOutput schema / properties / sendTimeHeatmap / items / properties / avgClickRate / description
        Added value: +"Mean click rate in the bucket."
      • addedOutput schema / properties / sendTimeHeatmap / items / properties / avgOpenRate / description
        Added value: +"Mean open rate in the bucket."
      • addedOutput schema / properties / sendTimeHeatmap / items / properties / campaignCount / description
        Added value: +"Campaigns in the bucket."
      • addedOutput schema / properties / sendTimeInsights / description
        Added value: +"Auto-generated send-time insight objects."
      • addedOutput schema / properties / sendTimeInsights / items / properties / description / description
        Added value: +"Send-time insight explanation."
      • addedOutput schema / properties / sendTimeInsights / items / properties / title / description
        Added value: +"Send-time insight title."
      • addedOutput schema / properties / subjectLineKeywords / description
        Added value: +"Subject-line keyword rows with impact on open and click rate."
      • addedOutput schema / properties / subjectLineKeywords / items / properties / avgClickRate / description
        Added value: +"Mean click rate for the keyword."
      • addedOutput schema / properties / subjectLineKeywords / items / properties / avgOpenRate / description
        Added value: +"Mean open rate for the keyword."
      • addedOutput schema / properties / subjectLineKeywords / items / properties / campaignCount / description
        Added value: +"Campaigns containing the keyword."
      • addedOutput schema / properties / subjectLineKeywords / items / properties / keyword / description
        Added value: +"Keyword analyzed in subject lines."
    • Changedsm_get_knowledge19 fields changed
      • changedOutput schema / description
        Previous value: -"Knowledge document(s) with version and lastUpdated metadata. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Knowledge document(s) with version and lastUpdated metadata. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / description / description
        Added value: +"Human-readable description of the enclosing item."
      • addedOutput schema / properties / documents / description
        Added value: +"Knowledge documents matching the request."
      • addedOutput schema / properties / documents / items / properties / description / description
        Added value: +"Document description."
      • addedOutput schema / properties / documents / items / properties / text / description
        Added value: +"Document body text."
      • addedOutput schema / properties / documents / items / properties / title / description
        Added value: +"Document title."
      • addedOutput schema / properties / documents / items / properties / topic / description
        Added value: +"Topic key the document belongs to."
      • addedOutput schema / properties / documents / items / properties / uri / description
        Added value: +"Resource URI for the document."
      • addedOutput schema / properties / text / description
        Added value: +"Full rendered text of the enclosing document or prompt."
      • addedOutput schema / properties / title / description
        Added value: +"Human-readable title for the enclosing item."
      • addedOutput schema / properties / topic / description
        Added value: +"Topic key, or null when the request did not match a single topic."
      • addedOutput schema / properties / topics / description
        Added value: +"Available knowledge topics."
      • addedOutput schema / properties / topics / items / properties / description / description
        Added value: +"Topic description."
      • addedOutput schema / properties / topics / items / properties / name / description
        Added value: +"Topic name."
      • addedOutput schema / properties / topics / items / properties / title / description
        Added value: +"Topic title."
      • addedOutput schema / properties / topics / items / properties / topic / description
        Added value: +"Topic key."
      • addedOutput schema / properties / topics / items / properties / uri / description
        Added value: +"Resource URI for the topic."
      • addedOutput schema / properties / uri / description
        Added value: +"MCP resource URI for the knowledge document or topic."
      • addedOutput schema / properties / version / description
        Added value: +"Version string for the enclosing catalog or document."
    • Changedsm_get_member64 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / activityTimeline / description
        Added value: +"The member's raw activity events in time order."
      • addedOutput schema / properties / activityTimeline / items / properties / activityType / description
        Added value: +"Kind of tracked action, for example open, click, or subscribe."
      • addedOutput schema / properties / activityTimeline / items / properties / campaignId / description
        Added value: +"Stable identifier for a Mailchimp campaign. Use it to join rows across tools or drill into sm_get_campaign."
      • addedOutput schema / properties / activityTimeline / items / properties / campaignTitle / description
        Added value: +"The human-readable title of the campaign. May be null when Mailchimp has no title set."
      • addedOutput schema / properties / activityTimeline / items / properties / url / description
        Added value: +"The clicked or referenced URL, or null when absent."
      • addedOutput schema / properties / atRiskStatus / properties / activeActionsPrior / description
        Added value: +"Count of engagement actions in the prior comparison window."
      • addedOutput schema / properties / atRiskStatus / properties / activeActionsRecent / description
        Added value: +"Count of engagement actions in the recent comparison window."
      • addedOutput schema / properties / atRiskStatus / properties / isAtRisk / description
        Added value: +"True when the member's recent activity has collapsed relative to prior activity."
      • addedOutput schema / properties / audienceAverages / properties / avgEngagementScore / description
        Added value: +"Audience-wide mean engagement score."
      • addedOutput schema / properties / audienceAverages / properties / avgMemberRating / description
        Added value: +"Audience-wide mean member rating."
      • addedOutput schema / properties / audienceAverages / properties / avgTotalClicks / description
        Added value: +"Audience-wide mean total clicks."
      • addedOutput schema / properties / audienceAverages / properties / avgTotalOpens / description
        Added value: +"Audience-wide mean total opens."
      • addedOutput schema / properties / botDetection / properties / botActivityCount / description
        Added value: +"Tracked actions attributed to suspected bots."
      • addedOutput schema / properties / botDetection / properties / botGroupCount / description
        Added value: +"Number of suspected bot groups detected."
      • addedOutput schema / properties / botDetection / properties / totalActivities / description
        Added value: +"Total tracked actions for the member."
      • addedOutput schema / properties / campaignConsistency / properties / avgCampaignsEngaged / description
        Added value: +"Average campaigns engaged with across the audience."
      • addedOutput schema / properties / campaignConsistency / properties / memberCampaignsEngaged / description
        Added value: +"Campaigns this member engaged with."
      • addedOutput schema / properties / campaignConsistency / properties / totalCampaigns / description
        Added value: +"Total campaigns in the comparison window."
      • addedOutput schema / properties / campaignResponses / description
        Added value: +"Per-campaign response rows for this member."
      • addedOutput schema / properties / campaignResponses / items / properties / campaignClickRate / description
        Added value: +"Click rate for the specific campaign in the enclosing row."
      • addedOutput schema / properties / campaignResponses / items / properties / campaignId / description
        Added value: +"Stable identifier for a Mailchimp campaign. Use it to join rows across tools or drill into sm_get_campaign."
      • addedOutput schema / properties / campaignResponses / items / properties / campaignOpenRate / description
        Added value: +"Open rate for the specific campaign in the enclosing row."
      • addedOutput schema / properties / campaignResponses / items / properties / didClick / description
        Added value: +"True when the member clicked in this campaign."
      • addedOutput schema / properties / campaignResponses / items / properties / didOpen / description
        Added value: +"True when the member opened this campaign."
      • addedOutput schema / properties / campaignResponses / items / properties / emailsSent / description
        Added value: +"Number of emails the campaign attempted to send to recipients."
      • addedOutput schema / properties / campaignResponses / items / properties / firstOpenMinutes / description
        Added value: +"Minutes between send and the member's first open, or null when never opened."
      • addedOutput schema / properties / campaignResponses / items / properties / subjectLine / description
        Added value: +"The campaign subject line as sent."
      • addedOutput schema / properties / clickedUrls / description
        Added value: +"URLs the member has clicked with click counts."
      • addedOutput schema / properties / clickedUrls / items / properties / clickCount / description
        Added value: +"Number of times the member clicked the enclosing URL."
      • addedOutput schema / properties / clickedUrls / items / properties / url / description
        Added value: +"The clicked or referenced URL, or null when absent."
      • addedOutput schema / properties / engagementByHour / description
        Added value: +"Member's tracked actions bucketed by hour."
      • addedOutput schema / properties / engagementByHour / items / properties / activityCount / description
        Added value: +"Number of tracked actions in the enclosing bucket."
      • addedOutput schema / properties / engagementProfile / properties / engagementRank / description
        Added value: +"Ordinal rank of the member by engagement, or null."
      • addedOutput schema / properties / engagementProfile / properties / engagementScore / description
        Added value: +"Composite engagement score for the member or cohort. Note: Leader rows use a 0-100 percentile, while at-risk rows use a raw time-decayed score that can be negative."
      • addedOutput schema / properties / engagementProfile / properties / isLeader / description
        Added value: +"True when the member qualifies as a leader by engagement."
      • addedOutput schema / properties / engagementProfile / properties / memberRating / description
        Added value: +"Integer engagement rating for the member, or null."
      • addedOutput schema / properties / engagementProfile / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / engagementProfile / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / memberProfile / properties / businessType / description
        Added value: +"The member's business type or category, or null when unset."
      • addedOutput schema / properties / memberProfile / properties / companyName / description
        Added value: +"The company associated with the member, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / countryCode / description
        Added value: +"Two-letter country code for the member, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / countryName / description
        Added value: +"Full country name for the member, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / dimensionFour / description
        Added value: +"Fourth custom dimension value for the member, or null."
      • addedOutput schema / properties / memberProfile / properties / dimensionOne / description
        Added value: +"First custom dimension value for the member, or null."
      • addedOutput schema / properties / memberProfile / properties / dimensionThree / description
        Added value: +"Third custom dimension value for the member, or null."
      • addedOutput schema / properties / memberProfile / properties / dimensionTwo / description
        Added value: +"Second custom dimension value for the member, or null."
      • addedOutput schema / properties / memberProfile / properties / emailAddress / description
        Added value: +"The member's email address."
      • addedOutput schema / properties / memberProfile / properties / firstName / description
        Added value: +"The member's first name, or null when unavailable."
      • addedOutput schema / properties / memberProfile / properties / language / description
        Added value: +"The member's preferred language, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / lastName / description
        Added value: +"The member's last name, or null when unavailable."
      • addedOutput schema / properties / memberProfile / properties / memberRating / description
        Added value: +"Integer Mailchimp engagement rating for the member (1-5), or null when unrated."
      • addedOutput schema / properties / memberProfile / properties / memberTimezone / description
        Added value: +"Timezone string as reported by Mailchimp for the member, or null. Passed through unvalidated and frequently wrong or missing — prefer companyName, state and email domain for locale inference."
      • addedOutput schema / properties / memberProfile / properties / region / description
        Added value: +"Region or state-level location string, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / repName / description
        Added value: +"Internal owner or rep assigned to the member, or null when unassigned."
      • addedOutput schema / properties / memberProfile / properties / state / description
        Added value: +"State or province string, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / status / description
        Added value: +"Subscription status, for example subscribed, unsubscribed, cleaned, or pending."
      • addedOutput schema / properties / memberProfile / properties / tags / description
        Added value: +"Tag rows with member counts."
      • addedOutput schema / properties / memberProfile / properties / title / description
        Added value: +"The member's job title, or null when unknown."
      • addedOutput schema / properties / memberProfile / properties / vip / description
        Added value: +"True when the member is flagged VIP."
      • addedOutput schema / properties / monthlyTrend / description
        Added value: +"Per-quarter (or month) trend rows for the diagnostic period."
      • addedOutput schema / properties / monthlyTrend / items / properties / clicks / description
        Added value: +"Click-events count observed over the enclosing window."
      • addedOutput schema / properties / monthlyTrend / items / properties / opens / description
        Added value: +"Open-events count observed over the enclosing window."
      • addedOutput schema / properties / monthlyTrend / items / properties / total / description
        Added value: +"Combined open plus click events for the member in the month."
    • Changedsm_get_member_campaigns11 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member_campaigns tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member_campaigns tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / data / description
        Added value: +"Response rows for the enclosing tool."
      • addedOutput schema / properties / data / items / properties / campaignClickRate / description
        Added value: +"Campaign click rate, or null."
      • addedOutput schema / properties / data / items / properties / campaignId / description
        Added value: +"Campaign identifier."
      • addedOutput schema / properties / data / items / properties / campaignOpenRate / description
        Added value: +"Campaign open rate, or null."
      • addedOutput schema / properties / data / items / properties / didClick / description
        Added value: +"True when the member clicked."
      • addedOutput schema / properties / data / items / properties / didOpen / description
        Added value: +"True when the member opened."
      • addedOutput schema / properties / data / items / properties / emailsSent / description
        Added value: +"Emails the campaign sent."
      • addedOutput schema / properties / data / items / properties / firstClickMinutes / description
        Added value: +"Minutes to first click, or null."
      • addedOutput schema / properties / data / items / properties / firstOpenMinutes / description
        Added value: +"Minutes to first open, or null."
      • addedOutput schema / properties / data / items / properties / subjectLine / description
        Added value: +"Campaign subject line, or null."
    • Changedsm_get_member_geo14 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member_geo tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member_geo tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / allRegions / description
        Added value: +"Per-region membership rows across all countries."
      • addedOutput schema / properties / allRegions / items / properties / countryCode / description
        Added value: +"Two-letter country code."
      • addedOutput schema / properties / allRegions / items / properties / region / description
        Added value: +"Region name within the country."
      • addedOutput schema / properties / allRegions / items / properties / subscribed / description
        Added value: +"Subscribed members in the region."
      • addedOutput schema / properties / allRegions / items / properties / total / description
        Added value: +"Total members in the region."
      • addedOutput schema / properties / countries / description
        Added value: +"Per-country membership rows."
      • addedOutput schema / properties / countries / items / properties / countryCode / description
        Added value: +"Two-letter country code."
      • addedOutput schema / properties / countries / items / properties / subscribed / description
        Added value: +"Subscribed members in the country."
      • addedOutput schema / properties / countries / items / properties / total / description
        Added value: +"Total members in the country."
      • addedOutput schema / properties / regions / description
        Added value: +"Region detail for the selected country, or null when no country was narrowed."
      • addedOutput schema / properties / regions / items / properties / region / description
        Added value: +"Region or state-level location string, or null when unknown."
      • addedOutput schema / properties / regions / items / properties / subscribed / description
        Added value: +"Subscribed members in the region."
      • addedOutput schema / properties / regions / items / properties / total / description
        Added value: +"Total members in the region."
    • Changedsm_get_member_growth11 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member_growth tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member_growth tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / churnTimeline / description
        Added value: +"Churn timeline rows bucketed by month and status."
      • addedOutput schema / properties / churnTimeline / items / properties / count / description
        Added value: +"Members in the status for the month."
      • addedOutput schema / properties / churnTimeline / items / properties / month / description
        Added value: +"Year-month for the row."
      • addedOutput schema / properties / churnTimeline / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / cohortRetention / description
        Added value: +"Cohort retention rows bucketed by signup month and status."
      • addedOutput schema / properties / cohortRetention / items / properties / count / description
        Added value: +"Members from the cohort still in the status."
      • addedOutput schema / properties / cohortRetention / items / properties / signupMonth / description
        Added value: +"Signup month for the cohort."
      • addedOutput schema / properties / cohortRetention / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / signupCohorts / description
        Added value: +"Signup cohort rows."
      • addedOutput schema / properties / signupCohorts / items / properties / newSignups / description
        Added value: +"New signups in the cohort month."
    • Changedsm_get_member_overview26 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member_overview tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member_overview tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / dimensionDistributions / description
        Added value: +"Per-dimension slot distribution rows."
      • addedOutput schema / properties / dimensionDistributions / items / properties / label / description
        Added value: +"Human-readable label for the dimension slot."
      • addedOutput schema / properties / dimensionDistributions / items / properties / slot / description
        Added value: +"Dimension slot name, for example dimensionOne."
      • addedOutput schema / properties / dimensionDistributions / items / properties / unassignedLabel / description
        Added value: +"Label shown for members with no value in the slot."
      • addedOutput schema / properties / dimensionDistributions / items / properties / values / description
        Added value: +"Distinct dimension values with member counts."
      • addedOutput schema / properties / dimensionDistributions / items / properties / values / items / properties / count / description
        Added value: +"Members with the dimension value."
      • addedOutput schema / properties / dimensionDistributions / items / properties / values / items / properties / value / description
        Added value: +"Dimension value."
      • addedOutput schema / properties / languageDistribution / description
        Added value: +"Members bucketed by language."
      • addedOutput schema / properties / languageDistribution / items / properties / count / description
        Added value: +"Members in the language."
      • addedOutput schema / properties / languageDistribution / items / properties / language / description
        Added value: +"Language for the row."
      • addedOutput schema / properties / ratingDistribution / description
        Added value: +"Members bucketed by rating."
      • addedOutput schema / properties / ratingDistribution / items / properties / count / description
        Added value: +"Members with the rating."
      • addedOutput schema / properties / ratingDistribution / items / properties / rating / description
        Added value: +"Rating bucket."
      • addedOutput schema / properties / repDistribution / description
        Added value: +"Members bucketed by assigned rep."
      • addedOutput schema / properties / repDistribution / items / properties / count / description
        Added value: +"Members assigned to the rep."
      • addedOutput schema / properties / repDistribution / items / properties / repName / description
        Added value: +"Rep name for the row."
      • addedOutput schema / properties / statusBreakdown / description
        Added value: +"Members bucketed by subscription status."
      • addedOutput schema / properties / statusBreakdown / items / properties / count / description
        Added value: +"Members in the status."
      • addedOutput schema / properties / statusBreakdown / items / properties / status / description
        Added value: +"Subscription status for the row."
      • addedOutput schema / properties / totals / properties / avgRating / description
        Added value: +"Mean member rating across the audience."
      • addedOutput schema / properties / totals / properties / cleaned / description
        Added value: +"Members in cleaned status."
      • addedOutput schema / properties / totals / properties / subscribed / description
        Added value: +"Members in subscribed status."
      • addedOutput schema / properties / totals / properties / total / description
        Added value: +"Total members in the audience."
      • addedOutput schema / properties / totals / properties / unsubscribed / description
        Added value: +"Members in unsubscribed status."
      • addedOutput schema / properties / totals / properties / vipCount / description
        Added value: +"Members flagged VIP."
    • Changedsm_get_member_segments20 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member_segments tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member_segments tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / overallAvgEngagement / description
        Added value: +"Audience-wide mean engagement score."
      • addedOutput schema / properties / segments / description
        Added value: +"Segment rows with member counts."
      • addedOutput schema / properties / segments / items / properties / memberCount / description
        Added value: +"Members in the segment."
      • addedOutput schema / properties / segments / items / properties / name / description
        Added value: +"Segment name."
      • addedOutput schema / properties / subscribedCount / description
        Added value: +"Subscribed members in the audience."
      • addedOutput schema / properties / tagEngagement / description
        Added value: +"Per-tag engagement rollup rows."
      • addedOutput schema / properties / tagEngagement / items / properties / avgEngagementScore / description
        Added value: +"Mean engagement score for the tag."
      • addedOutput schema / properties / tagEngagement / items / properties / leaderCount / description
        Added value: +"Leaders carrying the tag."
      • addedOutput schema / properties / tagEngagement / items / properties / memberCount / description
        Added value: +"Members carrying the tag."
      • addedOutput schema / properties / tagEngagement / items / properties / name / description
        Added value: +"Tag name."
      • addedOutput schema / properties / tagStatusBreakdown / description
        Added value: +"Tag-by-status member count rows."
      • addedOutput schema / properties / tagStatusBreakdown / items / properties / memberCount / description
        Added value: +"Members in the tag and status."
      • addedOutput schema / properties / tagStatusBreakdown / items / properties / status / description
        Added value: +"Subscription status."
      • addedOutput schema / properties / tagStatusBreakdown / items / properties / tagName / description
        Added value: +"Tag name."
      • addedOutput schema / properties / tags / description
        Added value: +"Tag rows with member counts."
      • addedOutput schema / properties / tags / items / properties / memberCount / description
        Added value: +"Members carrying the tag."
      • addedOutput schema / properties / tags / items / properties / name / description
        Added value: +"Tag name."
      • addedOutput schema / properties / totalCount / description
        Added value: +"Total members in the audience."
      • addedOutput schema / properties / untaggedCount / description
        Added value: +"Members with no tags."
    • Changedsm_get_member_timeline6 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_member_timeline tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_member_timeline tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / data / description
        Added value: +"Response rows for the enclosing tool."
      • addedOutput schema / properties / data / items / properties / activityType / description
        Added value: +"Kind of tracked action."
      • addedOutput schema / properties / data / items / properties / campaignId / description
        Added value: +"Campaign identifier, or null for non-campaign actions."
      • addedOutput schema / properties / data / items / properties / campaignTitle / description
        Added value: +"Campaign title, or null for non-campaign actions."
      • addedOutput schema / properties / data / items / properties / url / description
        Added value: +"Clicked URL, or null when absent."
    • Changedsm_get_prompt5 fields changed
      • changedOutput schema / description
        Previous value: -"A single rendered prompt workflow and its effective arguments. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"A single rendered prompt workflow and its effective arguments. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / arguments / description
        Added value: +"Argument values used for rendering."
      • addedOutput schema / properties / description / description
        Added value: +"Prompt description."
      • addedOutput schema / properties / name / description
        Added value: +"Prompt name."
      • addedOutput schema / properties / text / description
        Added value: +"Rendered prompt body with values substituted."
    • Changedsm_get_schema17 fields changed
      • changedOutput schema / description
        Previous value: -"Either a compact index of operations or a detailed schema for one operation. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Either a compact index of operations or a detailed schema for one operation. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / components / description
        Added value: +"OpenAPI components object referenced by operations."
      • addedOutput schema / properties / method / description
        Added value: +"HTTP method for the operation."
      • addedOutput schema / properties / operation / description
        Added value: +"Full OpenAPI operation object."
      • addedOutput schema / properties / operationCount / description
        Added value: +"Number of operations catalogued."
      • addedOutput schema / properties / operations / description
        Added value: +"Catalog entries for each Enterprise API operation."
      • addedOutput schema / properties / operations / items / properties / description / description
        Added value: +"Operation description."
      • addedOutput schema / properties / operations / items / properties / method / description
        Added value: +"HTTP method."
      • addedOutput schema / properties / operations / items / properties / optionalParams / description
        Added value: +"Optional parameters."
      • addedOutput schema / properties / operations / items / properties / path / description
        Added value: +"URL path."
      • addedOutput schema / properties / operations / items / properties / requiredParams / description
        Added value: +"Required parameters."
      • addedOutput schema / properties / operations / items / properties / summary / description
        Added value: +"Short operation summary."
      • addedOutput schema / properties / operations / items / properties / tags / description
        Added value: +"Operation tags."
      • addedOutput schema / properties / operations / items / properties / toolName / description
        Added value: +"MCP tool wrapping the operation, or null."
      • addedOutput schema / properties / path / description
        Added value: +"URL path for the operation."
      • addedOutput schema / properties / schemaUrl / description
        Added value: +"URL of the live OpenAPI document."
      • addedOutput schema / properties / toolName / description
        Added value: +"MCP tool wrapping the operation, or null when none."
    • Changedsm_get_sync_run24 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_sync_run tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_sync_run tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / lookbackWindowDays / description
        Added value: +"Number of days of history the sync covers."
      • addedOutput schema / properties / pendingBatchCount / description
        Added value: +"Number of batches still queued for processing."
      • addedOutput schema / properties / progress / description
        Added value: +"Per-data-type progress rows for the sync run."
      • addedOutput schema / properties / progress / items / properties / currentPage / description
        Added value: +"Current pagination offset."
      • addedOutput schema / properties / progress / items / properties / dataType / description
        Added value: +"Data type for the progress row."
      • addedOutput schema / properties / progress / items / properties / listsCompleted / description
        Added value: +"Lists fully processed."
      • addedOutput schema / properties / progress / items / properties / recordsProcessed / description
        Added value: +"Records processed."
      • addedOutput schema / properties / progress / items / properties / recordsSkipped / description
        Added value: +"Records skipped."
      • addedOutput schema / properties / progress / items / properties / recordsWritten / description
        Added value: +"Records written."
      • addedOutput schema / properties / progress / items / properties / totalLists / description
        Added value: +"Total lists in scope, or null."
      • addedOutput schema / properties / progress / items / properties / totalRecords / description
        Added value: +"Total records, or null."
      • addedOutput schema / properties / results / description
        Added value: +"Per-stage results for the sync run."
      • addedOutput schema / properties / results / items / properties / durationSeconds / description
        Added value: +"Stage duration, or null."
      • addedOutput schema / properties / results / items / properties / errorMessage / description
        Added value: +"Stage failure detail, or null."
      • addedOutput schema / properties / results / items / properties / finalTableRowCount / description
        Added value: +"Final table row count, or null."
      • addedOutput schema / properties / results / items / properties / recordsSkipped / description
        Added value: +"Records skipped in the stage, or null."
      • addedOutput schema / properties / results / items / properties / recordsWritten / description
        Added value: +"Records written in the stage, or null."
      • addedOutput schema / properties / results / items / properties / totalRecords / description
        Added value: +"Records in the stage, or null."
      • addedOutput schema / properties / run / properties / errorMessage / description
        Added value: +"Failure detail, or null on success."
      • addedOutput schema / properties / run / properties / id / description
        Added value: +"Identifier for the sync run."
      • addedOutput schema / properties / run / properties / projectId / description
        Added value: +"Project the run belongs to."
      • addedOutput schema / properties / run / properties / status / description
        Added value: +"Run status, for example queued, running, completed, or failed."
      • addedOutput schema / properties / run / properties / triggerType / description
        Added value: +"What initiated the run."
    • Changedsm_get_variate42 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_get_variate tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_variate tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / audienceQuality / description
        Added value: +"Per-variant audience-quality rows."
      • addedOutput schema / properties / audienceQuality / items / properties / avgClicksPerMember / description
        Added value: +"Mean clicks per member."
      • addedOutput schema / properties / audienceQuality / items / properties / avgEngagementScore / description
        Added value: +"Mean engagement score in the variant, or null."
      • addedOutput schema / properties / audienceQuality / items / properties / avgMemberRating / description
        Added value: +"Mean member rating in the variant, or null."
      • addedOutput schema / properties / audienceQuality / items / properties / avgOpensPerMember / description
        Added value: +"Mean opens per member."
      • addedOutput schema / properties / audienceQuality / items / properties / clickToOpenRate / description
        Added value: +"Click-to-open rate for the variant."
      • addedOutput schema / properties / audienceQuality / items / properties / leaderCount / description
        Added value: +"Leaders in the variant."
      • addedOutput schema / properties / audienceQuality / items / properties / repeatClickers / description
        Added value: +"Members who clicked more than once."
      • addedOutput schema / properties / audienceQuality / items / properties / repeatOpeners / description
        Added value: +"Members who opened more than once."
      • addedOutput schema / properties / audienceQuality / items / properties / totalEngagedMembers / description
        Added value: +"Engaged members in the variant."
      • addedOutput schema / properties / audienceQuality / items / properties / variantLabel / description
        Added value: +"Variant label."
      • addedOutput schema / properties / engagementVelocity / description
        Added value: +"Per-variant engagement velocity rows."
      • addedOutput schema / properties / engagementVelocity / items / properties / clicks / description
        Added value: +"Click events for the variant in the window."
      • addedOutput schema / properties / engagementVelocity / items / properties / opens / description
        Added value: +"Open events for the variant in the window."
      • addedOutput schema / properties / engagementVelocity / items / properties / variantLabel / description
        Added value: +"Variant label, for example A or B."
      • addedOutput schema / properties / funnelData / description
        Added value: +"Per-variant funnel rows from recipients through unique clickers."
      • addedOutput schema / properties / funnelData / items / properties / recipients / description
        Added value: +"Recipients for the variant."
      • addedOutput schema / properties / funnelData / items / properties / uniqueClickers / description
        Added value: +"Distinct clickers."
      • addedOutput schema / properties / funnelData / items / properties / uniqueOpeners / description
        Added value: +"Distinct openers."
      • addedOutput schema / properties / funnelData / items / properties / variantLabel / description
        Added value: +"Variant label."
      • addedOutput schema / properties / geoBreakdown / description
        Added value: +"Per-variant geography rollup rows."
      • addedOutput schema / properties / geoBreakdown / items / properties / engagedCount / description
        Added value: +"Engaged members in the region."
      • addedOutput schema / properties / geoBreakdown / items / properties / stateRegion / description
        Added value: +"State or region."
      • addedOutput schema / properties / geoBreakdown / items / properties / variantLabel / description
        Added value: +"Variant label."
      • addedOutput schema / properties / timeToFirstOpen / description
        Added value: +"Per-variant time-to-first-open statistics."
      • addedOutput schema / properties / timeToFirstOpen / items / properties / avgMinutes / description
        Added value: +"Mean minutes to first open."
      • addedOutput schema / properties / timeToFirstOpen / items / properties / maxMinutes / description
        Added value: +"Maximum minutes to first open."
      • addedOutput schema / properties / timeToFirstOpen / items / properties / medianMinutes / description
        Added value: +"Median minutes to first open."
      • addedOutput schema / properties / timeToFirstOpen / items / properties / minMinutes / description
        Added value: +"Minimum minutes to first open."
      • addedOutput schema / properties / timeToFirstOpen / items / properties / openers / description
        Added value: +"Distinct openers in the variant."
      • addedOutput schema / properties / timeToFirstOpen / items / properties / variantLabel / description
        Added value: +"Variant label."
      • addedOutput schema / properties / variantReports / description
        Added value: +"Per-variant performance rows."
      • addedOutput schema / properties / variantReports / items / properties / clicksTotal / description
        Added value: +"Total click events for the variant."
      • addedOutput schema / properties / variantReports / items / properties / emailsSent / description
        Added value: +"Emails the variant sent."
      • addedOutput schema / properties / variantReports / items / properties / hardBounces / description
        Added value: +"Hard bounces for the variant."
      • addedOutput schema / properties / variantReports / items / properties / opensTotal / description
        Added value: +"Total open events for the variant."
      • addedOutput schema / properties / variantReports / items / properties / softBounces / description
        Added value: +"Soft bounces for the variant."
      • addedOutput schema / properties / variantReports / items / properties / subjectLine / description
        Added value: +"Variant subject line."
      • addedOutput schema / properties / variantReports / items / properties / uniqueClicks / description
        Added value: +"Distinct clickers for the variant."
      • addedOutput schema / properties / variantReports / items / properties / uniqueOpens / description
        Added value: +"Distinct openers for the variant."
      • addedOutput schema / properties / variantReports / items / properties / unsubscribed / description
        Added value: +"Unsubscribes for the variant."
    • Changedsm_list_at_risk36 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_list_at_risk tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_list_at_risk tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / distribution / description
        Added value: +"Rating-bucket distribution of the at-risk population."
      • addedOutput schema / properties / distribution / items / properties / avgPriorActions / description
        Added value: +"Mean prior-window action count in the bucket."
      • addedOutput schema / properties / distribution / items / properties / maxPriorActions / description
        Added value: +"Highest prior-window action count in the bucket."
      • addedOutput schema / properties / distribution / items / properties / memberRating / description
        Added value: +"Rating bucket."
      • addedOutput schema / properties / distribution / items / properties / subscriberCount / description
        Added value: +"Members in the rating bucket."
      • addedOutput schema / properties / quadrantData / description
        Added value: +"Per-member rows for the prior-vs-recent activity quadrant."
      • addedOutput schema / properties / quadrantData / items / properties / activeActionsPrior / description
        Added value: +"Count of engagement actions in the prior comparison window."
      • addedOutput schema / properties / quadrantData / items / properties / daysSinceLastActivity / description
        Added value: +"Days since the member's last tracked action."
      • addedOutput schema / properties / quadrantData / items / properties / emailAddress / description
        Added value: +"The member's email address."
      • addedOutput schema / properties / quadrantData / items / properties / engagementScore / description
        Added value: +"Composite engagement score for the member or cohort. Note: This is the raw unbounded time-decayed score that can be negative."
      • addedOutput schema / properties / quadrantData / items / properties / firstName / description
        Added value: +"The member's first name, or null when unavailable."
      • addedOutput schema / properties / quadrantData / items / properties / lastName / description
        Added value: +"The member's last name, or null when unavailable."
      • addedOutput schema / properties / quadrantData / items / properties / memberRating / description
        Added value: +"Integer Mailchimp engagement rating for the member (1-5), or null when unrated."
      • addedOutput schema / properties / quadrantData / items / properties / repName / description
        Added value: +"Internal owner or rep assigned to the member, or null when unassigned."
      • addedOutput schema / properties / quadrantData / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / quadrantData / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / repBreakdown / description
        Added value: +"Per-rep rollup of the at-risk population."
      • addedOutput schema / properties / repBreakdown / items / properties / atRiskCount / description
        Added value: +"At-risk members assigned to the rep."
      • addedOutput schema / properties / repBreakdown / items / properties / avgEngagementScore / description
        Added value: +"Mean engagement score for the rep's at-risk members."
      • addedOutput schema / properties / repBreakdown / items / properties / avgPriorActions / description
        Added value: +"Mean prior actions for the rep's at-risk members."
      • addedOutput schema / properties / repBreakdown / items / properties / repName / description
        Added value: +"Rep name for the row."
      • addedOutput schema / properties / subscribers / description
        Added value: +"At-risk member rows."
      • addedOutput schema / properties / subscribers / items / properties / activeActionsPrior / description
        Added value: +"Count of engagement actions in the prior comparison window."
      • addedOutput schema / properties / subscribers / items / properties / activeActionsRecent / description
        Added value: +"Count of engagement actions in the recent comparison window."
      • addedOutput schema / properties / subscribers / items / properties / emailAddress / description
        Added value: +"The member's email address."
      • addedOutput schema / properties / subscribers / items / properties / engagementScore / description
        Added value: +"Composite engagement score for the at-risk member. Note: This is the raw unbounded time-decayed score that can be negative."
      • addedOutput schema / properties / subscribers / items / properties / firstName / description
        Added value: +"The member's first name, or null when unavailable."
      • addedOutput schema / properties / subscribers / items / properties / isLeader / description
        Added value: +"True when the member qualifies as a leader by engagement."
      • addedOutput schema / properties / subscribers / items / properties / lastName / description
        Added value: +"The member's last name, or null when unavailable."
      • addedOutput schema / properties / subscribers / items / properties / memberRating / description
        Added value: +"Integer Mailchimp engagement rating for the member (1-5), or null when unrated."
      • addedOutput schema / properties / subscribers / items / properties / repName / description
        Added value: +"Internal owner or rep assigned to the member, or null when unassigned."
      • addedOutput schema / properties / subscribers / items / properties / status / description
        Added value: +"Subscription status of the member."
      • addedOutput schema / properties / subscribers / 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 / subscribers / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / subscribers / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
    • Changedsm_list_campaigns7 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_list_campaigns tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_list_campaigns tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / campaigns / description
        Added value: +"Campaign rows with performance metrics."
      • addedOutput schema / properties / campaigns / items / properties / campaignId / description
        Added value: +"Stable identifier for a Mailchimp campaign. Use it to join rows across tools or drill into sm_get_campaign."
      • addedOutput schema / properties / campaigns / items / properties / clickRate / description
        Added value: +"Unique clicks divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaigns / items / properties / emailsSent / description
        Added value: +"Number of emails the campaign attempted to send to recipients."
      • addedOutput schema / properties / campaigns / items / properties / openRate / description
        Added value: +"Unique opens divided by delivered, as a percentage from 0 to 100."
      • addedOutput schema / properties / campaigns / items / properties / subjectLine / description
        Added value: +"The campaign subject line as sent."
    • Changedsm_list_leaders33 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_list_leaders tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_list_leaders tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / leaderboardDistribution / description
        Added value: +"Leaderboard tier buckets from highest to lowest engagement."
      • addedOutput schema / properties / leaderboardDistribution / items / properties / avgEngagementScore / description
        Added value: +"Mean engagement score in the tier."
      • addedOutput schema / properties / leaderboardDistribution / items / properties / avgMemberRating / description
        Added value: +"Mean member rating in the enclosing bucket."
      • addedOutput schema / properties / leaderboardDistribution / items / properties / leaderCount / description
        Added value: +"Leaders in the tier."
      • addedOutput schema / properties / leaderboardDistribution / items / properties / subscriberCount / description
        Added value: +"Members in the tier."
      • addedOutput schema / properties / leaderboardDistribution / items / properties / tier / description
        Added value: +"Tier label, for example top, core, or watch."
      • addedOutput schema / properties / leaderboardDistribution / items / properties / tierOrder / description
        Added value: +"Ordinal position of the tier for stable sorting."
      • addedOutput schema / properties / leaders / description
        Added value: +"Leader member rows ranked by engagement."
      • addedOutput schema / properties / leaders / items / properties / emailAddress / description
        Added value: +"The member's email address."
      • addedOutput schema / properties / leaders / items / properties / engagementScore / description
        Added value: +"Composite engagement score for the leader. Note: This is a 0-100 percentile."
      • addedOutput schema / properties / leaders / items / properties / firstName / description
        Added value: +"The member's first name, or null when unavailable."
      • addedOutput schema / properties / leaders / items / properties / isLeader / description
        Added value: +"True when the member qualifies as a leader by engagement."
      • addedOutput schema / properties / leaders / items / properties / lastName / description
        Added value: +"The member's last name, or null when unavailable."
      • addedOutput schema / properties / leaders / items / properties / memberRating / description
        Added value: +"Integer Mailchimp engagement rating for the member (1-5), or null when unrated."
      • addedOutput schema / properties / leaders / items / properties / status / description
        Added value: +"Subscription status of the leader, or null."
      • addedOutput schema / properties / leaders / 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 / leaders / items / properties / totalClicks / description
        Added value: +"Total click events, counting repeat clicks."
      • addedOutput schema / properties / leaders / items / properties / totalOpens / description
        Added value: +"Total open events, counting repeat opens by the same member."
      • addedOutput schema / properties / leaders / items / properties / vip / description
        Added value: +"True when the member is flagged VIP."
      • addedOutput schema / properties / repOptions / description
        Added value: +"Distinct rep values available for filtering."
      • addedOutput schema / properties / repOptions / items / properties / count / description
        Added value: +"Leaders assigned to the rep."
      • addedOutput schema / properties / repOptions / items / properties / name / description
        Added value: +"Rep name."
      • addedOutput schema / properties / summaryStats / properties / activeLeaderCount / description
        Added value: +"Leaders currently active."
      • addedOutput schema / properties / summaryStats / properties / atRiskCount / description
        Added value: +"Leaders also flagged at risk."
      • addedOutput schema / properties / summaryStats / properties / atRiskLeaderCount / description
        Added value: +"Leaders flagged at risk."
      • addedOutput schema / properties / summaryStats / properties / avgLeaderRating / description
        Added value: +"Mean rating among leaders."
      • addedOutput schema / properties / summaryStats / properties / avgScore / description
        Added value: +"Mean member rating among leaders. Note: This is average member rating, not a mean engagement score."
      • addedOutput schema / properties / summaryStats / properties / totalActive / description
        Added value: +"Leaders with recent activity."
      • addedOutput schema / properties / summaryStats / properties / totalLeaders / description
        Added value: +"Total leaders in the audience."
      • addedOutput schema / properties / tagOptions / description
        Added value: +"Distinct tag values available for filtering."
      • addedOutput schema / properties / tagOptions / items / properties / count / description
        Added value: +"Leaders carrying the tag."
      • addedOutput schema / properties / tagOptions / items / properties / name / description
        Added value: +"Tag name."
    • Changedsm_list_members19 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."
    • Changedsm_list_projects5 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_list_projects tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_list_projects tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / count / description
        Added value: +"Number of projects returned."
      • addedOutput schema / properties / projects / description
        Added value: +"Project rows this key can read."
      • addedOutput schema / properties / projects / items / properties / companyName / description
        Added value: +"Company associated with the project, or null when unset."
      • addedOutput schema / properties / projects / items / properties / name / description
        Added value: +"Display name of the project."
    • Changedsm_list_prompts15 fields changed
      • changedOutput schema / description
        Previous value: -"Flattened catalog of available prompt workflows. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Flattened catalog of available prompt workflows. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / catalogSource / description
        Added value: +"Source descriptor for the enclosing catalog."
      • addedOutput schema / properties / lastUpdated / description
        Added value: +"ISO 8601 instant the underlying data was last refreshed."
      • addedOutput schema / properties / promptCount / description
        Added value: +"Number of prompts in the catalog."
      • addedOutput schema / properties / prompts / description
        Added value: +"Prompt workflow rows."
      • addedOutput schema / properties / prompts / items / properties / arguments / description
        Added value: +"Prompt arguments with metadata."
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / description / description
        Added value: +"Argument description."
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / name / description
        Added value: +"Argument name."
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / required / description
        Added value: +"True when the argument is required."
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / ui / description
        Added value: +"Suggested input control."
      • addedOutput schema / properties / prompts / items / properties / category / description
        Added value: +"Sales-stage category."
      • addedOutput schema / properties / prompts / items / properties / description / description
        Added value: +"Prompt description."
      • addedOutput schema / properties / prompts / items / properties / name / description
        Added value: +"Prompt name."
      • addedOutput schema / properties / prompts / items / properties / title / description
        Added value: +"Prompt title."
      • addedOutput schema / properties / version / description
        Added value: +"Version string for the enclosing catalog or document."
    • Changedsm_list_sync_runs11 fields changed
      • changedOutput schema / description
        Previous value: -"Output for the sm_list_sync_runs tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_list_sync_runs tool. Failure payloads arrive in the same envelope as { error, code }."
      • addedOutput schema / properties / runs / description
        Added value: +"Sync run rows."
      • addedOutput schema / properties / runs / items / properties / errorMessage / description
        Added value: +"Failure detail, or null on success."
      • addedOutput schema / properties / runs / items / properties / id / description
        Added value: +"Identifier for the sync run."
      • addedOutput schema / properties / runs / items / properties / projectId / description
        Added value: +"Project the run belongs to."
      • addedOutput schema / properties / runs / items / properties / projectName / description
        Added value: +"Project name."
      • addedOutput schema / properties / runs / items / properties / resultsCount / description
        Added value: +"Per-stage results recorded."
      • addedOutput schema / properties / runs / items / properties / retryCount / description
        Added value: +"Retries applied, or null."
      • addedOutput schema / properties / runs / items / properties / status / description
        Added value: +"Run status, for example queued, running, completed, or failed."
      • addedOutput schema / properties / runs / items / properties / totalTables / description
        Added value: +"Target tables covered."
      • addedOutput schema / properties / runs / items / properties / triggerType / description
        Added value: +"What initiated the run."
  8. 24 tool updates
    • Changedsm_get_account1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_account tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "account": {
        +      "additionalProperties": true,
        +      "description": "Basic enterprise account details.",
        +      "properties": {
        +        "displayName": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "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"
        +    },
        +    "entitlements": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "isEnabled": {
        +            "description": "True if the current subscription tier permits access.",
        +            "type": "boolean"
        +          },
        +          "rateLimitHour": {
        +            "description": "The hourly quota boundary for this service.",
        +            "type": "integer"
        +          },
        +          "rateLimitMonth": {
        +            "description": "The monthly quota boundary for this service.",
        +            "type": "integer"
        +          },
        +          "service": {
        +            "description": "The name of the service this entitlement governs.",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "projectCount": {
        +      "type": "integer"
        +    },
        +    "tier": {
        +      "additionalProperties": true,
        +      "description": "Tier information for the enterprise account.",
        +      "properties": {
        +        "displayName": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "description": "A varchar tier identifier, typically free/starter/pro/enterprise.",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "usage": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "limitHour": {
        +          "description": "Maximum requests allowed per hour.",
        +          "type": "integer"
        +        },
        +        "limitMonth": {
        +          "description": "Maximum requests allowed per month.",
        +          "type": "integer"
        +        },
        +        "resetHour": {
        +          "description": "UTC Unix epoch seconds when the hourly limit resets.",
        +          "type": "integer"
        +        },
        +        "resetMonth": {
        +          "description": "UTC Unix epoch seconds when the monthly limit resets.",
        +          "type": "integer"
        +        },
        +        "usedHour": {
        +          "description": "Requests utilized in the current hour window.",
        +          "type": "integer"
        +        },
        +        "usedMonth": {
        +          "description": "Requests utilized in the current month window.",
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_campaign3 fields changed
      • addedInput schema / properties / campaignId / description
        Added value: +"The 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."
      • 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_campaign tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "campaignMeta": {
        +      "additionalProperties": true,
        +      "description": "Metadata for a campaign, including raw stringified JSON variate settings. May be null.",
        +      "properties": {
        +        "campaignType": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "variateSettings": {
        +          "description": "Raw JSON string passed verbatim",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "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"
        +    },
        +    "performance": {
        +      "additionalProperties": true,
        +      "description": "Detailed performance for individual campaigns. May be null.",
        +      "properties": {
        +        "bounceRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "campaignId": {
        +          "type": "string"
        +        },
        +        "clickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "clickToOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "clicksTotal": {
        +          "type": "integer"
        +        },
        +        "deliveries": {
        +          "type": "integer"
        +        },
        +        "deliveryRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "emailsSent": {
        +          "type": "integer"
        +        },
        +        "openRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "opensTotal": {
        +          "type": "integer"
        +        },
        +        "sendTime": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "subjectLine": {
        +          "type": "string"
        +        },
        +        "totalBounces": {
        +          "type": "integer"
        +        },
        +        "uniqueClicks": {
        +          "type": "integer"
        +        },
        +        "uniqueOpens": {
        +          "type": "integer"
        +        },
        +        "unsubscribeRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "unsubscribed": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "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"
        +    },
        +    "report": {
        +      "additionalProperties": true,
        +      "description": "Comprehensive details for a single campaign. May be null.",
        +      "properties": {
        +        "abuseReports": {
        +          "type": "integer"
        +        },
        +        "bounceRate": {
        +          "type": "number"
        +        },
        +        "campaignId": {
        +          "type": "string"
        +        },
        +        "campaignType": {
        +          "type": "string"
        +        },
        +        "clickRate": {
        +          "type": "number"
        +        },
        +        "clickToOpenRate": {
        +          "type": "number"
        +        },
        +        "delivered": {
        +          "type": "integer"
        +        },
        +        "deliveryRate": {
        +          "type": "number"
        +        },
        +        "emailsSent": {
        +          "type": "integer"
        +        },
        +        "forwardsCount": {
        +          "type": "integer"
        +        },
        +        "hardBounces": {
        +          "type": "integer"
        +        },
        +        "listName": {
        +          "type": "string"
        +        },
        +        "openRate": {
        +          "type": "number"
        +        },
        +        "previewText": {
        +          "type": "string"
        +        },
        +        "sendTime": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "softBounces": {
        +          "type": "integer"
        +        },
        +        "subjectLine": {
        +          "type": "string"
        +        },
        +        "totalClicks": {
        +          "type": "integer"
        +        },
        +        "totalOpens": {
        +          "type": "integer"
        +        },
        +        "uniqueClicks": {
        +          "type": "integer"
        +        },
        +        "uniqueOpens": {
        +          "type": "integer"
        +        },
        +        "unsubscribes": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_insights_advanced7 fields changed
      • addedInput schema / properties / campaignId / description
        Added value: +"The 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."
      • addedInput schema / properties / endDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default."
      • addedInput schema / properties / maxSendVolume / description
        Added value: +"Maximum number of emails sent to include a campaign in the insights aggregations. Omit to impose no upper bound."
      • addedInput schema / properties / minSendVolume / description
        Added value: +"Minimum number of emails sent to include a campaign in the insights aggregations. Omit to use the system default threshold."
      • 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 / startDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_insights_advanced tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "audienceSummary": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Audience status summary counts.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignAverages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Aggregated averages and totals across campaigns.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "totalAbuseReports": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalCampaigns": {
        +            "type": "integer"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalForwards": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalHardBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalSoftBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalUnsubscribes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignConsistency": {
        +      "additionalProperties": true,
        +      "description": "Statistical consistency metrics for campaign performance. May be null.",
        +      "properties": {
        +        "clickRateStddev": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "maxClickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "maxOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "medianClickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "medianOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "minClickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "minOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "openRateStddev": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaignDateRange": {
        +      "additionalProperties": true,
        +      "description": "Overall chronological range of campaigns. May be null.",
        +      "properties": {
        +        "maxSendTime": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "minSendTime": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "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"
        +    },
        +    "computedThreshold": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "engagementDistribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Breakdown of members by engagement rating.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "memberRating": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "syncedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "insights": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Automatically generated contextual insights.",
        +        "properties": {
        +          "campaignId": {
        +            "description": "only emitted by the top-campaign insights",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "sentiment": {
        +            "description": "one of positive/negative/neutral",
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "previousPeriodAverages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Aggregated averages and totals across campaigns.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "totalAbuseReports": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalCampaigns": {
        +            "type": "integer"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalForwards": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalHardBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalSoftBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalUnsubscribes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "segmentSummary": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Summary metrics for segments.",
        +        "properties": {
        +          "createdAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "options": {
        +            "description": "Raw Mailchimp segment options JSON as an unparsed string that the client must parse itself",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "segmentId": {
        +            "type": "string"
        +          },
        +          "segmentType": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "syncedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "updatedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subscriberGrowth": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Subscriber growth over time.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "optDate": {
        +            "description": "A BigQuery DATE, not a timestamp",
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subscriberGrowthBaseline": {
        +      "type": "number"
        +    },
        +    "subscriberGrowthBaselineChurn": {
        +      "type": "number"
        +    },
        +    "subscriberGrowthBaselineSubscribed": {
        +      "type": "number"
        +    },
        +    "tagSummary": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Summary metric for a tag.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "syncedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "tagId": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_insights_basic10 fields changed
      • addedInput schema / properties / campaignId / description
        Added value: +"The 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."
      • addedInput schema / properties / campaignSortBy / description
        Added value: +"The field used to order the campaigns table within the insights payload. Defaults to sorting by send time."
      • addedInput schema / properties / campaignSortDirection / description
        Added value: +"The direction to sort the campaigns table within the insights payload. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"desc\" when omitted."
      • addedInput schema / properties / endDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default."
      • addedInput schema / properties / maxSendVolume / description
        Added value: +"Maximum number of emails sent to include a campaign in the insights aggregations. Omit to impose no upper bound."
      • addedInput schema / properties / minSendVolume / description
        Added value: +"Minimum number of emails sent to include a campaign in the insights aggregations. Omit to use the system default threshold."
      • 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 / search / description
        Added value: +"Filter the campaigns table section by a case-insensitive partial match on text or subject line. Note: this does not narrow the aggregate stats."
      • addedInput schema / properties / startDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_insights_basic tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "audienceSummary": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Audience status summary counts.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignAverages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Aggregated averages and totals across campaigns.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "totalAbuseReports": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalCampaigns": {
        +            "type": "integer"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalForwards": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalHardBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalSoftBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalUnsubscribes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignDetail": {
        +      "additionalProperties": true,
        +      "description": "Comprehensive details for a single campaign. May be null.",
        +      "properties": {
        +        "abuseReports": {
        +          "type": "integer"
        +        },
        +        "bounceRate": {
        +          "type": "number"
        +        },
        +        "campaignId": {
        +          "type": "string"
        +        },
        +        "campaignType": {
        +          "type": "string"
        +        },
        +        "clickRate": {
        +          "type": "number"
        +        },
        +        "clickToOpenRate": {
        +          "type": "number"
        +        },
        +        "delivered": {
        +          "type": "integer"
        +        },
        +        "deliveryRate": {
        +          "type": "number"
        +        },
        +        "emailsSent": {
        +          "type": "integer"
        +        },
        +        "forwardsCount": {
        +          "type": "integer"
        +        },
        +        "hardBounces": {
        +          "type": "integer"
        +        },
        +        "listName": {
        +          "type": "string"
        +        },
        +        "openRate": {
        +          "type": "number"
        +        },
        +        "previewText": {
        +          "type": "string"
        +        },
        +        "sendTime": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "softBounces": {
        +          "type": "integer"
        +        },
        +        "subjectLine": {
        +          "type": "string"
        +        },
        +        "totalClicks": {
        +          "type": "integer"
        +        },
        +        "totalOpens": {
        +          "type": "integer"
        +        },
        +        "uniqueClicks": {
        +          "type": "integer"
        +        },
        +        "uniqueOpens": {
        +          "type": "integer"
        +        },
        +        "unsubscribes": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaignPerformance": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Detailed performance for individual campaigns.",
        +        "properties": {
        +          "bounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignId": {
        +            "type": "string"
        +          },
        +          "clickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "clickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "clicksTotal": {
        +            "type": "integer"
        +          },
        +          "deliveries": {
        +            "type": "integer"
        +          },
        +          "deliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "emailsSent": {
        +            "type": "integer"
        +          },
        +          "openRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "opensTotal": {
        +            "type": "integer"
        +          },
        +          "sendTime": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "subjectLine": {
        +            "type": "string"
        +          },
        +          "totalBounces": {
        +            "type": "integer"
        +          },
        +          "uniqueClicks": {
        +            "type": "integer"
        +          },
        +          "uniqueOpens": {
        +            "type": "integer"
        +          },
        +          "unsubscribeRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "unsubscribed": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignTotal": {
        +      "type": "integer"
        +    },
        +    "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"
        +    },
        +    "computedThreshold": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "engagementTrend": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Monthly engagement trend data.",
        +        "properties": {
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignCount": {
        +            "type": "integer"
        +          },
        +          "month": {
        +            "description": "YYYY-MM bucket, never reformat",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "insights": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Automatically generated contextual insights.",
        +        "properties": {
        +          "campaignId": {
        +            "description": "only emitted by the top-campaign insights",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "sentiment": {
        +            "description": "one of positive/negative/neutral",
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "listOverview": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Top-level overview of an audience list.",
        +        "properties": {
        +          "cleanedCount": {
        +            "type": "integer"
        +          },
        +          "clickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "openRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "unsubscribeCount": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "previousPeriodAverages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Aggregated averages and totals across campaigns.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "totalAbuseReports": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalCampaigns": {
        +            "type": "integer"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalForwards": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalHardBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalSoftBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalUnsubscribes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "sendVolumeTrend": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Monthly send volume trend data.",
        +        "properties": {
        +          "campaignCount": {
        +            "type": "integer"
        +          },
        +          "month": {
        +            "type": "string"
        +          },
        +          "totalEmailsSent": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subscriberGrowth": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Subscriber growth over time.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "optDate": {
        +            "description": "A BigQuery DATE, not a timestamp",
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_insights_expert8 fields changed
      • addedInput schema / properties / campaignId / description
        Added value: +"The 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."
      • addedInput schema / properties / endDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default."
      • addedInput schema / properties / heatmapTimezone / description
        Added value: +"The valid IANA timezone string (e.g. 'America/New_York') used to align the send-time heatmap distribution. Omit to use UTC."
      • addedInput schema / properties / maxSendVolume / description
        Added value: +"Maximum number of emails sent to include a campaign in the insights aggregations. Omit to impose no upper bound."
      • addedInput schema / properties / minSendVolume / description
        Added value: +"Minimum number of emails sent to include a campaign in the insights aggregations. Omit to use the system default threshold."
      • 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 / startDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_insights_expert tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "audienceHealth": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Key metrics denoting overall audience health.",
        +        "properties": {
        +          "avgMemberRating": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cleanedCount": {
        +            "type": "integer"
        +          },
        +          "highEngagementCount": {
        +            "type": "integer"
        +          },
        +          "lowEngagementCount": {
        +            "type": "integer"
        +          },
        +          "subscribedCount": {
        +            "type": "integer"
        +          },
        +          "totalMembers": {
        +            "type": "integer"
        +          },
        +          "unsubscribedCount": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "audienceSummary": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Audience status summary counts.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignAverages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Aggregated averages and totals across campaigns.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "totalAbuseReports": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalCampaigns": {
        +            "type": "integer"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalForwards": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalHardBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalSoftBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalUnsubscribes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "campaignConsistency": {
        +      "additionalProperties": true,
        +      "description": "Statistical consistency metrics for campaign performance. May be null.",
        +      "properties": {
        +        "clickRateStddev": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "maxClickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "maxOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "medianClickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "medianOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "minClickRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "minOpenRate": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "openRateStddev": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaignFatigue": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Analysis of engagement fatigue over quarters.",
        +        "properties": {
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignCount": {
        +            "type": "integer"
        +          },
        +          "quarter": {
        +            "description": "YYYY-QN format",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "engagementDistribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Breakdown of members by engagement rating.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "memberRating": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "syncedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "insights": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Automatically generated contextual insights.",
        +        "properties": {
        +          "campaignId": {
        +            "description": "only emitted by the top-campaign insights",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "sentiment": {
        +            "description": "one of positive/negative/neutral",
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "monthlyTrend": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Quarterly trend data. Note this backs the response property named `monthlyTrend` even though the data is quarterly.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignCount": {
        +            "type": "integer"
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "yearQuarter": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "previousPeriodAverages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Aggregated averages and totals across campaigns.",
        +        "properties": {
        +          "avgBounceRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgClickToOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgDeliveryRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgEmailsSent": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "totalAbuseReports": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalCampaigns": {
        +            "type": "integer"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalEmailsSent": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalForwards": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalHardBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalSoftBounces": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalUnsubscribes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "sendTimeHeatmap": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Engagement heatmap mapping by day and hour.",
        +        "properties": {
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignCount": {
        +            "type": "integer"
        +          },
        +          "dayOfWeek": {
        +            "description": "1-7 BigQuery DAYOFWEEK",
        +            "type": "integer"
        +          },
        +          "hourOfDay": {
        +            "description": "0-23",
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sendTimeInsights": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Automatically generated contextual insights.",
        +        "properties": {
        +          "campaignId": {
        +            "description": "only emitted by the top-campaign insights",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "sentiment": {
        +            "description": "one of positive/negative/neutral",
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subjectLineKeywords": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Performance metrics grouped by subject line keywords.",
        +        "properties": {
        +          "avgClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignCount": {
        +            "type": "integer"
        +          },
        +          "keyword": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_knowledge1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Knowledge document(s) with version and lastUpdated metadata. 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"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "documents": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "text": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "topic": {
        +            "type": "string"
        +          },
        +          "uri": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "lastUpdated": {
        +      "description": "ISO 8601 instant",
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "topic": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "topics": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "topic": {
        +            "type": "string"
        +          },
        +          "uri": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "uri": {
        +      "type": "string"
        +    },
        +    "version": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member3 fields changed
      • 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 / subscriberHash / description
        Added value: +"The member's Mailchimp-style lowercase MD5 subscriber hash (canonical member key)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "activityTimeline": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Chronological list of all actions taken by a member.",
        +        "properties": {
        +          "activityType": {
        +            "type": "string"
        +          },
        +          "campaignId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "campaignTitle": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "timestamp": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "atRiskStatus": {
        +      "additionalProperties": true,
        +      "description": "Evaluation of churn risk based on activity fall-off. May be null.",
        +      "properties": {
        +        "activeActionsPrior": {
        +          "type": "integer"
        +        },
        +        "activeActionsRecent": {
        +          "type": "integer"
        +        },
        +        "isAtRisk": {
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "audienceAverages": {
        +      "additionalProperties": true,
        +      "description": "Comparative audience averages for context against an individual member. May be null.",
        +      "properties": {
        +        "avgEngagementScore": {
        +          "type": "number"
        +        },
        +        "avgMemberRating": {
        +          "type": "number"
        +        },
        +        "avgTotalClicks": {
        +          "type": "number"
        +        },
        +        "avgTotalOpens": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "botDetection": {
        +      "additionalProperties": true,
        +      "description": "Metrics for suspected automated bot activity. Note: this object is only present when bot activity was detected. May be null.",
        +      "properties": {
        +        "botActivityCount": {
        +          "type": "integer"
        +        },
        +        "botGroupCount": {
        +          "type": "integer"
        +        },
        +        "totalActivities": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaignConsistency": {
        +      "additionalProperties": true,
        +      "description": "How consistently this member engages compared to standard. May be null.",
        +      "properties": {
        +        "avgCampaignsEngaged": {
        +          "type": "number"
        +        },
        +        "memberCampaignsEngaged": {
        +          "type": "integer"
        +        },
        +        "totalCampaigns": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaignResponses": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Individual member response data to a specific campaign.",
        +        "properties": {
        +          "campaignClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignId": {
        +            "type": "string"
        +          },
        +          "campaignOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "didClick": {
        +            "type": "boolean"
        +          },
        +          "didOpen": {
        +            "type": "boolean"
        +          },
        +          "emailsSent": {
        +            "type": "integer"
        +          },
        +          "firstOpenMinutes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "sendTime": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "subjectLine": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "clickedUrls": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "URLs clicked by this specific member.",
        +        "properties": {
        +          "clickCount": {
        +            "type": "integer"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "engagementByHour": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Activity heatmap buckets for an individual member.",
        +        "properties": {
        +          "activityCount": {
        +            "type": "integer"
        +          },
        +          "dayOfWeek": {
        +            "description": "1-7, BigQuery DAYOFWEEK.",
        +            "type": "integer"
        +          },
        +          "hourOfDay": {
        +            "description": "0-23.",
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "engagementProfile": {
        +      "additionalProperties": true,
        +      "description": "Calculated overall engagement statistics for an individual member. May be null.",
        +      "properties": {
        +        "engagementPercentile": {
        +          "description": "0-1 scale.",
        +          "type": "number"
        +        },
        +        "engagementRank": {
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "engagementScore": {
        +          "type": "number"
        +        },
        +        "isLeader": {
        +          "type": "boolean"
        +        },
        +        "lastActivityAt": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "leaderEngagementRank": {
        +          "description": "Null for non-leaders via LEFT JOIN.",
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "memberRating": {
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "totalClicks": {
        +          "type": "integer"
        +        },
        +        "totalOpens": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "memberProfile": {
        +      "additionalProperties": true,
        +      "description": "Core profile information for an individual member. May be null.",
        +      "properties": {
        +        "businessType": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "companyName": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "countryCode": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "countryName": {
        +          "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"
        +          ]
        +        },
        +        "language": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "lastChanged": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "lastName": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "memberRating": {
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "memberTimezone": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "region": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "repName": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "state": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "stats": {
        +          "description": "Raw Mailchimp member-stats JSON as an unparsed string that the client must parse itself.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "status": {
        +          "type": "string"
        +        },
        +        "tags": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "timestampOpt": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "timestampSignup": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "title": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "vip": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "monthlyTrend": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Member activity volume over time.",
        +        "properties": {
        +          "clicks": {
        +            "type": "integer"
        +          },
        +          "month": {
        +            "description": "YYYY-MM bucket.",
        +            "type": "string"
        +          },
        +          "opens": {
        +            "type": "integer"
        +          },
        +          "total": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "subscriberHash": {
        +      "description": "The 32-character lowercase hex MD5 hash of the member's downcased email address. This is the canonical unique identifier for members exposed across the Enterprise API, identical to Mailchimp's core behavior. The API will never expose internal synthetic BigQuery UUIDs.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member_campaigns16 fields changed
      • addedInput schema / properties / clickedFilter / description
        Added value: +"Filter timeline events to only those where the campaign was clicked, not clicked, or 'all' to ignore click status. Defaults to \"all\" when omitted."
      • 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 / dateFrom / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded."
      • addedInput schema / properties / dateTo / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default."
      • addedInput schema / properties / maxTimeToClick / description
        Added value: +"Maximum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no upper bound."
      • addedInput schema / properties / maxTimeToOpen / description
        Added value: +"Maximum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no upper bound."
      • addedInput schema / properties / minTimeToClick / description
        Added value: +"Minimum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no lower bound."
      • addedInput schema / properties / minTimeToOpen / description
        Added value: +"Minimum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no lower bound."
      • addedInput schema / properties / openedFilter / description
        Added value: +"Filter timeline events to only those where the campaign was opened, not opened, or 'all' to ignore open status. Defaults to \"all\" when omitted."
      • 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 / sortBy / description
        Added value: +"The field used to order the member campaigns list. Defaults to the send time of the campaign."
      • addedInput schema / properties / sortDir / description
        Added value: +"The direction to sort the campaign results. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"desc\" when omitted."
      • addedInput schema / properties / subjectFilter / description
        Added value: +"Filter the timeline by a case-insensitive partial match on the campaign subject line. Omit to include all subjects."
      • addedInput schema / properties / subscriberHash / description
        Added value: +"The member's Mailchimp-style lowercase MD5 subscriber hash (canonical member key)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member_campaigns 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"
        +    },
        +    "data": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Paginated list of a member's campaign interactions.",
        +        "properties": {
        +          "campaignClickRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "campaignId": {
        +            "type": "string"
        +          },
        +          "campaignOpenRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "didClick": {
        +            "type": "boolean"
        +          },
        +          "didOpen": {
        +            "type": "boolean"
        +          },
        +          "emailsSent": {
        +            "type": "integer"
        +          },
        +          "firstClickMinutes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "firstOpenMinutes": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "sendTime": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "subjectLine": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "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"
        +    },
        +    "subscriberHash": {
        +      "description": "The 32-character lowercase hex MD5 hash of the member's downcased email address. This is the canonical unique identifier for members exposed across the Enterprise API, identical to Mailchimp's core behavior. The API will never expose internal synthetic BigQuery UUIDs.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member_geo3 fields changed
      • addedInput schema / properties / countryCode / description
        Added value: +"Isolate distribution to a specific ISO country code."
      • 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member_geo tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "allRegions": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Granular region-to-country groupings.",
        +        "properties": {
        +          "countryCode": {
        +            "type": "string"
        +          },
        +          "region": {
        +            "type": "string"
        +          },
        +          "subscribed": {
        +            "type": "integer"
        +          },
        +          "total": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "countries": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Member counts grouped by country code.",
        +        "properties": {
        +          "countryCode": {
        +            "type": "string"
        +          },
        +          "subscribed": {
        +            "type": "integer"
        +          },
        +          "total": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "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"
        +    },
        +    "regions": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Member counts grouped by broader regional assignment.",
        +        "properties": {
        +          "region": {
        +            "type": "string"
        +          },
        +          "subscribed": {
        +            "type": "integer"
        +          },
        +          "total": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member_growth2 fields changed
      • 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member_growth tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "churnTimeline": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Churn and unsubscribes bucketed by month.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "month": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "cohortRetention": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Retention counts relative to user signup month cohorts.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "signupMonth": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "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"
        +    },
        +    "signupCohorts": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Signup volume bucketed by month.",
        +        "properties": {
        +          "month": {
        +            "description": "A `YYYY-MM` bucket, NOT a timestamp — must never be reformatted.",
        +            "type": "string"
        +          },
        +          "newSignups": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member_overview2 fields changed
      • 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member_overview 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"
        +    },
        +    "dimensionDistributions": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "A dimension slot mapping details. Note: the `values` property is an array of MembersDimensionValueRow composed at the OpenAPI schema level.",
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "slot": {
        +            "type": "string"
        +          },
        +          "unassignedLabel": {
        +            "type": "string"
        +          },
        +          "values": {
        +            "items": {
        +              "additionalProperties": true,
        +              "description": "A single distinct dimension value and its member count.",
        +              "properties": {
        +                "count": {
        +                  "type": "integer"
        +                },
        +                "value": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "languageDistribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Count of members grouped by reported language.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "language": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "ratingDistribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Count of members grouped by their Mailchimp rating (1-5).",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "rating": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "repDistribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Count of members grouped by rep/owner. Only populated when an owner/rep merge field is mapped, otherwise the array is empty.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "repName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "statusBreakdown": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Count of members grouped by their subscription status.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totals": {
        +      "additionalProperties": true,
        +      "description": "Top-level member aggregate statistics.",
        +      "properties": {
        +        "avgRating": {
        +          "type": "number"
        +        },
        +        "cleaned": {
        +          "type": "integer"
        +        },
        +        "subscribed": {
        +          "type": "integer"
        +        },
        +        "total": {
        +          "type": "integer"
        +        },
        +        "unsubscribed": {
        +          "type": "integer"
        +        },
        +        "vipCount": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member_segments2 fields changed
      • 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member_segments 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"
        +    },
        +    "overallAvgEngagement": {
        +      "type": "number"
        +    },
        +    "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"
        +    },
        +    "segments": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Directory of Mailchimp segments.",
        +        "properties": {
        +          "createdAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "segmentId": {
        +            "description": "Numeric string by contract.",
        +            "type": "string"
        +          },
        +          "segmentType": {
        +            "description": "The public surface deliberately renames the reserved word `type`; the shared core still returns `type`.",
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subscribedCount": {
        +      "type": "integer"
        +    },
        +    "tagEngagement": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Engagement metrics associated with a specific tag.",
        +        "properties": {
        +          "avgEngagementScore": {
        +            "type": "number"
        +          },
        +          "leaderCount": {
        +            "type": "integer"
        +          },
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tagStatusBreakdown": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Member statuses within a specific tag context.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "tagName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tags": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Directory of Mailchimp tags.",
        +        "properties": {
        +          "memberCount": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "tagId": {
        +            "description": "Numeric string by contract.",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totalCount": {
        +      "type": "integer"
        +    },
        +    "untaggedCount": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_member_timeline16 fields changed
      • addedInput schema / properties / clickedFilter / description
        Added value: +"Filter timeline events to only those where the campaign was clicked, not clicked, or 'all' to ignore click status. Defaults to \"all\" when omitted."
      • 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 / dateFrom / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded."
      • addedInput schema / properties / dateTo / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default."
      • addedInput schema / properties / maxTimeToClick / description
        Added value: +"Maximum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no upper bound."
      • addedInput schema / properties / maxTimeToOpen / description
        Added value: +"Maximum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no upper bound."
      • addedInput schema / properties / minTimeToClick / description
        Added value: +"Minimum elapsed time from the campaign send until the member's first click, in minutes. Omit to impose no lower bound."
      • addedInput schema / properties / minTimeToOpen / description
        Added value: +"Minimum elapsed time from the campaign send until the member's first open, in minutes. Omit to impose no lower bound."
      • addedInput schema / properties / openedFilter / description
        Added value: +"Filter timeline events to only those where the campaign was opened, not opened, or 'all' to ignore open status. Defaults to \"all\" when omitted."
      • 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 / sortBy / description
        Added value: +"The field used to order the timeline. Defaults to ordering by the most recent timestamp first."
      • addedInput schema / properties / sortDir / description
        Added value: +"The direction to sort the timeline results. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"desc\" when omitted."
      • addedInput schema / properties / subjectFilter / description
        Added value: +"Filter the timeline by a case-insensitive partial match on the campaign subject line. Omit to include all subjects."
      • addedInput schema / properties / subscriberHash / description
        Added value: +"The member's Mailchimp-style lowercase MD5 subscriber hash (canonical member key)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_member_timeline 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"
        +    },
        +    "data": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Chronological list of all actions taken by a member.",
        +        "properties": {
        +          "activityType": {
        +            "type": "string"
        +          },
        +          "campaignId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "campaignTitle": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "timestamp": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "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"
        +    },
        +    "subscriberHash": {
        +      "description": "The 32-character lowercase hex MD5 hash of the member's downcased email address. This is the canonical unique identifier for members exposed across the Enterprise API, identical to Mailchimp's core behavior. The API will never expose internal synthetic BigQuery UUIDs.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_prompt1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "A single rendered prompt workflow and its effective arguments. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "arguments": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "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"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_schema1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Either a compact index of operations or a detailed schema for one operation. 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"
        +    },
        +    "components": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "method": {
        +      "type": "string"
        +    },
        +    "operation": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "operationCount": {
        +      "type": "number"
        +    },
        +    "operations": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "method": {
        +            "type": "string"
        +          },
        +          "optionalParams": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "path": {
        +            "type": "string"
        +          },
        +          "requiredParams": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "summary": {
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "toolName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "path": {
        +      "type": "string"
        +    },
        +    "schemaUrl": {
        +      "type": "string"
        +    },
        +    "toolName": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_sync_run3 fields changed
      • 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 / runId / description
        Added value: +"The opaque 8-character hash ID correlating to the sync run."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_sync_run 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"
        +    },
        +    "lookbackWindowDays": {
        +      "type": "integer"
        +    },
        +    "pendingBatchCount": {
        +      "type": "integer"
        +    },
        +    "progress": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "In-flight progress for a sync run. Rows exist only during an active sync.",
        +        "properties": {
        +          "currentPage": {
        +            "type": "integer"
        +          },
        +          "currentPhase": {
        +            "description": "Free text phase description, not an enum.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "dataType": {
        +            "type": "string"
        +          },
        +          "listsCompleted": {
        +            "type": "integer"
        +          },
        +          "recordsProcessed": {
        +            "type": "integer"
        +          },
        +          "recordsSkipped": {
        +            "type": "integer"
        +          },
        +          "recordsWritten": {
        +            "type": "integer"
        +          },
        +          "startedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": "string"
        +          },
        +          "totalLists": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalRecords": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "updatedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Result row for a specific data type in a sync run. The row's `id` is deliberately dropped by the endpoint, making `dataType` the distinguishing key.",
        +        "properties": {
        +          "dataType": {
        +            "description": "Free-form varchar (not an enum). Observed values: automations, campaign_reports, campaigns, email_activities, lists, member_activities, members, reports, segments, tags.",
        +            "type": "string"
        +          },
        +          "durationSeconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "errorMessage": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "finalTableRowCount": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "recordsSkipped": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "recordsWritten": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalRecords": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "run": {
        +      "additionalProperties": true,
        +      "description": "Details for a specific sync run. Omits projectName, retryCount, resultsCount, and totalTables carried by the list row.",
        +      "properties": {
        +        "createdAt": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "endedAt": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "errorMessage": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "projectId": {
        +          "type": "string"
        +        },
        +        "startedAt": {
        +          "description": "ISO 8601 UTC timestamp.",
        +          "type": "string"
        +        },
        +        "status": {
        +          "enum": [
        +            "queued",
        +            "pending",
        +            "running",
        +            "paused",
        +            "success",
        +            "partial",
        +            "failed",
        +            "cancelled"
        +          ],
        +          "type": "string"
        +        },
        +        "triggerType": {
        +          "enum": [
        +            "manual",
        +            "scheduled"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_get_variate3 fields changed
      • addedInput schema / properties / campaignId / description
        Added value: +"The 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."
      • 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_get_variate tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "audienceQuality": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Measures the quality of audience engaging with the campaign.",
        +        "properties": {
        +          "avgClicksPerMember": {
        +            "type": "number"
        +          },
        +          "avgEngagementScore": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgMemberRating": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "avgOpensPerMember": {
        +            "type": "number"
        +          },
        +          "clickToOpenRate": {
        +            "type": "number"
        +          },
        +          "leaderCount": {
        +            "type": "integer"
        +          },
        +          "repeatClickers": {
        +            "type": "integer"
        +          },
        +          "repeatOpeners": {
        +            "type": "integer"
        +          },
        +          "totalEngagedMembers": {
        +            "type": "integer"
        +          },
        +          "variantLabel": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "engagementVelocity": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Velocity of opens and clicks post-send.",
        +        "properties": {
        +          "clicks": {
        +            "type": "integer"
        +          },
        +          "hoursAfterSend": {
        +            "description": "0-72",
        +            "type": "integer"
        +          },
        +          "opens": {
        +            "type": "integer"
        +          },
        +          "variantLabel": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "funnelData": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Funnel metrics for a campaign or variant.",
        +        "properties": {
        +          "recipients": {
        +            "type": "integer"
        +          },
        +          "uniqueClickers": {
        +            "type": "integer"
        +          },
        +          "uniqueOpeners": {
        +            "type": "integer"
        +          },
        +          "variantLabel": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "geoBreakdown": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Geographic distribution of campaign engagement.",
        +        "properties": {
        +          "engagedCount": {
        +            "type": "integer"
        +          },
        +          "stateRegion": {
        +            "type": "string"
        +          },
        +          "variantLabel": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "timeToFirstOpen": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Analysis of time until the first open occurs.",
        +        "properties": {
        +          "avgMinutes": {
        +            "type": "number"
        +          },
        +          "maxMinutes": {
        +            "type": "integer"
        +          },
        +          "medianMinutes": {
        +            "type": "integer"
        +          },
        +          "minMinutes": {
        +            "type": "integer"
        +          },
        +          "openers": {
        +            "type": "integer"
        +          },
        +          "variantLabel": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "variantReports": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Performance reports split by campaign variant.",
        +        "properties": {
        +          "clicksTotal": {
        +            "type": "integer"
        +          },
        +          "emailsSent": {
        +            "type": "integer"
        +          },
        +          "hardBounces": {
        +            "type": "integer"
        +          },
        +          "opensTotal": {
        +            "type": "integer"
        +          },
        +          "softBounces": {
        +            "type": "integer"
        +          },
        +          "subjectLine": {
        +            "type": "string"
        +          },
        +          "uniqueClicks": {
        +            "type": "integer"
        +          },
        +          "uniqueOpens": {
        +            "type": "integer"
        +          },
        +          "unsubscribed": {
        +            "type": "integer"
        +          },
        +          "variantLabel": {
        +            "description": "A, B, C, or Campaign for non-variate",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_list_at_risk14 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 / 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 / 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 / maxPrior / description
        Added value: +"Maximum count of engagement actions prior to the recent drop-off. Omit to impose no upper bound."
      • 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 / minPrior / description
        Added value: +"Minimum count of engagement actions prior to the recent drop-off. Omit to impose no lower bound."
      • 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 / 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 subscribers by a case-insensitive partial match on their 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 at-risk subscribers list. Defaults to the number of recent active actions."
      • addedInput schema / properties / sortDir / description
        Added value: +"The direction to sort the at-risk results. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"asc\" when omitted."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_list_at_risk 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"
        +    },
        +    "distribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Distribution of at-risk subscribers grouped by member rating.",
        +        "properties": {
        +          "avgPriorActions": {
        +            "type": "number"
        +          },
        +          "maxPriorActions": {
        +            "type": "integer"
        +          },
        +          "memberRating": {
        +            "type": "integer"
        +          },
        +          "subscriberCount": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "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"
        +    },
        +    "quadrantData": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Detailed scatter-quadrant plotting data for at-risk members.",
        +        "properties": {
        +          "activeActionsPrior": {
        +            "type": "integer"
        +          },
        +          "daysSinceLastActivity": {
        +            "type": "integer"
        +          },
        +          "emailAddress": {
        +            "type": "string"
        +          },
        +          "engagementScore": {
        +            "type": "number"
        +          },
        +          "firstName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lastName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "memberRating": {
        +            "type": "integer"
        +          },
        +          "repName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "totalClicks": {
        +            "type": "integer"
        +          },
        +          "totalOpens": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "repBreakdown": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Breakdown of at-risk counts grouped by sales rep/owner.",
        +        "properties": {
        +          "atRiskCount": {
        +            "type": "integer"
        +          },
        +          "avgEngagementScore": {
        +            "type": "number"
        +          },
        +          "avgPriorActions": {
        +            "type": "number"
        +          },
        +          "repName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subscribers": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Represents an individual at-risk member. Semantic conflict note: engagementScore here is the RAW unbounded decayed score, can be negative.",
        +        "properties": {
        +          "activeActionsPrior": {
        +            "type": "integer"
        +          },
        +          "activeActionsRecent": {
        +            "type": "integer"
        +          },
        +          "emailAddress": {
        +            "type": "string"
        +          },
        +          "engagementScore": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "firstName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "isLeader": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "lastActivityAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lastName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "memberRating": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "repName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "subscriberHash": {
        +            "type": "string"
        +          },
        +          "totalClicks": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "totalOpens": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_list_campaigns11 fields changed
      • 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 / endDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) upper bound for the time range in YYYY-MM-DD format. Omit to leave the end of the time window unbounded or use the endpoint's default."
      • addedInput schema / properties / maxSendVolume / description
        Added value: +"Maximum number of emails sent to include the campaign in the results. Omit to impose no upper bound."
      • addedInput schema / properties / minSendVolume / description
        Added value: +"Minimum number of emails sent to include the campaign in the results. Omit to use the system default threshold."
      • 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 / search / description
        Added value: +"Filter campaigns by a case-insensitive partial match on the subject line or specific internal campaign IDs. Omit to skip text filtering."
      • addedInput schema / properties / sortBy / description
        Added value: +"The field used to order the campaigns list. Defaults to sorting by the most recent send time first."
      • addedInput schema / properties / sortDir / description
        Added value: +"The direction to sort the campaign results. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"desc\" when omitted."
      • addedInput schema / properties / startDate / description
        Added value: +"Inclusive ISO-8601 calendar date (UTC) lower bound for the time range in YYYY-MM-DD format. Omit to leave the start of the time window unbounded."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_list_campaigns tool. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "campaigns": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "General campaign list view row.",
        +        "properties": {
        +          "campaignId": {
        +            "type": "string"
        +          },
        +          "clickRate": {
        +            "type": "number"
        +          },
        +          "emailsSent": {
        +            "type": "integer"
        +          },
        +          "openRate": {
        +            "type": "number"
        +          },
        +          "sendTime": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "subjectLine": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "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"
        +    },
        +    "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"
        +}
    • Changedsm_list_leaders17 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 / 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 / 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 / leaderOnly / description
        Added value: +"Restrict the leaderboard strictly to members recognized as highly engaged leaders. Set to false to include the broader audience in the engagement rank. Defaults to true 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 / maxScore / description
        Added value: +"Maximum engagement score percentile to include. The score ranges from 0 to 100. Omit to impose no maximum bound."
      • 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 / minScore / description
        Added value: +"Minimum engagement score percentile to include. The score ranges from 0 to 100. Omit to impose no minimum bound."
      • 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 / 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 leaders by a case-insensitive partial match on their 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 leaderboard results. Defaults to sorting by the highest engagement score first."
      • addedInput schema / properties / sortDir / description
        Added value: +"The direction to sort the leaderboard results. Can be 'asc' for ascending or 'desc' for descending. Defaults to \"desc\" when omitted."
      • addedInput schema / properties / status / description
        Added value: +"Filter members by their specific leader status (e.g. VIP or standard leader). Select 'all' to include every status. 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_leaders 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"
        +    },
        +    "leaderboardDistribution": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Distribution buckets for leaders across scoring tiers.",
        +        "properties": {
        +          "avgEngagementScore": {
        +            "type": "number"
        +          },
        +          "avgMemberRating": {
        +            "type": "number"
        +          },
        +          "leaderCount": {
        +            "type": "integer"
        +          },
        +          "subscriberCount": {
        +            "type": "integer"
        +          },
        +          "tier": {
        +            "type": "string"
        +          },
        +          "tierOrder": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "leaders": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Represents an individual top-tier engaged member. Semantic conflict note: engagementScore here is a 0-100 percentile.",
        +        "properties": {
        +          "emailAddress": {
        +            "type": "string"
        +          },
        +          "engagementScore": {
        +            "type": "number"
        +          },
        +          "firstName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "isLeader": {
        +            "type": "boolean"
        +          },
        +          "lastActivityAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lastName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "memberRating": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "repName": {
        +            "description": "Null when owner merge field unmapped",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "subscriberHash": {
        +            "type": "string"
        +          },
        +          "totalClicks": {
        +            "type": "integer"
        +          },
        +          "totalOpens": {
        +            "type": "integer"
        +          },
        +          "vip": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          }
        +        },
        +        "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"
        +    },
        +    "repOptions": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Generic named-count tuple used for Rep and Tag options.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "summaryStats": {
        +      "additionalProperties": true,
        +      "description": "Overall summary stats for leaders. Note: avgScore is actually the average member RATING, preserved for now.",
        +      "properties": {
        +        "activeLeaderCount": {
        +          "type": "integer"
        +        },
        +        "atRiskCount": {
        +          "type": "integer"
        +        },
        +        "atRiskLeaderCount": {
        +          "type": "integer"
        +        },
        +        "avgLeaderRating": {
        +          "type": "number"
        +        },
        +        "avgScore": {
        +          "type": "number"
        +        },
        +        "totalActive": {
        +          "type": "integer"
        +        },
        +        "totalLeaders": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "tagOptions": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Generic named-count tuple used for Rep and Tag options.",
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_list_members21 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"
        +}
    • Changedsm_list_projects1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_list_projects 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"
        +    },
        +    "count": {
        +      "type": "integer"
        +    },
        +    "error": {
        +      "description": "A human-readable error message detailing what went wrong.",
        +      "type": "string"
        +    },
        +    "projects": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Basic project information.",
        +        "properties": {
        +          "companyName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "8-char Hashid of the internal integer id.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_list_prompts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Flattened catalog of available prompt workflows. Failure payloads arrive in the same envelope as { error, message, code }.",
        +  "properties": {
        +    "catalogSource": {
        +      "type": "string"
        +    },
        +    "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"
        +    },
        +    "lastUpdated": {
        +      "type": "string"
        +    },
        +    "promptCount": {
        +      "type": "number"
        +    },
        +    "prompts": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "arguments": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "description": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "required": {
        +                  "type": "boolean"
        +                },
        +                "ui": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "category": {
        +            "type": "string"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "version": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsm_list_sync_runs4 fields changed
      • 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 / 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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Output for the sm_list_sync_runs 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"
        +    },
        +    "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"
        +    },
        +    "runs": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "Represents a single sync run in the paginated list.",
        +        "properties": {
        +          "createdAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "endedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "errorMessage": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "projectId": {
        +            "type": "string"
        +          },
        +          "projectName": {
        +            "type": "string"
        +          },
        +          "resultsCount": {
        +            "type": "integer"
        +          },
        +          "retryCount": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "startedAt": {
        +            "description": "ISO 8601 UTC timestamp.",
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "queued",
        +              "pending",
        +              "running",
        +              "paused",
        +              "success",
        +              "partial",
        +              "failed",
        +              "cancelled"
        +            ],
        +            "type": "string"
        +          },
        +          "totalTables": {
        +            "type": "integer"
        +          },
        +          "triggerType": {
        +            "enum": [
        +              "manual",
        +              "scheduled"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
  9. 24 tool updates
    • First observedsm_get_account
    • First observedsm_get_campaign
    • First observedsm_get_insights_advanced
    • First observedsm_get_insights_basic
    • First observedsm_get_insights_expert
    • First observedsm_get_knowledge
    • First observedsm_get_member
    • First observedsm_get_member_campaigns
    • First observedsm_get_member_geo
    • First observedsm_get_member_growth
    • First observedsm_get_member_overview
    • First observedsm_get_member_segments
    • First observedsm_get_member_timeline
    • First observedsm_get_prompt
    • First observedsm_get_schema
    • First observedsm_get_sync_run
    • First observedsm_get_variate
    • First observedsm_list_at_risk
    • First observedsm_list_campaigns
    • First observedsm_list_leaders
    • First observedsm_list_members
    • First observedsm_list_projects
    • First observedsm_list_prompts
    • First observedsm_list_sync_runs

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Integrates Mailchimp with GenAI applications via the Model Context Protocol, enabling email marketing automation through natural language interactions.
    2
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Mailchimp API for managing campaigns, lists, templates, reports, and automations through natural language.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Manage Mailchimp audiences, campaigns, and members via the Mailchimp Marketing API through natural language queries.
    542 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources