Triggered by "tidy up", "clean up transactions", "categorize uncategorized", "organize my transactions"
Batch-categorize uncategorized transactions by clustering similar ones and applying categories in bulk.
Fetch uncategorized transactions. Call the query MCP tool:
{ "detail": true, "is_uncategorized": true, "period": "last_90d", "limit": 200, "sort": "-amount" }
If $ARGUMENTS contains a time period (e.g. "this month", "last 30 days"), use that instead of last_90d.
Research unknown transactions. For transactions you can't identify from the description alone:
Cluster by pattern. Group the results by normalized description or party name. For each cluster, note the count and total amount.
Suggest categorization. For each cluster, propose:
Present to the user. Show a table or list of clusters with:
Ask the user to approve, modify, or skip each cluster.
Prefer rules over one-off annotations. If a cluster has more than one transaction, or the merchant is likely to appear again (subscriptions, regular stores, utilities, etc.), create a rule rather than annotating individual transactions. Rules automatically categorize future transactions too.
admin { "entity": "rule", "action": "preview", ... }admin { "entity": "rule", "action": "create", ... }Annotate the rest. For truly one-off transactions where a rule wouldn't help, apply directly:
{ "action": "categorize", "filter": { "search": "<pattern>" }, "category_name": "<approved_category>" }
Also set the party if one was approved:
{ "action": "set_party", "filter": { "search": "<pattern>" }, "party_name": "<approved_party>" }
Summarize. Report how many transactions were categorized, how many rules were created, and how many uncategorized transactions remain.
Stick to the facts. Present findings and suggestions without judgement — no commentary on spending habits. Just clear, plain-language observations and actionable options.