UNPKG

@baruchiro/actual-mcp

Version:

Actual Budget MCP server exposing API functionality

35 lines 1.63 kB
import { zodToJsonSchema } from 'zod-to-json-schema'; import { success, errorFromCatch } from '../../utils/response.js'; import { updateTransaction } from '../../actual-api.js'; import { UpdateTransactionArgsSchema } from '../../types.js'; export const schema = { name: 'update-transaction', description: 'Update an existing transaction. Can modify date, amount, payee, category, notes, cleared status, and subtransactions.', inputSchema: zodToJsonSchema(UpdateTransactionArgsSchema), }; export async function handler(args) { try { const validatedArgs = UpdateTransactionArgsSchema.parse(args); const { id: transactionId, ...updateData } = validatedArgs; // Filter out undefined values to only send fields that were explicitly provided const filteredUpdateData = Object.fromEntries(Object.entries(updateData).filter(([, value]) => value !== undefined)); if (Object.keys(filteredUpdateData).length === 0) { return { content: [ { type: 'text', text: 'No fields provided to update. Please specify at least one field to modify.', }, ], isError: true, }; } await updateTransaction(transactionId, filteredUpdateData); const updatedFields = Object.keys(filteredUpdateData).join(', '); return success(`Successfully updated transaction ${transactionId}. Updated fields: ${updatedFields}`); } catch (error) { return errorFromCatch(error); } } //# sourceMappingURL=index.js.map