Skip to main content
Glama
GrowSurf MCP Server

GrowSurf MCP Server

Official

Get Activation Analytics

growsurf_get_campaign_activation_analytics
Read-onlyIdempotent

Fetch strict activation analytics for a GrowSurf campaign cohort, showing participant progression through ordered stages within a 7- or 30-day observation 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. Changed8 schema fields changedv0.19.27
    • addedOutput schema / properties / aggregate / properties / largestDrop / properties / fromStage / description
      Added value: +"Strict stage before the largest drop."
    • removedOutput schema / properties / aggregate / properties / largestDrop / properties / fromStage / enum
      Removed value: -[
      -  "ELIGIBLE",
      -  "PORTAL_VIEWED",
      -  "SHARE_ACTION",
      -  "UNIQUE_REFERRAL_VISIT",
      -  "LEAD"
      -]
    • addedOutput schema / properties / aggregate / properties / largestDrop / properties / toStage / description
      Added value: +"Strict stage after the largest drop."
    • removedOutput schema / properties / aggregate / properties / largestDrop / properties / toStage / enum
      Removed value: -[
      -  "PORTAL_VIEWED",
      -  "SHARE_ACTION",
      -  "UNIQUE_REFERRAL_VISIT",
      -  "LEAD",
      -  "CREDITED_REFERRAL"
      -]
    • addedOutput schema / properties / cohorts / items / properties / largestDrop / properties / fromStage / description
      Added value: +"Strict stage before the largest drop."
    • removedOutput schema / properties / cohorts / items / properties / largestDrop / properties / fromStage / enum
      Removed value: -[
      -  "ELIGIBLE",
      -  "PORTAL_VIEWED",
      -  "SHARE_ACTION",
      -  "UNIQUE_REFERRAL_VISIT",
      -  "LEAD"
      -]
    • addedOutput schema / properties / cohorts / items / properties / largestDrop / properties / toStage / description
      Added value: +"Strict stage after the largest drop."
    • removedOutput schema / properties / cohorts / items / properties / largestDrop / properties / toStage / enum
      Removed value: -[
      -  "PORTAL_VIEWED",
      -  "SHARE_ACTION",
      -  "UNIQUE_REFERRAL_VISIT",
      -  "LEAD",
      -  "CREDITED_REFERRAL"
      -]
  2. Changed2 schema fields changedv0.19.15
    • addedInput schema / properties / campaignId / minLength
      Added value: +1
    • addedInput schema / required
      Added value: +[
      +  "campaignId"
      +]
  3. 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."
  4. 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 read-only, idempotent, non-destructive, closed-world safety, so the description is free to add the non-obvious parts — the ordered funnel stages, the per-participant 7/30-day observation window, and the critical caveat to read coverageStartAt/state/reason before treating a null or zero as a real absence. That last point is exactly the kind of interpretation hazard an agent cannot get from any structured field.

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?

Six sentences, front-loaded with the core action, then grouping, then stage list, then window/defaults, then the interpretation caveat. Dense but every sentence carries distinct information; only the stage enumeration is arguably bulky, though it is necessary to interpret results.

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 handling return shape and annotations handling safety, the remaining burden is domain semantics — funnel stages, cohort boundary defaults, campaign targeting fallback, and null-vs-zero interpretation — all of which the description covers. An agent can call this correctly and read its output cautiously without further context.

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 description coverage is 100%, so the baseline is 3; the description earns a step above by explaining that omitting both cohort bounds selects the latest matured cohort and that the observation window applies per participant rather than per cohort. It does not add anything for timezone, cohortInterval, or the exclusivity rule on cohortTo, which stay schema-only.

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 names a specific verb and resource — fetching strict activation for eligible participants within one enrollment cohort — and clarifies the two grouping conventions (enrolledAsAdvocateAt vs approvedAsAffiliateAt). It implies but never names the sibling it differs from (e.g. growsurf_get_campaign_analytics, growsurf_get_participant_analytics), so differentiation requires the agent to infer from 'cohort' and 'activation'.

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 concrete invocation guidance: omit both cohort bounds to get the latest fully matured cohort, and campaignId falls back to GROWSURF_CAMPAIGN_ID when absent. That is clear when-to-use framing, though it stops short of naming alternative analytics tools or stating when not to use this one.

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