Skip to content

ReferralHero MCP by usefulapi

io.usefulapi/referralherousefulapi.iostreamable-httpv1.0.0Scanned

Read ReferralHero campaigns, subscribers, referrals and rewards; add subscribers and points.

28 tools: 12 can delete or cancel things, 3 change things and 13 only read.

Tools: 12 delete, 0 irreversible, 3 write, 13 read.
  • Reads private data · 3
  • Reads text others write · 28
  • Can send data out · 0
  • 1 finding

Anlyon alternative

15 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

28 tools

Deletes or cancels 12Claude Code: deny
  • referralhero_add_pointsWRITE: add points to an existing subscriber (not idempotent: each call adds again).Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_add_points" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add points to an existing subscriber (not idempotent: each call adds again). May unlock point-based rewards. The subscriber is identified by the campaign's unique identifier. POST /lists/{uuid}/subscribers/add_points.

    Annotations the server declares

    • title: Add points to a subscriber
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_add_subscriberWRITE: add a subscriber (or a referred person) to a campaign.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_add_subscriber" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add a subscriber (or a referred person) to a campaign. Give the campaign's unique identifier (email, phone, wallet or custom id). By default ReferralHero sends the subscriber a confirmation (double opt-in) email and any welcome automation of the campaign: set double_optin=false to suppress the confirmation email. Set referrer (a referral code or the referrer's email) to credit a referral. POST /lists/{uuid}/subscribers.

    Annotations the server declares

    • title: Add subscriber
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_confirm_referralWRITE: confirm a verified referral when its third conversion event happens (campaigns whose goal tracks three events; otherwise ReferralHero returns an error).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: confirm a verified referral when its third conversion event happens (campaigns whose goal tracks three events; otherwise ReferralHero returns an error). Confirming can unlock the referrer's rewards and send reward emails. Identify the referral by subscriber_id, or by the campaign's unique identifier. POST /lists/{uuid}/subscribers/{id}/confirm or /subscribers/confirm.

    Annotations the server declares

    • title: Confirm a referral
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • referralhero_delete_subscriberWRITE, DESTRUCTIVE: permanently delete a subscriber from a campaign, with their referral standing.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_delete_subscriber" says "delete": a word for removing or ending something.
    • The description says "permanently delete".
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE, DESTRUCTIVE: permanently delete a subscriber from a campaign, with their referral standing. This cannot be undone. DELETE /lists/{uuid}/subscribers/{id}.

    Annotations the server declares

    • title: Delete subscriber
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • referralhero_promote_subscriberWRITE: promote a subscriber to the campaign's winners list (contests and giveaways).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: promote a subscriber to the campaign's winners list (contests and giveaways). Only verified subscribers can be promoted; an already promoted subscriber returns an error. POST /lists/{uuid}/subscribers/{id}/promote.

    Annotations the server declares

    • title: Promote subscriber
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • referralhero_qualify_referralWRITE: mark a referral as qualified, so it counts toward the referrer's rewards.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: mark a referral as qualified, so it counts toward the referrer's rewards. POST /lists/{uuid}/subscribers/{id}/qualify.

    Annotations the server declares

    • title: Mark referral qualified
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • referralhero_track_conversion_eventWRITE: report a conversion event for a referral (campaigns whose goal tracks two or three events).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: report a conversion event for a referral (campaigns whose goal tracks two or three events). Updates the referral from pending to confirmed (two events) or unconfirmed (three). If the referral is unknown but a referrer is given, the referral is created. May unlock rewards. POST /lists/{uuid}/subscribers/track_referral_conversion_event.

    Annotations the server declares

    • title: Track a referral conversion event
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • referralhero_track_transactionWRITE: record a purchase/transaction for a subscriber (amount required) so revenue-based rewards and reports count it (not idempotent unless a transaction_id is reused).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: record a purchase/transaction for a subscriber (amount required) so revenue-based rewards and reports count it (not idempotent unless a transaction_id is reused). The subscriber is identified by the campaign's unique identifier. POST /lists/{uuid}/subscribers/add_transactions.

    Annotations the server declares

    • title: Track a transaction
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_unlock_promoted_rewardWRITE: unlock a promoted-winner or one-off reward for a subscriber.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_unlock_promoted_reward" says "unlock": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: unlock a promoted-winner or one-off reward for a subscriber. This delivers the reward and may email the subscriber and use coupon codes. POST /lists/{uuid}/subscribers/{id}/unlock_promoted_reward.

    Annotations the server declares

    • title: Trigger a manual reward
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_unqualify_referralWRITE: mark a referral as unqualified (for example fraud or a refund), so it no longer counts toward the referrer's rewards.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: mark a referral as unqualified (for example fraud or a refund), so it no longer counts toward the referrer's rewards. POST /lists/{uuid}/subscribers/{id}/unqualify.

    Annotations the server declares

    • title: Mark referral unqualified
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • referralhero_update_reward_statusWRITE: set the status of an unlocked reward to sent, resent or canceled.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_update_reward_status" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: set the status of an unlocked reward to sent, resent or canceled. Marking sent/resent can trigger the reward delivery email to the subscriber. Get the reward_id from referralhero_list_subscriber_rewards or referralhero_list_unlocked_rewards. POST /lists/{uuid}/subscribers/update_reward_status.

    Annotations the server declares

    • title: Update reward status
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_update_subscriberWRITE: change fields of a subscriber (overwrites the given fields): name, contact identifiers, extra fields, points (contest campaigns), tags, address, referral status (qualified/u…Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_update_subscriber" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change fields of a subscriber (overwrites the given fields): name, contact identifiers, extra fields, points (contest campaigns), tags, address, referral status (qualified/unqualified). Only fields you pass change. Only verified subscribers can be updated. POST /lists/{uuid}/subscribers/{id}.

    Annotations the server declares

    • title: Update subscriber
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Changes things 3Claude Code: ask
  • referralhero_add_couponsWRITE: add coupon codes to an existing coupon group.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_add_coupons" says "add": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add coupon codes to an existing coupon group. It only adds codes. POST /lists/{uuid}/coupons.

    Annotations the server declares

    • title: Add coupons to a group
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_create_campaignWRITE: create a new ReferralHero campaign (list) with a name and a default referral URL.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_create_campaign" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: create a new ReferralHero campaign (list) with a name and a default referral URL. It adds a campaign and changes nothing existing. POST /lists.

    Annotations the server declares

    • title: Create campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • referralhero_create_coupon_groupWRITE: create a coupon group for a campaign, optionally with its first coupon codes.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_create_coupon_group" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: create a coupon group for a campaign, optionally with its first coupon codes. It only adds a group. POST /lists/{uuid}/coupon_groups.

    Annotations the server declares

    • title: Create coupon group
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 13Show 13 read-only tools
  • referralhero_get_coupon_groupOne coupon group with all its coupons (code, available, sent_at).Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_get_coupon_group" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One coupon group with all its coupons (code, available, sent_at). GET /lists/{uuid}/coupon_groups/{id}.

    Annotations the server declares

    • title: Get coupon group
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_get_leaderboardThe leaderboard of a campaign: its top subscribers (10 to 100) with referral counts, points and position.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_get_leaderboard" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The leaderboard of a campaign: its top subscribers (10 to 100) with referral counts, points and position. GET /lists/{uuid}/leaderboard.

    Annotations the server declares

    • title: Get campaign leaderboard
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_get_subscriberOne subscriber by id: contact data, referral code and link, points, position, referrals by level, status, fraud risk level, tags.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "referralhero_get_subscriber" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One subscriber by id: contact data, referral code and link, points, position, referrals by level, status, fraud risk level, tags. Only verified subscribers are found. GET /lists/{uuid}/subscribers/{id}.

    Annotations the server declares

    • title: Get subscriber
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_get_subscriber_by_emailFind one subscriber of a campaign by email.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "referralhero_get_subscriber_by_email" says "get": a word for reading.

    What it can reach

    • private-dataThe name "referralhero_get_subscriber_by_email" says "get" and "email": it reads mail.
    • private-dataThe description's first sentence says "find" and "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "referralhero_get_subscriber_by_email" says "get" and "email": it reads inbound email, which other people can write.
    • untrusted-inputThe description's first sentence says "find" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Find one subscriber of a campaign by email. Only verified subscribers are found. GET /lists/{uuid}/subscribers/retrieve_by_email.

    Annotations the server declares

    • title: Find subscriber by email
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_get_subscriber_by_referral_codeFind the subscriber who owns a referral code (the mwr value in a referral link).Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_get_subscriber_by_referral_code" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Find the subscriber who owns a referral code (the mwr value in a referral link). Only verified subscribers are found. GET /lists/{uuid}/subscribers/retrieve_by_mwr.

    Annotations the server declares

    • title: Find subscriber by referral code
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_campaign_rewardsThe rewards configured for a campaign (title, description, referrals needed to win each).Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_list_campaign_rewards" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The rewards configured for a campaign (title, description, referrals needed to win each). This is the reward setup, not who earned what: see referralhero_list_unlocked_rewards for that. GET /lists/{uuid}/bonuses.

    Annotations the server declares

    • title: List campaign rewards
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_campaignsList the active ReferralHero campaigns (lists) in the account: uuid, name, subscriber count and creation time.Reads text others write1 finding

    Why it is in this group

    • The name "referralhero_list_campaigns" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The description contains "every other tool", wording about other tools or servers.

      Matched text

      description: "...nd creation time. The uuid is needed by every other tool. 10 per page. GET /lists."

      What this check looks for
    Description, as the server wrote it
    List the active ReferralHero campaigns (lists) in the account: uuid, name, subscriber count and creation time. The uuid is needed by every other tool. 10 per page. GET /lists.

    Annotations the server declares

    • title: List campaigns
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_coupon_groupsCoupon groups of a campaign (id, name, active flag, coupons with availability), 50 per page.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_list_coupon_groups" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Coupon groups of a campaign (id, name, active flag, coupons with availability), 50 per page. GET /lists/{uuid}/coupon_groups.

    Annotations the server declares

    • title: List coupon groups
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_referralsThe people a subscriber referred, 50 per page.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_list_referrals" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The people a subscriber referred, 50 per page. scope: all (pending, unconfirmed and confirmed, default), level_1_confirmed, level_2_confirmed, level_3_confirmed (confirmed only, by referral level), level_2_all or level_3_all (every status at that level). GET /lists/{uuid}/subscribers/{id}/{referred|level_N_referrals|level_N_all_referrals}.

    Annotations the server declares

    • title: List a subscriber's referrals
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_subscriber_rewardsRewards one subscriber has unlocked, with status, value and coupon code.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_list_subscriber_rewards" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Rewards one subscriber has unlocked, with status, value and coupon code. The reward id is what referralhero_update_reward_status needs. GET /lists/{uuid}/subscribers/{id}/rewards.

    Annotations the server declares

    • title: List a subscriber's rewards
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_subscribersList the subscribers of a campaign, 50 per page, with referral code, referral link, points, position, people referred, status and referrer.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_list_subscribers" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the subscribers of a campaign, 50 per page, with referral code, referral link, points, position, people referred, status and referrer. Sort and filter by the extra fields. GET /lists/{uuid}/subscribers.

    Annotations the server declares

    • title: List subscribers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_list_unlocked_rewardsRewards unlocked by subscribers across a whole campaign: reward name, status (sent, resent, canceled, pending, flagged), value, subscriber email and id, coupon code, transaction.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "referralhero_list_unlocked_rewards" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Rewards unlocked by subscribers across a whole campaign: reward name, status (sent, resent, canceled, pending, flagged), value, subscriber email and id, coupon code, transaction. Filter by status to find rewards still to pay out. GET /lists/{uuid}/rewards.

    Annotations the server declares

    • title: List earned rewards
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • referralhero_search_subscribers_by_nameSearch subscribers by name across all campaigns of the account, 50 per page.Reads text others writeNo findings

    Why it is in this group

    • The name "referralhero_search_subscribers_by_name" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search subscribers by name across all campaigns of the account, 50 per page. GET /subscribers/search_by_name.

    Annotations the server declares

    • title: Search subscribers by name
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

1 warn

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http referralhero https://referralhero.usefulapi.io/mcp
claude mcp add --transport http referralhero https://referralhero.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__referralhero__referralhero_list_campaigns",
      "mcp__referralhero__referralhero_get_leaderboard",
      "mcp__referralhero__referralhero_list_campaign_rewards",
      "mcp__referralhero__referralhero_list_subscribers",
      "mcp__referralhero__referralhero_get_subscriber",
      "mcp__referralhero__referralhero_get_subscriber_by_email",
      "mcp__referralhero__referralhero_get_subscriber_by_referral_code",
      "mcp__referralhero__referralhero_search_subscribers_by_name",
      "mcp__referralhero__referralhero_list_referrals",
      "mcp__referralhero__referralhero_list_unlocked_rewards",
      "mcp__referralhero__referralhero_list_subscriber_rewards",
      "mcp__referralhero__referralhero_list_coupon_groups",
      "mcp__referralhero__referralhero_get_coupon_group"
    ],
    "ask": [
      "mcp__referralhero__referralhero_create_campaign",
      "mcp__referralhero__referralhero_create_coupon_group",
      "mcp__referralhero__referralhero_add_coupons"
    ],
    "deny": [
      "mcp__referralhero__referralhero_add_subscriber",
      "mcp__referralhero__referralhero_update_subscriber",
      "mcp__referralhero__referralhero_delete_subscriber",
      "mcp__referralhero__referralhero_add_points",
      "mcp__referralhero__referralhero_track_transaction",
      "mcp__referralhero__referralhero_confirm_referral",
      "mcp__referralhero__referralhero_track_conversion_event",
      "mcp__referralhero__referralhero_qualify_referral",
      "mcp__referralhero__referralhero_unqualify_referral",
      "mcp__referralhero__referralhero_promote_subscriber",
      "mcp__referralhero__referralhero_unlock_promoted_reward",
      "mcp__referralhero__referralhero_update_reward_status"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as referralhero. Review it before you use it.

Capability tags behind 28 rules
  • mcp__referralhero__referralhero_list_campaigns untrusted-input
  • mcp__referralhero__referralhero_get_leaderboard untrusted-input
  • mcp__referralhero__referralhero_list_campaign_rewards untrusted-input
  • mcp__referralhero__referralhero_create_campaign untrusted-input
  • mcp__referralhero__referralhero_list_subscribers untrusted-input
  • mcp__referralhero__referralhero_get_subscriber private-data, untrusted-input
  • mcp__referralhero__referralhero_get_subscriber_by_email private-data, untrusted-input
  • mcp__referralhero__referralhero_get_subscriber_by_referral_code untrusted-input
  • mcp__referralhero__referralhero_search_subscribers_by_name untrusted-input
  • mcp__referralhero__referralhero_list_referrals untrusted-input
  • mcp__referralhero__referralhero_list_unlocked_rewards private-data, untrusted-input
  • mcp__referralhero__referralhero_list_subscriber_rewards untrusted-input
  • mcp__referralhero__referralhero_list_coupon_groups untrusted-input
  • mcp__referralhero__referralhero_get_coupon_group untrusted-input
  • mcp__referralhero__referralhero_add_subscriber untrusted-input
  • mcp__referralhero__referralhero_update_subscriber untrusted-input
  • mcp__referralhero__referralhero_delete_subscriber untrusted-input
  • mcp__referralhero__referralhero_add_points untrusted-input
  • mcp__referralhero__referralhero_track_transaction untrusted-input
  • mcp__referralhero__referralhero_confirm_referral untrusted-input
  • mcp__referralhero__referralhero_track_conversion_event untrusted-input
  • mcp__referralhero__referralhero_qualify_referral untrusted-input
  • mcp__referralhero__referralhero_unqualify_referral untrusted-input
  • mcp__referralhero__referralhero_promote_subscriber untrusted-input
  • mcp__referralhero__referralhero_unlock_promoted_reward untrusted-input
  • mcp__referralhero__referralhero_update_reward_status untrusted-input
  • mcp__referralhero__referralhero_create_coupon_group untrusted-input
  • mcp__referralhero__referralhero_add_coupons untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/referralhero/verify?hash=89977523f31ddf0653e2634cb1ef3027b9420de9eb98f23982688388818c1a15" | jq -e '.changed == false'

Pinned hash 89977523f31d, from Oct 24, 2026, 16:21 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/referralhero/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/referralhero
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/referralhero.svg)](https://anlyon.dev/servers/io.usefulapi/referralhero)

Source: MCP Registry · repository. Synced Oct 24, 2026, 17:17 UTC.