basket-query
Use when the agent needs to read basket state, user positions, settlement status, config, or basket count from the on-chain contracts. All queries are free (no gas, no account needed). Do not use for state-changing operations.
How do I install this agent skill?
npx skills add https://github.com/adityaakr/polybaskets --skill basket-queryIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The basket-query skill facilitates read-only interactions with the Vara blockchain. It provides commands to query contract states for baskets, positions, and token metadata using the vara-wallet CLI. The skill is designed for data retrieval only and does not handle sensitive user credentials or execute state-changing transactions.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
Basket Query
All queries are read-only and free — no --account needed.
Setup
MAINNET ONLY. Run vara-wallet config set network mainnet before anything else. NEVER switch to testnet — there are no contracts there.
# Set network and variables (see ../references/program-ids.md)
vara-wallet config set network mainnet
BASKET_MARKET="0xea8373e8b4441ef6e95325c1044d23ebf615b43fdef60a48623836a15ca7a25a"
BET_TOKEN="0x186f6cda18fea13d9fc5969eec5a379220d6726f64c1d5f4b346e89271f917bc"
BET_LANE="0x35848dea0ab64f283497deaff93b12fe4d17649624b2cd5149f253ef372b29dc"
FREEBET_LEDGER="0x6b4ad81d13194f8e27f71f4046c6e489b2af2b0b1ce835f390899941034fd979"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"
BET_TOKEN_IDL="$_PB/idl/bet_token_client.idl"
BET_LANE_IDL="$_PB/idl/bet_lane_client.idl"
FREEBET_LEDGER_IDL="$_PB/idl/freebet-ledger.idl"
Get Your Hex Address
Sails actor_id args require hex format — SS58 addresses won't work:
MY_ADDR=$(vara-wallet balance | jq -r .address)
echo $MY_ADDR # 0xe008...
BasketMarket Queries
Get basket count
vara-wallet call $BASKET_MARKET BasketMarket/GetBasketCount --args '[]' --idl $IDL
Returns u64 — total baskets created. Basket IDs are 0-indexed.
Get a basket
vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args '[0]' --idl $IDL
Response is nested under .result.ok. Parse with jq:
# ⚠ Use .result.ok — NOT .ok!
vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args '[0]' --idl $IDL | jq '.result.ok'
Basket fields: id, creator, name, description, items (array of BasketItem), created_at, status (Active/SettlementPending/Settled), asset_kind (Vara/Bet).
Get user positions
vara-wallet call $BASKET_MARKET BasketMarket/GetPositions \
--args '["'$MY_ADDR'"]' --idl $IDL
Returns vec Position. Each position has: basket_id, user, shares, claimed, index_at_creation_bps.
Get native freebet positions
vara-wallet call $BASKET_MARKET BasketMarket/GetFreebetPositions \
--args '["'$MY_ADDR'"]' --idl $IDL
Returns native VARA freebet positions recorded by FreebetLedger/SpendFreebet. Each position has the same shape as native VARA positions: basket_id, user, shares, claimed, index_at_creation_bps.
To check whether BasketMarket is wired to the expected ledger:
vara-wallet call $BASKET_MARKET BasketMarket/GetFreebetLedger \
--args '[]' --idl $IDL
To get the agent's own address:
AGENT_ADDR=$(vara-wallet wallet list | jq -r '.[0].address')
Get settlement
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement --args '[0]' --idl $IDL
Returns Result<Settlement, BasketMarketError>. Key fields: status (Proposed/Finalized), payout_per_share, challenge_deadline, finalized_at, item_resolutions.
Check config
vara-wallet call $BASKET_MARKET BasketMarket/GetConfig --args '[]' --idl $IDL
Returns BasketMarketConfig: admin_role, settler_role, liveness_ms, vara_enabled, min_items_per_basket.
Check VARA enabled
vara-wallet call $BASKET_MARKET BasketMarket/IsVaraEnabled --args '[]' --idl $IDL
Returns bool.
BetToken Queries
Check BET balance
vara-wallet call $BET_TOKEN BetToken/BalanceOf \
--args '["'$MY_ADDR'"]' --idl $BET_TOKEN_IDL
Check claim preview
vara-wallet call $BET_TOKEN BetToken/GetClaimPreview \
--args '["'$MY_ADDR'"]' --idl $BET_TOKEN_IDL
Returns ClaimPreview: amount, streak_days, next_claim_at, can_claim_now.
Check claim state
vara-wallet call $BET_TOKEN BetToken/GetClaimState \
--args '["'$MY_ADDR'"]' --idl $BET_TOKEN_IDL
Check token info
vara-wallet call $BET_TOKEN Metadata/Name --args '[]' --idl $BET_TOKEN_IDL
vara-wallet call $BET_TOKEN Metadata/Symbol --args '[]' --idl $BET_TOKEN_IDL
vara-wallet call $BET_TOKEN Metadata/Decimals --args '[]' --idl $BET_TOKEN_IDL
vara-wallet call $BET_TOKEN BetToken/TotalSupply --args '[]' --idl $BET_TOKEN_IDL
Note: Name, Symbol, Decimals are on the Metadata service, not BetToken.
BetLane Queries
Get position in BET lane
vara-wallet call $BET_LANE BetLane/GetPosition \
--args '["0x<user_actor_id>", 0]' --idl $BET_LANE_IDL
Returns Position: shares (u256), claimed, index_at_creation_bps. Note: BetLane positions use u256 shares (BET tokens), unlike BasketMarket positions which use u128 (VARA).
Get paginated positions
vara-wallet call $BET_LANE BetLane/GetPositions \
--args '["0x<user_actor_id>", 0, 10]' --idl $BET_LANE_IDL
Args: user, offset, limit. Returns Result<vec UserPositionView, BetLaneError>.
Check BetLane config
vara-wallet call $BET_LANE BetLane/GetConfig --args '[]' --idl $BET_LANE_IDL
Returns BetLaneConfig: min_bet, max_bet, payouts_allowed_while_paused.
Check paused status
vara-wallet call $BET_LANE BetLane/IsPaused --args '[]' --idl $BET_LANE_IDL
FreebetLedger Queries
Check native VARA freebet balance
vara-wallet call $FREEBET_LEDGER FreebetLedger/BalanceOf \
--args '["'$MY_ADDR'"]' --idl $FREEBET_LEDGER_IDL
Returns u128 raw VARA units. 1 VARA = 1000000000000.
Check grant by id
vara-wallet call $FREEBET_LEDGER FreebetLedger/GetGrant \
--args '["<grant_id>"]' --idl $FREEBET_LEDGER_IDL
Check authorized bet program
vara-wallet call $FREEBET_LEDGER FreebetLedger/IsBetProgramAuthorized \
--args '["'$BASKET_MARKET'"]' --idl $FREEBET_LEDGER_IDL
If this returns false, agents must not attempt SpendFreebet.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/adityaakr/polybaskets/basket-query">View basket-query on skillZs</a>