GrowSurf
NPM · @GROWSURFTEAM/GROWSURF-MCP · 2 COMPONENTS
Build and manage GrowSurf referral and affiliate programs through AI assistants.
Available components
Last scanned (10 hours ago)
Scores higher than 91% of npm servers
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to growsurf/growsurf-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 17450 tokens (~260/item across 67 items; 66 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management62
- Stability check failed: the tool surface changed between 0.19.8 and 0.19.28: 1 tool removals, 46 breaking changes, 4 additions. See how to fix → Fail
Tool Coverage83
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 42% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety97
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 8 of 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "growsurf_agent_program_creation_eval" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 68 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +15
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.19.27 → 0.19.28 functional
- 3 Nov 26 −16
- Malware scan: pass → unverified ▼ security
- Known CVEs: pass → unverified ▼ security
- Schema quality: 15925 → 17691 ▼ functional
- Dependency health: 0.86 → unverified ▼ functional
- Package version: 0.19.24 → 0.19.27 functional
- Package version: 0.19.24 → 0.19.26 functional
- Package version: 0.19.24 → 0.19.25 functional
- 25 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Security disclosure: unverified → fail ▼ functional
- 24 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Security disclosure: fail → unverified ▼ functional
- Package version: 0.19.23 → 0.19.24 functional
- 22 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 21 Oct 26 0
- Package version: 0.19.22 → 0.19.23 functional
- 20 Oct 26 −15
- Known CVEs: pass → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Dependency health: 0.85 → unverified ▼ functional
- Package version: 0.19.19 → 0.19.22 functional
- Package version: 0.19.19 → 0.19.21 functional
- Package version: 0.19.19 → 0.19.20 functional
- 19 Oct 26 +15
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.19.16 → 0.19.19 functional
- Package version: 0.19.16 → 0.19.18 functional
- Package version: 0.19.16 → 0.19.17 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/@growsurfteam/growsurf-mcp@0.19.28
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | growsurf/growsurf-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/growsurf/growsurf-mcp/.github/workflows/publish.yml@refs/heads/main |
| Rekor log index | 3687566879 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:4a5036535eaf9fe9229e904259b983cd9ac1cab50eb9b445e39768bf5e61ee9f3414c957521e6d260b599ce1fbef7a1c02ff019de861ae8a76e4809af |
Background: How many MCP packages publish verified provenance →
Dependencies 93 packages
| Packages resolved | 93 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
growsurf_add_participant Add Participant ~658
Add or fetch a participant by email. If the email already exists, the existing participant is returned unchanged. One exception: if that participant claimed an offer in the Claim Offer Popup and the signup is not complete yet, this call completes the signup with the original referrer and saves any non-blank `firstName`, `lastName`, and `metadata` you send. This is trusted direct enrollment and bypasses the public application review flow for affiliates. For affiliate programs, set `isAffiliate` to `true` to enroll a new participant as approved or `false` to create a non-affiliate. If you omit it, a valid `referredBy` creates a referred non-affiliate; without a valid referrer, the new participant is enrolled as approved. A valid `referredBy` can be combined with `isAffiliate: true`. Targets `campaignId` if you pass it, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| string | yes | – | |
| fingerprint | string | – | – |
| firstName | string | – | – |
| ipAddress | string | – | – |
| isAffiliate | boolean | – | Affiliate programs only. Controls affiliate enrollment for a new participant. `true` enrolls the participant with `affiliateStatus: APPROVED`; `false` creates a non-affiliate without `affiliateStatus… |
| language | string | – | The language of the participant's portal and program emails. Stored when it is one of the program's languages (`languages` in `growsurf_get_campaign_options`). A regional tag maps to its language (fo… |
| lastName | string | – | – |
| metadata | object | – | – |
| mobileInstanceId | string | – | – |
| referralStatus | string | – | – |
| referredAt | integer|null | – | When the participant was referred, in Unix milliseconds. Used only with a valid `referredBy`. If you omit `referralStatus`, GrowSurf compares this time with the program's referral credit window to se… |
| referredBy | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_agent_program_creation_eval Generate Program Creation Checks ~100
Generate Markdown prompts and acceptance checks for evaluating an agent's program-creation workflow: starter content, rewards, configuration, and frontend installation. Does not create a program or run the checks. Use `growsurf_program_design_advisor` to choose a program design, or `growsurf_integration_guide` to plan its web integration.
| Name | Type | Req | Description |
|---|---|---|---|
| includeOneShotPrompts | boolean | – | – |
| programType | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_api_library_snippets Generate REST API Library Snippets ~154
Generate Markdown code examples for the official backend REST API libraries in TypeScript, Python, PHP, Ruby, and Java. Select `language` and `workflow`; both default to `all`. Covers setup, program lookup, participant creation, referral credit, sales, and mobile participant tokens. Returns code without executing API calls. Use `growsurf_client_snippets` for browser JavaScript or `growsurf_mobile_sdk_guide` for native or React Native app setup.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | – |
| string | – | – | |
| language | string | – | – |
| participantIdOrEmail | string | – | – |
| referredBy | string | – | – |
| workflow | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_bulk_delete_participants Bulk Delete Participants ~311
Bulk delete participants from your GrowSurf program in one request. DESTRUCTIVE: deletion is permanent and cannot be undone. Successful rows lose participant access immediately; related record cleanup completes automatically, subject to required financial record retention. Each entry in `participants` is a GrowSurf participant ID or an email address (mixed lists are allowed), up to 200 entries per request — chunk larger lists across multiple calls. Returns a `summary` (total, deletedCount, notFoundCount, duplicateCount, errorCount) plus per-row `results` in request order, each with `status` DELETED, NOT_FOUND, DUPLICATE (resolves to the same participant as an earlier entry), or ERROR — both `200` and `202` responses can include NOT_FOUND or ERROR rows, and the summary reports these outcomes. A `202` response includes `analyticsErasure` when analytics erasure is pending. `DELETED` means participant access was removed; reports can retain the participant until cleanup completes. Do not repeat successful rows to finish cleanup. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| participants | array | yes | GrowSurf participant IDs and/or email addresses to delete (1-200 entries; mixed lists allowed). |
| Name | Type | Req | Description |
|---|---|---|---|
| analyticsErasure | object | – | Analytics erasure is pending. Reports can retain removed participants until erasure completes. Do not repeat successful deletions. |
| results | array | – | One entry per submitted identifier, in request order. |
| summary | object | – | Counts across all submitted entries. |
No examples provided.
growsurf_cancel_delayed_referral Cancel Delayed Referral ~120
Cancel a pending delayed referral trigger for a participant before the delay elapses (e.g. on refund/cancellation). Returns { success, message }. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| participantEmail | string | – | – |
| participantId | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | Human-readable result message. Present when credit was not awarded immediately. |
| success | boolean | – | Whether referral credit was awarded, scheduled, or cancelled. |
No examples provided.
growsurf_capture_referral_flow_screenshots Capture Referral Flow Screenshots ~165
Capture temporary GrowSurf preview screenshots after a draft program is saved. Returns short-lived URLs for the controlled referrer Window and referred-friend experience, with an `expiresAt` timestamp in UTC. The screenshots reflect the saved program at capture time and do not verify installation on the customer's site. A failed inline image alone does not establish that the URL expired. This tool does not accept arbitrary URLs, HTML, JavaScript, or external screenshot targets. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| expiresAt | string | – | When the signed URLs stop working (ISO 8601). |
| generatedAt | string | – | When the screenshots were captured (ISO 8601). |
| screenshots | array | – | One entry per captured view. |
No examples provided.
growsurf_client_snippets Generate Browser JavaScript Snippets ~169
Generate Markdown browser JavaScript and CSS examples for referral tracking, embeddable elements, and the GrowSurf Window, with placement guidance. Does not install code or change a program. Use `growsurf_embeddable_element_snippet` for one HTML element, `growsurf_grsf_config_snippet` for `window.grsfConfig`, or `growsurf_api_library_snippets` for backend REST code.
| Name | Type | Req | Description |
|---|---|---|---|
| includeEmbeddableElements | boolean | – | – |
| includeEventSubscriptions | boolean | – | – |
| includeGrowSurfWindow | boolean | – | – |
| includeUnreadBadge | boolean | – | – |
| participantAuthEnabled | boolean | – | – |
| programType | string | – | – |
| referralTrigger | string | – | – |
| singlePageApp | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_clone_campaign Clone Program ~100
Clone your GrowSurf program (campaign) into a new DRAFT program. Integrations and credentials are not copied; active rewards are cloned. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_create_campaign Create Program ~652
Create a new GrowSurf program (campaign) with type-appropriate starter content and optional inline rewards. Starter content includes Design, Emails, Options, Installation, and GrowSurf Window defaults. Only `type` is required. The program starts in `DRAFT` status and is owned by the credential's bound team. `currencyISO` defaults to `USD` and is immutable after creation. `goal` sets the sharing settings at creation and cannot be set later. Incentives require the customer's chosen amount or commission rate. Without `rewards`, GrowSurf's starter rewards are switched off and award nothing. Editor-tab configuration is not accepted here. Does not require `GROWSURF_CAMPAIGN_ID`. The response includes the new program `id`.
| Name | Type | Req | Description |
|---|---|---|---|
| companyLogoImageUrl | string|null | – | – |
| companyName | string|null | – | – |
| currencyISO | string | – | – |
| goal | string | – | What the program is for, which seeds the share buttons and the starter rewards that suit that audience. Programs whose participants refer other businesses (`CUSTOMERS`, `USERS`, `B2B_SAAS_SELF_SERVIC… |
| name | string | – | – |
| rewards | array | – | Rewards to create with the program. Include this only when the person told you the amount and who funds it. Omit it and the program is seeded with starter rewards that are switched off, awarding noth… |
| type | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_create_campaign_reward Create Campaign Reward ~767
Create a new campaign reward (reward config) on your GrowSurf program. `type` must be compatible with the program type (affiliate programs support only AFFILIATE rewards; referral programs support the other types). Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| commissionStructure | object | – | Affiliate commission structure (AFFILIATE rewards only). Provide a positive `amount` (+ optional `amountISO`) for a FIXED commission, or `percent` for a PERCENT commission. CLICK and LEAD commissions… |
| conversionsRequired | integer | – | – |
| couponCode | string|null | – | – |
| description | string | – | – |
| event | string | – | The referral event that earns this Campaign Reward. Use `LEAD` for a referred signup or `CONVERSION` for a qualifying action. A `LEAD` reward requires a later custom conversion trigger. Referral rewa… |
| imageIconKey | string|null | – | The starter icon shown for the reward, or `null` when `imageUrl` is your own image. Participant pages draw this icon in your program's accent color. Also set `imageUrl` to the icon's image so the iOS… |
| imageUrl | string|null | – | – |
| isUnlimited | boolean | – | – |
| isVisible | boolean | – | – |
| limit | integer | – | – |
| limitDuration | string | – | – |
| metadata | object | – | Custom key/value metadata. Sending it replaces the stored object. Each value must be a string, number, or boolean of up to 500 characters. Each key must have 1 to 40 characters once camelCased, and t… |
| nextMilestonePrefix | string|null | – | – |
| nextMilestoneSuffix | string|null | – | – |
| numberOfWinners | integer | – | – |
| order | integer | – | – |
| referralCouponCode | string|null | – | – |
| referralDescription | string|null | – | – |
| referredRewardUpfront | boolean | – | – |
| referredValue | object|null | – | Tax valuation for the referred friend's side of a double-sided reward. `taxCharacter` is the reason the recipient earns the reward. For configurable non-commission rewards, `null` inherits the progra… |
| title | string | – | – |
| type | string | yes | – |
| value | object|null | – | Tax valuation for the reward (the referrer's side of a double-sided reward). `fairMarketValueUSD` is the manual fair-market value in USD (major units). `taxCharacter` is the reason the recipient earn… |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_create_campaign_webhook Create Webhook ~293
Add a webhook to your GrowSurf program. `payloadUrl` is required. `events` is the list of events this webhook is subscribed to. Omit it to subscribe the webhook to every event its program type offers, or send `[]` for none. An event the program type does not offer returns `400`. A program can have up to 5 webhooks, counting the primary webhook, so you can create up to 4. Creating another returns `400`. `secret` is write-only — GrowSurf uses it to sign deliveries (the GrowSurf-Signature HMAC header) and never returns it. A program can have only one saved Bask Health webhook across all `bask.ninja` hosts and paths, including disabled webhooks. A second Bask Health webhook returns `400`. A concurrent change to webhook settings can return `409`; reload the webhooks before retrying. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| events | array | – | – |
| isEnabled | boolean | – | – |
| payloadUrl | string | yes | – |
| secret | string | – | Write-only. Signs deliveries; never returned. |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_create_mobile_participant_token Create Mobile Participant Token ~509
Create or fetch a participant, then create a participant-scoped mobile SDK token via GrowSurf REST. Participant creation is trusted direct enrollment and bypasses the public application review flow for affiliates. Targets `campaignId` if you pass it, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| string | yes | – | |
| fingerprint | string | – | – |
| firstName | string | – | – |
| ipAddress | string | – | – |
| isAffiliate | boolean | – | Sets whether the participant is an affiliate. Use `true` only for trusted direct enrollment. Public applicants should follow the program's configured application flow. |
| language | string | – | The language of the participant's portal and program emails. Stored when it is one of the program's languages (`languages` in `growsurf_get_campaign_options`). A regional tag maps to its language (fo… |
| lastName | string | – | – |
| metadata | object | – | – |
| mobileInstanceId | string | – | – |
| referralStatus | string | – | – |
| referredAt | integer|null | – | When the participant was referred, in Unix milliseconds. Used only with a valid `referredBy`. If you omit `referralStatus`, GrowSurf compares this time with the program's referral credit window to se… |
| referredBy | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| expiresIn | integer | – | Token lifetime in seconds. |
| isNew | boolean | – | Whether this request created a new participant. |
| participant | object | – | The participant record (same shape as the `growsurf_get_participant` result). |
| participantToken | string | – | Participant-scoped bearer token for GrowSurf mobile SDK participant endpoints. |
No examples provided.
growsurf_create_program_resource Create Program Resource ~269
Create a `FILE`, `LINK`, or `TEXT` resource for participants. `LINK` requires an HTTPS `url`. `TEXT` requires plain `text`. A `FILE` up to 10 MB requires a one-time `uploadTicket` and the unmodified `uploadResult` from GrowSurf's secure upload flow. New resources default to draft unless `isPublished` is set. API reference: https://growsurf.com/openapi.json. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| category | string|null | – | – |
| description | string|null | – | – |
| isPublished | boolean | – | – |
| text | string | – | Used only with `TEXT`. |
| title | string | yes | – |
| type | string | yes | – |
| uploadResult | object | – | The unmodified result returned by the secure upload flow. Used only with `FILE`. |
| uploadTicket | string | – | The one-time upload ticket. Used only with `FILE`. |
| url | string | – | Used only with `LINK`. |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_delete_campaign_reward Delete Campaign Reward ~137
Delete a campaign reward (reward config) from your GrowSurf program. The reward is deactivated, removed from the program's reward set, and any connected upfront-discount coupons are cleaned up. `campaignRewardId` is the reward key. Returns { id, success }. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| campaignRewardId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | The deleted campaign reward id. |
| success | boolean | – | Whether the campaign reward was deleted. |
No examples provided.
growsurf_delete_campaign_webhook Delete Webhook ~99
Remove a webhook from your GrowSurf program by id. Returns { id, success }. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| webhookId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Id of the webhook that was deleted. |
| success | boolean | – | Whether the webhook was deleted. |
No examples provided.
growsurf_delete_program_resource Delete Program Resource ~101
Delete a participant resource from your GrowSurf program. This does not remove its reusable Media Center asset. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| resourceId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | The deleted resource id. |
| success | boolean | – | Whether the resource was deleted. |
No examples provided.
growsurf_email_participant Email Participant ~586
Send an email to a participant (by GrowSurf participant ID or email). Provide EITHER `emailType` to trigger one of the program's configured email templates, OR `subject` + `body` for a free-form email (optionally `preheader`). For programs with `settings.design.layoutMode` set to `INLINE`, `body` must include `{{emailFooter}}`; `{{emailHeader}}` is optional. Free-form emails are sent with the same compliance handling (company name, postal address, and an unsubscribe link are added automatically, and unsubscribed participants are suppressed). Sending requires the team to be verified by GrowSurf and a verified custom email domain on the program (set up in *Program Editor > 3. Emails > Email Settings*). Returns 400 until one is verified. The email is accepted for delivery. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Free-form HTML body. You can personalize it with dynamic text, inserting `{{...}}` tokens like `{{firstName}}` or `{{shareUrl}}`. See [Guide to using dynamic text in GrowSurf emails](https://support.… |
| campaignId | string | yes | 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. |
| emailType | string | – | The program email template to trigger. Send the camelCase key; the available types depend on the program type. The template's `isEnabled` setting controls automatic sends only, so this tool can trigg… |
| participantEmail | string | – | – |
| participantId | string | – | – |
| preheader | string | – | – |
| subject | string | – | Free-form subject. Supports dynamic text (`{{...}}` tokens), the same as the body. |
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | The email was accepted for delivery. |
| success | boolean | – | Whether the email request was accepted. |
No examples provided.
growsurf_embeddable_element_snippet Generate Embeddable Element HTML ~100
Generate one embeddable element's HTML as Markdown. Choose `element`; optionally include participant authentication attributes. Does not install the element or change a program. Use `growsurf_client_snippets` for a broader browser integration or `growsurf_grsf_config_snippet` for page-level participant auto authentication.
| Name | Type | Req | Description |
|---|---|---|---|
| element | string | yes | – |
| participant | object | – | – |
| withAuthAttributes | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_get_campaign Get Program ~111
Fetch your GrowSurf campaign (program) details via REST. Embedded reward settings do not establish that an individual reward was earned, approved, or delivered. Earned reward records belong to the individual participant. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| currencyISO | string|null | – | The program currency as an ISO 4217 code (e.g. `USD`). |
| id | string | – | The program's unique id. |
| impressionCount | integer | – | Total referral-link views across participants. |
| inviteCount | integer | – | Total invites sent by participants. |
| name | string | – | The program name (internal only, never shown to participants). |
| participantCount | integer | – | Total participants. |
| referralCount | integer | – | Total referrals. |
| rewardEvidence | object | – | What this response establishes about rewards. Combine with other reads; unknown here does not override evidence elsewhere. |
| rewards | array | – | The program's reward configs (`CampaignReward`). Item shape is documented on the `growsurf_list_campaign_rewards` tool. |
| status | string | – | The program status. |
| type | string | – | The program type. |
| winnerCount | integer | – | Participants with at least one approved reward. |
No examples provided.
growsurf_get_campaign_activation_analytics Get Activation Analytics ~320
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| cohortFrom | integer | – | Inclusive eligibility-cohort start, Unix timestamp in ms. Use with `cohortTo`. |
| cohortInterval | string | – | Bucket size for `cohorts`. Defaults to `day`. |
| cohortTo | integer | – | Exclusive eligibility-cohort end, Unix timestamp in ms. Must be greater than `cohortFrom`. |
| observationWindowDays | integer | – | Days after eligibility in which stages can count. Defaults to `30`. |
| timezone | string | – | IANA timezone used to advance cohort boundaries. Defaults to `UTC`. |
| Name | Type | Req | Description |
|---|---|---|---|
| aggregate | object | – | Strict activation metrics for one exact enrollment cohort. |
| cohortInterval | string | – | Bucket size for `cohorts`. |
| cohorts | array | – | Selected range split into exact half-open eligibility-cohort buckets. |
| coverageStartAt | integer|null | – | Earliest expected complete activation capture time (Unix ms), or `null` until coverage begins. |
| metricContractVersion | integer | – | Shared activation and engagement metric version. |
| observationWindowDays | integer | – | Days after eligibility in which stages count. |
| portalViewedHelperText | string | – | Display definition for a qualifying signed-in portal view. |
| portalViewedLabel | string | – | Program-specific display label for the stable `PORTAL_VIEWED` stage. |
| programType | string | – | Program eligibility model. |
| timezone | string | – | IANA timezone used to advance cohort boundaries. |
No examples provided.
growsurf_get_campaign_analytics Get Program Analytics ~468
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| days | integer | – | – |
| endDate | integer | – | End of the timeframe, positive Unix timestamp in milliseconds. Supply `startDate` too; `endDate` must be >= `startDate` and at most 1825 days later. |
| include | string | – | Comma-separated optional data: `previousPeriod`, `statusCounts`, `rates`, `email`, and `engagement`. Combine values when the question needs more than one view. |
| interval | string | – | day/week/month adds a per-period `series`; total (default) returns totals only. |
| platform | string | – | Client-platform filter for engagement. Defaults to `ALL`. |
| startDate | integer | – | Start of the timeframe, positive Unix timestamp in milliseconds. Supply `endDate` too; the window must span at most 1825 days. |
| timezone | string | – | IANA timezone for engagement interval and distinct-day calculations. Used with `include=engagement`. |
| Name | Type | Req | Description |
|---|---|---|---|
| analytics | object | – | Analytics totals: `invites`, `impressions`, `uniqueImpressions`, `participants`, `referrals`, `referralCreditPendings`, `referralCreditExpireds`, per-channel share counts (`emailShares`, `twitterShar… |
| object | – | Sent, delivered, opened, clicked, bounced, and spam complaint metrics for program emails in the requested window. | |
| endDate | integer | – | End of the analytics timeframe, as a Unix timestamp in milliseconds. |
| engagement | object | – | Opt-in participant engagement grouped by when activity occurred. |
| previousPeriod | object | – | Totals for the equal-length window immediately before the requested one (`analytics`, `startDate`, `endDate`). Present only when `include` contains `previousPeriod`. |
| rates | object | – | Derived referral rates, each a ratio from 0 to 1. Present only when `include` contains `rates`. |
| series | array | – | Per-period totals in ascending order. Present only when `interval` is `day`, `week`, or `month`. |
| startDate | integer | – | Start of the analytics timeframe, as a Unix timestamp in milliseconds. |
| statusCounts | object | – | Status-count breakdowns: dashboard-aligned reward counts, and for affiliate programs `affiliateStatus`, `commissionStatus`, and `payoutStatus` (counts and amounts in minor currency units (e.g. cents)… |
No examples provided.
growsurf_get_campaign_custom_domain Get Program Custom Domain ~156
Fetch the custom domain that serves your GrowSurf program's landing pages, such as `https://refer.example.com`. Returns `domain` (`null` when none is set), `isVerified`, `verifiedAt`, and `dnsRecord`, the `CNAME` record to add at the DNS provider. This read does not check DNS; use `growsurf_verify_campaign_custom_domain` for a live check. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| createdAt | integer|null | – | When the domain was set, in epoch milliseconds. `null` when no domain is set. |
| dnsRecord | object|null | – | The DNS record to add at the DNS provider. `null` when no domain is set. |
| domain | string|null | – | The custom domain, such as `https://refer.example.com`, or `null` when none is set. |
| isVerified | boolean | – | Whether the domain's `CNAME` record pointed to `dnsRecord.value` at the last check. Landing pages load on the domain only when this is `true`. |
| updatedAt | integer|null | – | When the domain record last changed, in epoch milliseconds. `null` when no domain is set. |
| verifiedAt | integer|null | – | When the DNS check passed, in epoch milliseconds. `null` while unverified. |
No examples provided.
growsurf_get_campaign_design Get Program Design ~332
Fetch the configured design fields for your GrowSurf program, including GrowSurf Window content, colors, sharing sections, participant avatars under `participantAvatarStyle`, referred-visitor content such as the Claim Offer Popup, the website widget under `widget`, the participant Traffic report under `trafficInsights` (it starts on for new affiliate programs and hidden for referral programs, and every setting is returned with its default copy), participant sign-in copy under `login`, payout-destination confirmation page copy under `payoutDestinationConfirmation`, country-name overrides under `countryLabels`, and the participant Settings panel under `participantSettings` (its `languageSectionTitle` and `languageSectionInstructionsText` label the language picker shown when the program has more than one language). `participantAvatarStyle` is `CHARACTERS`, `INITIALS`, `ANIMALS`, or `GRADIENT`; missing or unknown values mean `INITIALS`. `visualStyle` is the program Style (`GLOW`, `CLEAN`, `FLAT`, `ROUND`, `TINT`, or `GLASS`) and is omitted when the program has no saved Style. The confirmation section is omitted when no confirmation fields are stored. Stored `null` fields are returned as `null`; omitted and `null` fields use localized defaults. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| affiliateSummary | object | – | Affiliate programs only. The affiliate's row of summary tiles (clicks, revenue, payouts). |
| commissions | object | – | Affiliate programs only. The Commissions section of the participant portal. |
| countryLabels | object | – | Participant-facing country-name overrides keyed by ISO 3166-1 alpha-2 code (for example `GB`). Each label replaces the default country name wherever participants pick a country, such as payout and ta… |
| header | object | – | Header content for participants (`postText`) and non-participants (`preText`), and the progress labels beside a participant's numbers: `referralsMadeText` (up to 100 characters, shown for single-side… |
| landingPages | object | – | Portal and landing pages: company info, `content`, `styles`, third-party script ids, and SEO meta tags. `content.howItWorksTitle` is the plain-text heading above the How it works steps (up to 255 cha… |
| leaderboard | object | – | The leaderboard section: labels, selectors, and name masking. |
| login | object | – | The returning-participant sign-in form plus its success, resend, validation, and error text. |
| participantAvatarStyle | string | – | How participant avatars appear in the GrowSurf Window. New programs start with `INITIALS`. Programs with a missing or unknown stored value return `INITIALS` for backward compatibility. |
| participantSettings | object | – | The participant's account settings area (logout, language picker, PayPal and Wise payout confirmation/status messages, tax details). `languageSectionTitle` (up to 100 characters) and `languageSection… |
| payoutDestinationConfirmation | object | – | Customizable text for the payout-destination confirmation page opened from payout integration cards. One shared set applies to every enabled payout provider. Provider-aware text may use `{{payoutProv… |
| payouts | object | – | Affiliate programs only. The Payouts section of the participant portal. |
| referralStatus | object | – | The section listing who a participant invited and each invite's progress. `revealInviteEmails` lets a signed-in participant see original invitation addresses when disclosure permission was recorded.… |
| referralSummary | object | – | Referral programs only. The participant's row of summary tiles (clicks, leads, referrals, rewards). `stats.rewardsEarned.displayMode` selects `COUNT` (approved reward count) or `AMOUNT` (total of the… |
| referredExperience | object | – | The banner, headline, and Claim Offer Popup shown to a visitor who arrives through a referral link. The popup is available for referral and affiliate programs. |
| resources | object | – | Participant Resources presentation settings: visibility, title, link and copy labels, the message shown when nothing is published, the section icon, and `emptyStateGraphic` (`type`: `DEFAULT`, `IMAGE… |
| rewards | object | – | Heading, icon, and empty-state text of the rewards panel. |
| share | object | – | Share channels, invite settings, and share-button styling. |
| signup | object | – | Signup form fields, GDPR consent, and button and login text. |
| stats | object | – | The participant's referral-progress stats panel. Only `title` is editable. |
| theme | object | – | Visual theme styling (colors, shadows, and similar). |
| trafficInsights | object | – | The Traffic report participants can open from the GrowSurf window: visits to their share link over time and where those visits came from. It starts on for new affiliate programs and hidden for referr… |
| visualStyle | string | – | The program Style. It sets corners, shadows, button shape and background on program pages and the GrowSurf Window. New referral programs start with `GLOW`, and new affiliate programs start with `CLEA… |
| widget | object | – | The website widget — the invite that sits in a corner of the customer's own site. It renders as a button or as a card, and its card folds back into the button when a visitor closes it. Both audience… |
| window | object | – | Layout of the GrowSurf window (`navigationMode`: `TABS` or `LIST`). |
No examples provided.
growsurf_get_campaign_emails Get Program Emails ~143
Fetch the Emails tab configuration for your GrowSurf program, including participant and admin email templates, settings, and read-only fields. `settings.sender.fromEmail` is read-only and can be changed in the dashboard after domain verification. When updating, omit unchanged sender fields; `fromName` and `replyToEmail` cannot be cleared with `null`. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| affiliateApplicationApproved | object | – | Tells an applicant their affiliate application was approved. Affiliate programs only. Transactional; its toggle cannot be changed. |
| affiliateApplicationDenied | object | – | Tells an applicant their affiliate application was not approved. Affiliate programs only. Transactional; its toggle cannot be changed. |
| affiliateApplicationEmailCorrection | object | – | Asks an applicant to confirm a corrected email address. Its body must contain `{{identityVerificationLink}}`. Affiliate programs only. Transactional; its toggle cannot be changed. |
| affiliateApplicationReceived | object | – | Confirms an affiliate application was received and is under review. Affiliate programs only. Transactional; its toggle cannot be changed. |
| affiliateApplicationStatusLink | object | – | Sends an applicant a secure link to view their application status. Its body must keep `{{applicationStatusLink}}`. Affiliate programs only. Transactional; its toggle cannot be changed. |
| affiliateEmailChangeVerification | object | – | Asks an affiliate to confirm a new account email address. Its body must contain `{{identityVerificationLink}}`. Affiliate programs only. Transactional; its toggle cannot be changed. |
| campaignEndedNonWinners | object | – | Sent to non-winners when the program ends. Referral programs only. |
| campaignEndedWinners | object | – | Sent to reward winners when the program ends. Referral programs only. |
| commissionAdjusted | object | – | Sent when a commission is adjusted after a refund or chargeback. Affiliate programs only. |
| commissionGenerated | object | – | Sent to an affiliate when they earn a new commission. Affiliate programs only. |
| followUpReminder | object | – | Optional reminder to the referrer about directly invited contacts who have not signed up after `delayDays` (integer 2–30, default 3). Existing reminder dates stay unchanged. Disabled by default. Only… |
| goalAchieved | object | – | Sent when a participant unlocks a reward. Referral programs only. |
| invite | object | – | The invitation email a participant sends to friends. `useCompanyReplyTo` sets who receives replies. |
| inviteAffiliate | object | – | Invites a prospective affiliate to join the program. Its body must keep `{{affiliateInviteLink}}`. Affiliate programs only. Promotional; its toggle can be changed. |
| loginLink | object | – | One-time sign-in link for returning participants. Transactional; its toggle cannot be changed. |
| offerClaimed | object | – | Sent when a referred visitor saves an offer through the Claim Offer Popup. Referral and affiliate programs. Promotional; its toggle can be changed. |
| payoutDestinationChanged | object | – | Tells a participant their payout destination changed. Its body must keep `{{payoutDestinationMaskedEmail}}`. Referral and affiliate programs. Transactional; its toggle cannot be changed. |
| payoutDestinationConfirmation | object | – | Asks a participant to confirm the payout destination where they will receive payouts, such as a PayPal or Wise email address. Its body may use `{{payoutProvider}}` and must keep `{{payoutDestinationC… |
| payoutPending | object | – | Sent when a payout is on the way. Affiliate programs only. |
| payoutSentSuccess | object | – | Sent when a payout completes. Affiliate programs only. |
| progressUpdateMonthly | object | – | Month-end progress recap for participants. Referral and affiliate programs. |
| referralLinkUsed | object | – | Sent to a referrer when they earn referral credit. Referral programs only. |
| referralLinkViewedFirstTime | object | – | Sent the first time a participant's referral link is viewed. Referral and affiliate programs. |
| referredSignup | object | – | Sent to a referrer each time someone signs up using their link. Referral and affiliate programs. |
| settings | object | – | Sender (`sender`), physical contact address (`contact`), and shared design (`design`) settings. The design object includes `unsubscribeAffiliateInvite` for direct affiliate invitation emails. Its rea… |
| taxInfoApproved | object | – | Tells a participant their tax form is complete and approved. Transactional; its toggle cannot be changed. |
| taxInfoMissing | object | – | Asks a participant to submit required tax information. Transactional; its toggle cannot be changed. |
| taxInfoReceived | object | – | Confirms submitted tax information was received. Transactional; its toggle cannot be changed. |
| taxInfoRejected | object | – | Tells a participant their tax information needs to be resubmitted. Transactional; its toggle cannot be changed. |
| welcomeNonReferred | object | – | Welcome email for a participant who joins without being referred. Referral and affiliate programs. |
| welcomeReferred | object | – | Welcome email for someone who signs up through a referral link. Referral programs only. |
No examples provided.
growsurf_get_campaign_installation Get Program Installation ~113
Fetch the Installation tab configuration for your GrowSurf program (embed/installation and tracking setup). Returns the full object with every field and its current value — the same shape you send back on update. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| allowedUrls | array | – | Every additional browser origin where the GrowSurf Window or SDK may run, including development origins such as `http://localhost:3000`. Preserve the full array when patching it. An origin absent fro… |
| instructionSelections | object | – | Saved choices shown in the Program Editor installation guide. |
| mobile | object | – | GrowSurf iOS and Android SDK settings. |
| offerPageRedirectSeconds | integer|null | – | Seconds a GrowSurf page with the Claim Offer Popup waits before redirecting a referred friend. Needs `useGrowSurfHostedLinks`. `null` means the page is off. |
| referralTrigger | string | – | Referral programs only. `ON_SIGNUP` counts a referral as soon as the friend signs up; `CUSTOM` also requires a qualifying action. `CUSTOM` is available for programs installed on a website or a GrowSu… |
| shareUrl | string | – | The landing page referred friends reach from a referral link. Set this before adding other origins to `allowedUrls`. |
| signup | object | – | Custom signup-form settings (used with `FORM_DETECTION`). |
| signupEvent | string | – | The signup tracking method: automatic form detection, or participants added via the SDKs and REST API. |
| useGrowSurfHostedLinks | boolean | – | Use GrowSurf-hosted referral links that route clicks by the visitor's device. Mainly for mobile apps. |
No examples provided.
growsurf_get_campaign_options Get Program Options ~161
Fetch the Options tab configuration for your GrowSurf program (referral triggers, anti-fraud lists and toggles, affiliate enrollment and application review, notifications, the program's languages under `languages`, and other behavior options). Returns the full object with every field and its current value, the same shape you send back on update. `autoFulfillRewards: false` permits manual fulfillment and does not prove that any reward went undelivered. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| affiliateApplicationMode | string | – | Affiliate programs only. How public signups join the program. `OPEN_ENROLLMENT` enrolls them directly; `MANUAL_REVIEW` collects an application you approve or deny; `AUTO_APPROVE` collects the applica… |
| affiliateApplicationReviewEstimateBusinessDays | integer|null | – | Affiliate programs only. Optional review-time expectation shown to pending applicants, in business days (1-60). `null` clears it. |
| affiliateReapplicationCooldownDays | integer | – | Affiliate programs only. How many days a denied applicant waits before they can apply again (1-365, default 30). Only used when `affiliateReapplicationPolicy` is `AFTER_COOLDOWN`. |
| affiliateReapplicationPolicy | string | – | Affiliate programs only. Whether a denied applicant may apply again. `AFTER_COOLDOWN` (the default) allows a new application once `affiliateReapplicationCooldownDays` has passed; `DISABLED` never all… |
| attributionModel | string | – | Selects which server-verified visit receives conversion credit within `referralCookieWindowDays`. `LAST_CLICK` is used when this field is missing, including for programs created before attribution mo… |
| autoBlockFraud | boolean | – | Automatically block signups flagged as high fraud risk. |
| autoFulfillRewards | boolean | – | Referral programs only. Automatically mark earned rewards as fulfilled. `false` permits manual fulfillment and does not establish a delivery failure. |
| blockPaidAdsTraffic | boolean | – | Do not attribute referrals from visitors who arrived through paid ads. |
| enforceGdprCompliance | boolean | – | Store only the minimum participant data (no IP addresses, fingerprints, or mobile instance ids). |
| fraud | object | – | Anti-fraud settings: `blockedEmails`/`blockedIps`/`blockedCountries` and matching allow lists, `blockBurnerEmails`, `blockDataCenterIps`, `blockHighRiskReferrers`, `autoBlockHighRiskIps`, per-IP sign… |
| languages | object | – | The languages the program runs in. Participants see the portal and program emails in their language. Translations are managed in the dashboard. |
| notificationEmails | object | – | Owner notification settings: `recipients` plus per-event `events` toggles. |
| payoutThreshold | integer|null | – | Affiliate programs only. Minimum payout in minor currency units (e.g. cents). `0` or `null` means no minimum. |
| referralCookieWindowDays | integer | – | How long a referral-link click is remembered in the visitor's browser, in days. |
| referralCreditWindowDays | integer|null | – | How long a referred friend has to complete the qualifying action, in days. `null` means the credit never expires. |
| requireManualFraudApproval | boolean | – | Flag suspected fraud for review instead of blocking signups automatically. |
| requireManualRewardApproval | boolean | – | Referral programs only. Hold each earned reward for manual approval before it unlocks. |
| requireParticipantAuth | boolean | – | Require returning participants to authenticate. Affiliate programs require `true`. |
| rewardEvidence | object | – | What this response establishes about rewards. Combine with other reads; unknown here does not override evidence elsewhere. |
| taxDocumentation | object | – | Affiliate programs only. Company billing details (name, address, VAT number) used on affiliate payout invoices and for VAT handling. |
No examples provided.
growsurf_get_integration_connect_link Get Integration Connect Link ~266
Return a dashboard link to an integration's connect panel in the GrowSurf Program Editor (Options > Integrations). Connecting Stripe, PayPal, Wise, or another account requires the user to complete the dashboard flow; the API cannot connect an account on their behalf. `integration` accepts supported keys, including camelCase keys such as `constantContact` and `helpScout`. The result reports whether the integration is `connected`, `enabled`, or `autoDisabled`. If the program check cannot run, `programVerified` is `false` and the result still includes a production dashboard link. Tango Card, Tremendous, Bask Health, CareValidate, MD Integrations, Lithos, and Telegra apply only to referral programs. Wise applies only to affiliate programs. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | Target program for the link. Defaults to GROWSURF_CAMPAIGN_ID. |
| integration | string | yes | The integration to connect. Must exactly match one of the supported keys (for example `wisecom`; some are camelCase, e.g. `constantContact`, `campaignMonitor`, `helpScout`, `pabblyConnect`, `baskHeal… |
| Name | Type | Req | Description |
|---|---|---|---|
| affiliateOnly | boolean | – | `true` when the integration applies to affiliate programs only. |
| autoDisabled | boolean | – | Whether GrowSurf switched the integration off after repeated delivery failures. Present only when `programVerified` is `true`. |
| category | string | – | The integration's category. |
| connected | boolean | – | Whether the program has stored credentials for this integration. Present only when `programVerified` is `true`. |
| enabled | boolean | – | Whether the integration is switched on and currently working. Present only when `programVerified` is `true`. |
| integration | string | – | The integration key that was requested. |
| label | string | – | Human-readable integration name. |
| note | string | – | Instructions to relay to the user. |
| programVerified | boolean | – | `true` when the program's live integration list was read, so the program id is confirmed and the three state fields below are present and current. `false` when that read was unavailable, for example… |
| referralOnly | boolean | – | `true` when the integration applies to referral programs only. |
| url | string | – | Dashboard link that opens the integration's connect panel. |
No examples provided.
growsurf_get_participant Get Participant ~170
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.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| participantEmail | string | – | – |
| participantId | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| affiliateEnrollmentSource | string|null | – | Affiliate programs only. How the affiliate enrolled (`OPEN_ENROLLMENT`, `APPLICATION`, `PARTICIPANT_AUTH`, `INVITE`, `REST_API`, `CSV`, or `DASHBOARD`). `null` when not recorded. |
| affiliateStatus | string|null | – | Affiliate programs only. The enrolled affiliate's status (`APPROVED`, `SUSPENDED`, or `BANNED`). `null` for participants who are not affiliates. |
| allMatchingFraudsters | array | – | Other participants flagged as matching this participant during anti-fraud checks. |
| createdAt | integer | – | When the participant joined, as a Unix timestamp in milliseconds. |
| string | – | The participant's email address. | |
| fingerprint | string|null | – | Browser identifier recorded for the participant, or `null`. |
| firstName | string|null | – | The participant's first name. |
| fraudReasonCode | string | – | Reason code behind `fraudRiskLevel` (e.g. `UNIQUE_IDENTITY`, `DUPLICATE_EMAIL`, `MANUAL_UPDATE`). |
| fraudRiskLevel | string | – | The participant's fraud risk level. |
| id | string | – | The participant's unique id. |
| impressionCount | integer | – | Total views of the participant's referral link. |
| inviteCount | integer | – | Invites sent by the participant. |
| ipAddress | string|null | – | IP address recorded for the participant, or `null`. |
| isAffiliate | boolean | – | Affiliate programs only. Whether this participant is an enrolled affiliate. A referred customer who has not joined the program is `false`. |
| isNew | boolean | – | `true` when the request created the participant. Returned by participant creation calls. |
| isWinner | boolean | – | `true` once the participant has earned at least one reward. |
| language | string | – | The language code of the participant's portal and program emails, such as `es`. The program's base language unless the participant (or you) picked another of the program's languages. |
| lastName | string|null | – | The participant's last name. |
| leadCount | integer | – | Pending referrals that have not converted yet. |
| metadata | object | – | Custom key/value metadata (single level). |
| mobileInstanceId | string|null | – | App-install scoped identifier supplied by a native app, or `null`. |
| monthlyRank | integer | – | Current-month leaderboard rank (resets monthly). |
| monthlyReferralCount | integer | – | Referrals credited this month (resets monthly). |
| monthlyReferrals | array | – | Ids of participants they successfully referred this month (100 most recent). |
| notes | string|null | – | Internal notes. Never shown to participants. |
| payoutSettings | object | – | Actions the participant must complete before a payout can be released. Always present. |
| paypalEmailAddress | string | – | PayPal email address on file, used for affiliate or PayPal reward payouts. |
| prevMonthlyRank | integer | – | Previous-month leaderboard rank. |
| prevMonthlyReferralCount | integer | – | Referrals credited the previous month. |
| rank | integer | – | All-time leaderboard rank. |
| referralCount | integer | – | All-time referrals credited to the participant. |
| referralLeadQualifiedAt | integer|null | – | When this referred signup counted as a lead for the referrer, in Unix milliseconds. Set only when the program's `referralTrigger` is `CUSTOM`. Lead-event Campaign Rewards and commissions use it. |
| referralSource | string | – | How the participant joined the program. `DIRECT` means without a referrer, `PARTICIPANT` means through a participant referral, `IMPORT` means through a CSV import, `MANUAL` means through the dashboar… |
| referralStatus | string | – | The referrer's credit status for this participant. Present only when the participant was referred. |
| referrals | array | – | Ids of participants they successfully referred (100 most recent). |
| referredBy | string | – | Id of the referrer. Present only when the participant was referred. |
| referrer | object|null | – | The participant's referrer. It has the same fields as a participant, and its own `referrer` is always `null`. Present only when the participant was referred. |
| rewardEvidence | object | – | What this response establishes about rewards. Combine with other reads; unknown here does not override evidence elsewhere. |
| rewards | array | – | Rewards the participant has earned. |
| shareCount | object | – | Share counts keyed by channel (e.g. `email`, `facebook`, `twitter`, `copyRefLink`, `iosNativeShare`). |
| shareUrl | string | – | The participant's unique referral link. Omitted for affiliate program participants who are not approved affiliates. |
| uniqueImpressionCount | integer | – | Unique views of the participant's referral link. |
| unreadCommissionsCount | integer | – | Commissions the participant has not yet viewed. Affiliate programs only. |
| unreadPayoutsCount | integer | – | Payouts the participant has not yet viewed. Affiliate programs only. |
| unsubscribed | boolean | – | `true` if the participant unsubscribed from program emails. |
| vanityKeys | array | – | The participant's vanity keys. |
No examples provided.
growsurf_get_participant_activity_logs Get Participant Activity Logs ~169
List a participant's activity logs (by GrowSurf participant ID or email), most recent first, offset/limit paginated. `limit` is 1-100 (default 20); `offset` skips logs. The response `offset` is the cursor for the next page (null when there are no more). Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| limit | integer | – | – |
| offset | integer | – | – |
| participantEmail | string | – | – |
| participantId | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| activityLogs | array | – | Activity log entries for the participant. |
| limit | integer | – | Number of activity logs returned per page. |
| offset | integer|null | – | Offset for the next page, or `null` when there are no more logs. |
No examples provided.
growsurf_get_participant_analytics Get Participant Analytics ~445
Fetch analytics for one participant by GrowSurf participant ID or email. The base response includes all-time engagement, rank, share, and applicable affiliate revenue, commission, and payout metrics. Add `activation` to `include` for the program-specific eligibility anchor and covered first milestones, including `firstPortalViewedAt` and `firstShareChannel`. A null milestone with a partial or unavailable `state` is unknown, not proof that the action never happened. Request both `activation` and `series` for covered `portalViews` and `shareActions` buckets. Filter optional series and email data with `days` (up to 1825) or both `startDate` and `endDate` as positive Unix timestamps in milliseconds. `endDate` must be at or after `startDate`, and the range can span at most 1825 days. These date parameters do not filter the base response or activation milestones. Targets `campaignId` if passed, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| days | integer | – | Number of days for optional `series` and `email` analytics. Does not filter the all-time base response. |
| endDate | integer | – | End of the optional-data timeframe, positive Unix timestamp in milliseconds. Supply `startDate` too; `endDate` must be >= `startDate` and at most 1825 days later. |
| include | string | – | Comma-separated optional data. Current values are `series`, `email`, and `activation`; the API returns `400` for unknown values. |
| interval | string | – | Bucket size for `series` and email series. Defaults to `day`. |
| participantEmail | string | – | – |
| participantId | string | – | – |
| startDate | integer | – | Start of the optional-data timeframe, positive Unix timestamp in milliseconds. Supply `endDate` too; the window must span at most 1825 days. |
| Name | Type | Req | Description |
|---|---|---|---|
| activation | object | – | Opt-in covered eligibility and first-milestone analytics for one participant. |
| analytics | object | – | All-time participant analytics totals. Date-window parameters do not filter these fields. |
| object | – | Sent, delivered, opened, clicked, bounced, and spam complaint metrics for program emails in the requested window. | |
| endDate | integer | – | Window end (Unix ms). Present with `series` or `email`. |
| ranks | object | – | Leaderboard ranks for this participant. |
| series | array | – | This participant's per-period activity. Present when `include` contains `series`. |
| shareCount | object | – | Per-channel share counts (e.g. `email`, `facebook`, `twitter`). |
| startDate | integer | – | Window start (Unix ms). Present with `series` or `email`. |
No examples provided.
growsurf_get_participant_payout_destination Get Payout Destination ~184
Get a participant's payout-destination status (by GrowSurf participant ID or email) across every payout provider enabled for the program (PayPal, Venmo, or Wise). For each provider it reports the current `status`, the confirmed payout email, the legal recipient type, and — when a delivery bounced or a recipient was invalidated — the repair reason. `activeProvider` is the provider that currently gets paid, or null until the participant confirms one. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| participantEmail | string | – | – |
| participantId | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| activeProvider | string|null | – | The payout provider currently selected, or `null` until the participant confirms one. Provider identifiers are open-ended; current examples include `PAYPAL`, `VENMO`, and `WISECOM`. |
| destinations | array | – | One entry per enabled payout provider describing the participant's destination for it. |
| enabledProviders | array | – | Payout provider identifiers enabled for this program. Values are open-ended; current examples include `PAYPAL`, `VENMO`, and `WISECOM`. |
No examples provided.
growsurf_get_team Get Team ~80
Fetch the team bound to the API key or OAuth connection. `verificationStatus` is `VERIFIED` once GrowSurf has verified the team, which is required before a program can email participants. Personal profiles and internal identifiers are not returned. Requires `GROWSURF_API_KEY`; does not require `GROWSURF_CAMPAIGN_ID`.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | The team's display name. |
| verificationRequestedAt | integer|null | – | When verification was last requested, as a Unix timestamp in milliseconds. |
| verificationStatus | string | – | Team verification state. `VERIFIED` is required before a program can send participant emails. |
No examples provided.
growsurf_grsf_config_snippet Generate Participant Auto Authentication Code ~107
Generate the HTML code for GrowSurf Participant Auto Authentication using `window.grsfConfig`. The generated code belongs in `<head>`, before the GrowSurf Universal Code.
| Name | Type | Req | Description |
|---|---|---|---|
| affiliateJoin | boolean | – | – |
| campaignId | string | – | – |
| string | – | – | |
| enableParticipantAutoAuth | boolean | – | – |
| hash | string | – | – |
| includeAutoAuthCommentHeader | boolean | – | – |
| useCampaignIdPlaceholder | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_integration_guide Plan Program Integration ~155
Plan a web integration for a referral or affiliate program. Returns Markdown steps for installing the Universal Code, identifying participants, tracking referrals or sales, and verifying webhooks. Does not inspect or change a program. Use `growsurf_client_snippets` for browser JavaScript examples, `growsurf_api_library_snippets` for backend code, or `growsurf_mobile_sdk_guide` for native or React Native apps.
| Name | Type | Req | Description |
|---|---|---|---|
| participantAuthEnabled | boolean | – | – |
| programType | string | – | – |
| referralTrigger | string | – | – |
| singlePageApp | boolean | – | – |
| webhookSecurity | string | – | Always recommends signature verification. Legacy values are accepted for compatibility and cannot disable verification. |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_list_campaign_rewards List Campaign Rewards ~144
List your GrowSurf program's configured Campaign Rewards, including switched-off rewards and rewards whose group is not selected. Deleted rewards are excluded. A reward can be earned only when it also appears in the campaign response's embedded `rewards` array. These settings do not establish that a participant earned or received a reward; earned reward records belong to the individual participant. Targets `campaignId` if supplied, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| rewardEvidence | object | – | What this response establishes about rewards. Combine with other reads; unknown here does not override evidence elsewhere. |
| rewards | array | – | The program's configured Campaign Rewards, including switched-off rewards. Deleted rewards are excluded. |
No examples provided.
growsurf_list_campaign_webhooks List Webhooks ~89
List your GrowSurf program's webhooks (secrets are never returned). Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| webhooks | array | – | Webhooks configured for the program. |
No examples provided.
How do I install the GrowSurf MCP server?
GrowSurf runs locally as an npm package, launched with npx -y @growsurfteam/growsurf-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @growsurfteam/growsurf-mcp
claude mcp add com-growsurf-growsurf -- npx -y @growsurfteam/growsurf-mcp
What is the GrowSurf MCP server?
GrowSurf is an MCP server listed in the public MCP registry as com.growsurf/growsurf. Build and manage GrowSurf referral and affiliate programs through AI assistants. This page covers its npm package (@growsurfteam/growsurf-mcp).
Is the GrowSurf MCP server safe to use?
GrowSurf scores 87 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the GrowSurf MCP server expose?
GrowSurf exposes 66 tools: growsurf_integration_guide, growsurf_agent_program_creation_eval, growsurf_program_design_advisor, growsurf_troubleshoot_referral_tracking, growsurf_mobile_sdk_guide, and 61 more. Their descriptions and schemas cost roughly 16,792 tokens of context every time the server is loaded.
Is the GrowSurf MCP server still maintained?
GrowSurf is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the GrowSurf MCP server under?
GrowSurf declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.