Skip to main content
Glama

GrowSurf

Get Program Analytics

growsurf_get_campaign_analytics
Read-onlyIdempotent

Fetch analytics for your GrowSurf program: participants, referrals, impressions, per-channel shares, and affiliate revenue, commission, and payout metrics when applicable. Pass interval (day, week, or month) for a per-period series. Pass comma-separated include values for previousPeriod, statusCounts, rates, email, or engagement. engagement groups unique active, sharing, repeat, and retained participants by when portal views and share actions occurred. Its coverageStartAt, state, and reason distinguish measured zeroes from partial or unavailable history. Scope the timeframe with days (default 365, max 1825) or an explicit startDate/endDate window. Explicit dates must both be positive Unix timestamps in milliseconds, with endDate >= startDate and a maximum span of 1825 days. timezone and platform apply to engagement only. Targets campaignId if passed, otherwise GROWSURF_CAMPAIGN_ID.

Input Schema

NameRequiredDescriptionDefault
daysNo
endDateNoEnd of the timeframe, positive Unix timestamp in milliseconds. Supply `startDate` too; `endDate` must be >= `startDate` and at most 1825 days later.
includeNoComma-separated optional data: `previousPeriod`, `statusCounts`, `rates`, `email`, and `engagement`. Combine values when the question needs more than one view.
intervalNoday/week/month adds a per-period `series`; total (default) returns totals only.
platformNoClient-platform filter for engagement. Defaults to `ALL`.
timezoneNoIANA timezone for engagement interval and distinct-day calculations. Used with `include=engagement`.
startDateNoStart of the timeframe, positive Unix timestamp in milliseconds. Supply `endDate` too; the window must span at most 1825 days.
campaignIdYesTarget program id for this call: the `id` returned by `growsurf_list_campaigns`, not the program name or a share URL. Defaults to GROWSURF_CAMPAIGN_ID when omitted. Program IDs also identify newly created programs without restarting the server.

Output Schema

NameRequiredDescriptionDefault
emailNoSent, delivered, opened, clicked, bounced, and spam complaint metrics for program emails in the requested window.
ratesNoDerived referral rates, each a ratio from 0 to 1. Present only when `include` contains `rates`.
seriesNoPer-period totals in ascending order. Present only when `interval` is `day`, `week`, or `month`.
endDateNoEnd of the analytics timeframe, as a Unix timestamp in milliseconds.
analyticsNoAnalytics totals: `invites`, `impressions`, `uniqueImpressions`, `participants`, `referrals`, `referralCreditPendings`, `referralCreditExpireds`, per-channel share counts (`emailShares`, `twitterShares`, `copyRefLinkShares`, ...), and for affiliate programs `totalRevenue` and `totalCommissions` (in minor currency units (e.g. cents)) plus `totalCommissionCount` and `uniqueCommissionReferrals`.
startDateNoStart of the analytics timeframe, as a Unix timestamp in milliseconds.
engagementNoOpt-in participant engagement grouped by when activity occurred.
statusCountsNoStatus-count breakdowns: dashboard-aligned reward counts, and for affiliate programs `affiliateStatus`, `commissionStatus`, and `payoutStatus` (counts and amounts in minor currency units (e.g. cents)). Present only when `include` contains `statusCounts`.
previousPeriodNoTotals for the equal-length window immediately before the requested one (`analytics`, `startDate`, `endDate`). Present only when `include` contains `previousPeriod`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / campaignId / description
      Previous value: -"Target program (campaign) id for this call. Defaults to GROWSURF_CAMPAIGN_ID when omitted. Program IDs also identify newly created programs without restarting the server."New value: +"Target program id for this call: the `id` returned by `growsurf_list_campaigns`, not the program name or a share URL. Defaults to GROWSURF_CAMPAIGN_ID when omitted. Program IDs also identify newly created programs without restarting the server."
  2. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world, so safety is covered. The description adds real behavioral context beyond that: the 365 default / 1825 max window, the ms-timestamp requirement for explicit dates, and the engagement coverage semantics (`coverageStartAt`, `state`, `reason` distinguishing measured zeroes from partial history). That is solid added value, though it says nothing about response size, cost, or failure modes.

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?

Information is front-loaded by importance (what you get, then interval/include, then timeframe, then targeting) and most sentences carry distinct content. Some redundancy exists: the date-window constraints are restated in both the description and the schema property descriptions, which adds length without new meaning.

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 enumerated, and the description still covers the non-obvious parts: metric families, optional include views, engagement coverage interpretation, timeframe scoping rules, and campaign targeting. For an 8-parameter read tool this is essentially complete.

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?

With 88% schema coverage the baseline is 3, but the description earns more by explaining what `include=engagement` actually groups and by documenting the campaignId fallback to GROWSURF_CAMPAIGN_ID. Minor gap: it lists `interval` as day/week/month while the schema enum also allows `total`, and it does not explain how `days` interacts with explicit start/end dates.

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 ('Fetch analytics for your GrowSurf program') and enumerates the concrete metrics returned (participants, referrals, impressions, shares, affiliate revenue/commission/payout). It does not, however, distinguish this tool from closely named siblings like growsurf_get_campaign_activation_analytics or growsurf_get_participant_analytics.

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 clear operational guidance: use `interval` for a per-period series, use `include` for extra views, and scope time via `days` or an explicit start/end window. It states that `timezone` and `platform` apply only to engagement, which is useful scoping. It stops short of saying when to prefer this tool over the sibling analytics tools.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.