GrowSurf MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GrowSurf MCP ServerCreate a referral program for my fitness app with a 20% discount reward."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GrowSurf MCP Server
The official GrowSurf command-line interface (CLI) and open-source Model Context Protocol (MCP) server for implementing GrowSurf referral and affiliate programs with guided steps and safe REST API wrappers.
Connect it to an AI agent and, in plain language, the agent can create a referral or affiliate program, configure rewards, install tracking, add and manage participants, and read analytics, all backed by the GrowSurf REST API.
Learn more about GrowSurf at https://growsurf.com
Learn more about this MCP server at https://docs.growsurf.com/build-with-ai
Who is this for
This MCP server is for:
Developers using MCP-compatible tools (Claude Code, Codex, Cursor, Copilot, and other MCP clients)
Teams that want guided, AI-assisted GrowSurf integrations
This MCP server is NOT for:
Browser-only users who want a local stdio install. ChatGPT web, Claude.ai, and Claude Desktop do not run a local MCP server, but all three connect to GrowSurf through the hosted remote connector at
https://mcp.growsurf.com. See the full client list and setup at https://docs.growsurf.com/build-with-ai#mcp.
Related MCP server: SurfRank MCP Server
What you get
Guided Integration:
Universal Code install
Native iOS/Android SDK implementation guidance
Native GrowSurf Window guidance
Signup flow
Qualifying action flow
Affiliate sale / transaction tracking
Webhooks
Agent Recipes:
MCP prompts for creating referral programs, creating affiliate programs, embedding the widget, listing and fetching programs and participants, configuring rewards, wiring webhooks, and reading analytics
Installable Agent Skill bundle at
skills/growsurf-agent-toolkitSteering to review starter Design, Emails, Options, Installation, rewards, and GrowSurf Window content before patching
One-shot program-creation eval prompts and acceptance checks for starter content and configuration review
Happy‑Path REST API Wrappers:
Create an account and get an API key with no existing credentials
Read and rename the bound team, request team verification, and resend the team owner's verification email
List and get campaigns
Get campaign analytics (totals, optional per-period time series, email metrics, previous-period totals, status counts, and rates)
Create, update, and clone programs (campaigns)
List, create, update, and delete campaign rewards
Get/update Design, Emails, Options, and Installation config
Capture temporary GrowSurf preview screenshots when the user explicitly asks for visual proof
List, create, update, delete, and test program webhooks
List, get, and add participants
Update a participant, email a participant, and get a participant's analytics and activity logs
Trigger referral credit (for referral programs), with optional delayed award (1-90 days)
Cancel a pending delayed referral trigger (for referral programs)
Record affiliate sale/transaction (for affiliate programs)
Create mobile participant tokens for signed-in native app users
Official API Library Snippets:
TypeScript
Python
PHP
Ruby
Java
Helpers:
Compute participant auto-auth HMAC hash
Normalize webhook payloads
Generate best‑effort idempotency keys for webhook deduplication
Requirements
Node.js 22+
A GrowSurf account for hosted OAuth
A GrowSurf API key for local stdio setup or manual API-key remote setup. A scoped key works as long as it has access to the tools and programs you want the agent to use.
A campaign (program) ID for campaign-scoped tools. Set
GROWSURF_CAMPAIGN_IDas the default, pass acampaignIdargument to target a specific program, or callgrowsurf_list_campaignsto find available programs. For a newly created program, pass theidreturned bygrowsurf_create_campaignto the other tools.Static guidance/snippet tools can run without credentials
Exception:
growsurf_create_accountneeds no API key. It creates a new account and returns an API key. Team-level tools do not need a campaign ID.Every listed tool publishes standard MCP read-only, destructive, idempotent, and open-world safety hints. Scoped business actions stay available; API-key rotation is intentionally not an MCP tool. Rotate keys in GrowSurf Settings or through a direct REST/SDK client.
Official CLI
The npm package installs the growsurf-mcp command. Run it without a global install:
npx -y @growsurfteam/growsurf-mcpThe CLI starts GrowSurf's local stdio MCP server. Set GROWSURF_API_KEY for API-backed actions and GROWSURF_CAMPAIGN_ID for a default program. Public developer resources and static integration guidance work without credentials.
Inspect the installed command without starting the stdio server:
npx -y @growsurfteam/growsurf-mcp --help
npx -y @growsurfteam/growsurf-mcp --versionSupported MCP Hosts
The recommended path is GrowSurf's hosted OAuth endpoint at https://mcp.growsurf.com when your host supports remote Streamable HTTP with OAuth. Use the local npx server when your host needs a stdio process or manual API-key setup. No GrowSurf account yet? An agent can connect to the hosted onboarding endpoint https://mcp.growsurf.com/onboard with no credentials and call growsurf_create_account to sign up.
The GrowSurf MCP server works with any MCP-compatible host. The examples below cover a few config-based and CLI hosts. For the complete, current list of supported clients (including ChatGPT web, Claude.ai, Claude Desktop, GitHub Copilot, Gemini CLI, Devin Desktop, and Cline) with step-by-step setup, see https://docs.growsurf.com/build-with-ai#mcp.
Cursor
Claude Code (CLI-based)
Antigravity
Codex (CLI-based)
Cursor
Open or create Cursor's global MCP configuration at
~/.cursor/mcp.json.Add a server named
growsurfwith the hosted OAuth endpoint:
{
"mcpServers": {
"growsurf": {
"type": "http",
"url": "https://mcp.growsurf.com"
}
}
}For local stdio instead, use:
{
"mcpServers": {
"growsurf": {
"command": "npx",
"args": ["-y", "@growsurfteam/growsurf-mcp"],
"env": {
"GROWSURF_API_KEY": "YOUR_API_KEY",
"GROWSURF_CAMPAIGN_ID": "YOUR_CAMPAIGN_ID"
}
}
}
}Claude Code (CLI-based)
Open your terminal and connect Claude Code to the hosted OAuth endpoint:
claude mcp add --transport http --scope user growsurf https://mcp.growsurf.com
claude mcp login growsurfFor local stdio instead, install the server directly into Claude Code:
claude mcp add growsurf \
-e GROWSURF_API_KEY=your_api_key \
-e GROWSURF_CAMPAIGN_ID=your_campaign_id \
-- npx -y @growsurfteam/growsurf-mcpAntigravity
Open Antigravity.
Click the … menu in the panel to the right and select MCP Servers.
Click Manage MCP Servers > View raw config.
Recommended: in the
mcp_config.jsonfile, add the hosted OAuth endpoint:
{
"mcpServers": {
"growsurf": {
"serverUrl": "https://mcp.growsurf.com"
}
}
}Save the config, open Settings > Customizations, and select Authenticate for GrowSurf.
For local stdio instead, use:
{
"mcpServers": {
"growsurf": {
"command": "npx",
"args": ["-y", "@growsurfteam/growsurf-mcp"],
"env": {
"GROWSURF_API_KEY": "YOUR_API_KEY",
"GROWSURF_CAMPAIGN_ID": "YOUR_CAMPAIGN_ID"
}
}
}
}Codex
Recommended: connect Codex to the hosted OAuth endpoint:
codex mcp add growsurf --url https://mcp.growsurf.com
codex mcp login growsurfOr create or edit ~/.codex/config.toml:
[mcp_servers.growsurf]
url = "https://mcp.growsurf.com"For local stdio instead, add the following:
[mcp_servers.growsurf]
command = "npx"
args = ["-y", "@growsurfteam/growsurf-mcp"]
[mcp_servers.growsurf.env]
GROWSURF_API_KEY = "YOUR_API_KEY"
GROWSURF_CAMPAIGN_ID = "YOUR_CAMPAIGN_ID"Or configure local stdio from the CLI:
codex mcp add growsurf \
--env GROWSURF_API_KEY=YOUR_API_KEY \
--env GROWSURF_CAMPAIGN_ID=YOUR_CAMPAIGN_ID \
-- npx -y @growsurfteam/growsurf-mcpConfiguration
Set the following environment variables when running the MCP server:
GROWSURF_API_KEY(optional for startup; required for API-calling tools. Use a key with the scopes and program access those tools need)GROWSURF_CAMPAIGN_ID(optional; the default program for campaign-scoped tools. A tool'scampaignIdargument overrides it, so a single server can operate on any of your programs)GROWSURF_API_BASE_URL(optional; defaults tohttps://api.growsurf.com/v2. Useful for local or hosted MCP gateways that should call a different GrowSurf API origin)GROWSURF_PARTICIPANT_AUTH_SECRET(optional; used by the hash helper)GROWSURF_WEBHOOK_TOKEN(optional; used for your own webhook URL token scheme)
Run with npx
After publishing this package, customers can run:
npx @growsurfteam/growsurf-mcpFor local development in this repo:
npm install
npm run build
node dist/cli.jsMCP tools
Every tool declares an MCP output schema and returns structuredContent, so hosts know each tool's result shape. REST tools return the API response (plus a JSON text block for older clients); the guidance and snippet tools return their markdown document under markdown.
Guided Integration
growsurf_integration_guideStep-by-step guidance for implementing a GrowSurf referral or affiliate program.growsurf_mobile_sdk_guideNative iOS/Android SDK guidance for attribution,shareUrl,trackShare, and the native GrowSurf Window.growsurf_api_library_snippetsOfficial REST API library snippets for TypeScript, Python, PHP, Ruby, and Java.growsurf_get_integration_connect_linkGet a dashboard link that opens a specific integration's connect panel (Stripe, PayPal, Tango Card, Mailchimp, and many more). Hand it to the user when they want to connect one. Connecting happens in the dashboard, not through the API.
Client & UI Snippets
growsurf_client_snippetsJavaScript SDK, GrowSurf Window, and embeddable examples. Includes a reminder to use a frontend design workflow when placing or styling embeddable UI.growsurf_embeddable_element_snippetHTML snippet for a specific GrowSurf embeddable element.growsurf_grsf_config_snippet<head>snippet for configuringwindow.grsfConfigand participant auto-auth.
Account onboarding
growsurf_create_accountCreate a GrowSurf account and get an API key. This is the only tool that does not requireGROWSURF_API_KEY. The returned key is shown once and locked (403EMAIL_NOT_VERIFIED_ERROR) until the owner verifies their email. The key is rotated on the owner's first dashboard sign-in. Creating an account agrees, on the account holder's behalf, to GrowSurf's Terms of Service and Privacy Policy.
Team
growsurf_get_teamFetch the team bound to the API key or OAuth connection, including its GrowSurf verification state.growsurf_update_teamUpdate the bound team's display name.growsurf_request_team_verificationAsk GrowSurf to verify the bound team, which is required before a program can email participants.growsurf_resend_team_owner_verification_emailResend the verification email to the bound team's owner without revealing their email address.
API & Tracking
growsurf_get_campaignFetch campaign configuration.growsurf_list_campaignsList programs available to the credential. Use this to find acampaignIdbefore calling campaign-scoped tools.growsurf_get_campaign_analyticsFetch program analytics, with optional per-periodseries, comparison, status, rate, and email delivery and engagement data viainclude=email.growsurf_create_campaignCreate a new program (campaign) with type-appropriate starter content and optional inline rewards (only needsGROWSURF_API_KEY, notGROWSURF_CAMPAIGN_ID). Review the seeded Design, Emails, Options, Installation, rewards, and GrowSurf Window content before patching.growsurf_agent_program_creation_evalGenerate one-shot program-creation eval prompts and acceptance checks for starter content, conservative rewards, configuration review, frontend install proof, and clean public copy.growsurf_update_campaignUpdate the program's identity and lifecycle: name, company branding, and status (only the fields you send are changed).growsurf_clone_campaignClone the program into a newDRAFTprogram (integrations and credentials are not copied).growsurf_list_campaign_rewardsList the program's configured rewards.growsurf_create_campaign_rewardCreate a campaign reward.growsurf_update_campaign_rewardUpdate a campaign reward by its reward key.growsurf_delete_campaign_rewardDelete a campaign reward by its reward key.growsurf_get_campaign_design/growsurf_update_campaign_designRead or patch design configuration, including the Program Editor Design tab and payout-destination confirmation page copy.growsurf_get_campaign_emails/growsurf_update_campaign_emailsRead or patch the Program Editor Emails tab config.growsurf_get_campaign_options/growsurf_update_campaign_optionsRead or patch the Program Editor Options tab config.growsurf_get_campaign_installation/growsurf_update_campaign_installationRead or patch the Program Editor Installation tab config.growsurf_capture_referral_flow_screenshotsCapture temporary GrowSurf preview screenshots for the current program after the user explicitly asks for visual proof. This returns the controlled referrer Window and referred-friend experience; use browser automation instead to prove the user's installed site.growsurf_list_campaign_webhooksList the program's webhooks (secrets are never returned).growsurf_create_campaign_webhookAdd a webhook to the program (with events and a write-only signing secret).growsurf_update_campaign_webhookUpdate a webhook by id (primaryfor the program's primary webhook).growsurf_delete_campaign_webhookRemove a webhook by id.growsurf_test_campaign_webhookSend a live test event to a webhook using its stored URL and secret.growsurf_add_participantAdd a participant (or referred participant) during signup.growsurf_list_participantsList participants in the current program, paginated bynextId. Use this to find a participant ID before calling participant-scoped tools.growsurf_get_participantFetch one participant by GrowSurf participant ID or email address.growsurf_update_participantUpdate a participant by ID or email (including internalnotes).growsurf_bulk_delete_participantsPermanently delete up to 200 participants (by ID and/or email, mixed lists allowed) in one request, with per-rowDELETED/NOT_FOUND/DUPLICATE/ERRORresults. Irreversible — removes the participants' referrals, rewards, commissions, and payout records.growsurf_email_participantEmail a participant using a configured template or a free-form subject/body.growsurf_get_participant_analyticsFetch one participant's engagement, rank, share, affiliate revenue, commission, payout, and optional email metrics. Useinclude=series,include=email, or both comma-separated.growsurf_get_participant_activity_logsList a participant's activity logs (offset/limit paginated).growsurf_trigger_referralTrigger referral (for referral programs only). Optionally passdelayInDays(1-90) to hold the credit for N days before awarding it (e.g. to cover a refund window).growsurf_cancel_delayed_referralCancel a pending delayed referral trigger before the delay elapses (e.g. on refund/cancellation).growsurf_get_participant_payout_destinationGet a participant's payout-destination status across every provider enabled for the program (PayPal and/or Wise): per-provider status, confirmed payout email, legal recipient type, and repair reason.growsurf_request_participant_payout_destination_confirmationAsk a participant to confirm their payout destination for a provider — sends them a one-time confirmation link (only the participant can confirm).growsurf_record_saleRecord affiliate sales or transactions (for affiliate programs only).growsurf_refund_transactionRecord an amendment (refund, partial refund, or chargeback) against a recorded transaction; reverses or adjusts the referrer's commission (for affiliate programs only). The inverse ofgrowsurf_record_sale.growsurf_create_mobile_participant_tokenCreate or fetch a participant, then create a participant-scoped mobile SDK token for a signed-in mobile user.
Helpers
growsurf_participant_auth_hashGenerate participant auto-auth HMAC hashes (to authenicate participants automatically).growsurf_webhook_normalizeNormalize webhook payloads and generate idempotency keys (to deduplicate webhook deliveries).
Webhooks
GrowSurf webhooks notify your server when important referral or affiliate events occur, such as when new objects like participants, referrals, rewards, or transactions are created. Here are common use-cases:
Fulfill rewards automatically
Maintain internal points or credit systems
Sync participant and referral data into your database
Duplicate Delivery Handling
Webhook handlers should be idempotent because the same event can arrive more than once. Store an idempotency key before changing anything in your system.
Webhook Security & Idempotency
GrowSurf signs webhook deliveries when the webhook has a secret configured: each delivery includes a GrowSurf-Signature HMAC header computed with that secret (the secret is write-only and never returned). To securely use webhooks, we recommend the following:
Set a
secreton the webhook and verify theGrowSurf-Signatureheader on receiptValidate the payload shape and expected event type
Deduplicate webhook events using an idempotency key, because the same event can arrive more than once
The GrowSurf MCP server provides a helper tool (growsurf_webhook_normalize ) that normalizes webhook payloads and generates a best-effort idempotency key to simplify safe webhook processing.
Development and Testing
npm run dev
npm testAdditional Resources
Read developer docs at the following:
JavaScript SDK reference: https://docs.growsurf.com/developer-tools/javascript-sdk/api-reference
REST API reference: https://docs.growsurf.com/developer-tools/rest-api/api-reference
REST API libraries: https://docs.growsurf.com/developer-tools/rest-api/api-libraries
Native mobile guide: https://docs.growsurf.com/getting-started-for-native-mobile
Android SDK: https://docs.growsurf.com/developer-tools/android-sdk
Getting Started with GrowSurf: https://docs.growsurf.com/getting-started
The GrowSurf MCP server helps GrowSurf customers implement referral programs and affiliate programs quickly.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityCmaintenanceEnables users to manage affiliate marketing directly within Claude by connecting to the Affilync platform. Affiliates can search campaigns and track earnings, while brands can create campaigns, monitor performance, and manage affiliate applications through natural language.201
- AlicenseAqualityDmaintenanceEnables AI assistants to access SurfRank's AI visibility analytics platform through 24 tools. It allows agents to run AI-visibility reports, research keywords, track competitors, and manage projects directly from chat interfaces.249MIT
- AlicenseAqualityDmaintenanceEnables AI agents to access affiliate marketing capabilities through AgentFuse's API, allowing them to browse affiliate programs, generate tracked links, and record conversions without writing HTTP code.738MIT
- FlicenseAqualityDmaintenanceEnables AI agents to automate sales outreach, research leads, and manage campaigns directly in OutreachPilot via natural language commands.31
Related MCP Connectors
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
Agent-first waitlists: hosted signup pages with referral ranking. One tool call returns a live page.
Create and manage AI agents that collaborate and solve problems through natural language interacti…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/growsurf/growsurf-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server