GrowSurf
NPM · @GROWSURFTEAM/GROWSURF-MCP · 2 COMPONENTS · SCANNED SEP 20
Build and manage GrowSurf referral and affiliate programs through AI assistants.
Available components
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
- 31 of 97 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 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability70
- 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 15055 tokens (~235/item across 64 items; 63 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 Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage82
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 37% 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
- 7 of 8 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 65 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
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
{
"mcpServers": {
"com-growsurf-growsurf": {
"command": "npx",
"args": [
"-y",
"@growsurfteam/growsurf-mcp"
]
}
}
} {
"servers": {
"com-growsurf-growsurf": {
"command": "npx",
"args": [
"-y",
"@growsurfteam/growsurf-mcp"
]
}
}
} codex mcp add com-growsurf-growsurf -- npx -y @growsurfteam/growsurf-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-growsurf-growsurf": {
"type": "local",
"command": [
"npx",
"-y",
"@growsurfteam/growsurf-mcp"
],
"enabled": true
}
}
} openclaw mcp add com-growsurf-growsurf --command npx --arg -y --arg @growsurfteam/growsurf-mcp
mcp_servers:
com-growsurf-growsurf:
command: "npx"
args: ["-y", "@growsurfteam/growsurf-mcp"] {
"McpServers": {
"com-growsurf-growsurf": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@growsurfteam/growsurf-mcp"
]
}
}
} assistant mcp add com-growsurf-growsurf -t stdio -c npx -a -y @growsurfteam/growsurf-mcp
{
"mcpServers": {
"com-growsurf-growsurf": {
"command": "npx",
"args": [
"-y",
"@growsurfteam/growsurf-mcp"
]
}
}
} 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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
- Tool safety: pass → unverified ▼ security
- Stability: 0.73 → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.15.1 → 0.16.0 functional
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Known CVEs: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Stability: 0.63 → unverified ▼ security
- Schema quality: 182 → 233 ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Dependency health: 0.84 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Tool coverage: 26% → 37% ▲ functional
- Package version: 0.12.2 → 0.15.1 functional
- Package version: 0.12.2 → 0.15.0 functional
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
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 20 Sept 2026 · Analysed npm/@growsurfteam/growsurf-mcp@0.16.0
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 | 2879038350 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:86ff035edaff67263b9a2bcfd63894e1ca58fe1cabdfefd683d6ccc4d376c60e53416b88f79bf5cc0477783f1bd187aada2539292cc58c9a9ceb01781 |
Background: How many MCP packages publish verified provenance →
Dependencies 97 packages
| Packages resolved | 97 |
|---|---|
| Stale | 31 |
| 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 ~327
Add or fetch a participant by email. Existing participants are returned unchanged. This is trusted direct enrollment; do not use it for a public application when the program requires affiliate review. 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 | – | 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, witho… |
| 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… |
| lastName | string | – | – |
| metadata | object | – | – |
| mobileInstanceId | string | – | – |
| referralStatus | string | – | – |
| referredBy | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_agent_program_creation_eval Program Creation Evals ~63
Generate one-shot GrowSurf program-creation eval prompts and acceptance checks for agent steering: starter content review, conservative rewards, configuration review, and frontend install proof.
| 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 API Library Snippets ~84
Generate official REST API library snippets for TypeScript, Python, PHP, Ruby, and Java, including Create Mobile Participant Token.
| 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 ~321
Bulk delete participants from your GrowSurf program in one request. DESTRUCTIVE: deletion is permanent, cannot be undone, and removes the participants' referrals, rewards, commissions, and payout records. 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, so check the summary. A `202` response includes `analyticsErasure` when analytics erasure is pending. `DELETED` means participant cleanup completed; reports can retain the participant until analytics erasure completes. Do not repeat successful rows to finish analytics erasure. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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 ~134
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 | – | 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, witho… |
| 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 ~160
Capture temporary GrowSurf preview screenshots after the user explicitly asks for screenshots or screenshot proof. Returns short-lived URLs for the controlled referrer Window and referred-friend experience for this program. This does not prove the user's installed site; use browser automation for that. This tool does not accept arbitrary URLs, HTML, JavaScript, or external screenshot targets. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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 Client Snippets ~121
Generate copy-pasteable client-side snippets for GrowSurf referral tracking, embeddable elements, and the GrowSurf Window (JS + CSS), with placement guidance for app UI work.
| 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 ~114
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 | – | 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, witho… |
Structured output declared, but exposes no named fields.
No examples provided.
growsurf_create_account Create GrowSurf Account ~404
Create a brand-new GrowSurf account and return an API key. Call this tool only after the authorized owner explicitly approves account creation and accepts GrowSurf's Terms of Service (https://growsurf.com/terms) and Privacy Policy (https://growsurf.com/privacy). This is the only tool that does not require `GROWSURF_API_KEY`. The account starts a 14-day Business trial without a credit card. The endpoint returns the new key once in `apiKey`. A lost key cannot be recovered through this API, so do not create an account here unless you can store the key somewhere that outlives the current conversation. If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at `https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in chat. The key is locked until the account owner's email address is verified. Until then, program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`. Create the account, tell the owner to click the link in the verification email, then retry until that error clears. Use `growsurf_resend_team_owner_verification_email` if the email was lost. The welcome email also contains a set-password link for dashboard access. Accounts whose email is never verified are deleted automatically after 7 days. Verification unlocks the same key you were given, so keep it and retry rather than asking for a replacement. Separately, the API key is replaced the first time the account owner signs in to the GrowSurf dashboard; after that the previous key returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions, such as emailing participants, also require GrowSurf to verify the team. Personal and disposable email addresses are not accepted.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | – | – |
| string | yes | – | |
| firstName | string | – | – |
| lastName | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| apiKey | string | – | An API key for the new account. Shown once, locked (`403` `EMAIL_NOT_VERIFIED_ERROR`) until the account's email is verified, and rotated when the owner first signs in to the dashboard. |
| string | – | Email address for the new account. | |
| verificationStatus | string | – | Team verification state for the new account. |
No examples provided.
growsurf_create_campaign Create Program ~514
Create a new GrowSurf program (campaign) pre-populated with type-appropriate starter content, optionally with inline rewards. Starter content includes Design, Emails, Options, Installation, and GrowSurf Window defaults. Only `type` is required; the program is created in `DRAFT` status owned by the credential's bound team. `currencyISO` sets the program's currency (defaults to `USD`) and is immutable after creation. Pass `goal` so the share settings suit the audience; it is set here or not at all. Ask the person for the incentive rather than choosing one: leave `rewards` out unless they named an amount, and tell them the program starts with GrowSurf's starter rewards switched off so it awards nothing yet. Editor-tab config (design, emails, options, installation) is not accepted here. Fetch and review those config sub-resources after creation, then patch only what needs to change. Does NOT require GROWSURF_CAMPAIGN_ID. The response includes the new program `id`; pass it as `campaignId` to the other tools (or set GROWSURF_CAMPAIGN_ID) to configure and operate the program.
| Name | Type | Req | Description |
|---|---|---|---|
| companyLogoImageUrl | string | – | – |
| companyName | string | – | – |
| currencyISO | string | – | – |
| goal | string | – | What the program is for, which seeds share settings that suit that audience. Programs selling to businesses (`CUSTOMERS`, `USERS`, `B2B_SAAS_SELF_SERVICE`, `B2B_SAAS_ENTERPRISE`) start with the Linke… |
| 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 ~548
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 | – | 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, witho… |
| 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 | – | – |
| 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… |
| imageUrl | string | – | – |
| isUnlimited | boolean | – | – |
| isVisible | boolean | – | – |
| limit | integer | – | – |
| limitDuration | string | – | – |
| metadata | object | – | – |
| nextMilestonePrefix | string | – | – |
| nextMilestoneSuffix | string | – | – |
| numberOfWinners | integer | – | – |
| order | integer | – | – |
| referralCouponCode | string | – | – |
| referralDescription | string | – | – |
| referredRewardUpfront | boolean | – | – |
| referredValue | object | – | 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 | – | 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 ~194
Add a webhook to your GrowSurf program. `payloadUrl` is required. `events` is the list of events this webhook is subscribed to (omit to subscribe it to no events). `secret` is write-only — GrowSurf uses it to sign deliveries (the GrowSurf-Signature HMAC header) and never returns it. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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 ~238
Create or fetch a participant, then create a participant-scoped mobile SDK token via GrowSurf REST. Participant creation is trusted direct enrollment; do not use it for a public application when the program requires affiliate review. Targets `campaignId` if you pass it, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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. |
| lastName | string | – | – |
| metadata | object | – | – |
| mobileInstanceId | string | – | – |
| referralStatus | string | – | – |
| 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 ~273
Create a `FILE`, `LINK`, or `TEXT` resource for participants. `LINK` requires an HTTPS `url`. `TEXT` requires plain `text`. For a `FILE` up to 10 MB, call `growsurf_prepare_program_resource_file` first and pass its `uploadTicket` and `uploadResult` unchanged. New resources default to draft unless you set `isPublished`. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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 ~151
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 | – | 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, witho… |
| 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 ~113
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 | – | 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, witho… |
| 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 ~115
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 | – | 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, witho… |
| 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 ~525
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`). 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 *Campaign 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 | – | 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, witho… |
| 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 Embeddable Element Snippet ~55
Generate the HTML snippet for a GrowSurf embeddable element (with optional auth attributes).
| 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 ~125
Fetch your GrowSurf campaign (program) details via REST. Embedded reward settings do not establish that an individual reward was earned, approved, or delivered; read the affected participant for earned reward records. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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 ~334
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 | – | 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, witho… |
| 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 ~461
Fetch analytics for your GrowSurf program: participants, referrals, impressions, per-channel shares, and affiliate revenue, commission, and payout metrics when applicable. For what impressions, unique impressions, leads, and referrals mean, or why counts differ from another analytics tool, call `growsurf_troubleshoot_referral_tracking` with symptom `numbers_do_not_match` rather than guessing. 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 (Unix ms). `timezone` and `platform` apply to engagement only. Targets `campaignId` if passed, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| days | integer | – | – |
| endDate | integer | – | End of the timeframe, Unix timestamp in ms. |
| 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, Unix timestamp in ms. Use with endDate instead of 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_design Get Program Design ~226
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, participant sign-in copy under `login`, payout-destination confirmation page copy under `payoutDestinationConfirmation`, and country-name overrides under `countryLabels`. `participantAvatarStyle` is `CHARACTERS`, `INITIALS`, `ANIMALS`, or `GRADIENT`; missing or unknown values mean `INITIALS`. 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 | – | 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, witho… |
| 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`). |
| landingPages | object | – | Portal and landing pages: company info, `content`, `styles`, third-party script ids, and SEO meta tags. |
| 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 use `CHARACTERS`; missing or unknown stored values return `INITIALS`. |
| participantSettings | object | – | The participant's account settings area (logout, PayPal and Wise payout confirmation/status messages, tax details). |
| 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. |
| referralSummary | object | – | Referral programs only. The participant's row of summary tiles (clicks, leads, referrals, rewards). |
| 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, and the section icon. Resource items use the program Resource tools. |
| 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). |
| window | object | – | Layout of the GrowSurf window (`navigationMode`: `TABS` or `LIST`). |
No examples provided.
growsurf_get_campaign_emails Get Program Emails ~128
Fetch the Emails tab configuration for your GrowSurf program (participant and admin email templates and settings). 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 | – | 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, witho… |
| 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. |
| 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. |
| 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 ~127
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 | – | 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, witho… |
| 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… |
| mobile | object | – | GrowSurf iOS and Android SDK settings. |
| referralTrigger | string | – | Referral programs only. `ON_SIGNUP` counts a referral as soon as the friend signs up; `CUSTOM` also requires a qualifying action. |
| 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 ~167
Fetch the Options tab configuration for your GrowSurf program (referral triggers, anti-fraud lists and toggles, affiliate enrollment and application review, notifications, 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 | – | 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, witho… |
| 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… |
| 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… |
| 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 ~364
Return a dashboard link that opens a specific integration's connect panel in the GrowSurf Program Editor (Options > Integrations). Use this whenever a user says they want to connect an integration, for example "connect Stripe", "set up PayPal or Wise payouts", "send Tango Card gift cards", or "sync signups to Mailchimp": call it with the `integration` key and give the user the returned `url` to open. Connecting an integration happens in the dashboard, not through the API. GrowSurf cannot link a Stripe, PayPal, Wise, or other account on the user's behalf, so hand them the link. `integration` must be one of the supported keys (some are camelCase, e.g. `constantContact`, `helpScout`). The link points at GROWSURF_CAMPAIGN_ID; pass `campaignId` to target a different program. The program is checked before the link is returned, and the result also reports whether the integration is already `connected`, `enabled`, or `autoDisabled`, so you can skip handing over a link the user does not need. If that check cannot run, `programVerified` comes back `false` and you still get a working production link. Tango Card, Tremendous, and Bask Health apply to referral programs only. Wise applies to affiliate programs only.
| 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 ~203
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. Use `growsurf_list_participants` first if you need to find a participant ID. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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. |
| lastName | string|null | – | The participant's last name. |
| 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. |
| referralSource | string | – | How the participant joined the program. |
| 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 | – | Summary of the participant's referrer (same core fields as a participant). 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 ~183
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 | – | 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, witho… |
| 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 ~374
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. Date-window parameters filter optional series and email data, not the base response or activation milestones. Targets `campaignId` if passed, otherwise `GROWSURF_CAMPAIGN_ID`.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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, Unix timestamp in ms. Use with `startDate`. |
| 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, Unix timestamp in ms. Use with `endDate` instead of `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 ~195
Get a participant's payout-destination status (by GrowSurf participant ID or email) across every payout provider enabled for the program (PayPal and/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 | – | 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, witho… |
| 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` 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` 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 Participant Auto-Auth Snippet ~98
Generate the <head> snippet for participant auto-auth using window.grsfConfig (place 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 Integration Guide ~70
Generate a guided, happy-path GrowSurf integration plan (referral + affiliate).
| Name | Type | Req | Description |
|---|---|---|---|
| participantAuthEnabled | boolean | – | – |
| programType | string | – | – |
| referralTrigger | string | – | – |
| singlePageApp | boolean | – | – |
| webhookSecurity | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | – | The generated guidance as a markdown document. |
No examples provided.
growsurf_list_campaign_rewards List Campaign Rewards ~125
List your GrowSurf program's configured rewards. These settings do not establish that a participant earned or received a reward; inspect their `rewards` with `growsurf_get_participant`. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| 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 active, visible, and enabled reward configs. |
No examples provided.
growsurf_list_campaign_webhooks List Webhooks ~103
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 | – | 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, witho… |
| Name | Type | Req | Description |
|---|---|---|---|
| webhooks | array | – | Webhooks configured for the program. |
No examples provided.
growsurf_list_campaigns List Programs ~60
List the GrowSurf programs available to the bound team. Use this first when you need to choose a `campaignId` before calling campaign-scoped tools. Deleted programs are not returned. Does NOT require GROWSURF_CAMPAIGN_ID.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| campaigns | array | – | Programs available to the API key's bound team. |
No examples provided.
growsurf_list_integrations List Integrations ~264
List every integration your GrowSurf program can connect (Stripe, PayPal, Wise, Mailchimp, Slack, Zapier, Webhooks, and more) with its current state, so you can check whether an integration is connected before you act on it. Each entry has `connected` (credentials are stored), `enabled` (switched on and working), `autoDisabled` (GrowSurf switched it off after repeated delivery failures — the credentials are still stored, but nothing is delivered until the user reconnects it), and `connectUrl` (the dashboard link to hand the user). Integrations that do not apply to the program type are omitted (for example, Wise on a referral program). Read-only: connecting an integration happens in the GrowSurf dashboard, not through the API — call `growsurf_get_integration_connect_link` for the link to hand the user. Targets `campaignId` if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | – | 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, witho… |
| Name | Type | Req | Description |
|---|---|---|---|
| integrations | array | – | Every integration this program can connect, in the order the GrowSurf dashboard lists them. |
No examples provided.
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 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 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 63 tools: growsurf_integration_guide, growsurf_agent_program_creation_eval, growsurf_program_design_advisor, growsurf_troubleshoot_referral_tracking, growsurf_mobile_sdk_guide, and 58 more. Their descriptions and schemas cost roughly 14,397 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 20 September 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.