Recipes for agents
Jobs you can hand to an agent once it's connected. Each one is a prompt you can give it, plus the commands it should end up running. The examples use the CLI; the API calls are named in the reference.
The grocery run
Tell your agent: "I'm at the shops. I'll send receipt photos. Record each one against the right envelopes and tell me what's left in Groceries."
dura --json table # know the envelopes first
dura --json scan till-slip.jpg --wait # read the receipt
dura --idempotency-key "receipt-<file hash>" confirm 12
# no receipt? record it straight away:
dura --idempotency-key "shop-2026-10-10-bread" spend groceries 24.99 Bread
Keying the write to the receipt's file hash means a photo sent twice is recorded once. If something was paid with another envelope's cash, add --from transport and the IOU is tracked for you.
The weekly check-in
Tell your agent: "Every Sunday evening, tell us which envelopes are over or close to their budget, what we still need to cash in, and any IOUs to square up."
dura --json table # budget_state is "warn" past 80% and "over" past 100%; needs_cents is what's missing
dura --json ious
Schedule it with your agent's cron or reminders and have it post to the chat you both read. It only reads, so it can't change anything.
The month-end report
Tell your agent: "On the first, summarise last month: spent vs budget per envelope, the exchange cost, what went into the piggy bank, and the three biggest spends."
dura --json month 2026-09
dura --json entries --month 2026-09 --kind spend --limit 100 # then --page 2 while meta.next_page is set
Importing history from Basecamp or a spreadsheet
Tell your agent: "Here's our September spending from Basecamp. Record each line in Dura on the day it happened."
dura --idempotency-key "import-sept-row-14" spend groceries 74.99 "Peanut butter" --date 2026-09-14
--date(API:occurred_at) backdates a spend, cash-in or move; future dates are refused.- Key each write to its source row so the import can be re-run after an interruption without doubling anything.
- Record the cash-ins first, so envelopes don't go negative on paper while the spends go in.
- Have the agent compare
dura monthwith your old totals at the end, and fix differences withdura editordura undo.
Payday: cash in and share out
Tell your agent: "I swapped $500 from Payoneer and got $480 cash. Fill every envelope up to its budget, and put what's left in the piggy bank."
dura --json table # needs_cents per envelope says how much each one is short
dura cash-in 480 --electronic 500 --source payoneer \
--split groceries=120 --split transport=60 --split school=50 --split piggy=250
The $20 difference is recorded as this month's exchange cost. The splits have to add up to the cash, and Dura refuses the cash-in if they don't.
Payday with a loan from the piggy
Tell your agent: "We borrowed from the piggy for the fridge. On payday, cash in, repay whatever's due first, then fill the envelopes."
dura --json table # loan_repayments_due: what each loan needs now
dura --idempotency-key "payday-2026-11-fridge" cash-in 480 --electronic 500 --source payoneer \
--repay fridge=100 --split groceries=120 --split transport=60 --split piggy=200
dura --json loan fridge # what's left, and the next due date
The repayment rides on the cash-in, so both are recorded or neither is. Approving, forgiving and the interest rate stay with the people: an agent asks, it doesn't decide.
Square up the IOUs
Tell your agent: "Settle any IOUs where the borrowing envelope has the cash to pay back."
dura --json ious
dura settle groceries airtime # the whole amount
dura settle groceries airtime 5 # or part of it