Incentive Types

Leaderboard, rebate, raffle, and direct distribution types

Torque supports four incentive types, each determining how rewards are distributed to participants.

Leaderboard

Rank participants by their query result value. Each user's payout is determined by the formula — the default N pays each user their raw metric value, capped by the remaining reward pool.

  • Default formula: N — each user gets their metric value as a direct payout. If the top user's value exceeds the pool, they consume it all.
  • Use case: Reward top performers — top traders, most active users, highest volume
  • For fixed rank prizes: Use a formula like RANK == 1 ? 10000 : RANK == 2 ? 5000 : RANK == 3 ? 2000 : 0
  • For equal splits: Use TOTAL_REWARD_POOL / TOTAL_PARTICIPANTS
ParameterRequired
totalFundAmountYes
customFormulaNo (default: N)

Rebate

Return a percentage of each user's activity value as a reward. The MCP constructs the formula from the rebatePercentage parameter.

  • Formula: VALUE * (rebatePercentage / 100) — e.g., 5% rebate becomes VALUE * 0.05 (constructed automatically by the MCP)
  • Use case: Cashback on trades, purchase rebates, fee refunds
ParameterRequired
totalFundAmountYes (caps the total pool)
rebatePercentageYes (e.g. 5 for 5%)

Raffle

Randomly select winners from qualified participants. By default, uses weighted selection — each user's query metric value determines their number of raffle tickets (more activity = more chances to win).

  • Use case: Lucky draw promotions, engagement lotteries, weighted reward draws
ParameterRequiredDescription
raffleBucketsYesPrize tiers (see below)
raffleWeightingNoWEIGHTED_BY_METRIC (default) or EQUAL_CHANCES

Weighting modes:

  • WEIGHTED_BY_METRIC (default) — ticket count equals the user's query metric value. A user with 100 volume gets 10x more entries than a user with 10 volume. The query results are sorted by value (highest first).
  • EQUAL_CHANCES — every qualifying user gets exactly 1 ticket. The query value only determines whether they meet the threshold to enter — all qualifying users have equal odds.

Raffle buckets define prize tiers:

[
  { "amount": 100, "count": 1 },
  { "amount": 50, "count": 5 },
  { "amount": 10, "count": 20 }
]

This creates 1 grand prize of 100, 5 prizes of 50, and 20 prizes of 10. Total fund is calculated automatically. Each wallet can only win once per draw.

Direct

Distribute specific amounts to specific wallet addresses. The MCP constructs an inline SQL query from the allocations and uses formula-based distribution internally, so direct incentives are created as recurring offers and appear in list_recurring_incentives.

  • Use case: Airdrops, team rewards, partner distributions, recurring fixed payouts
ParameterRequired
allocationsYes

Allocations can be an array or CSV:

[
  { "address": "wallet1...", "amount": 500 },
  { "address": "wallet2...", "amount": 300 }
]