Google Search Console integration for Model Context Protocol (MCP)
GrowSurf is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Build and manage GrowSurf referral and affiliate programs through AI assistants.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user growsurf-mcp '--' npx -y @growsurfteam/growsurf-mcp
# 2 — ask your agent for something these tools do
# growsurf_integration_guide, growsurf_agent_program_creation_eval, growsurf_program_design_advisor and 60 more
GrowSurf costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one can run either way — at an address its publisher runs, or as a process under your own user, with your files and your network — and this marketplace is in the path of neither.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user growsurf-mcp '--' npx -y @growsurfteam/growsurf-mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Its publisher also runs it at https://mcp.growsurf.com: nothing to start on your machine, and this marketplace is not in the path.
claude mcp add --scope user --transport http growsurf-mcp https://mcp.growsurf.comNothing is required, but it can take GROWSURF_API_KEY (A GrowSurf API key with access to the programs and actions you want to use.), GROWSURF_CAMPAIGN_ID (The default GrowSurf program ID for program-scoped tools.) if you want to set them.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
63 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| programType | string | no | — |
| participantAuthEnabled | boolean | no | — |
| referralTrigger | string | no | — |
| singlePageApp | boolean | no | — |
| webhookSecurity | string | no | Always recommends signature verification. Legacy values are accepted for compatibility and cannot disable verification. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| programType | string | no | — |
| includeOneShotPrompts | boolean | no | — |
Generate program designs, benchmarks, typical rewards, and metric definitions, including participant-to-referral and lead-to-referral ratios. Read-only. Returns a short draft, complete benchmarkFacts, a proposed configurationPlan, and unresolved decisions. Incentive amounts and qualifying…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| programType | string | no | — |
| industry | string | no | Closest industry segment: financial_services_fintech (banking, lending, investing, insurance, payments, crypto), saas_ai (software sold to businesses, developer tools, AI products), `media_newslet |
| goal | string | no | What a successful referral means for the business. paid_conversions and leads imply a qualifying action; signups, subscribers, and waitlist count the signup unless a separate `qualifyingActi |
| businessModel | string | no | One line on what the business sells and how. Also set salesMotion when the buying process is known. |
| salesMotion | string | no | Use sales_led for demos, sales calls, negotiated pricing, or signed contracts; use self_service when customers buy directly. This selects the reward structure. Omit when unknown. |
| audience | string | no | Who refers whom. |
| qualifyingAction | string | no | The action a referred friend must complete, in the customer's words. |
| rewardBudgetPerReferral | number | no | The customer's spending limit per successful referral, in major currency units. A budget does not select an incentive amount or commission rate. Budget comparisons omit the mixed-currency reward amoun |
| currencyISO | string | no | ISO 4217 code. Non-USD advice omits the dollar reward bands. No exchange rate or equivalent-currency benchmark is available. |
| companyName | string | no | Used in the heading and proposed program name; omit it when unknown. |
| detail | string | no | Use summary for a first design or configuration draft, including a reward structure recommendation. Use full only for requested detailed benchmark tables or specific figures absent from the summary, s |
| includeRules | boolean | no | Append guidance on applying the recommendations. Off by default. |
Diagnose referral tracking and program problems. Accepts a symptom or description without requiring a program or participant ID. Covers referrals not credited, participant emails not sending, rewards not issued, participants not added, Universal Code not detected, integrations or CRMs not syncing,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| symptom | string | no | The symptom to diagnose. Known keys: ${playbookSymptomKeys(options.insights).map((key) => " + key + ").join(", ")}. Unknown keys return the symptom list. |
| description | string | no | The problem in the customer's words, when symptom is unknown. |
| campaignId | no | — | |
| participantId | string | no | Affected participant id, echoed into participant-level checks. |
| participantEmail | string | no | Affected participant email, when the id is unknown. |
Get Markdown implementation guidance for native iOS/Android SDK 0.7.0, including attribution, shareUrl sharing, trackShare, and the native GrowSurf Window. Choose platform and participantState to tailor the guide; includeInstallSnippets controls installation examples. Does not install an…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| platform | string | no | — |
| attributionProvider | string | no | — |
| participantState | string | no | — |
| serverVerifiedQualifyingAction | boolean | no | — |
| includeInstallSnippets | boolean | no | — |
| campaignId | string | no | — |
| mobilePublicKey | string | no | — |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| language | string | no | — |
| workflow | string | no | — |
| campaignId | string | no | — |
| string | no | — | |
| referredBy | string | no | — |
| participantIdOrEmail | string | no | — |
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.
No parameter schema on file.
List the GrowSurf programs available to the bound team, including their IDs for program selection. Deleted programs are not returned. Does not require GROWSURF_CAMPAIGN_ID.
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | — |
| name | string | no | — |
| companyName | string | no | — |
| companyLogoImageUrl | string | no | — |
| currencyISO | string | no | — |
| goal | string | no | 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_SERVICE |
| rewards | array | no | 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 nothi |
Update your GrowSurf program's (campaign's) identity and lifecycle: name, companyName, companyLogoImageUrl, and status (set IN_PROGRESS to publish/resume the program, COMPLETE to end it). Only the fields you send are changed. type, urlId, and currencyISO are immutable (currency is chosen…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | — |
| companyName | string | no | — |
| companyLogoImageUrl | string | no | — |
| status | string | no | Lifecycle transition. IN_PROGRESS publishes/resumes the program; COMPLETE ends it. These are the only accepted targets — DRAFT/PENDING/CANCELLED are rejected by the API. |
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.
No parameter schema on file.
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…
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | — |
| title | string | no | — |
| description | string | no | — |
| event | string | no | 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 rewar |
| referralDescription | string/null | no | — |
| imageUrl | string/null | no | — |
| isVisible | boolean | no | — |
| isUnlimited | boolean | no | — |
| referredRewardUpfront | boolean | no | — |
| limit | integer | no | — |
| conversionsRequired | integer | no | — |
| numberOfWinners | integer | no | — |
| order | integer | no | — |
| limitDuration | string | no | — |
| nextMilestonePrefix | string/null | no | — |
| nextMilestoneSuffix | string/null | no | — |
| couponCode | string/null | no | — |
| referralCouponCode | string/null | no | — |
| metadata | object | no | — |
| commissionStructure | no | — |
Update an existing campaign reward (reward config) on your GrowSurf program. campaignRewardId is the reward key (e.g. crew_...). The reward type is immutable. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaignRewardId | string | yes | — |
| title | string | no | — |
| description | string | no | — |
| event | string | no | 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 rewar |
| referralDescription | string/null | no | — |
| imageUrl | string/null | no | — |
| isVisible | boolean | no | — |
| isUnlimited | boolean | no | — |
| referredRewardUpfront | boolean | no | — |
| limit | integer | no | — |
| conversionsRequired | integer | no | — |
| numberOfWinners | integer | no | — |
| order | integer | no | — |
| limitDuration | string | no | — |
| nextMilestonePrefix | string/null | no | — |
| nextMilestoneSuffix | string/null | no | — |
| couponCode | string/null | no | — |
| referralCouponCode | string/null | no | — |
| metadata | object | no | — |
| commissionStructure | no | — |
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,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaignRewardId | string | yes | — |
List the participant resources configured for your GrowSurf program, including drafts. Results stay in display order. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
No parameter schema on file.
Prepare a local file for a FILE Program Resource. Accepts a safe file name, matching supported MIME type, and padded base64 bytes, up to 10 MB. GrowSurf requests a one-time ticket and uploads only to the secure HTTPS destination selected by GrowSurf. Returns the original uploadTicket and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fileName | string | yes | A safe base name with an allowed extension: jpg/jpeg/png/gif/webp/pdf/csv/zip/doc/docx/xls/xlsx/ppt/pptx. |
| mimeType | string | yes | The supported MIME type matching fileName's extension. |
| fileBase64 | string | yes | Canonical padded base64 file bytes only. Do not include a data-URL prefix or whitespace. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | — |
| title | string | yes | — |
| description | string/null | no | — |
| category | string/null | no | — |
| isPublished | boolean | no | — |
| uploadTicket | string | no | The one-time upload ticket. Used only with FILE. |
| uploadResult | object | no | The unmodified result returned by the secure upload flow. Used only with FILE. |
| url | string | no | Used only with LINK. |
| text | string | no | Used only with TEXT. |
Update at least one participant resource field, or move it to a zero-based position. Only supplied fields change. A replacement FILE requires a one-time uploadTicket and the unmodified uploadResult from GrowSurf's secure upload flow. API reference:…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| resourceId | string | yes | — |
| type | string | no | — |
| title | string | no | — |
| description | string/null | no | — |
| category | string/null | no | — |
| isPublished | boolean | no | — |
| position | integer | no | — |
| uploadTicket | string | no | The one-time upload ticket for a replacement FILE. |
| uploadResult | object | no | The unmodified result returned by the secure upload flow for a replacement FILE. |
| url | string | no | Used with LINK. |
| text | string | no | Used with TEXT. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| resourceId | string | yes | — |
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…
No parameter schema on file.
Update the design configuration for your GrowSurf program, including participant avatars under participantAvatarStyle, referred-visitor content such as the Claim Offer Popup, the website widget under widget (button or card, placement, timing, and visible pages), the participant Traffic report…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fields | object | yes | — |
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. Sender fields can be null before configuration.…
No parameter schema on file.
Update writable Emails tab fields for your GrowSurf program under fields, in their existing nested shape. settings.sender.fromEmail is read-only; sender address changes require domain verification in the dashboard. settings.sender.fromName and settings.sender.replyToEmail accept non-empty…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fields | object | yes | — |
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…
No parameter schema on file.
Update the Options tab configuration for your GrowSurf program under fields, in its existing nested shape. Only supplied fields change; omitted fields retain their existing values and arrays replace wholesale. languages.additionalLanguages takes the full list of extra languages; send [] to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fields | object | yes | — |
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.
No parameter schema on file.
Update the Installation tab configuration for your GrowSurf program under fields. Only supplied fields change; omitted fields retain their existing values and arrays replace wholesale. allowedUrls includes permitted browser origins such as http://localhost:3000. An origin missing from both…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fields | object | yes | Installation fields to patch. Common keys include shareUrl, allowedUrls, signupEvent, referralTrigger, signup, and instructionSelections. Arrays replace wholesale. |
| replaceExistingShareUrl | boolean | no | Set this to true only after the customer confirms they want a different landing page. Without it, a patch that would replace a Share URL that is already set is refused. |
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…
No parameter schema on file.
Create a brand-new GrowSurf account and return an API key. Requires the authorized owner's explicit approval of account creation and acceptance of 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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | — | |
| firstName | string | no | — |
| lastName | string | no | — |
| company | string | no | — |
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…
No parameter schema on file.
Update the display name of the team bound to the API key or OAuth connection. Personal profiles, billing, and team ownership are not editable here. Requires GROWSURF_API_KEY; does not require GROWSURF_CAMPAIGN_ID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | The team's display name. |
Ask GrowSurf to verify the team bound to the API key or OAuth connection. Verification is required before a program can email participants. Calling this again while a request is pending does not create a duplicate. Returns the team with its updated verificationStatus. Requires…
No parameter schema on file.
Resend the email-verification message to the bound team's owner. The response never reveals the owner's email address. A 200 with status: SENT is returned only when an email was sent. Returns 400 if the email is already verified and 429 if one was sent too recently. Requires…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| interval | string | no | day/week/month adds a per-period series; total (default) returns totals only. |
| include | string | no | Comma-separated optional data: previousPeriod, statusCounts, rates, email, and engagement. Combine values when the question needs more than one view. |
| days | integer | no | — |
| startDate | integer | no | Start of the timeframe, positive Unix timestamp in milliseconds. Supply endDate too; the window must span at most 1825 days. |
| endDate | integer | no | End of the timeframe, positive Unix timestamp in milliseconds. Supply startDate too; endDate must be >= startDate and at most 1825 days later. |
| timezone | string | no | IANA timezone for engagement interval and distinct-day calculations. Used with include=engagement. |
| platform | string | no | Client-platform filter for engagement. Defaults to ALL. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cohortFrom | integer | no | Inclusive eligibility-cohort start, Unix timestamp in ms. Use with cohortTo. |
| cohortTo | integer | no | Exclusive eligibility-cohort end, Unix timestamp in ms. Must be greater than cohortFrom. |
| cohortInterval | string | no | Bucket size for cohorts. Defaults to day. |
| observationWindowDays | integer | no | Days after eligibility in which stages can count. Defaults to 30. |
| timezone | string | no | IANA timezone used to advance cohort boundaries. Defaults to UTC. |
List the integrations available to your GrowSurf program, including Stripe, PayPal, Wise, Mailchimp, Slack, Zapier, and Webhooks. Each entry includes connected (credentials stored), enabled (working), autoDisabled (delivery stopped after repeated failures until the user reconnects), and…
No parameter schema on file.
List your GrowSurf program's webhooks (secrets are never returned). Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| payloadUrl | string | yes | — |
| events | array | no | — |
| secret | string | no | Write-only. Signs deliveries; never returned. |
| isEnabled | boolean | no | — |
Update a webhook on your GrowSurf program by id (webhookId is primary for the program's primary webhook). Only the fields you send are changed. secret is write-only and never returned. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhookId | string | yes | — |
| payloadUrl | string | no | — |
| events | array | no | — |
| secret | string | no | Write-only. |
| isEnabled | boolean | no | — |
Remove a webhook from your GrowSurf program by id. Returns { id, success }. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhookId | string | yes | — |
Send a live test event to a webhook on your GrowSurf program using its stored URL and secret. Optionally pass event to choose which event type to simulate; when omitted, the webhook's first enabled event is used (returns 400 if the webhook has no enabled events). Returns the mock payload and the…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhookId | string | yes | — |
| event | string | no | — |
List participants in your GrowSurf program, newest page first. limit is 1-100 (default 10). Pass response nextId into the next call to continue paging. Pass metadata to return only participants whose stored metadata matches every given key and value exactly, for example `{ "customerId":…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | — |
| nextId | string | no | Participant ID returned as nextId from the previous page. |
| metadata | object | no | Exact-match filter on participant metadata, up to 3 keys, for example { "customerId": "12345" }. Values compare as strings. |
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,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
Add or fetch a participant by email. Existing participants are returned unchanged. 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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | — | |
| isAffiliate | boolean | no | Affiliate programs only. Controls affiliate enrollment for a new participant. true enrolls the participant with affiliateStatus: APPROVED; false creates a non-affiliate without affiliateStatus |
| firstName | string | no | — |
| lastName | string | no | — |
| referredBy | string | no | — |
| referralStatus | string | no | — |
| ipAddress | string | no | — |
| fingerprint | string | no | — |
| mobileInstanceId | string | no | — |
| metadata | object | no | — |
| language | no | — |
Update a participant by GrowSurf participant ID or email. Only the fields you send are changed; read-only fields such as counters, isAffiliate, origin, and fraud state are rejected with a 400. In affiliate programs, affiliateStatus accepts APPROVED, SUSPENDED, or BANNED; APPROVED…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| affiliateStatus | string | no | Affiliate programs only. Sets the affiliate status. APPROVED also enrolls a participant who is not yet an affiliate. SUSPENDED and BANNED are rejected for non-affiliates. |
| referredBy | string | no | — |
| string | no | Change the participant's email address. | |
| firstName | string | no | — |
| lastName | string | no | — |
| metadata | object | no | — |
| referralStatus | string | no | — |
| vanityKeys | array | no | — |
| unsubscribed | boolean | no | — |
| notes | string | no | Freeform internal notes (internal only, never exposed to participants). |
| language | string/null | no | The language of the participant's portal and program emails. Must be one of the program's languages (languages in growsurf_get_campaign_options); any other code returns a 400. Send null or the |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participants | array | yes | GrowSurf participant IDs and/or email addresses to delete (1-200 entries; mixed lists allowed). |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| emailType | string | no | 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 trigge |
| subject | string | no | Free-form subject. Supports dynamic text ({{...}} tokens), the same as the body. |
| body | string | no | 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.g |
| preheader | string | no | — |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| include | string | no | Comma-separated optional data. Current values are series, email, and activation; the API returns 400 for unknown values. |
| interval | string | no | Bucket size for series and email series. Defaults to day. |
| days | integer | no | Number of days for optional series and email analytics. Does not filter the all-time base response. |
| startDate | integer | no | Start of the optional-data timeframe, positive Unix timestamp in milliseconds. Supply endDate too; the window must span at most 1825 days. |
| endDate | integer | no | End of the optional-data timeframe, positive Unix timestamp in milliseconds. Supply startDate too; endDate must be >= startDate and at most 1825 days later. |
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,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| limit | integer | no | — |
| offset | integer | no | — |
Trigger referral credit for a referred participant (use when your trigger is Sign up + Qualifying Action). Optionally pass delayInDays (1-90) to hold the credit for N days before awarding it (e.g. to cover a refund window). Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| delayInDays | integer | no | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
Ask a participant to confirm their payout destination for a provider (by GrowSurf participant ID or email). Sends them a one-time confirmation link for the chosen provider; only the participant can open the link and confirm — this just triggers the message, and the provider must be enabled for…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| provider | string | yes | The payout provider the participant should confirm a destination for. |
Record a sale/transaction for an affiliate program. Use webhooks to know when commissions are added. Requires at least one transaction identifier (externalId, transactionId, orderId, paymentId, invoiceId, paymentIntentId, or chargeId) so repeated calls are de-duplicated instead of double-paying…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| currency | string | yes | — |
| grossAmount | integer | yes | — |
| paymentProvider | string | no | Connected provider for this payment. Requires transactionId and testMode. Supply matching grossAmount and currency; other payment IDs and tax or net-amount overrides are not accepted. GrowSurf |
| testMode | boolean | no | Required with paymentProvider: true for test or false for live. Otherwise omit. |
| invoiceId | string | no | — |
| chargeId | string | no | — |
| paymentIntentId | string | no | — |
| transactionId | string | no | — |
| externalId | string | no | — |
| orderId | string | no | — |
| paymentId | string | no | — |
| customerId | string | no | — |
| subscriptionId | string | no | — |
| netAmount | integer | no | — |
| taxAmount | integer | no | — |
| amountCashNet | integer | no | — |
| amountPaid | integer | no | — |
| invoiceTotal | integer | no | — |
Record a refund, partial refund, or chargeback for a previously recorded affiliate transaction in GrowSurf and reverse or adjust the referrer's commission. This records the amendment without sending a refund through the payment provider. Requires the same transaction identifier as the original…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participantId | string | no | — |
| participantEmail | string | no | — |
| amendmentType | string | no | — |
| paymentProvider | string | no | Connected provider for the original payment. Requires its transactionId and testMode. This amends GrowSurf records without sending a refund through the provider. |
| testMode | boolean | no | Original payment mode: true for test or false for live. Requires paymentProvider. |
| amountRefunded | integer | no | — |
| amount | integer | no | — |
| refundId | string | no | Stable per-refund identifier. Required when canceling a refund or changing the refunded total after a cancellation. Reuse the original refund's identifier for its cancellation. An amendment without en |
| refundStatus | string | no | — |
| refundAmount | integer | no | Positive amount for this individual refund, no greater than the sale amount, in the sale currency's minor unit. Send it with refundId on each original refund to support cancellations and out-of-orde |
| refundHistoryComplete | boolean | no | Set true only after reconciling and recording every original refundId and refundAmount, including refunds later canceled. This confirmation resolves previously incomplete history. Omit during ordinary |
| currency | string | no | — |
| invoiceId | string | no | — |
| chargeId | string | no | — |
| paymentIntentId | string | no | — |
| transactionId | string | no | — |
| externalId | string | no | — |
| orderId | string | no | — |
| paymentId | string | no | — |
| description | string | no | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | — | |
| isAffiliate | boolean | no | Sets whether the participant is an affiliate. Use true only for trusted direct enrollment. Public applicants should follow the program's configured application flow. |
| firstName | string | no | — |
| lastName | string | no | — |
| referredBy | string | no | — |
| referralStatus | string | no | — |
| ipAddress | string | no | — |
| fingerprint | string | no | — |
| mobileInstanceId | string | no | — |
| metadata | object | no | — |
| language | no | — |
Compute a SHA-256 HMAC using the caller-supplied participantAuthSecret. Server environment secrets are never used. Use a test secret during implementation; keep production signing in your backend. affiliateJoin requires permission for this signed-in user to join the affiliate program directly.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | — | |
| participantAuthSecret | string | yes | — |
| affiliateJoin | boolean | no | — |
Validate/normalize a GrowSurf webhook payload and generate a best-effort idempotency key for dedupe.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| payload | object/array/string/number/boolean/null | yes | JSON value to validate. A valid webhook envelope is an object with event, createdAt, and data. Other JSON values return ok: false. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| programType | string | no | — |
| participantAuthEnabled | boolean | no | — |
| referralTrigger | string | no | — |
| singlePageApp | boolean | no | — |
| includeEmbeddableElements | boolean | no | — |
| includeGrowSurfWindow | boolean | no | — |
| includeUnreadBadge | boolean | no | — |
| includeEventSubscriptions | boolean | no | — |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| element | string | yes | — |
| withAuthAttributes | boolean | no | — |
| participant | object | no | — |
Generate the HTML code for GrowSurf Participant Auto Authentication using window.grsfConfig. The generated code belongs in <head>, before the GrowSurf Universal Code.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| useCampaignIdPlaceholder | boolean | no | — |
| campaignId | string | no | — |
| enableParticipantAutoAuth | boolean | no | — |
| string | no | — | |
| hash | string | no | — |
| affiliateJoin | boolean | no | — |
| includeAutoAuthCommentHeader | boolean | no | — |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| 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, `baskHealt |
| campaignId | string | no | Target program for the link. Defaults to GROWSURF_CAMPAIGN_ID. |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install GrowSurf or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (63 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| growsurf_integration_guide | no tags | |
| growsurf_agent_program_creation_eval | code-exec | code-exec: keyword "eval" in tool name |
| growsurf_program_design_advisor | no tags | |
| growsurf_troubleshoot_referral_tracking | no tags | |
| growsurf_mobile_sdk_guide | no tags | |
| growsurf_api_library_snippets | no tags | |
| growsurf_get_campaign | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_list_campaigns | no tags | |
| growsurf_create_campaign | no tags | |
| growsurf_update_campaign | no tags | |
| growsurf_clone_campaign | no tags | |
| growsurf_list_campaign_rewards | no tags | |
| growsurf_create_campaign_reward | no tags | |
| growsurf_update_campaign_reward | no tags | |
| growsurf_delete_campaign_reward | no tags | |
| growsurf_list_program_resources | no tags | |
| growsurf_prepare_program_resource_file | no tags | |
| growsurf_create_program_resource | no tags | |
| growsurf_update_program_resource | no tags | |
| growsurf_delete_program_resource | no tags | |
| growsurf_get_campaign_design | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_update_campaign_design | no tags | |
| growsurf_get_campaign_emails | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_update_campaign_emails | no tags | |
| growsurf_get_campaign_options | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_update_campaign_options | no tags | |
| growsurf_get_campaign_installation | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_update_campaign_installation | no tags | |
| growsurf_capture_referral_flow_screenshots | no tags | |
| growsurf_create_account | no tags | |
| growsurf_get_team | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_update_team | no tags | |
| growsurf_request_team_verification | no tags | |
| growsurf_resend_team_owner_verification_email | no tags | |
| growsurf_get_campaign_analytics | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_get_campaign_activation_analytics | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_list_integrations | no tags | |
| growsurf_list_campaign_webhooks | no tags | |
| growsurf_create_campaign_webhook | external-sink | external-sink: keyword "webhook" |
| growsurf_update_campaign_webhook | external-sink | external-sink: keyword "webhook" |
| growsurf_delete_campaign_webhook | external-sink | external-sink: keyword "webhook" |
| growsurf_test_campaign_webhook | external-sink | external-sink: keyword "webhook" |
| growsurf_list_participants | no tags | |
| growsurf_get_participant | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_add_participant | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_update_participant | no tags | |
| growsurf_bulk_delete_participants | no tags | |
| growsurf_email_participant | no tags | |
| growsurf_get_participant_analytics | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_get_participant_activity_logs | no tags | |
| growsurf_trigger_referral | no tags | |
| growsurf_cancel_delayed_referral | no tags | |
| growsurf_get_participant_payout_destination | no tags | |
| growsurf_request_participant_payout_destination_confirmation | no tags | |
| growsurf_record_sale | no tags | |
| growsurf_refund_transaction | no tags | |
| growsurf_create_mobile_participant_token | untrusted-input | untrusted-input: keyword "fetch" |
| growsurf_participant_auth_hash | no tags | |
| growsurf_webhook_normalize | external-sink | external-sink: keyword "webhook" |
| growsurf_client_snippets | no tags | |
| growsurf_embeddable_element_snippet | no tags | |
| growsurf_grsf_config_snippet | no tags | |
| growsurf_get_integration_connect_link | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.19.13. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish GrowSurf can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.