Aeon Distribute Tokens
Batch token payouts via the Bankr Wallet API with per-recipient idempotency, two-phase...
Install
npx skills add BankrBot/skills --skill aeon-distribute-tokens -g -a claude-code -y- Repository
- BankrBot/skills1.2k
- Category
- Engineering
- Updated
- 4d ago
- License
- See repository
- Context cost
- Lightabout 798 tokens
- Runs scripts
- No, instructions only
What it does
Batch token payouts via the Bankr Wallet API with per-recipient idempotency, two-phase resolve→execute, dry-run preview, and recovery from partial runs. Re-runs within the same UTC day are a no-op for completed rows. Use for weekly contributor rewards, tip pools, leaderboard payouts, any "pay N wallets X amount" flow where double-sending must be impossible. Triggers: "distribute tokens", "pay contributors", "weekly payout", "send USDC to this list", "tip these handles".
aeon-distribute-tokens
Production-grade batch payouts. State is keyed on (list, recipient, utc_date) so any re-run within the same day skips already-completed rows.
Phases
- RESOLVE, load config, check
BANKR_API_KEYscope (read-write required), preflight portfolio balance, resolve every@handleto an EVM address via Bankr Agent, build the plan. Aborts before any transfer if balance <total × 1.05. - EXECUTE, for each
READYrow, callPOST /wallet/transfer. Persist state to disk after every line, not at the end.
Dry-run runs RESOLVE only and prints the plan with no transfers.
Config
defaults:
token: USDC
amount: "5"
chain: base
lists:
contributors:
description: "Weekly contributor rewards"
token: USDC
amount: "10"
recipients:
- handle: "@alice"
amount: "15"
- handle: "@bob"
- address: "0x742d...5678"
label: "Charlie"
amount: "20"
Token addresses on Base:
- USDC:
0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 - Native ETH:
tokenAddress: 0x000...000,isNativeToken: true
API surface
| Endpoint | Purpose |
|---|---|
GET /wallet/me | Preflight: identity + scope check. 403 → key is read-only, abort. |
GET /wallet/portfolio?chain=base | Balance check vs total × 1.05. |
POST /agent/prompt + GET /agent/job/{id} | @handle → address resolution. Never used for transfers. |
POST /wallet/transfer | The only sanctioned transfer endpoint. |
curl -fsS -X POST "https://api.bankr.bot/wallet/transfer" \
-H "X-API-Key: ${BANKR_API_KEY}" -H "Content-Type: application/json" \
-d '{"recipientAddress":"0x...","tokenAddress":"0x8335...","amount":"15","isNativeToken":false}'
