Recurring is in Beta. Find it in the admin dashboard under Recurring (the old
/subscriptions URL redirects there), plus the REST API and MCP. The shapes below are stable, but expect the surface to keep growing.A series is a thin, rule-maintained entity
In Breadbox’s rules-as-substrate model, a series is deliberately minimal:- Surrogate identity — a stable
id/short_idthat survives renames. name— the human label you (or an agent) picked. Unique among live series.type—subscription,bill,loan, orother.
assign_series rules match — a series is its governing rules.
The admin Recurring detail page makes that explicit: it shows the linked charges side-by-side with the governing rules that define them.
Auto-join charges with a rule
To make every charge from a merchant join a series on sync, use theassign_series rule action. The recurrence idiom — amount approx + day_of_month approx — is the durable way to express a recurring pattern:
series_name+create_if_missing: truemints the series the first time a charge matches; every future charge with the sameseries_namejoins the existing one (surrogate-first — the same name always resolves the same series).- Provide
series_short_idinstead to target a series that already exists. - A transaction belongs to at most one series.
assign_seriesis NULL-fill only — it never steals a charge already in another series. Across the pipeline, the highest-priority rule wins.
streaming, work-tools), bundle the add_tag action into the same rule. Members get the tag at sync time and on retroactive apply.
Series tags as a separate, inherited surface have been removed. Tag a series by adding an
add_tag action to the same rule that does assign_series, or author a separate rule that matches the same conditions.Back-fill existing charges
Once the rule is in place, future syncs handle themselves. To pull in charges that already exist, apply the rule retroactively:assign_series (and every other state-mutating action) through both the single-rule and the bulk apply-all paths. You can also link a charge by hand from the admin Recurring page, or with the assign_series MCP tool for a one-off assignment.
Working with series from an agent
The same surface is available over MCP, which is how a scheduled reviewer agent can keep your subscription list tidy:list_series— list every live series (name,type, charge count). Lean by default.get_series— fetch one series’nameandtypeby short ID or UUID. Its linked charges come fromquery_transactions(series_id=...).assign_series— a one-off link/mint for transactions an agent has already decided about. For durable patterns, the agent should author anassign_seriesrule instead.update_series— rename a series or change itstype.unlink_series_transactions— detach charges from a series (inverse ofassign_series’ link path).
Auditing what you spend
Once your subscriptions are series:- See the portfolio. The Recurring page lists every live series with its name, type, and charge count, and the detail view shows the linked charges plus the governing rules behind them.
- Total the outflow. Query the transactions linked to your active monthly series (
query_transactions(series_id=...)) and sum their amounts. Keep eachiso_currency_codeseparate — don’t mix currencies. - Spot creep. A
set_metadatarule can stamp the expected price into the transaction’s metadata blob; reviewing actuals against it surfaces silent price hikes.
Deleting a series
Removing a series is non-destructive — its transactions stay exactly where they are and simply lose the series link. Your history is never deleted. To stop new charges from joining, disable or delete theassign_series rules that govern it.
Related reading
- Rules — the
assign_seriesaction and the full rule DSL. - Understanding rules — the recurrence idiom (
amount approx+day_of_month approx) explained. - MCP tools — the series tools an agent can call.
- On-demand analysis — ask Claude “which of my subscriptions are underused?” once they’re tracked.