using System.ComponentModel; using ModelContextProtocol.Server; namespace MoneyMap.Mcp.Tools; [McpServerToolType] public static class BudgetTools { [McpServerTool(Name = "get_budget_status"), Description("Get all active budgets with current period spending vs. limit.")] public static async Task GetBudgetStatus( [Description("Date to calculate status for (defaults to today)")] string? asOfDate = null, MoneyMapApiClient api = default!) { return await api.GetBudgetStatusAsync(asOfDate); } [McpServerTool(Name = "create_budget"), Description("Create a new budget for a category or total spending.")] public static async Task CreateBudget( [Description("Budget amount limit")] decimal amount, [Description("Period: Weekly, Monthly, or Yearly")] string period, [Description("Start date for period calculation, e.g. 2026-01-01")] string startDate, [Description("Category name (omit for total spending budget)")] string? category = null, MoneyMapApiClient api = default!) { return await api.CreateBudgetAsync(category, amount, period, startDate); } [McpServerTool(Name = "update_budget"), Description("Update an existing budget's amount, period, or active status.")] public static async Task UpdateBudget( [Description("Budget ID to update")] int budgetId, [Description("New budget amount")] decimal? amount = null, [Description("New period: Weekly, Monthly, or Yearly")] string? period = null, [Description("Set active/inactive")] bool? isActive = null, MoneyMapApiClient api = default!) { return await api.UpdateBudgetAsync(budgetId, amount, period, isActive); } }