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 callslist_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
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
"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.
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
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
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
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
Series (subscriptions)
Breadbox groups recurring charges into series. A series is a thin surrogate identity (id, name, type) — its membership is maintained byassign_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.