query_transactions
Returns a paginated list of transactions matching the supplied filters. This is the workhorse read tool — almost every agent session goes through it. Scope: Read Mirrors:GET /api/v1/transactions
Parameters
Start date inclusive.
End date exclusive.
Filter to a single account (UUID or short ID).
Filter to all accounts owned by a family member. Attribution-aware — includes transactions attributed to this user via account links.
Filter by category slug. Parent slugs include all children.
Minimum amount (positive = debit, negative = credit).
Maximum amount.
Filter by pending status. Omit to return both.
Case-insensitive substring match on
name and merchant_name. Comma-separate values for OR.contains, words, or fuzzy.Exclude transactions whose name or merchant matches this text.
Tags the transaction must have (AND). The review queue is
["needs-review"].Tags the transaction must have at least one of (OR).
Max 500.
Opaque pagination cursor from a previous response. Only valid with
sort_by=date.date, amount, or name.desc or asc.Comma-separated fields or aliases (
minimal, core, category, timestamps). See Conventions. id is always included.Optional session ID to associate this read with a session.
Optional rationale for this query.
Example input
Example output
Example output
count_transactions
Returns the count of transactions matching the filters, without fetching any rows. Agents use this as a cheap pre-flight to decide whether to paginate or narrow filters. Scope: Read Mirrors:GET /api/v1/transactions/count
Parameters
Accepts the same filters asquery_transactions except cursor, limit, sort_by, sort_order, and fields.
Example input
Example output
transaction_summary
Returns aggregated transaction totals grouped by category, month, week, day, or category × month. Replaces the need to paginate through every transaction for spending analysis. Amounts follow the Plaid convention — positive = money out. Scope: Read Mirrors:GET /api/v1/transactions/summary
Parameters
One of
category, month, week, day, category_month.Defaults to 30 days ago.
Defaults to today.
Filter by account.
Filter by family member (attribution-aware).
Filter by primary category before aggregating.
Include pending transactions.
Example input
Example output
Example output
merchant_summary
Lists distinct merchants with aggregated stats — count, total, average, and date range. Agents use this to scan for recurring charges, find top merchants, or surface unknown subscriptions. Scope: Read Mirrors:GET /api/v1/transactions/merchants
Parameters
Defaults to 90 days ago.
Defaults to today.
Filter by account.
Filter by family member.
Filter by category.
Minimum per-transaction amount.
Maximum per-transaction amount.
Search merchant/transaction names.
contains, words, fuzzy.Exclude merchants matching this text.
Minimum transaction count to include a merchant. Set to
2 for recurring, 3 for likely subscriptions.Only include positive amounts (spending).
Example input
Example output
Example output
list_transaction_comments
Returns all comments attached to a transaction, ordered chronologically. Agents should check comments before writing to understand prior context. Scope: ReadParameters
UUID or short ID of the transaction.
Example input
Example output
list_transaction_matches
Lists transaction pairs matched by an account link. Used to audit which primary-account transactions were attributed to a dependent user via the account-link dedup system. Scope: ReadParameters
The account link ID to list matches for.
Example input
Example output
list_annotations
Returns the activity timeline for a single transaction: comments, tag adds/removes, rule applications, and category sets. Ordered bycreated_at ascending. Use this to reconstruct “what happened to this transaction and when” before making further changes.
Each row carries a generic kind plus an action for the specific event, so you can branch on the action without parsing the kind string:
kind | action values | Notes |
|---|---|---|
comment | (omitted) | Free-form comment. payload.content carries the body. |
rule | applied | A transaction rule fired. payload.rule_name and rule_id are populated. |
tag | added / removed | Tag attached to or detached from the transaction. tag_id and payload.slug are populated. |
category | set | Category was set (manual override or via rule). |
Parameters
UUID or short ID of the transaction.
Optional kind filter. Any of
comment, rule, tag, category. Empty (default) returns the full timeline. Pass ['comment'] for the comment-only view (replaces the deprecated list_transaction_comments); pass ['tag'] for both add and remove tag events; pass ['comment','tag','category'] to skip rule-application churn.Only the generic kinds above are accepted at the MCP boundary — the underlying DB-level values (tag_added, tag_removed, rule_applied, category_set) will be rejected with an invalid kind error.Example input
list_transaction_comments):
Example output
Example output
kind carries the generic event family (comment, rule, tag, category) and action carries the specific event (added, removed, set, applied). Comment rows omit action because there is only one event. Actor identity is split across actor_type (user / agent / system), actor_name, and optional actor_id. When a write tool passed a session_id, it’s echoed here so you can group events by session. Rule applications set rule_id; tag events set tag_id.