Skip to main content
Glama
Jtewen
by Jtewen

list-transactions

Fetch and analyze transactions for a specific account or month to review spending patterns. Provides detailed insights for budgeting and financial tracking in YNAB.

Instructions

List transactions for a specific account or an entire month. Use this to investigate spending patterns identified in the financial overview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
account_idNoThe ID of the account to fetch transactions for.
budget_idNoThe ID of the budget. If not provided, the default budget will be used.
limitNoThe maximum number of transactions to return.
monthNoThe month to fetch transactions for (YYYY-MM-DD format).
since_dateNoThe starting date for transactions (YYYY-MM-DD). Only valid if 'account_id' is provided.

Implementation Reference

  • Main execution logic for the 'list-transactions' tool: validates input using ListTransactionsInput, fetches transactions via ynab_client based on account_id or month parameters, applies filters and limits, formats a text response with transaction details.
    elif name == "list-transactions": args = ListTransactionsInput.model_validate(arguments or {}) budget_id = await _get_budget_id(args.model_dump()) limit = int(args.limit) if args.limit is not None else None if args.account_id and not args.month: transactions = await ynab_client.get_transactions( budget_id=budget_id, account_id=args.account_id, since_date=args.since_date, limit=limit, ) header = f"Here are the latest transactions for account {args.account_id}:" elif args.month: since_date = args.month if args.account_id: transactions = await ynab_client.get_transactions( budget_id=budget_id, account_id=args.account_id, since_date=since_date, ) header = f"Here are the transactions for account {args.account_id} in {args.month}:" else: transactions = await ynab_client.get_monthly_transactions( budget_id=budget_id, month=since_date, ) header = f"Here are the transactions for {args.month}:" if transactions: # Filter transactions to the specified month transactions = [ t for t in transactions if str(t.var_date).startswith(since_date[:7]) ] if limit: transactions = transactions[:limit] else: # This case should now be primarily for account_id with since_date transactions = await ynab_client.get_transactions( budget_id=budget_id, account_id=args.account_id, since_date=args.since_date, limit=limit, ) header = f"Here are the latest transactions for account {args.account_id}:" if not transactions: return [types.TextContent(type="text", text="No transactions found.")] transaction_list = "\n".join( f"- {t.var_date}: {t.payee_name or 'N/A'} | " f"{t.category_name or 'N/A'} | {t.amount / 1000:.2f} (ID: {t.id})" for t in transactions ) return [ types.TextContent( type="text", text=f"{header}\n{transaction_list}", ) ]
  • Pydantic model ListTransactionsInput defining the input schema for the tool, with fields for budget_id (inherited), account_id, month, since_date, limit, and validation ensuring either account_id or month is provided.
    class ListTransactionsInput(BudgetIdInput): account_id: Optional[str] = Field(None, description="The ID of the account to fetch transactions for.") month: Optional[str] = Field(None, description="The month to fetch transactions for (YYYY-MM-DD format).") since_date: Optional[str] = Field( None, description="The starting date for transactions (YYYY-MM-DD). Only valid if 'account_id' is provided." ) limit: Optional[float] = Field( None, description="The maximum number of transactions to return." ) @model_validator(mode='before') @classmethod def check_exclusive_fields(cls, values): if not values.get('account_id') and not values.get('month'): raise ValueError('Either "account_id" or "month" must be provided.') if values.get('month') and values.get('since_date'): raise ValueError('"since_date" is not applicable when "month" is provided.') return values
  • Tool registration in handle_list_tools(), defining name, description, and inputSchema for 'list-transactions'.
    types.Tool( name="list-transactions", description="List transactions for a specific account or an entire month. Use this to investigate spending patterns identified in the financial overview.", inputSchema=ListTransactionsInput.model_json_schema(), ),
  • Includes 'list-transactions' in the set of read-only tools, which are always available even in read-only mode.
    READ_ONLY_TOOLS = { "list-budgets", "list-accounts", "list-transactions", "list-categories", "list-payees", "list-scheduled-transactions", "get-financial-overview", "get-month-info", "lookup-payee-locations", }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jtewen/ynab-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server