Skip to main content
Glama
growsurf

GrowSurf MCP Server

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GROWSURF_API_KEYNoOptional for startup; required for API-calling tools. Use a key with the scopes and program access those tools need.
GROWSURF_CAMPAIGN_IDNoOptional; the default program for campaign-scoped tools. A tool's campaignId argument overrides it, so a single server can operate on any of your programs.
GROWSURF_API_BASE_URLNoOptional; defaults to https://api.growsurf.com/v2. Useful for local or hosted MCP gateways that should call a different GrowSurf API origin.https://api.growsurf.com/v2
GROWSURF_WEBHOOK_TOKENNoOptional; used for your own webhook URL token scheme.
GROWSURF_UPLOAD_ALLOWED_ORIGINSNoRequired only for FILE Resource uploads; a comma-separated private allowlist of exact HTTPS origins accepted from GrowSurf upload tickets. Wildcards and URL paths are rejected.
GROWSURF_PARTICIPANT_AUTH_SECRETNoOptional; used by the hash helper.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}
prompts
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
growsurf_integration_guideC

Generate a guided, happy-path GrowSurf integration plan (referral + affiliate).

growsurf_agent_program_creation_evalA

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.

growsurf_program_design_advisorA

Use for program designs, benchmarks, typical rewards, and metric definitions, including participant-to-referral and lead-to-referral ratios. Read-only; call with known context before asking questions. Returns a short draft, complete benchmarkFacts to quote, exact configurationPlan tool calls, and unresolved decisions. Preserve the calls and leave unresolved incentives open. Use the default summary for first designs and configuration drafts; use detail: full when the user requests detailed benchmark tables or a specific figure absent from the summary. Hosted figures describe GrowSurf's high-performing programs; without a bundle, guidance is documentation-based. Use programType: AFFILIATE for affiliates and industry: other for local services, pets, hospitality, or agencies. All inputs are optional.

growsurf_troubleshoot_referral_trackingA

Call first for a program problem, even without a program or participant ID. It returns initial checks; ask for IDs before reading records. Covers referrals not credited, participant emails not sending, rewards not issued, participants not added, Universal Code not detected, an integration or CRM (HubSpot, Mailchimp, and others) not syncing, Zapier errors, fraud flags, analytics numbers that look wrong, and more. Returns the checks to run in order (with the read tool and field for each), the likely causes most common first, fixes, and doc links. Pass a symptom key; unknown keys return the available symptoms; a description is matched only when it contains a symptom's label or alias verbatim, otherwise the symptom list is returned.

growsurf_mobile_sdk_guideB

Generate native iOS/Android SDK 0.4.0 guidance, including attribution, shareUrl sharing, trackShare, and the native GrowSurf Window.

growsurf_api_library_snippetsC

Generate official REST API library snippets for TypeScript, Python, PHP, Ruby, and Java, including Create Mobile Participant Token.

growsurf_get_campaignA

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.

growsurf_list_campaignsA

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.

growsurf_create_campaignA

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.

growsurf_update_campaignA

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 once at program creation), so this tool does not accept them. Editor-tab config (design, emails, options, installation) is edited with the dedicated config sub-resource tools, not here. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_clone_campaignA

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.

growsurf_list_campaign_rewardsA

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.

growsurf_create_campaign_rewardA

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.

growsurf_update_campaign_rewardA

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.

growsurf_delete_campaign_rewardA

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.

growsurf_list_program_resourcesA

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.

growsurf_prepare_program_resource_fileA

Prepare a local file for a FILE Program Resource. Pass the safe file name, matching supported MIME type, and padded base64 bytes (10 MB maximum). GrowSurf requests a one-time ticket and uploads only to the secure HTTPS destination selected by GrowSurf. The result contains only uploadTicket and uploadResult; pass both unchanged to growsurf_create_program_resource or growsurf_update_program_resource. The tool does not accept upload URLs or credentials and never retries an ambiguous upload. This tool is the only source of uploadTicket and uploadResult, and it needs GROWSURF_UPLOAD_ALLOWED_ORIGINS set on the server; without it, FILE resources are unavailable and only LINK and TEXT resources can be created. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_create_program_resourceA

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.

growsurf_update_program_resourceA

Update at least one participant resource field, or move it to a zero-based position. Only sent fields change. To replace a FILE, call growsurf_prepare_program_resource_file first and pass its uploadTicket and uploadResult unchanged. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_delete_program_resourceA

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.

growsurf_get_campaign_designA

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.

growsurf_update_campaign_designA

Update the design configuration for your GrowSurf program, including participant avatars under participantAvatarStyle, referred-visitor content such as the Claim Offer Popup, participant sign-in copy under login, and payout-destination confirmation page copy under payoutDestinationConfirmation. participantAvatarStyle accepts CHARACTERS, INITIALS, ANIMALS, or GRADIENT. Only the fields you send are changed; anything you leave out is untouched (arrays replace wholesale). Fetch the configuration first, preserve starter content unless the user asked to change it, then pass just the fields you want to change under fields. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_get_campaign_emailsA

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.

growsurf_update_campaign_emailsA

Update the Emails tab configuration for your GrowSurf program. Only the fields you send are changed; anything you leave out is untouched (arrays replace wholesale). Pass just the fields you want to change under fields. To see the full object with every field and its current value, fetch the tab first, then send back only what you want to change. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_get_campaign_optionsA

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.

growsurf_update_campaign_optionsA

Update the Options tab configuration for your GrowSurf program. Only the fields you send are changed; anything you leave out is untouched (arrays replace wholesale). Pass just the fields you want to change under fields. To see the full object with every field and its current value, fetch the tab first, then send back only what you want to change. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_get_campaign_installationA

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.

growsurf_update_campaign_installationA

Update the Installation tab configuration for your GrowSurf program. Only the fields you send are changed; anything you leave out is untouched (arrays replace wholesale). To let GrowSurf run on another origin, such as http://localhost:3000, add that origin to allowedUrls and preserve the rest of the array; a browser origin missing from both shareUrl and allowedUrls can return 403. Leave shareUrl out of the patch unless the customer asked for a different landing page: every referral link already shared points at the current one. A patch that would replace a Share URL that is already set is refused until you confirm it with the customer and resend with replaceExistingShareUrl: true. Fetch the tab first, then pass just the fields you want to change under fields. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_capture_referral_flow_screenshotsA

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.

growsurf_create_accountA

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.

growsurf_get_teamA

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.

growsurf_update_teamA

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.

growsurf_request_team_verificationA

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 GROWSURF_API_KEY; does not require GROWSURF_CAMPAIGN_ID.

growsurf_resend_team_owner_verification_emailA

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 GROWSURF_API_KEY; does not require GROWSURF_CAMPAIGN_ID.

growsurf_get_campaign_analyticsA

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.

growsurf_get_campaign_activation_analyticsA

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.

growsurf_list_integrationsA

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.

growsurf_list_campaign_webhooksA

List your GrowSurf program's webhooks (secrets are never returned). Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_create_campaign_webhookA

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.

growsurf_update_campaign_webhookA

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.

growsurf_delete_campaign_webhookA

Remove a webhook from your GrowSurf program by id. Returns { id, success }. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_test_campaign_webhookA

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 receiving endpoint's response. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_list_participantsA

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. Use this when you need a participant ID before calling participant-scoped tools. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_get_participantA

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.

growsurf_add_participantA

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.

growsurf_update_participantA

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 enrolls the participant, while SUSPENDED and BANNED require an existing affiliate. Affiliate enrollment cannot be removed through REST. notes is freeform internal notes (never shown to participants). Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_bulk_delete_participantsA

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 — a 200 response can still include NOT_FOUND or ERROR rows, so check the summary. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_email_participantA

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.

growsurf_get_participant_analyticsA

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.

growsurf_get_participant_activity_logsA

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.

growsurf_trigger_referralA

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.

growsurf_cancel_delayed_referralA

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.

growsurf_get_participant_payout_destinationA

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.

growsurf_request_participant_payout_destination_confirmationA

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 the program. Returns { status, provider, providerDisplayName, expiresAt }. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_record_saleA

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 the referrer; reuse the same one when refunding. Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_refund_transactionA

Record an amendment (refund, partial refund, or chargeback) against a previously recorded affiliate transaction; reverses or adjusts the referrer's commission. The inverse of growsurf_record_sale. Identify the original transaction with the same identifier you sent when recording it (omit amountRefunded for a full refund). Already-paid commissions are not clawed back (recorded for tax only). Targets campaignId if you pass it, otherwise GROWSURF_CAMPAIGN_ID.

growsurf_create_mobile_participant_tokenA

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.

growsurf_participant_auth_hashA

Compute the server-side SHA-256 HMAC for GrowSurf Participant Auto Authentication. Set affiliateJoin only when this signed-in user may join the affiliate program directly.

growsurf_webhook_normalizeA

Validate/normalize a GrowSurf webhook payload and generate a best-effort idempotency key for dedupe.

growsurf_client_snippetsC

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.

growsurf_embeddable_element_snippetB

Generate the HTML snippet for a GrowSurf embeddable element (with optional auth attributes).

growsurf_grsf_config_snippetA

Generate the snippet for participant auto-auth using window.grsfConfig (place before the GrowSurf Universal Code).

growsurf_get_integration_connect_linkA

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.

Prompts

Interactive templates invoked by user choice

NameDescription
create_referral_programCreate and configure a GrowSurf referral program from the proven referral template.
create_affiliate_programCreate and configure a GrowSurf affiliate program from the proven affiliate template.
embed_referral_widgetProduce the installation plan and snippets for adding GrowSurf to a web app.
list_campaignsList GrowSurf programs so you can choose the right campaign id.
get_campaignFetch one GrowSurf program by campaign id.
list_participantsList participants in a GrowSurf program.
get_participantFetch one GrowSurf participant by id or email.
set_rewardsSafely review and adjust GrowSurf reward configs.
wire_webhooksPlan and configure GrowSurf webhooks for product automation.
read_analyticsAnalyze GrowSurf campaign or participant performance.
advise_program_designRecommend a referral program design for a business before creating or changing rewards.
troubleshoot_referral_trackingDiagnose why referrals, participants, rewards, or emails are not behaving as expected.

Resources

Contextual data attached and managed by the client

NameDescription
GrowSurf Agent and Developer IndexFirst-party links for understanding, integrating, and automating GrowSurf.

TDQS

A3.5/5.0

Scored across 63 tools

Disambiguation4/5

Most tools are clearly scoped by resource and action (campaign, participant, webhook, reward, resource), and the long descriptions remove much ambiguity. The main risk is the cluster of snippet/guide generators (client_snippets, embeddable_element_snippet, grsf_config_snippet, integration_guide), which can overlap for similar-looking requests.

Naming Consistency4/5

Nearly all tools follow the growsurf_ verb_noun snake_case pattern, and resource names are consistently ordered (e.g. get_campaign, update_participant, delete_campaign_webhook). The main deviations are noun-style guide/snippet tools like program_design_advisor, client_snippets, and participant_auth_hash, plus the object-first webhook_normalize.

Tool Count1/5

63 tools is far beyond the typical MCP tool surface and exceeds the rubric's 50+ extreme threshold. Even though GrowSurf is a broad platform, this volume makes the toolset heavy to navigate and select from.

Completeness4/5

The set covers campaigns, rewards, participants, resources, webhooks, analytics, integrations, team/account management, and diagnostics — very strong coverage of the domain. Minor gaps exist, such as no delete-campaign tool, no single-participant delete (bulk only), and no direct reward-fulfillment mutation, but agents can generally work around them.

Maintenance

ActivityActive
ResponsivenessNo issues