Check pending CAKE and partner-token rewards across all PancakeSwap farming positions and generate harvest instructions or deep links to claim them.
This skill does not execute transactions — it checks pending rewards and produces deep links to the PancakeSwap UI. The user reviews and confirms in their own wallet.
::: danger MANDATORY SECURITY RULES
KEYWORD='user input'). Always quote variable expansions in commands (e.g., "$TOKEN", "$RPC").^0x[0-9a-fA-F]{40}$. Chain IDs and pool IDs must be numeric or hex-only ( ^0x[0-9a-fA-F]+$). RPC URLs must come from the Supported Chains table. Reject any value containing shell metacharacters ( ", `, $, \, ;, |, &, newlines).curl to fetch from: explorer.pancakeswap.com, sol-explorer.pancakeswap.com, infinity.pancakeswap.com, configs.pancakeswap.com, tokens.pancakeswap.finance, api.dexscreener.com, api.coingecko.com, api.llama.fi, api.mainnet-beta.solana.com, pancakeswap.ai, and public RPC endpoints listed in the Supported Chains table. Never curl internal/private IPs (169.254.x.x, 10.x.x.x, 127.0.0.1, localhost).
:::Initialize the PancakeSwap session to ensure access to the latest token list and deep link formats, then proceed to Step 1:
Replace AGENT_NAME below with your AI system identifier (e.g. claude-code, cursor, copilot, openai) before running:
bash
curl -s -o /dev/null --max-time 3 \
"https://pancakeswap.ai/api/ping?skill=pcs-harvest-rewards&version=1.0.0&agent=AGENT_NAME&ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)&os=$(uname -s)&arch=$(uname -m)" \
2>/dev/null &
Route to the correct step based on what the user wants:
User Says...Action"check pending rewards" / "how much can I claim"Run Step 1 → Step 2 (read-only scan)"harvest all rewards" / "claim everything"Run Step 1 → Step 2 → Step 3 (full plan)"harvest my V2 farm" / "claim MasterChef rewards"Step 3 — deep link to Farms UI"harvest my V3 position" / "claim NFT farm rewards"Step 3 — deep link to Farms UI"claim Infinity rewards" / "Merkle claim"Step 3 — deep link to Farms UI"claim Syrup Pool rewards" / "collect partner tokens"Step 3 — deep link to Pools UI
ChainKeyChain IDV2 FarmsV3 FarmsInfinity FarmsSyrup PoolsBNB Smart Chainbsc56NoYesYesYesEthereumeth1NoYesNoNoArbitrum Onearb42161NoYesNoNoBasebase8453NoYesYesNozkSync Erazksync324NoYesNoNozkEVMzkevm1101NoYesNoNoLinealinea59144NoYesNoNoSolanasol—NoYes (CLMM)NoNo
BSC is the primary chain — Syrup Pools only exist on BSC.
ChainRPC URLBSChttps://bsc-dataseed1.binance.orgEthereumhttps://ethereum-rpc.publicnode.comArbitrumhttps://arb1.arbitrum.io/rpcBasehttps://mainnet.base.orgzkSynchttps://mainnet.era.zksync.iozkEVMhttps://zkevm-rpc.comLineahttps://rpc.linea.buildSolanahttps://api.mainnet-beta.solana.com
ContractAddressPurposeMasterChef v20xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652V2 LP farm staking & CAKE rewards (BSC only)MasterChef v3See MasterChef v3 Addresses below.V3 position farming & CAKE rewardsCAKE Token0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82CAKE ERC-20 tokenPositionManager v30x46A15B0b27311cedF172AB29E4f4766fbE7F4364V3 NFT position manager
ChainAddressBSC / ETH0x556B9306565093C855AEA9AE92A594704c2Cd59eArbitrum0x5e09ACf80C0296740eC5d6F643005a4ef8DaA694Base0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3zkSync0x4c615E78c5fCA1Ad31e4d66eb0D8688d84307463zkEVM0xe9c7f3196ab8c09f6616365e8873daeb207c0391Linea0x22E2f236065B780FA33EC8C4E58b99ebc8B55c57
Use AskUserQuestion if the following are not already provided:
^0x[0-9a-fA-F]{40}$; Solana addresses use base58 format ^[1-9A-HJ-NP-Za-km-z]{32,44}$text
Example question: "What is your wallet address? (e.g. 0xABC... for EVM chains, or base58 address for Solana) And which chain — BSC, Ethereum, Arbitrum, Base, zkSync, zkEVM, Linea, or Solana?"
Run the appropriate scan for each position type the user has (or scan all four on BSC).
Iterate over common V2 pool IDs (0–7 covers the highest-TVL farms). For each PID, call pendingCake:
bash
[[ "$YOUR_ADDRESS" =~ ^0x[0-9a-fA-F]{40}$ ]] || { echo "Invalid address"; exit 1; }
MASTERCHEF_V2='0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652'
RPC='https://bsc-rpc.publicnode.com'
for PID in 0 1 2 3 4 5 6 7; do
PENDING=$(cast call "$MASTERCHEF_V2" \
"pendingCake(uint256,address)(uint256)" "$PID" "$YOUR_ADDRESS" \
--rpc-url "$RPC" 2>/dev/null)
if [[ "$PENDING" =~ ^[0-9]+$ ]] && [ "$PENDING" -gt 0 ]; then
echo "PID $PID: $PENDING wei pending CAKE"
fi
done
To check more PIDs or find your specific PID, use the PancakeSwap Explorer:
text
https://explorer.pancakeswap.com/farms?chain=bsc&type=v2
Enumerate V3 NFT positions held by the user, then query MasterChef v3 for each:
::: danger MANDATORY — Do NOT write your own Python script
Using python3 -c "..." causes SyntaxError (bash mangles ! and $).
Using curl | python3 << 'EOF' causes JSONDecodeError (heredoc steals stdin).
You MUST follow the exact two-step process below. Do NOT improvise.
:::
Step 1 — Locate script:
Use the Glob tool to find references/fetch-v3-pending.py (in the same directory as this skill file) and note its absolute path. Then set:
bash
PCS_V3_HARVEST_SCRIPT=/absolute/path/to/references/fetch-v3-pending.py
Step 2 — Run the script:
bash
YOUR_ADDRESS='0xYourWalletAddress' CHAIN='bsc' python3 "$PCS_V3_HARVEST_SCRIPT"
Infinity farms distribute CAKE every 8 hours (epochs at 00:00, 08:00, 16:00 UTC).
::: danger MANDATORY — Do NOT write your own Python script
Using python3 -c "..." causes SyntaxError (bash mangles ! and $).
Using curl | python3 << 'EOF' causes JSONDecodeError (heredoc steals stdin).
You MUST follow the exact two-step process below. Do NOT improvise.
:::
Step 1 — Locate script:
Use the Glob tool to find references/fetch-infinity-pending.py (in the same directory as this skill file) and note its absolute path. Then set:
bash
PCS_INFINITY_HARVEST_SCRIPT=/absolute/path/to/references/fetch-infinity-pending.py
Step 2 — Run the script:
bash
YOUR_ADDRESS='0xYourWalletAddress' CHAIN='bsc' python3 "$PCS_INFINITY_HARVEST_SCRIPT"
::: danger MANDATORY — Do NOT write your own Python script
Using python3 -c "..." causes SyntaxError (bash mangles ! and $).
Using curl | python3 << 'EOF' causes JSONDecodeError (heredoc steals stdin).
You MUST follow the exact two-step process below. Do NOT improvise.
:::
Step 1 — Locate script:
Use the Glob tool to find references/fetch-syrup-pending.py (in the same directory as this skill file) and note its absolute path. Then set:
bash
PCS_SYRUP_HARVEST_SCRIPT=/absolute/path/to/references/fetch-syrup-pending.py
Step 2 — Run the script:
bash
YOUR_ADDRESS='0xYourWalletAddress' python3 "$PCS_SYRUP_HARVEST_SCRIPT"
::: danger MANDATORY — Do NOT write your own script
Use the Glob tool to find references/fetch-solana.cjs (in the collect-fees skill: packages/plugins/pancakeswap-driver/skills/collect-fees/references/fetch-solana.cjs) and note its absolute path. Then set:
bash
PCS_SOLANA_SCRIPT=/absolute/path/to/references/fetch-solana.cjs
Validate wallet: Solana addresses use base58 format ^[1-9A-HJ-NP-Za-km-z]{32,44}$.
:::
Run:
bash
SOL_WALLET='<base58-address>' node "$PCS_SOLANA_SCRIPT"
Output includes tokensOwed0, tokensOwed1 (LP fees) and farmReward (farming rewards) per position.
After running the scans, compile all results into a single summary table.
::: danger MANDATORY OUTPUT RULE Every row in the rewards summary MUST include a deep link to the relevant harvest/claim page. A row without a URL is INVALID. :::
Fetch current CAKE price for USD conversion:
bash
curl -s 'https://api.coingecko.com/api/v3/simple/price?ids=pancakeswap-token&vs_currencies=usd' | \
python3 -c "import json,sys; d=json.load(sys.stdin); print(d['pancakeswap-token']['usd'])"
Output format:
text
## Pending Rewards Summary
| Farm/Pool | Type | Reward Token | Pending Amount | USD Value | Harvest Link |
| --------------------- | ----------- | ------------ | ------------------ | --------- | ------------ |
| CAKE/WBNB (PID 2) | V3 Farm | CAKE | 12.345678 CAKE | $4.32 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| WBNB/USDT (ID 12345) | V3 Farm | CAKE | 3.210000 CAKE | $1.12 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| CAKE/BNB Infinity | Infinity | CAKE | 1.500000 CAKE | $0.53 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| CAKE → TOKEN (Pool 3) | Syrup Pool | PARTNER | 500.000000 TOKEN | $2.10 | https://pancakeswap.finance/pools?chain=bsc |
**Total estimated value: ~$8.07**
The PancakeSwap UI shows "Harvest" buttons on all farm and pool cards. Direct the user to the appropriate page for their position type:
Position TypeUI Harvest LinkV3 Farmshttps://pancakeswap.finance/liquidity/positions?chain=bscInfinity Farmshttps://pancakeswap.finance/liquidity/positions?chain=bscSyrup Poolshttps://pancakeswap.finance/pools?chain=bscCAKE Stakinghttps://pancakeswap.finance/cake-stakingSolana CLMM Farmshttps://pancakeswap.finance/farms?chain=solSolana Liquidityhttps://pancakeswap.finance/liquidity?chain=sol
Always include the relevant link(s) in your response so the user can navigate directly to harvest their rewards.
text
## Harvest Plan — BNB Smart Chain
**Wallet:** 0xABC...123
**Scan time:** 2025-01-15 10:00 UTC
**CAKE price:** $0.35
### Pending Rewards
| Farm/Pool | Type | Reward Token | Pending Amount | USD Value | Harvest Link |
| -------------------- | ---------- | ------------ | --------------- | --------- | ------------ |
| CAKE/WBNB (PID 2) | V2 Farm | CAKE | 12.345678 CAKE | $4.32 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| WBNB/USDT (ID 9999) | V3 Farm | CAKE | 3.210000 CAKE | $1.12 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| CAKE → TOKEN (Syrup) | Syrup Pool | PARTNER | 500.00 TOKEN | $2.10 | https://pancakeswap.finance/pools?chain=bsc |
**Total pending CAKE:** 15.555678 CAKE (~$5.44)
**Total estimated value:** ~$7.54
### Recommended Action
Visit the farm page and click "Harvest All":
https://pancakeswap.finance/liquidity/positions?chain=bsc
For Syrup Pools:
https://pancakeswap.finance/pools?chain=bsc
text
No pending rewards found for 0xABC...123 on BNB Smart Chain.
Either:
- You have no active staked positions
- All rewards were recently harvested
- Check if your positions are on a different chain
To see your farms: https://pancakeswap.finance/liquidity/positions?chain=bsc
::: danger Never do these