API & MCP
Everything a person can do on Timeslice Timesheet Summary, a program or AI agent can do with the same inputs and get the identical result.
HTTP API
POST https://timeslicetimesheetsummary.usefulweb.app/api/v1/calculate– run Timeslice Timesheet SummaryGET https://timeslicetimesheetsummary.usefulweb.app/api/v1/tool– inputs, output schema, examples- OpenAPI 3.1: /openapi.json · /openapi.yaml
- Errors:
application/problem+json;422includes per-fielderrors.
Timeslice Timesheet Summary
Totals a timesheet table (CSV from any time tracker or spreadsheet) by project, task, tag or client over a date range: hours per day and per ISO week, billable and non-billable time, amounts from hourly rates, optional rounding per entry, a stacked bar chart per day and a donut of the shares.
| Field | Type | Default | Description |
|---|---|---|---|
entries | textarea | "date,start,end,project,client,task,tags,billable,rate,note\n2026-11-02,09:00,12 | Timesheet table (CSV with a header row). Columns (any order, comma, semicolon or tab): date, start, end or duration, project, client, task, tags, billable, rate, note. Durations like 1h30, 90m, 1:30 or 1.5 work too. |
groupBy | select (project, task, tag, client) | "project" | Group by |
from | text | — | From (YYYY-MM-DD, empty = first entry) |
to | text | — | To (YYYY-MM-DD, empty = last entry) |
roundMinutes | select (0, 1, 5, 6, 10, 15, 30, 60) | "0" | Round each entry to |
roundMode | select (nearest, up) | "nearest" | Rounding |
defaultRate | number | 0 | Hourly rate for rows without one |
currency | text | "EUR" | Currency code (for example EUR, USD) |
dateOrder | select (dmy, mdy) | "dmy" | Dates like 03/11/2026 are |
billableByDefault | boolean | false | Rows without a billable column are billable |
Example request
Freelance days for two clients
curl -X POST https://timeslicetimesheetsummary.usefulweb.app/api/v1/calculate -H 'content-type: application/json' -d '{"entries":"date,start,end,project,client,task,tags,billable,rate,note\n2026-11-02,09:00,12:30,Brand refresh,Acme Bakery,Logo concepts,design,yes,85,Three directions\n2026-11-02,13:30,14:15,Brand refresh,Acme Bakery,Client call,meeting,yes,85,Kick-off\n2026-11-02,14:30,17:00,Shop website,Northwind Bikes,Wireframes,design,yes,70,\n2026-11-03,09:00,12:00,Shop website,Northwind Bikes,Wireframes,design,yes,70,Checkout flow\n2026-11-03,13:00,15:30,Shop website,Northwind Bikes,Product photos,photo,yes,70,\n2026-11-03,15:45,16:30,Studio admin,,Invoices,admin,no,,\n2026-11-04,08:30,11:45,Brand refresh,Acme Bakery,Packaging layout,design,yes,85,","groupBy":"project","currency":"EUR"}'
Every result contains
inputs (normalised, defaults applied), summary, result (validated against the published schema), units, assumptions, sources, warnings, computedAt and links.
MCP (Model Context Protocol)
- Streamable HTTP endpoint:
https://timeslicetimesheetsummary.usefulweb.app/mcp– protocol revisions 2026-07-28 (stateless) and 2025-11-25 / 2025-06-18 / 2025-03-26 (initialize handshake). - Tools:
timeslice_timesheet_summary - Local stdio connector:
node src/mcp-stdio.ts --tool=timeslice-timesheet-summary
{
"mcpServers": {
"timeslice-timesheet-summary": { "type": "http", "url": "https://timeslicetimesheetsummary.usefulweb.app/mcp" }
}
}