io.github.timesheetIO/timesheet-mcp
NPM · @TIMESHEET/MCP · SCANNED SEP 24
timesheet.io MCP server - manage timers, projects, tasks and reports
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security89
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects axios 1.12.0, reached via @timesheet/sdk > axios. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 74 of 201 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 102 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability80
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4180 tokens (~104/item across 40 items; 40 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities47
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
- Supports UI / widget rendering.Pass
How do I install the io.github.timesheetIO/timesheet-mcp server?
io.github.timesheetIO/timesheet-mcp runs locally as an npm package, launched with npx -y @timesheet/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @timesheet/mcp
claude mcp add timesheetio-timesheet-mcp -- npx -y @timesheet/mcp
{
"mcpServers": {
"timesheetio-timesheet-mcp": {
"command": "npx",
"args": [
"-y",
"@timesheet/mcp"
]
}
}
} {
"servers": {
"timesheetio-timesheet-mcp": {
"command": "npx",
"args": [
"-y",
"@timesheet/mcp"
]
}
}
} codex mcp add timesheetio-timesheet-mcp -- npx -y @timesheet/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"timesheetio-timesheet-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@timesheet/mcp"
],
"enabled": true
}
}
} openclaw mcp add timesheetio-timesheet-mcp --command npx --arg -y --arg @timesheet/mcp
mcp_servers:
timesheetio-timesheet-mcp:
command: "npx"
args: ["-y", "@timesheet/mcp"] {
"McpServers": {
"timesheetio-timesheet-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@timesheet/mcp"
]
}
}
} assistant mcp add timesheetio-timesheet-mcp -t stdio -c npx -a -y @timesheet/mcp
{
"mcpServers": {
"timesheetio-timesheet-mcp": {
"command": "npx",
"args": [
"-y",
"@timesheet/mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 −3
- Stability: pass → 0.80 functional
- 18 Sept 26 0
- Stability: 0.97 → pass security
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 0
- CVE-2026-82417 no longer affects this package ▲ security
- CVE-2026-82562 no longer affects this package ▲ security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Sept 2026 · Analysed npm/@timesheet/mcp@1.0.5
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 28 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-35jp-ww65-95wh | CVE-2026-44494 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N | yes |
| GHSA-3g43-6gmg-66jw | CVE-2026-44495 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:L | yes |
| GHSA-3p68-rc4w-qgx5 | CVE-2025-62718 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N | yes |
| GHSA-3w6x-2g7m-8v23 | CVE-2026-42044 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N | yes |
| GHSA-42h9-826w-cgv3 | CVE-2026-67313 | medium | yes | |
| GHSA-43fc-jf86-j433 | CVE-2026-25639 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-445q-vr5w-6q77 | CVE-2026-42037 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-5c9x-8gcm-mpgx | CVE-2026-42034 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| GHSA-62hf-57xw-28j9 | CVE-2026-42039 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-6chq-wfr3-2hj9 | CVE-2026-42035 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-777c-7fjr-54vf | CVE-2026-44488 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-7q8q-rj6j-mhjq | CVE-2026-67319 | medium | yes | |
| GHSA-898c-q2cr-xwhg | CVE-2026-44490 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L | yes |
| GHSA-fvcv-3m26-pcqx | CVE-2026-40175 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N | yes |
| GHSA-hfxv-24rg-xrqf | CVE-2026-44496 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-j5f8-grm9-p9fc | CVE-2026-44486 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N | yes |
| GHSA-jqh4-m9w3-8hp9 | CVE-2026-67317 | medium | yes | |
| GHSA-m7pr-hjqh-92cm | CVE-2026-42038 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N | yes |
| GHSA-mmx7-hfxf-jppx | CVE-2026-67316 | medium | yes | |
| GHSA-p92q-9vqr-4j8v | CVE-2026-44487 | high | yes | |
| GHSA-pf86-5x62-jrwf | CVE-2026-42033 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-pmv8-rq9r-6j72 | CVE-2026-67312 | medium | yes | |
| GHSA-pmwg-cvhr-8vh7 | CVE-2026-42043 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N | yes |
| GHSA-q8qp-cvcw-x6jj | CVE-2026-42264 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-vf2m-468p-8v99 | CVE-2026-42036 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| GHSA-w9j2-pvgh-6h63 | CVE-2026-42041 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N | yes |
| GHSA-xhjh-pmcv-23jw | CVE-2026-42040 | low | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-xx6v-rp6x-q39c | CVE-2026-42042 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 201 packages
| Packages resolved | 201 |
|---|---|
| Stale | 74 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
auth_configure Configure API Authentication ~89
Use this when the user needs to configure API key authentication for the Timesheet MCP server. NOTE: This will be deprecated once OAuth 2.1 is implemented.
| Name | Type | Req | Description |
|---|---|---|---|
| apiKey | string | yes | The API key for authenticating with the Timesheet API |
| baseUrl | string | – | Optional custom API base URL (e.g., "https://api-test.timesheet.io" for testing) |
| Name | Type | Req | Description |
|---|---|---|---|
| success | boolean | yes | Whether authentication was configured successfully |
No examples provided.
export_fields Get Export Fields ~37
Use this when the user wants to see what fields/columns are available for customizing exports.
| Name | Type | Req | Description |
|---|---|---|---|
| scope | string | – | Scope filter for fields |
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | – |
No examples provided.
export_from_template Export from Template ~87
Use this when the user wants to generate an export using a previously saved template with specific date range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | yes | End date for the export period (YYYY-MM-DD) |
| startDate | string | yes | Start date for the export period (YYYY-MM-DD) |
| templateId | string | yes | The template ID to use. Use export_template_list to find available templates. |
| Name | Type | Req | Description |
|---|---|---|---|
| size | number | – | File size in bytes |
| success | boolean | – | Whether export was generated successfully |
No examples provided.
export_generate Generate Timesheet Export ~249
Use this when the user wants to export their timesheet data in Excel (xlsx), CSV, or PDF format. Returns a download URL for the export file.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | yes | End date for the export period (YYYY-MM-DD format) |
| filename | string | – | Custom filename for the export |
| filter | string | – | Status filter for billing/payment |
| format | string | – | Export file format. xlsx=Excel, xlsx1904=Excel 1904 date system, csv=comma-separated, pdf=PDF document |
| projectIds | array | – | Filter by project IDs |
| report | number | yes | Report type identifier. Use export_report_types to get available types. |
| splitTask | boolean | – | Whether to split multi-day tasks into separate rows |
| startDate | string | yes | Start date for the export period (YYYY-MM-DD format) |
| summarize | boolean | – | Whether to summarize data instead of showing individual entries |
| tagIds | array | – | Filter by tag IDs |
| teamIds | array | – | Filter by team IDs |
| type | string | – | Task type filter |
| userIds | array | – | Filter by user IDs |
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | – | Export filename |
| url | string | – | Download URL for the export file |
No examples provided.
export_report_types Get Export Report Types ~35
Use this when the user wants to see what report types are available for export (e.g., detailed, summary, by project).
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| reports | array | – | – |
No examples provided.
export_send Send Export via Email ~134
Use this when the user wants to generate and send a timesheet export directly to an email address.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address to send the export to | |
| endDate | string | yes | End date for the export period (YYYY-MM-DD) |
| filename | string | – | Custom filename for the export |
| format | string | – | Export file format |
| projectIds | array | – | Filter by project IDs |
| report | number | yes | Report type identifier |
| startDate | string | yes | Start date for the export period (YYYY-MM-DD) |
| teamIds | array | – | Filter by team IDs |
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Email address the export was sent to | |
| success | boolean | – | Whether email was sent successfully |
No examples provided.
export_template_create Create Export Template ~149
Use this when the user wants to save their export configuration as a reusable template.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Default email for sending exports | |
| filename | string | – | Default filename |
| filter | string | – | Status filter |
| format | string | – | Export format |
| name | string | yes | Template name |
| projectIds | array | – | Project IDs filter |
| report | number | – | Report type identifier |
| splitTask | boolean | – | Split multi-day tasks |
| summarize | boolean | – | Summarize data |
| teamIds | array | – | Team IDs filter |
| type | string | – | Task type filter |
| userIds | array | – | User IDs filter |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Created template ID |
| name | string | – | Template name |
No examples provided.
export_template_delete Delete Export Template ~38
Use this when the user wants to delete an export template. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Template ID to delete |
| Name | Type | Req | Description |
|---|---|---|---|
| deletedId | string | – | Deleted template ID |
| success | boolean | – | Whether deletion was successful |
No examples provided.
export_template_get Get Export Template ~37
Use this when the user wants to view details of a specific export template.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | The template ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | – |
| id | string | – | – |
| name | string | – | – |
| projectIds | array | – | – |
| report | number | – | – |
| teamIds | array | – | – |
No examples provided.
export_template_list List Export Templates ~82
Use this when the user wants to see their saved export templates for quick recurring exports.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum number of templates to return |
| order | string | – | Sort order |
| page | number | – | Page number for pagination (1-based) |
| search | string | – | Search templates by name |
| sort | string | – | Sort field |
| Name | Type | Req | Description |
|---|---|---|---|
| templates | array | – | – |
| totalCount | number | – | Total number of templates |
No examples provided.
export_template_update Update Export Template ~88
Use this when the user wants to modify an existing export template.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Updated export format |
| name | string | – | Updated template name |
| projectIds | array | – | Updated project IDs filter |
| report | number | – | Updated report type |
| teamIds | array | – | Updated team IDs filter |
| templateId | string | yes | Template ID to update |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| name | string | – | – |
No examples provided.
project_create Create Project ~110
Use this when the user wants to create a new project to organize their time tracking.
| Name | Type | Req | Description |
|---|---|---|---|
| color | number | – | Optional color code for visual identification (typically 0-23) |
| description | string | – | Optional description providing more details about the project |
| taskDefaultBillable | boolean | – | Whether tasks in this project should be billable by default |
| teamId | string | – | Optional team ID if this project belongs to a team |
| title | string | yes | The project name or title |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the newly created project |
| title | string | yes | The project title |
No examples provided.
project_delete Delete Project ~57
Use this when the user wants to permanently delete a project. WARNING: This is a destructive operation that cannot be undone. All associated tasks will remain but will lose their project association.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The project ID to delete permanently |
| Name | Type | Req | Description |
|---|---|---|---|
| deletedId | string | – | The ID of the deleted project |
| success | boolean | yes | Whether the deletion was successful |
No examples provided.
project_get Get Project ~35
Use this when the user wants to view detailed information about a specific project.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The project ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| archived | boolean | – | Whether the project is archived |
| color | number | – | Project color as decimal integer |
| description | string | – | Project description |
| id | string | yes | Project ID |
| title | string | yes | Project title |
No examples provided.
project_list List Projects ~440
Use this when the user wants to view their projects. IMPORTANT: When the user asks for a specific number (e.g., "show me 5 projects"), use the limit parameter to control how many projects are returned. Always use pagination to avoid loading all projects unnecessarily. Supports filtering by team, status, date ranges, and text search.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum number of projects to return. Use this when user asks for a specific number (e.g., "5 projects" = limit: 5). Defaults to 20 if not specified. |
| order | string | – | Sort order (ascending or descending) |
| page | number | – | Page number for pagination (1-based). Use with limit to fetch subsequent pages. |
| projectIds | array | – | Optional array of project IDs to filter specific projects |
| search | string | – | Optional search query to filter projects by title (partial match supported) |
| sort | string | – | Sort field for projects: alpha=alphabetical, alphaNum=alphanumeric, client=by client name, duration=total time tracked, created=creation date, status=active/inactive |
| status | string | – | Filter by project status. "active" = non-archived, "inactive" = archived, "all" = both. Defaults to "all" if not specified. |
| taskEndDate | string | – | Filter projects with tasks ending on or before this date (ISO 8601 format: YYYY-MM-DD) |
| taskFilter | string | – | Additional task-level filter for projects |
| taskRateId | string | – | Filter projects containing tasks with this specific rate ID |
| taskStartDate | string | – | Filter projects with tasks starting on or after this date (ISO 8601 format: YYYY-MM-DD) |
| taskType | string | – | Filter projects containing tasks of a specific type |
| taskUserIds | array | – | Filter projects containing tasks assigned to these user IDs |
| teamId | string | – | Optional team ID to filter projects belonging to a specific team |
| teamIds | array | – | Optional array of team IDs to filter projects belonging to multiple teams |
| Name | Type | Req | Description |
|---|---|---|---|
| projects | array | yes | List of projects matching the criteria |
| totalCount | number | – | Total number of projects returned |
No examples provided.
project_update Update Project ~82
Use this when the user wants to modify an existing project's details such as title, description, or archive status.
| Name | Type | Req | Description |
|---|---|---|---|
| archived | boolean | – | Set to true to archive the project, false to unarchive it |
| description | string | – | Updated project description |
| id | string | yes | The project ID to update |
| title | string | – | Updated project title |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The updated project ID |
| title | string | – | The updated project title |
No examples provided.
report_document_get Get Document Report Data ~56
Use this when the user wants to retrieve formatted document/invoice data including tasks, expenses, and financial calculations. Returns JSON data ready for display.
| Name | Type | Req | Description |
|---|---|---|---|
| documentId | string | yes | The unique identifier of the document/invoice to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| documentTitle | string | – | Document title |
| invoiceNumber | string | – | Invoice number |
| tasks | array | – | List of task items |
| totalAmount | string | – | Formatted total amount |
No examples provided.
report_document_pdf Generate Document PDF ~57
Use this when the user wants to generate and download a PDF version of a document/invoice. Returns a download URL for the PDF file.
| Name | Type | Req | Description |
|---|---|---|---|
| documentId | string | yes | The unique identifier of the document/invoice to generate PDF for |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | Status message |
| size | number | – | PDF file size in bytes |
| success | boolean | – | Whether PDF was generated successfully |
No examples provided.
report_document_xml Generate Document XML ~68
Use this when the user wants to generate XML representation of a document for e-invoicing (Zugferd, XRechnung, ebInterface). Returns XML data for electronic invoice processing.
| Name | Type | Req | Description |
|---|---|---|---|
| documentId | string | yes | The unique identifier of the document/invoice to generate XML for |
| Name | Type | Req | Description |
|---|---|---|---|
| success | boolean | – | Whether XML was generated successfully |
| xml | string | – | XML content |
No examples provided.
report_expense_get Get Expense Report Data ~46
Use this when the user wants to retrieve formatted expense data including amounts and receipt information.
| Name | Type | Req | Description |
|---|---|---|---|
| expenseId | string | yes | The unique identifier of the expense to retrieve report data for |
| Name | Type | Req | Description |
|---|---|---|---|
| expenseAmount | string | – | Formatted amount |
| expenseDate | string | – | Formatted expense date |
| expenseDescription | string | – | Expense description |
No examples provided.
report_expense_pdf Generate Expense PDF ~49
Use this when the user wants to generate and download a PDF report for a specific expense including receipt images.
| Name | Type | Req | Description |
|---|---|---|---|
| expenseId | string | yes | The unique identifier of the expense to generate PDF for |
| Name | Type | Req | Description |
|---|---|---|---|
| size | number | – | PDF file size in bytes |
| success | boolean | – | Whether PDF was generated successfully |
No examples provided.
report_note_get Get Note Report Data ~44
Use this when the user wants to retrieve formatted note data including content and attachments.
| Name | Type | Req | Description |
|---|---|---|---|
| noteId | string | yes | The unique identifier of the note to retrieve report data for |
| Name | Type | Req | Description |
|---|---|---|---|
| noteAuthor | string | – | Note author name |
| noteContent | string | – | Note content |
| noteDate | string | – | Formatted note date |
No examples provided.
report_note_pdf Generate Note PDF ~47
Use this when the user wants to generate and download a PDF report for a specific note including images.
| Name | Type | Req | Description |
|---|---|---|---|
| noteId | string | yes | The unique identifier of the note to generate PDF for |
| Name | Type | Req | Description |
|---|---|---|---|
| size | number | – | PDF file size in bytes |
| success | boolean | – | Whether PDF was generated successfully |
No examples provided.
report_task_get Get Task Report Data ~49
Use this when the user wants to retrieve formatted task data including time tracking, rates, and project details.
| Name | Type | Req | Description |
|---|---|---|---|
| taskId | string | yes | The unique identifier of the task to retrieve report data for |
| Name | Type | Req | Description |
|---|---|---|---|
| projectName | string | – | Project name |
| taskDate | string | – | Formatted task date |
| taskDuration | string | – | Formatted duration |
| taskTotal | string | – | Formatted total amount |
No examples provided.
report_task_pdf Generate Task PDF ~45
Use this when the user wants to generate and download a PDF report for a specific task.
| Name | Type | Req | Description |
|---|---|---|---|
| taskId | string | yes | The unique identifier of the task to generate PDF for |
| Name | Type | Req | Description |
|---|---|---|---|
| size | number | – | PDF file size in bytes |
| success | boolean | – | Whether PDF was generated successfully |
No examples provided.
task_add_expense Add Expense to Task ~112
Use this when the user wants to record an expense or cost associated with the currently running task, such as travel, materials, or client entertainment.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Expense amount in the user's default currency |
| dateTime | string | – | Optional timestamp for when the expense occurred in ISO 8601 format. If not provided, uses current time. |
| description | string | yes | Description of what the expense was for (e.g., "Taxi to client site", "Lunch meeting", "Materials") |
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | The expense amount recorded |
| expenseDescription | string | – | The expense description |
| success | boolean | yes | Whether the expense was added successfully |
No examples provided.
task_add_note Add Note to Task ~77
Use this when the user wants to add a text note or comment to the currently running task for future reference or documentation.
| Name | Type | Req | Description |
|---|---|---|---|
| dateTime | string | – | Optional timestamp for the note in ISO 8601 format. If not provided, uses current time. |
| text | string | yes | The note content or comment to attach to the task |
| Name | Type | Req | Description |
|---|---|---|---|
| noteText | string | – | The note text that was added |
| success | boolean | yes | Whether the note was added successfully |
No examples provided.
task_add_pause Add Manual Pause to Task ~95
Use this when the user wants to manually record a past break or pause period that was not tracked in real-time.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Reason for the pause (e.g., "Lunch break", "Meeting", "Coffee break") |
| endDateTime | string | yes | When the pause ended in ISO 8601 format |
| startDateTime | string | yes | When the pause started in ISO 8601 format |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | Duration of the pause in seconds |
| success | boolean | yes | Whether the pause was added successfully |
No examples provided.
task_create Create Task ~145
Use this when the user wants to manually create a time entry for past work, rather than using the timer.
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Whether this task should be billable to the client. Defaults to project setting. |
| description | string | – | Optional description of what work was done |
| endDateTime | string | – | Optional end time in ISO 8601 format. If provided, creates a completed task. |
| projectId | string | yes | The project ID this task belongs to |
| startDateTime | string | yes | When the work started in ISO 8601 format (e.g., "2025-10-08T09:00:00Z") |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | Duration of the task in seconds (if endDateTime was provided) |
| id | string | yes | The ID of the newly created task |
No examples provided.
task_delete Delete Task ~46
Use this when the user wants to permanently delete a time entry. WARNING: This is a destructive operation that cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The task ID to delete permanently |
| Name | Type | Req | Description |
|---|---|---|---|
| deletedId | string | – | The ID of the deleted task |
| success | boolean | yes | Whether the deletion was successful |
No examples provided.
task_get Get Task ~37
Use this when the user wants to view detailed information about a specific time entry/task.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The task ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Whether the task is billable |
| description | string | – | Task description |
| duration | number | – | Duration in seconds |
| endDateTime | string | – | End date and time |
| id | string | yes | Task ID |
| projectTitle | string | – | Associated project title |
| startDateTime | string | – | Start date and time |
No examples provided.
task_list List Tasks ~596
Use this when the user wants to view their time entries. IMPORTANT: When the user asks for a specific number (e.g., "show me 10 tasks"), use the limit parameter to control how many tasks are returned. Always use pagination to avoid loading all tasks unnecessarily. Supports extensive filtering by organization, team, project, user, tags, and more.
| Name | Type | Req | Description |
|---|---|---|---|
| documentId | string | – | Filter tasks associated with a specific document |
| endDate | string | – | Filter tasks ending on or before this date (YYYY-MM-DD format) |
| excludeTaskIds | array | – | Exclude specific task IDs from results |
| feelings | array | – | Filter tasks by feeling/satisfaction ratings (1-5) |
| filter | string | – | Filter tasks by billing/payment status: all=all tasks, billable=only billable, notBillable=non-billable, paid=payment received, unpaid=not paid, billed=invoice sent, outstanding=billed but unpaid |
| limit | number | – | Maximum number of tasks to return. Use this when user asks for a specific number (e.g., "10 tasks" = limit: 10). Defaults to 20 if not specified. |
| order | string | – | Sort order (ascending or descending) |
| organizationId | string | – | Filter tasks by organization ID |
| page | number | – | Page number for pagination (1-based). Use with limit to fetch subsequent pages. |
| performance | boolean | – | Include performance metrics in task details |
| populateExpenses | boolean | – | Include expense information in task details |
| populateNotes | boolean | – | Include notes in task details |
| populatePauses | boolean | – | Include pause/break information in task details |
| populateTags | boolean | – | Include tag details in task information |
| projectId | string | – | Filter tasks for a specific project |
| projectIds | array | – | Filter tasks by multiple project IDs |
| rateId | string | – | Filter tasks by rate/billing rate ID |
| running | boolean | – | If true, only return currently running tasks |
| sort | string | – | Sort field for tasks: dateTime=by start/end time, time=by duration, created=by creation date |
| startDate | string | – | Filter tasks starting on or after this date (YYYY-MM-DD format) |
| tagIds | array | – | Filter tasks by tag IDs |
| taskIds | array | – | Filter specific tasks by IDs |
| teamId | string | – | Filter tasks by team ID |
| teamIds | array | – | Filter tasks by multiple team IDs |
| todoId | string | – | Filter tasks associated with a specific todo/task item |
| type | string | – | Filter tasks by type: all=all types, task=regular time entries, mileage=mileage entries, call=call entries |
| userIds | array | – | Filter tasks by user IDs (task owners) |
| Name | Type | Req | Description |
|---|---|---|---|
| tasks | array | yes | List of tasks matching the criteria |
No examples provided.
task_update Update Task ~133
Use this when the user wants to modify details of an existing time entry such as times, description, or billing status.
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Updated billable status |
| billed | boolean | – | Mark task as billed (invoice sent to client) |
| description | string | – | Updated task description |
| endDateTime | string | – | Updated end time in ISO 8601 format |
| id | string | yes | The task ID to update |
| paid | boolean | – | Mark task as paid (for invoicing) |
| startDateTime | string | – | Updated start time in ISO 8601 format |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | The updated task ID |
| success | boolean | yes | Whether the update was successful |
No examples provided.
team_list List Teams ~178
Use this when the user wants to view or search for teams. IMPORTANT: Use this tool to find team IDs by searching team names, which can then be used to filter projects. Supports text search and pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum number of teams to return. Defaults to 20 if not specified. |
| order | string | – | Sort order (ascending or descending) |
| organizationId | string | – | Filter teams by organization ID |
| page | number | – | Page number for pagination (1-based). Use with limit to fetch subsequent pages. |
| search | string | – | Search query to filter teams by name (partial match supported) |
| sort | string | – | Sort field: alpha=alphabetical by name, permission=by user permission level, created=by creation date |
| statistics | boolean | – | Include statistics with team data |
| Name | Type | Req | Description |
|---|---|---|---|
| teams | array | – | List of teams matching the criteria |
| totalCount | number | – | Total number of teams returned |
No examples provided.
timer_pause Pause Timer ~79
Use this when the user wants to pause the timer to take a break. This temporarily stops time tracking while keeping the task active.
| Name | Type | Req | Description |
|---|---|---|---|
| startDateTime | string | – | Optional pause start time in ISO 8601 format (e.g., "2025-10-08T12:00:00Z"). If not provided, uses current time. |
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | yes | Timer status after pausing |
No examples provided.
timer_resume Resume Timer ~79
Use this when the user wants to resume time tracking after a break or pause. This restarts the timer from its paused state.
| Name | Type | Req | Description |
|---|---|---|---|
| endDateTime | string | – | Optional pause end time in ISO 8601 format (e.g., "2025-10-08T13:00:00Z"). If not provided, uses current time. |
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | yes | Timer status after resuming |
No examples provided.
timer_start Start Timer ~112
Use this when the user wants to begin tracking time on a specific project. The user can optionally specify a custom start time in the past, otherwise it defaults to now.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | The unique identifier of the project to track time for. Use project_list to find available projects. |
| startDateTime | string | – | Optional start time in ISO 8601 format (e.g., "2025-10-08T10:30:00Z"). If not provided, uses current time. |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | Current duration in seconds |
| projectId | string | – | ID of the project |
| projectTitle | string | – | Name of the project being tracked |
| startTime | string | – | When the timer was started |
| status | string | yes | Current timer status |
No examples provided.
timer_status Get Timer Status ~40
Use this when the user wants to check the current state of their timer, including whether it's running, paused, or stopped, and details about the active task.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Task description (if provided) |
| duration | number | – | Current duration in seconds (if active) |
| hours | number | – | Hours component of duration |
| minutes | number | – | Minutes component of duration |
| projectId | string | – | ID of the project (if active) |
| projectTitle | string | – | Name of the project being tracked (if active) |
| status | string | yes | Current timer status |
No examples provided.
timer_stop Stop Timer ~83
Use this when the user wants to stop the currently active timer and complete the time tracking session. The user can optionally specify when the timer should be stopped.
| Name | Type | Req | Description |
|---|---|---|---|
| endDateTime | string | – | Optional end time in ISO 8601 format (e.g., "2025-10-08T18:00:00Z"). If not provided, uses current time. |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | yes | Total duration tracked in seconds |
| hours | number | – | Hours component of duration |
| minutes | number | – | Minutes component of duration |
| status | string | yes | Timer status after stopping |
No examples provided.
timer_update Update Timer Task ~158
Use this when the user wants to modify details of the currently running timer task, such as description, location, billability, or mood rating.
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Whether this time should be billed to the client |
| description | string | – | Task description or notes about what work is being done |
| feeling | number | – | Mood or satisfaction rating from 1 (poor) to 5 (excellent) |
| location | string | – | Physical location where work started (e.g., "Office", "Home", "Client site") |
| locationEnd | string | – | Physical location where work ended |
| tags | array | – | Tags or categories to help organize this task (e.g., ["meeting", "development", "urgent"]) |
| Name | Type | Req | Description |
|---|---|---|---|
| success | boolean | yes | Whether the update was successful |
No examples provided.
What is the io.github.timesheetIO/timesheet-mcp server?
io.github.timesheetIO/timesheet-mcp is listed in the public MCP registry as io.github.timesheetIO/timesheet-mcp. timesheet.io MCP server - manage timers, projects, tasks and reports. This page covers its npm package (@timesheet/mcp).
Is the io.github.timesheetIO/timesheet-mcp server safe to use?
io.github.timesheetIO/timesheet-mcp scores 80 out of 100 on VerifyMCP. We recorded 28 known advisories against it as of 24 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.timesheetIO/timesheet-mcp server expose?
io.github.timesheetIO/timesheet-mcp exposes 40 tools: timer_start, timer_stop, timer_pause, timer_resume, timer_status, and 35 more. Their descriptions and schemas cost roughly 4,180 tokens of context every time the server is loaded.
Is the io.github.timesheetIO/timesheet-mcp server still maintained?
io.github.timesheetIO/timesheet-mcp is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.timesheetIO/timesheet-mcp server under?
io.github.timesheetIO/timesheet-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.