mcpField
D
dual-stacking

dual-stacking

github.com/aibtcdevOther11149 installsUpdated 1d ago
Repository

About dual-stacking

A command-line skill for checking and managing Dual Stacking enrollment and cycle rewards. It serves sBTC holders, with optional stacked STX increasing the reward multiplier.

Key features

  1. 01Check enrollment and APR
  2. 02Query cycle rewards
  3. 03Enroll or opt out
  4. 04Optional STX reward multiplier

Use cases

  1. 01Review enrollment and cycle details
  2. 02Check rewards for a selected cycle
  3. 03Enroll sBTC in Dual Stacking
  4. 04Opt out for the next cycle

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aibtcdev/skills --skill dual-stacking

After installing, type/dual-stackingin Claude Code to confirm it loaded.

Bundled filesAGENT.mddual-stacking.ts

Details

From the project README

Dual Stacking Skill

Dual Stacking lets agents earn BTC-denominated yield (paid in sBTC) simply by holding sBTC — no lockup period required. Optionally, holding stacked STX alongside sBTC unlocks a multiplier of up to 10x on the APR.

  • check-status — Read-only. Returns enrollment state, APR range, minimum amount, and cycle overview.
  • get-rewards — Read-only. Returns earned rewards for a specific cycle.
  • enroll and opt-out — Write operations, require an unlocked wallet.

Contract: SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v2_0_4

APR:

  • sBTC only: ~0.5% APY in sBTC
  • sBTC + stacked STX: up to ~5% APY (10x multiplier)

Minimum enrollment: 10,000 sats sBTC (0.0001 sBTC)

Usage

bun run dual-stacking/dual-stacking.ts <subcommand> [options]

Subcommands

check-status

Check enrollment status, APR data, minimum enrollment amount, and current cycle overview for an address.

bun run dual-stacking/dual-stacking.ts check-status [--address <STX_ADDRESS>]

Options:

  • --address (optional) — Stacks address to check (uses active wallet if omitted)

Output:

{
  "address": "SP2...",
  "network": "mainnet",
  "enrolledThisCycle": true,
  "enrolledNextCycle": true,
  "minimumEnrollmentSats": 10000,
  "apr": {
    "minApr": 0.5,
    "maxApr": 5,
    "unit": "%",
    "note": "Multiplier up to 10x with stacked STX via PoX"
  },
  "cycleOverview": {
    "currentCycleId": 100,
    "snapshotIndex": 3,
    "snapshotsPerCycle": 144
  }
}
enroll

Enroll in Dual Stacking. The caller's sBTC balance is used to determine rewards. Optionally, a different address can receive the rewards.

bun run dual-stacking/dual-stacking.ts enroll [--reward-address <STX_ADDRESS>]

Options:

  • --reward-address (optional) — Stacks address to receive rewards (defaults to caller's address)

Output:

{
  "success": true,
  "txid": "abc123...",
  "enrolledAddress": "SP2...",
  "rewardAddress": "SP2...",
  "network": "mainnet",
  "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
opt-out

Opt out of Dual Stacking. Takes effect from the next cycle.

bun run dual-stacking/dual-stacking.ts opt-out

Output:

{
  "success": true,
  "txid": "abc123...",
  "address": "SP2...",
  "network": "mainnet",
  "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
get-rewards

Get earned rewards for a specific cycle and address.

bun run dual-stacking/dual-stacking.ts get-rewards --cycle <N> [--address <STX_ADDRESS>] [--rollback <N>]

Options:

  • --cycle (required) — Cycle number to query
  • --address (optional) — Stacks address to check (uses active wallet if omitted)
  • --rollback (optional) — Rollback offset (default: 0)

Output:

{
  "address": "SP2...",
  "cycle": 99,
  "rollback": 0,
  "rewardSats": 500,
  "rewardBtc": "0.000005",
  "network": "mainnet"
}

Notes

  • Enrollment is per-cycle. If you enroll mid-cycle, rewards start from the next cycle.
  • The reward multiplier is determined automatically based on how much STX you have stacked via PoX.
  • Use the stacking skill to stack STX and boost your Dual Stacking APR up to 5% APY.
  • Wallet operations require an unlocked wallet (use bun run wallet/wallet.ts unlock first, or set CLIENT_MNEMONIC env var).

Comments

Markdown supported