UNPKG

@baruchiro/actual-mcp

Version:

Actual Budget MCP server exposing API functionality

36 lines 1.78 kB
import { BalanceHistoryInputParser } from './input-parser.js'; import { BalanceHistoryDataFetcher } from './data-fetcher.js'; import { BalanceHistoryCalculator } from './balance-calculator.js'; import { BalanceHistoryReportGenerator } from './report-generator.js'; import { success, errorFromCatch } from '../../utils/response.js'; import { formatDate } from '../../utils.js'; import { BalanceHistoryArgsSchema } from '../../types.js'; import { zodToJsonSchema } from 'zod-to-json-schema'; export const schema = { name: 'balance-history', description: 'Get account balance history over time. If accountId is not provided, returns balance history for all accounts. Use get-accounts tool to discover available account IDs.', inputSchema: zodToJsonSchema(BalanceHistoryArgsSchema), }; export async function handler(args) { try { const input = new BalanceHistoryInputParser().parse(args); const { accountId, months } = input; // Calculate date range const endDate = new Date(); const startDate = new Date(); startDate.setMonth(endDate.getMonth() - months); const start = formatDate(startDate); const end = formatDate(endDate); // Fetch data const { account, accounts, transactions } = await new BalanceHistoryDataFetcher().fetchAll(accountId, start, end); // Calculate balance history const sortedMonths = new BalanceHistoryCalculator().calculate(account, accounts, transactions, months, endDate); // Generate report const markdown = new BalanceHistoryReportGenerator().generate(account, { start, end }, sortedMonths); return success(markdown); } catch (err) { return errorFromCatch(err); } } //# sourceMappingURL=index.js.map