Skip to main content
The simplest agentic workflow in Breadbox is a single agent that runs on a schedule, reads the backlog, decides what to do with each transaction, and closes the loop by removing the tag. This is the pattern to start with — most households never need anything more complex.

The shape of the loop

Every iteration the agent does the same four things:
1

Size up the backlog

Call count_transactions(tags=["needs-review"]) to see how many transactions are pending. If the count is very large, the agent narrows by date or account.
2

Fetch a working batch

Call query_transactions(tags=["needs-review"], fields="core,category", limit=30) to pull a page worth of detail. Keep batches small — one batch is the unit the agent reasons over end-to-end.
3

Decide per transaction

For each row the agent considers provider_name, provider_merchant_name, amount, account_name, and any pre-applied category. It either confirms the category, picks a new one, or defers.
4

Resolve with a compound write

Call update_transactions once per batch with up to 50 operations. Each op can set the category, remove the needs-review tag with a note, and optionally add a comment — all in a single request.
At the end of the run, the agent submits a short report (POST /api/v1/reports) so the household can skim what happened without reading every annotation.

A full compound op, end-to-end

Here’s what a single update_transactions call looks like for a batch of three decisions:
Two rows get categorized and closed; the third gets bumped to a secondary tag and left on the queue. That’s the rhythm of the loop.

A paste-ready system prompt

Drop this into your agent’s system instructions (Claude.ai projects, Claude Desktop, an automation tool, etc.). Tune the cadence line to match how often you want it to run.

What the agent should not do

  • Never touch rows for category changes. The update_transactions op will report the skip; trust that signal.
  • Never batch more than 50 ops into one update_transactions call. Split batches.
  • Never resync on its own schedule. Sync runs on its own cron; trigger_sync is reserved for when a human asks for the latest data.
  • Never close a review it’s not confident about. Leaving the tag in place is a first-class action.

When one agent is enough

A single routine reviewer handles most households indefinitely. The thresholds that usually prompt people to graduate to multi-agent setups are:
  • Queue consistently sits above 100 unresolved items for days at a time.
  • Different kinds of transactions need genuinely different reasoning — peer-to-peer transfers, business expenses, subscriptions — and you want each handled by a specialist agent with its own context.
  • You want different review cadences for different transaction types (e.g., subscriptions weekly, everything else daily).
Until you hit one of those, keep it simple.
  • Breadbox in a nutshell — the primitives the loop rests on.
  • Review workflow — the full spec for the needs-review tag and its seeded rule.
  • MCP tools — reference for query_transactions, count_transactions, and update_transactions.
Last modified on June 25, 2026