Skip to main content
Glama
growsurf

GrowSurf MCP Server

Official

Get Activation Analytics

growsurf_get_campaign_activation_analytics
Read-onlyIdempotent

Fetch strict activation analytics for a campaign enrollment cohort, tracking eligible participants through stages like sharing, referral visits, and credits within a 7- or 30-day window.

Instructions

Fetch strict activation for eligible participants in one enrollment cohort. Referral programs group by enrolledAsAdvocateAt; affiliate programs group by approvedAsAffiliateAt. The ordered stages are ELIGIBLE, PORTAL_VIEWED, SHARE_ACTION, UNIQUE_REFERRAL_VISIT, LEAD, and CREDITED_REFERRAL. Each participant gets the selected 7- or 30-day observation window. Omit both cohort bounds for the latest fully matured cohort. Read coverageStartAt, state, and reason before interpreting a null or zero; unavailable history does not mean an action never happened. Targets campaignId if passed, otherwise GROWSURF_CAMPAIGN_ID.

Input Schema

NameRequiredDescriptionDefault
cohortToNoExclusive eligibility-cohort end, Unix timestamp in ms. Must be greater than `cohortFrom`.
timezoneNoIANA timezone used to advance cohort boundaries. Defaults to `UTC`.
campaignIdYesTarget program (campaign) id for this call. Defaults to GROWSURF_CAMPAIGN_ID when omitted. Program IDs also identify newly created programs without restarting the server.
cohortFromNoInclusive eligibility-cohort start, Unix timestamp in ms. Use with `cohortTo`.
cohortIntervalNoBucket size for `cohorts`. Defaults to `day`.
observationWindowDaysNoDays after eligibility in which stages can count. Defaults to `30`.

Output Schema

NameRequiredDescriptionDefault
cohortsNoSelected range split into exact half-open eligibility-cohort buckets.
timezoneNoIANA timezone used to advance cohort boundaries.
aggregateNoStrict activation metrics for one exact enrollment cohort.
programTypeNoProgram eligibility model.
cohortIntervalNoBucket size for `cohorts`.
coverageStartAtNoEarliest expected complete activation capture time (Unix ms), or `null` until coverage begins.
portalViewedLabelNoProgram-specific display label for the stable `PORTAL_VIEWED` stage.
metricContractVersionNoShared activation and engagement metric version.
observationWindowDaysNoDays after eligibility in which stages count.
portalViewedHelperTextNoDisplay definition for a qualifying signed-in portal view.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.19.15
    • addedInput schema / properties / campaignId / minLength
      Added value: +1
    • addedInput schema / required
      Added value: +[
      +  "campaignId"
      +]
  2. Changed1 schema field changedv0.19.9
    • changedInput schema / properties / campaignId / description
      Previous value: -"Target program (campaign) id for this call. Defaults to GROWSURF_CAMPAIGN_ID when omitted. Pass the `id` returned by growsurf_create_campaign to configure or operate a program you just created, without restarting the server."New 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."
  3. Addedv0.14.0

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantive behavior: the fixed stage order, advocate vs affiliate cohort grouping fields, the per-participant observation window, and a critical caveat that zero/null may reflect unavailable history rather than no action.

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?

Dense but well ordered: purpose first, then grouping semantics, stage list, defaults, interpretation caveat, and targeting last. Every sentence carries operational weight, though the enum-heavy middle sentence is a little packed.

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-value explanation is unnecessary, and the description covers the remaining gaps an agent needs: cohort defaults, stage ordering, observation window, and how to read null/zero results.

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?

Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema does not: what happens when both cohort bounds are omitted, which field cohorts group on per program type, and the campaignId/GROWSURF_CAMPAIGN_ID fallback.

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 ('Fetch strict activation ... in one enrollment cohort') and scopes it tightly enough to separate it from the broader get_campaign_analytics and get_participant_analytics siblings. It never names an alternative tool explicitly, so it stops short of full 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 Guidelines4/5

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

Gives concrete usage guidance: omit both cohort bounds for the latest fully matured cohort, each participant gets the chosen 7- or 30-day window, and read coverageStartAt/state/reason before interpreting nulls. It lacks explicit when-to-use-this-instead-of-X routing against sibling analytics tools.

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

Deploy Server

Other Tools