{"id":"invoice-aging","summary":"Age a list of unpaid invoices into 30/60/90 buckets and price the delay.","method":"POST","inputSchema":{"type":"object","properties":{"invoices":{"type":"array","description":"Unpaid invoices","items":{"type":"object","properties":{"client":{"type":"string"},"reference":{"type":"string"},"amount":{"type":"number"},"dueDate":{"type":"string","description":"YYYY-MM-DD"}},"required":["amount","dueDate"]}},"today":{"type":"string","description":"YYYY-MM-DD reference date"},"annualRatePct":{"type":"number","description":"Annual late-fee rate as a percent (default 12)"}},"required":["invoices","today"]},"exampleInput":{"invoices":[{"client":"Adler Studio","reference":"INV-038","amount":1800,"dueDate":"2026-08-01"},{"client":"Vela Media","reference":"INV-019","amount":2500,"dueDate":"2026-04-15"}],"today":"2026-08-23","annualRatePct":12},"exampleOutput":{"rows":[{"client":"Vela Media","reference":"INV-019","amount":2500,"dueDate":"2026-04-15","daysLate":130,"bucket":"d90plus","interest":106.84931506849314},{"client":"Adler Studio","reference":"INV-038","amount":1800,"dueDate":"2026-08-01","daysLate":22,"bucket":"d1to30","interest":13.01917808219178}],"totalOutstanding":4300,"totalOverdue":4300,"totalInterest":119.86849315068493,"byBucket":{"current":0,"d1to30":1800,"d31to60":0,"d61to90":0,"d90plus":2500},"averageDaysLate":84.79069767441861,"oldest":{"client":"Vela Media","reference":"INV-019","amount":2500,"dueDate":"2026-04-15","daysLate":130,"bucket":"d90plus","interest":106.84931506849314}}}