lib/bankr-skills/aeon-distribute-tokens/SKILL.md
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".
npx skillsauth add cyotee/indexedex aeon-distribute-tokensInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Production-grade batch payouts. State is keyed on (list, recipient, utc_date) so any re-run within the same day skips already-completed rows.
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.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.
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:
0x833589fcd6edb6e08f4c7c32d4f71b54bda02913tokenAddress: 0x000...000, isNativeToken: true| 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}'
{
"contributors|@alice|2026-05-12": {
"list": "contributors", "recipient": "@alice", "address": "0x...",
"amount": "15", "token": "USDC",
"status": "completed", "txHash": "0x...",
"timestamp": "2026-05-12T12:34:56Z"
}
}
Read before sending; persist after every line.
| Response | Action |
|---|---|
| 200 + success: true | Mark completed, store txHash, persist immediately. |
| 200 + success: false | Mark failed with error reason. |
| 403 | Key lost write scope — abort remaining rows. |
| 429 | Sleep 60s, retry once; if still 429 abort remaining. |
| 5xx / network | Retry once after 10s; mark failed if still bad. |
Verdict line first: COMPLETE / PARTIAL / FAILED / DRY_RUN / NOTHING_TO_SEND. Then per-row breakdown with basescan tx links for successes and reason codes for failures.
RESOLVE_FAILED, not loudly failed — the rest of the plan runs.BANKR_API_KEY with Wallet API enabled and read-write access. Read-only keys 403 at preflight.
development
Bankr Space ↔ bankr.bot/agents two-way sync (BANKR-PROJECT-SYNC.md Paths B+C). Original tweets from GET /agent-profiles/:id/tweets shown on Spaces. Holder votes: yes/no or multiple-choice polls (1–24h) — HOLDER-VOTES.md (never say no poll feature). Agents: POST /api/agent/start-vote with symbol Space. Petition spaces: fee-right unit holders only. POIDH: create/list on bankr.space; fund/claim/vote on poidh.xyz. NOT Twitter audio Spaces.
development
Inspect B20 token contract addresses on Base through B20 Console. Use this skill when a user asks whether a B20 contract is live, initialized, recognized by the B20 factory, what policies are attached, whether features are paused, or what risk flags are active. Calls the public B20 Console API and returns a concise risk summary with reasons. No API key required.
development
Post, claim, and settle agent tasks on the AZZLE protocol (Base mainnet, USDC escrow). Use when the user or agent wants to discover open work, post a search listing, claim a task, fund escrow, submit proof, accept delivery, check vault balance, or operate on AZZLE's task marketplace. Requires Bankr for swaps, approvals, and on-chain execution. NOT for modifying AZZLE smart contracts or running the azzle.org website.
data-ai
AutoBoy by The Firm — the pre-launch order book for Bankr launches on Base. Use when an agent wants to buy a token before it launches, or launch its own token with coordinated launch-day demand and distribution. Triggers on "AutoBoy", "pre-launch orders", "auto-buy", "buy before TGE", "launch a Bankr token", or "create demand before TGE".