depreciation_declining_balance
Calculate declining balance depreciation schedules for assets using accelerated write-off methods to determine annual depreciation expenses based on cost, salvage value, and useful life.
Instructions
Calculate declining balance depreciation schedule
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | ||
| rate | No | Declining balance rate (e.g., 2.0 for double-declining) | |
| salvageValue | Yes | ||
| usefulLife | Yes |
Implementation Reference
- Core implementation of declining balance depreciation calculation, handling book value updates and salvage value constraints.@staticmethod def declining_balance(cost: float, salvage_value: float, useful_life: int, rate: float = 2.0) -> List[float]: """Calculate declining balance depreciation""" depreciation_schedule = [] book_value = cost annual_rate = rate / useful_life for year in range(useful_life): depreciation = book_value * annual_rate if book_value - depreciation < salvage_value: depreciation = book_value - salvage_value depreciation_schedule.append(depreciation) book_value -= depreciation if book_value <= salvage_value: break while len(depreciation_schedule) < useful_life: depreciation_schedule.append(0) return depreciation_schedule
- src/tools/financial-tools.ts:230-244 (handler)MCP tool handler function that bridges to the Python DepreciationCalculator.declining_balance method.handler: async (args: any): Promise<ToolResult> => { try { const result = await pythonBridge.callPythonFunction({ module: 'financial_calculations', function: 'DepreciationCalculator.declining_balance', args: [args.cost, args.salvageValue, args.usefulLife, args.rate || 2.0] }); return result; } catch (error) { return { success: false, error: error instanceof Error ? error.message : String(error) }; } }
- src/tools/financial-tools.ts:220-229 (schema)Input schema defining parameters for the depreciation_declining_balance tool.inputSchema: { type: "object", properties: { cost: { type: "number" }, salvageValue: { type: "number" }, usefulLife: { type: "number" }, rate: { type: "number", default: 2.0, description: "Declining balance rate (e.g., 2.0 for double-declining)" } }, required: ["cost", "salvageValue", "usefulLife"] },
- src/tools/financial-tools.ts:217-245 (registration)Tool object registration in financialTools array export, including name, description, schema, and handler.{ name: "depreciation_declining_balance", description: "Calculate declining balance depreciation schedule", inputSchema: { type: "object", properties: { cost: { type: "number" }, salvageValue: { type: "number" }, usefulLife: { type: "number" }, rate: { type: "number", default: 2.0, description: "Declining balance rate (e.g., 2.0 for double-declining)" } }, required: ["cost", "salvageValue", "usefulLife"] }, handler: async (args: any): Promise<ToolResult> => { try { const result = await pythonBridge.callPythonFunction({ module: 'financial_calculations', function: 'DepreciationCalculator.declining_balance', args: [args.cost, args.salvageValue, args.usefulLife, args.rate || 2.0] }); return result; } catch (error) { return { success: false, error: error instanceof Error ? error.message : String(error) }; } } },
- src/index.ts:32-44 (registration)Global registration where financialTools are included in the allTools array used by MCP server handlers.const allTools = [ ...excelTools, ...financialTools, ...rentalTools, ...expenseTools, ...reportingTools, ...cashFlowTools, ...taxTools, ...analyticsTools, ...chartTools, ...complianceTools, ...propertyTools, ];