Skip to main content
This page is for you — the person deciding what to hand an agent. Agents receive these tool schemas at inference time and don’t need to read this page; they see the parameters, descriptions, and JSON schemas directly through the MCP protocol. Use this reference to understand the surface area a connected AI client can touch, so you can pick the right API-key scope and know what will show up in your audit log.
Looking for the full tool list? This page walks through the handful of tools you’re most likely to care about as a human. For the complete enumeration of every MCP tool with full parameters, examples, and scope labels, see the MCP Reference tab.
Amount convention: Amounts follow Plaid’s convention. Positive values are debits (money leaving an account). Negative values are credits (money entering). If an agent talks about “total spend,” it’s summing positive amounts only.

What a typical agent session looks like

An agent connected to Breadbox usually opens a session by orienting itself before it starts querying. First it calls list_users and list_accounts to see who’s in the household and which accounts exist — this gives it the IDs it needs to filter anything downstream. Then, before pulling rows, it calls query_transactions with count_only: true and its intended filters so it knows whether to expect fifty results or five thousand. Only then does it call query_transactions for real, paginating with the returned cursor if has_more is true. That pattern — orient, size, query — keeps token usage predictable and matches how Breadbox’s tools are designed. You don’t need to enforce it from the outside; the tool descriptions nudge the agent toward it.

list_accounts

Lists all connected bank accounts with their current balances. An agent typically calls this early in a session to learn what accounts exist and get their IDs. Scope: Read Input parameters Example input
Example output
For credit accounts, balance_current represents the amount owed, not available funds. Amounts across different iso_currency_code values should not be summed.

query_transactions

Searches transactions using a combination of filters. Results are cursor-paginated with a default page size of 50 and a maximum of 500. This is the workhorse tool — almost every non-trivial agent session goes through it. Scope: Read Input parameters Example input
Example output
When there are no more pages, the response includes "has_more": false and "next_cursor": null.
Each transaction object is roughly 50 tokens. At the default page size of 50, one call returns approximately 2,500 tokens of content. At the maximum of 500, a single call can reach 25,000 tokens. If your agent pulls large result sets unfiltered, your context budget will disappear fast.
Page size guidance

Counting without paginating: query_transactions(count_only=true)

There’s no separate count_transactions tool. To get just a count for a given set of filters, call query_transactions with count_only: true and the same filters you’d otherwise use. The response is {"count": N} with no rows, no pagination, and no cursor — cursor, limit, sort_by, sort_order, and fields are ignored. It’s the cheap pre-flight an agent uses to decide whether to narrow filters or brace for pagination. Example input
Example output

list_categories

Returns the Breadbox category taxonomy as a flat list. Each category has a stable slug — the handle agents pass to query_transactions to filter by category, and to rule actions to set a category. Scope: Read Input parameters None. Pass an empty object. Example input
Example output
Pass a category slug as the category_slug parameter in query_transactions to filter by category. Parent slugs (e.g., food_and_drink) include all child categories automatically.

list_users

Lists all family members tracked in Breadbox. Users are labels for account ownership — they are not login accounts. Returned IDs are what an agent uses to filter accounts and transactions by person. Scope: Read Input parameters None. Pass an empty object. Example input
Example output

get_sync_status

Returns the health status of all bank connections: whether they are syncing successfully, when they last synced, and whether any connection needs re-authentication. This is how an agent answers “why don’t I see yesterday’s transactions?” without guessing. Scope: Read Input parameters None. Pass an empty object. Example input
Example output
Status values
To trigger a manual sync from outside an agent session, use POST /api/v1/sync (REST) or breadbox sync trigger (CLI). Breadbox does not expose a trigger_sync MCP tool — syncs run on the configured cron, and agents are expected to call get_sync_status to check freshness rather than kick off their own syncs.

Series (subscriptions)

Breadbox groups recurring charges into series. A series is a thin surrogate identity (id, name, type) — its membership is maintained by assign_series rules in the rule engine, not by a built-in detector. These tools are the agent-facing side of the Recurring page; an agent uses them to mint or rename a series and to one-off-link or unlink specific charges.
When you want every future charge from a merchant to land in a series automatically, encode that as an assign_series rule via create_transaction_rule instead of calling assign_series for each new transaction.
Last modified on June 25, 2026