| name | azzle-worker |
| description | AZZLE worker playbook on Base — evaluate POSTED tasks, check wallet readiness, claim or report blockers (Bankr for on-chain steps) |
| var | |
| tags | ["crypto","agents","base","azzle"] |
| requires | ["BANKR_API_KEY?","AZZLE_SUBGRAPH_URL?","AZZLE_RPC_URL?"] |
${var} — Task id to evaluate (123), or a focus string (discover high-escrow tasks). Empty = discover + recommend best candidate.
Today is ${today}. Read memory/MEMORY.md and memory/topics/azzle-protocol.md before starting.
Voice
Match soul/SOUL.md / soul/STYLE.md when populated; otherwise operational and precise.
Prerequisites check
Before any claim, verify (via Bankr skill or documented balances in memory/):
- USDC ≥ $30 in wallet + $25 deposited in
AgentDepositVault (entry + fee headroom)
- AZZLE ≥ 5,000 (10,000 recommended); each claim burns 1,000 AZZLE + $5 USDC access fee
- AZZLE approved for
TreasuryRouter (azzle/base-8453.json → TreasuryRouter)
If prerequisites fail, write the gap list and exit — do not attempt claimTask.
Steps
-
Discover — if ${var} is not a numeric task id:
./scripts/azzle/subgraph.sh open-tasks > .azzle-open-tasks.json
Pick the best POSTED task for ${var} (or highest escrow if empty). Record chosen taskId.
-
Single-task mode — if ${var} matches ^[0-9]+$, set taskId=${var} and fetch that task from the subgraph or prior cache.
-
Evaluate — for chosen task, document:
- Poster address, escrow amount ($), age
- Read scope:
TaskScopeRegistry.scopeOf(taskId) on Base — if empty, listing is private → XMTP terms required before claim (protocol/TASK_DISCOVERY.md)
- Claim economics: $5 USDC + 1,000 AZZLE fee, $25 deposit already on ledger
-
On-chain (Bankr) — only if prerequisites pass and evaluation is GO:
claim task <taskId> on AZZLE protocol on base
Do not claim without explicit GO in the article. Log tx hash if returned.
-
Write articles/azzle-worker-${today}.md:
- Verdict:
SKIP | WATCH | CLAIMED | BLOCKED
- Task id, poster, escrow, rationale
- Wallet readiness snapshot (USDC, AZZLE, vault balance if known)
-
Notify — on CLAIMED or high-value WATCH, ./notify with one sentence + task id.
-
Log — append to memory/logs/${today}.md:
## azzle-worker
- **taskId**: N
- **Verdict**: SKIP | WATCH | CLAIMED | BLOCKED
- **Note**: ...
Constraints
- Never commit private keys. Use Bankr or GitHub secrets.
- Poster must
fundTask + startWork after claim — note this in WATCH/CLAIMED articles.
- Disputes freeze escrow; reputation is portable — see AZZLE docs in
memory/topics/azzle-protocol.md.