LinkJolt MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINKJOLT_API_KEY | No | Your LinkJolt API key, created at linkjolt.io/merchant/api-keys. Without it, only the three tools that need no account work. | |
| LINKJOLT_MCP_URL | No | Points the relay at another server for tests or local development. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
LinkJolt runs affiliate programs for SaaS and online businesses. These tools are for a business paying affiliates to promote its own product. If the person wants to earn commissions by promoting other businesses' products, they are not for them: say so, point them to https://www.linkjolt.io/programs to find programs to join, and do not set up a business or campaign for them. Before anyone signs in, plan_affiliate_program suggests a commission from published benchmarks, get_linkjolt_plans gives prices and the free trial, and switch_from_another_tool gives the page that moves a program from Rewardful, Tolt, FirstPromoter or Affonso (the old API key is pasted there, never in the chat). Every other tool works on the signed-in account's brand, and calling one asks the person to sign in or create an account. To set a program up: get_setup_status first; an account made from this chat starts with a placeholder business (business.needsDetails is true), so confirm the real name and website with the person and save them with update_business; then create_campaign, get_tracking_instructions and invite_affiliate; connecting Stripe or another payment platform happens in the browser at the link get_setup_status gives (Stripe is one click). After the tracking script is added, check_tracking confirms it works, and shows a test-mode purchase once the person has made one. Confirm a campaign's commission and an invitation's address with the person before creating them. To run the program: update_campaign changes a campaign (send only what changes) and update_affiliate_status approves or rejects an affiliate waiting for review; confirm each change with the person before calling. The rest reads campaigns, affiliates, conversions, coupons, payouts, teams and stats, plus three deliberate writes (create_conversion, update_conversion, create_coupon). Amounts are in each record's own currency. If a call returns a plan or permission error, the account's LinkJolt plan does not include that endpoint. A new account is connected before its free trial starts: it can read the setup and name the business, and create_campaign and invite_affiliate answer with the link to start the trial. Plan the program with the person first, give them that link when they want to launch, and call again once they say it has started.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {
"mimeTypes": [
"text/html;profile=mcp-app"
]
}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| plan_affiliate_programA | Plan an affiliate program for a product before launching it: a commission rate, whether to pay on renewals, and how to approve affiliates, from LinkJolt's published benchmarks of real SaaS programs, plus what an affiliate would earn per sale at typical rates. Needs no LinkJolt account. Use it when someone asks what commission to offer or how to structure a program. |
| get_linkjolt_plansA | LinkJolt's plans and prices, each plan's monthly tracked-sales limit, what this connector can do on each plan, and how the free trial works. Needs no LinkJolt account. Use it when someone asks what LinkJolt costs or which plan they need. |
| switch_from_another_toolA | How to move an affiliate program to LinkJolt from Rewardful, Tolt, FirstPromoter or Affonso, or from anything else by CSV: the page where the person pastes their old tool's API key, and what happens after (LinkJolt fills in the campaign, imports the affiliates with their old links still working, gives one prompt for their coding tool, and emails the affiliates). Never ask for or accept an API key in the chat: the person pastes it on that page. Needs no LinkJolt account to call. |
| get_setup_statusA | Where this LinkJolt account is in setting up its affiliate program: the business name and website, the launch steps (business details, campaign, payment connection, first affiliate, first sale) with the next one to do, the tracking script tag for the site and whether it has been seen, and each campaign's join link. Call it first when helping someone set up or launch. When business.needsDetails is true the name is a placeholder LinkJolt made at sign-up (from the email domain, or the person's first name): ask for the real one. Connecting Stripe or another payment platform can only be done by the person in the browser; connectLinks gives Stripe's one-click link for this account and the page for the others. Requires Pro plan or higher, or a new account that has not picked a plan yet. |
| update_businessA | Set the business name and website for this LinkJolt account (the brand the connection belongs to). Affiliates see the name on the join page and in emails. Send either or both. Requires Pro plan or higher, or a new account that has not picked a plan yet; live keys only. |
| create_campaignA | Create an affiliate campaign: what affiliates earn per sale and where their links send people. Returns the campaign and its joinUrl, the link to share with affiliates so they can sign up. Confirm the commission with the user before calling. A new campaign is active at once and, unless isPublic is false, listed in LinkJolt's Discovery marketplace where affiliates browse programs. Recurring commissions pay on renewals too. The plan's campaign limit applies. Requires Pro plan or higher; live keys only. |
| update_campaignA | Change an existing campaign: its name, description, where links send people, status (active, or inactive to pause it), the commission, whether it is listed in the Discovery marketplace, whether new affiliates are approved automatically, or the recurring commission terms. Send only what changes; everything else stays as it is. Confirm the exact change with the user before calling, because affiliates see the new terms at once. Commission tiers, coupon codes, files and prices are changed on the dashboard. Returns the campaign and |
| invite_affiliateA | Email one person an invitation to join a campaign as an affiliate. This sends a real email in the business's name, so confirm the address and campaign with the user first. Refused when the person is already on the campaign or already has a waiting invitation. At most 10 a minute. Requires Pro plan or higher. |
| update_affiliate_statusA | Approve or reject an affiliate who applied to a campaign and is waiting for review (list_affiliates with status pending shows who is waiting, with each campaign they applied to). Approving lets them promote the campaign at once: they get their link by email, and a coupon code too when the campaign makes them. Rejecting is final from here: they cannot apply again, and only the dashboard can let them back in. Confirm each decision with the user before calling. This never approves sales or commissions. Requires Pro plan or higher. |
| get_tracking_instructionsA | The steps to track affiliate sales on one payment platform, filled in with this account's own tracking script and webhook address: the same text the Integrations page gives to AI assistants. Use it to help add the tracking script to the site and pass the referral to checkout, then check_tracking to confirm it works. Connecting the platform itself happens in the browser (connectLinks: Stripe in one click, the others on the Integrations page), and for Stripe, Paddle, Polar and Creem connecting there sets up the webhook, so a manual webhook step is only needed without that connection. Requires Pro plan or higher, or a new account that has not picked a plan yet. |
| check_trackingA | Check that affiliate tracking works, after the tracking script has been added: fetches a page of the site (the business website unless url is given) and looks for this account's tag, then says whether a browser has run the script, whether a payment platform is connected, and whether a test-mode purchase has reached LinkJolt (the one tool that shows test sales). Each check comes with a sentence and next names the first thing left to do. Run it after the script is deployed, and again after the person buys once in their payment platform's test mode through an affiliate link. Requires Pro plan or higher, or a new account that has not picked a plan yet. |
| list_campaignsA | List the affiliate campaigns on this LinkJolt account (the brand the API key belongs to), with stats. Requires Pro plan or higher. |
| get_campaignA | Get one campaign with full detail, including affiliate count. Requires Pro plan or higher. |
| list_affiliatesA | List affiliates across your campaigns, with earnings and click counts. Requires Pro plan or higher. |
| list_conversionsA | List conversions (tracked sales) with filters for status, campaign, affiliate and date range. Requires Pro plan or higher. |
| get_statsA | Get aggregate stats for the brand: revenue, commissions, conversions, clicks (optionally within a date range), with money also listed per currency in byCurrency. Requires Pro plan or higher. |
| create_conversionA | Manually record a conversion (a sale to credit to an affiliate). Like any tracked sale, a live one notifies the merchant's team and emails the affiliate it credits. Requires an Ultimate or Scale plan key with write access. Test keys record test data and email nobody. |
| update_conversionA | Approve or reject a pending conversion. Requires an Ultimate or Scale plan key with write access. Refunded conversions are terminal and cannot be changed. Approving a conversion whose commission is more than 5 times its sale (or any commission on a zero sale) is refused with commission_above_sale and changes nothing; show the user the returned sentence and set confirmAboveSale to true only after they confirm. If automatic payouts are switched on for the brand, approving a conversion queues its commission for the next automatic payout run (at least a day later, Stripe payouts only; affiliates paid by PayPal or Wise are paid by hand), and rejecting an approved one takes it back out of that queue. This tool never sends money itself. |
| list_teamsA | List Affiliate Teams with rosters, targets and pending awards. Requires the Scale plan. |
| get_teamA | Get one Affiliate Team with members, campaigns and goals. Requires the Scale plan. |
| list_team_goalsA | List a team's targets and current-period progress. Requires the Scale plan. |
| list_awardsA | List team bonus awards across all teams, for reconciliation. Read-only: approving awards is deliberately not available to assistants. Requires the Scale plan. |
| list_couponsA | List registered affiliate coupon codes. Requires Pro plan or higher. |
| create_couponA | Give an affiliate a discount code so sales using it are credited to them. With createInProvider true, LinkJolt creates the code in the brand's connected Stripe, Polar or Creem (the one it creates codes in unless provider is given), as the dashboard's Add coupon does: set percentOff, or amountOff with currency, and duration (once, forever, or repeating with durationInMonths). Without it, the code must already exist in the payment platform and this registers it (for a Stripe code customers type, pass its promo_ id). Confirm the code, the discount and the affiliate with the person first. If no platform that creates codes is connected, the answer gives the link to connect Stripe. Requires an Ultimate or Scale plan key with write access; a test key only registers. |
| list_payoutsA | List the affiliate payout queue for reconciliation. Requires Pro plan or higher. |
| searchA | Use this to find records in the caller's own LinkJolt affiliate program by free text: campaign names, affiliate names or emails, coupon codes, and conversion order ids or customer names. Returns result ids that the fetch tool resolves to full records. Requires Pro plan or higher. |
| get_program_overviewA | This month's program snapshot in one call: revenue, conversions, commissions, top affiliates by commission, and the most recent conversions. In clients that show MCP Apps cards (Claude, ChatGPT) this renders as an interactive card; other clients get the same data as JSON. Requires Pro plan or higher. |
| fetchA | Use this to fetch the full record behind a search result id (campaign:, affiliate:, coupon:, or conversion:). Requires Pro plan or higher. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| weekly_performance_review | Summarize how the affiliate program performed: revenue, conversions, top affiliates, and anything that needs attention. |
| reconcile_pending_conversions | Triage conversions awaiting approval and recommend what to do with each. Never approves anything on its own. |
| draft_affiliate_update | Draft a short monthly program update email to send to affiliates, grounded in real numbers. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| program_overview | Interactive Program overview card: month revenue, top affiliates, recent conversions |
TDQS
Scored across 28 tools
Most tools target a distinct resource+action, and the long descriptions clarify boundaries (e.g. check_tracking vs get_tracking_instructions, list_teams vs get_team vs list_team_goals). A few pairs overlap: get_campaign vs fetch(campaign:<id>), and get_stats vs get_program_overview both return revenue/commission snapshots. These are distinguishable from the descriptions but require reading them carefully.
The vast majority follow a snake_case verb_noun pattern (list_campaigns, create_conversion, update_affiliate_status). Deviations are the bare generic verbs `search` and `fetch` and the vague `switch_from_another_tool`. Minor inconsistencies, still readable.
28 tools is heavy and sits above the comfortable range, though the domain is genuinely broad (onboarding, campaigns, affiliates, conversions, coupons, payouts, teams, tracking). Several tools are informational rather than operational (get_linkjolt_plans, plan_affiliate_program, switch_from_another_tool), and some list/get pairs could likely be consolidated.
The surface covers the affiliate lifecycle well: setup, campaigns, affiliates, conversions, coupons, payouts, teams, and tracking verification, plus search/fetch for lookup. Gaps remain — no delete/archive for campaigns or coupons, no single-affiliate get beyond search/fetch, and payouts/awards are read-only (some deliberately so). Agents can work around most of these via update or the dashboard.