remove_budget
Remove a budget for a given category and period. The request succeeds even if no budget exists, ensuring idempotent updates.
Instructions
Remove the budget for a specific category and period. The request is idempotent — succeeds even if no budget exists for the period.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Budget period start date in YYYY-MM-DD format. Must be a valid budget period start. | |
| category_id | Yes | Category ID for the budget to remove. |
Implementation Reference
- src/tools/budgets.ts:202-240 (registration)Registration of the 'remove_budget' tool via server.registerTool(), including its input schema (start_date, category_id) and annotations (destructiveHint: true).
server.registerTool( "remove_budget", { description: "Remove the budget for a specific category and period. The request is idempotent — succeeds even if no budget exists for the period.", inputSchema: { start_date: z .string() .regex(/^\d{4}-\d{2}-\d{2}$/, "Must be YYYY-MM-DD format") .describe( "Budget period start date in YYYY-MM-DD format. Must be a valid budget period start.", ), category_id: z.coerce .number() .describe("Category ID for the budget to remove."), }, annotations: { destructiveHint: true, }, }, async ({ start_date, category_id }) => { try { const params = new URLSearchParams({ start_date, category_id: category_id.toString(), }); const response = await api.delete(`/budgets?${params}`); if (!response.ok) { return handleApiError(response, "Failed to remove budget"); } return successResponse("Budget removed."); } catch (error) { return catchError(error, "Failed to remove budget"); } }, ); - src/tools/budgets.ts:222-239 (handler)Handler function for 'remove_budget' that makes a DELETE API call to /budgets with start_date and category_id query parameters, and returns success/error responses.
async ({ start_date, category_id }) => { try { const params = new URLSearchParams({ start_date, category_id: category_id.toString(), }); const response = await api.delete(`/budgets?${params}`); if (!response.ok) { return handleApiError(response, "Failed to remove budget"); } return successResponse("Budget removed."); } catch (error) { return catchError(error, "Failed to remove budget"); } }, - src/tools/budgets.ts:207-217 (schema)Input schema for 'remove_budget': start_date (YYYY-MM-DD string) and category_id (number, coerced).
inputSchema: { start_date: z .string() .regex(/^\d{4}-\d{2}-\d{2}$/, "Must be YYYY-MM-DD format") .describe( "Budget period start date in YYYY-MM-DD format. Must be a valid budget period start.", ), category_id: z.coerce .number() .describe("Category ID for the budget to remove."), }, - src/index.ts:11-11 (registration)Import of registerBudgetTools from budgets.ts.
import { registerBudgetTools } from "./tools/budgets.js"; - src/index.ts:30-30 (registration)Call to registerBudgetTools(server) that registers the remove_budget tool among other budget tools.
registerBudgetTools(server);