Skip to main content
Glama
justmytwospence

ynab-mcp

update_scheduled_transaction

Modify scheduled transactions in YNAB to adjust amounts, dates, payees, categories, or frequencies for recurring financial events.

Instructions

[1 API call] Update an existing scheduled transaction

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
budget_idNoBudget ID or 'last-used'last-used
scheduled_transaction_idYesThe scheduled transaction ID
account_idYesAccount ID (required even if unchanged)
dateYesDate (YYYY-MM-DD, required even if unchanged)
amountNoNew amount in dollars
frequencyNoNew frequency
payee_idNoNew payee ID
payee_nameNoNew payee name
category_idNoNew category ID
memoNoNew memo
flag_colorNoNew flag color

Implementation Reference

  • The tool `update_scheduled_transaction` is registered here with its input schema definition.
    server.registerTool("update_scheduled_transaction", {
      title: "Update Scheduled Transaction",
      description: "[1 API call] Update an existing scheduled transaction",
      inputSchema: {
        budget_id: z.string().default("last-used").describe("Budget ID or 'last-used'"),
        scheduled_transaction_id: z.string().describe("The scheduled transaction ID"),
        account_id: z.string().describe("Account ID (required even if unchanged)"),
        date: z.string().describe("Date (YYYY-MM-DD, required even if unchanged)"),
        amount: z.number().optional().describe("New amount in dollars"),
        frequency: z.enum(FREQUENCIES).optional().describe("New frequency"),
        payee_id: z.string().optional().describe("New payee ID"),
        payee_name: z.string().optional().describe("New payee name"),
        category_id: z.string().optional().describe("New category ID"),
        memo: z.string().optional().describe("New memo"),
        flag_color: z.enum(FLAG_COLORS).optional().describe("New flag color"),
      },
  • The handler function for `update_scheduled_transaction` that executes the update logic via the YNAB client.
    }, async ({ budget_id, scheduled_transaction_id, account_id, date, amount, frequency, payee_id, payee_name, category_id, memo, flag_color }) => {
      try {
        const response = await getClient().scheduledTransactions.updateScheduledTransaction(
          budget_id, scheduled_transaction_id, {
            scheduled_transaction: {
              account_id,
              date,
              amount: amount != null ? dollarsToMilliunits(amount) : undefined,
              frequency,
              payee_id,
              payee_name,
              category_id,
              memo,
              flag_color: flag_color ?? null,
            },
          }
        );
        const t = response.data.scheduled_transaction;
        return textResult(
          `Updated scheduled transaction: ${t.date_first} | ${formatCurrency(t.amount)} | ${t.frequency}\nID: ${t.id}`
        );
      } catch (e: any) {
        return errorResult(e.message);
      }
    });

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/justmytwospence/ynab-mcp'

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