Skills

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

  1. RESOLVE, load config, check BANKR_API_KEY scope (read-write required), preflight portfolio balance, resolve every @handle to an EVM address via Bankr Agent, build the plan. Aborts before any transfer if balance < total × 1.05.
  2. EXECUTE, for each READY row, call POST /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

EndpointPurpose
GET /wallet/mePreflight: identity + scope check. 403 → key is read-only, abort.
GET /wallet/portfolio?chain=baseBalance check vs total × 1.05.
POST /agent/prompt + GET /agent/job/{id}@handle → address resolution. Never used for transfers.
POST /wallet/transferThe 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}'

State file

Read the whole SKILL.md on GitHub

More in Engineering