@baruchiro/actual-mcp
Version:
Actual Budget MCP server exposing API functionality
36 lines • 1.78 kB
JavaScript
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