Skip to main content
Glama
growsurf

GrowSurf MCP Server

Official

Get Participant

growsurf_get_participant
Read-onlyIdempotent

Retrieve a GrowSurf participant by ID or email to check referral credit, referral counts, and reward approval or fulfillment status for a campaign.

Instructions

Fetch a single participant by GrowSurf participant ID or email address. referralStatus describes credit to their referrer; referralCount counts referrals this participant generated, so zero is consistent with CREDIT_AWARDED. In rewards, approved records approval; status, isFulfilled, and fulfilledAt record fulfillment marking, not confirmation of delivery. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
campaignIdNoTarget program (campaign) id for this call. Defaults to GROWSURF_CAMPAIGN_ID when omitted. Program IDs also identify newly created programs without restarting the server.
participantIdNo
participantEmailNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoThe participant's unique id.
rankNoAll-time leaderboard rank.
emailNoThe participant's email address.
isNewNo`true` when the request created the participant. Returned by participant creation calls.
notesNoInternal notes. Never shown to participants.
rewardsNoRewards the participant has earned.
isWinnerNo`true` once the participant has earned at least one reward.
lastNameNoThe participant's last name.
metadataNoCustom key/value metadata (single level).
referrerNoSummary of the participant's referrer (same core fields as a participant). Present only when the participant was referred.
shareUrlNoThe participant's unique referral link. Omitted for affiliate program participants who are not approved affiliates.
createdAtNoWhen the participant joined, as a Unix timestamp in milliseconds.
firstNameNoThe participant's first name.
ipAddressNoIP address recorded for the participant, or `null`.
leadCountNoPending referrals that have not converted yet.
referralsNoIds of participants they successfully referred (100 most recent).
referredByNoId of the referrer. Present only when the participant was referred.
shareCountNoShare counts keyed by channel (e.g. `email`, `facebook`, `twitter`, `copyRefLink`, `iosNativeShare`).
vanityKeysNoThe participant's vanity keys.
fingerprintNoBrowser identifier recorded for the participant, or `null`.
inviteCountNoInvites sent by the participant.
isAffiliateNoAffiliate programs only. Whether this participant is an enrolled affiliate. A referred customer who has not joined the program is `false`.
monthlyRankNoCurrent-month leaderboard rank (resets monthly).
unsubscribedNo`true` if the participant unsubscribed from program emails.
referralCountNoAll-time referrals credited to the participant.
fraudRiskLevelNoThe participant's fraud risk level.
payoutSettingsNoActions the participant must complete before a payout can be released. Always present.
referralSourceNoHow the participant joined the program.
referralStatusNoThe referrer's credit status for this participant. Present only when the participant was referred.
rewardEvidenceNoWhat this response establishes about rewards. Combine with other reads; unknown here does not override evidence elsewhere.
affiliateStatusNoAffiliate programs only. The enrolled affiliate's status (`APPROVED`, `SUSPENDED`, or `BANNED`). `null` for participants who are not affiliates.
fraudReasonCodeNoReason code behind `fraudRiskLevel` (e.g. `UNIQUE_IDENTITY`, `DUPLICATE_EMAIL`, `MANUAL_UPDATE`).
impressionCountNoTotal views of the participant's referral link.
prevMonthlyRankNoPrevious-month leaderboard rank.
mobileInstanceIdNoApp-install scoped identifier supplied by a native app, or `null`.
monthlyReferralsNoIds of participants they successfully referred this month (100 most recent).
paypalEmailAddressNoPayPal email address on file, used for affiliate or PayPal reward payouts.
unreadPayoutsCountNoPayouts the participant has not yet viewed. Affiliate programs only.
monthlyReferralCountNoReferrals credited this month (resets monthly).
allMatchingFraudstersNoOther participants flagged as matching this participant during anti-fraud checks.
uniqueImpressionCountNoUnique views of the participant's referral link.
unreadCommissionsCountNoCommissions the participant has not yet viewed. Affiliate programs only.
prevMonthlyReferralCountNoReferrals credited the previous month.
affiliateEnrollmentSourceNoAffiliate programs only. How the affiliate enrolled (`OPEN_ENROLLMENT`, `APPLICATION`, `PARTICIPANT_AUTH`, `INVITE`, `REST_API`, `CSV`, or `DASHBOARD`). `null` when not recorded.

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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."
  2. Changed1 schema field changedv0.18.1
    • addedOutput schema / properties / leadCount
      Added value: +{
      +  "description": "Pending referrals that have not converted yet.",
      +  "type": "integer"
      +}
  3. Changed5 schema fields changedv0.14.0
    • addedOutput schema / properties / rewardEvidence
      Added value: +{
      +  "description": "What this response establishes about rewards. Combine with other reads; unknown here does not override evidence elsewhere.",
      +  "properties": {
      +    "approvalPolicy": {
      +      "description": "Referral reward approval policy from requireManualRewardApproval, not affiliate commission approval or an individual reward state.",
      +      "enum": [
      +        "manual",
      +        "automatic",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "automaticFulfillmentMarking": {
      +      "description": "The autoFulfillRewards setting, when returned by an options read. Null means unknown; this controls marking, not delivery.",
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "basis": {
      +      "enum": [
      +        "this_response_only"
      +      ],
      +      "type": "string"
      +    },
      +    "conclusion": {
      +      "type": "string"
      +    },
      +    "deliveryStatus": {
      +      "enum": [
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "integrationConnection": {
      +      "enum": [
      +        "not_established"
      +      ],
      +      "type": "string"
      +    },
      +    "nextStep": {
      +      "type": "string"
      +    },
      +    "programReferralTrigger": {
      +      "enum": [
      +        "not_established"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / rewards / items / properties / fulfilledAt / description
      Previous value: -"When the reward was fulfilled, as a Unix timestamp in milliseconds. `null` until fulfilled."New value: +"When the reward was marked fulfilled, as a Unix timestamp in milliseconds. `null` until marked fulfilled; this is not a delivery receipt."
    • changedOutput schema / properties / rewards / items / properties / isFulfilled / description
      Previous value: -"`true` once the reward has been fulfilled."New value: +"`true` once the reward is marked fulfilled. Confirm actual delivery through fulfillment records."
    • changedOutput schema / properties / rewards / items / properties / status / description
      Previous value: -"Fulfillment status of the earned reward."New value: +"Fulfillment marking of the earned reward. `FULFILLED` records that it was marked fulfilled, not proof of delivery. `CANCELLED` means an unpaid Lead reward was reversed before fulfillment."
    • changedOutput schema / properties / rewards / items / properties / status / enum
      Previous value: -[
      -  "PENDING",
      -  "FULFILLED"
      -]New value: +[
      +  "PENDING",
      +  "FULFILLED",
      +  "CANCELLED"
      +]
  4. First observedv0.12.2

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine interpretive context beyond that — that a zero referralCount is consistent with CREDIT_AWARDED, and that approved/status/isFulfilled record fulfillment marking rather than delivery — which prevents real misreads of a participant record.

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, purpose front-loaded, no filler. The middle sentence on referral/reward field semantics is dense and arguably overlaps the output schema's territory, but it is not padding.

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 the description needn't explain return shape, and annotations cover the safety profile, so the remaining job is purpose, lookup keys and targeting — all covered. Only the missing routing guidance against siblings (list vs get vs analytics/activity logs) and not-found behavior keep it from a 5.

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 only 33% (participantId and participantEmail are undocumented in the schema). The description compensates by stating both identifiers work as lookup keys and by restating the campaign targeting rule ('targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID'), covering all three parameters meaningfully.

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?

Names a specific verb (Fetch), the resource (a single participant), and both lookup keys (participant ID or email address). The word 'single' implicitly separates it from the sibling growsurf_list_participants, so an agent can route without opening the schemas.

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?

Usage is only implied — 'single participant' hints this is the targeted-fetch counterpart to list_participants, and the campaign-targeting sentence gives a calling context. There is no explicit when-to-use/when-not statement and no named alternative such as list_participants or get_participant_analytics, which matters given the large sibling surface.

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