{"name":"io.github.Red-Square-Software/keeping-mcp","slug":"red-square-software-keeping-mcp","title":null,"description":"MCP server for the Keeping time-tracking API","url":"https://mcp.market/server/red-square-software-keeping-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":17,"stars":0,"forks":0,"downloads_week":43,"last_push_at":"2026-06-15T07:46:04.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/red-square-software/keeping-mcp","website":"https://github.com/red-square-software/keeping-mcp","version":"1.0.1","remotes":[],"packages":[{"registryType":"npm","identifier":"keeping-mcp","version":"1.0.1","transport":{"type":"stdio"}}],"tools":[{"name":"keeping_add_entry","description":"Create a new time entry. DRY-RUN BY DEFAULT \\u2014 call without confirm first to receive a would_post preview; call again with confirm: true ONLY after a human reviewed the preview. Body shape depends on the organisation's timesheet mode: 'times' mode requires start/end (HH:mm in org timezone); 'hours' mode requires a decimal hours value. Purpose defaults to 'work'. The date defaults to today in E","write_action":true,"price_micros":0,"input_schema":null},{"name":"keeping_delete_entry","description":"**DESTRUCTIVE: permanently deletes the entry** \\u2014 cannot be undone. Owns the dry-run gate: without confirm: true, the tool fetches the entry and returns a would_delete preview so a human can verify the right entry is targeted. Only call with confirm: true after a human reviewed the preview.","write_action":true,"price_micros":0,"input_schema":null},{"name":"keeping_list_entries","description":"Returns time entries for a date range. Wire shape preserved exactly as returned by the Keeping API \\u2014 no field renaming \\u2014 so this tool doubles as schema discovery for Phase 3 write tools. Dates are calendar dates in YYYY-MM-DD; not UTC timestamps. Single-day calls hit `GET /{orgId}/time-entries?date=...`; multi-day ranges hit `GET /{orgId}/report/time-entries?from=...&to=...`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_me","description":"Returns the authenticated user (id, first_name, surname, code, role, state) wrapped under a `user` key, plus the resolved `organisation_id`. Identity is cached for the server's lifetime. Pass the optional `organisation_id` input to override the KEEPING_ORG_ID default; required when the token has access to multiple organisations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_organisations","description":"Returns the list of organisations the token can access. Each organisation includes feature flags (projects, tasks, timesheet_mode) verbatim from the API. Cached for the server's lifetime.","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_projects","description":"Returns the list of projects available for the selected organisation. If the projects feature is disabled for the organisation, returns a human-readable note instead of an error. Not cached \\u2014 fresh per call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_resume_timer","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_start_timer","description":"Start a new ongoing time entry (a running timer). Implemented as POST /{orgId}/time-entries with `start` set and NO `end` / NO `hours` \\u2014 Keeping interprets the omission of `end` as 'this entry is ongoing'. Returns { timer_id } on success; use this id with keeping_stop_timer or keeping_resume_timer. DRY-RUN BY DEFAULT \\u2014 call without confirm first to receive a would_post preview; call agai","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_stop_timer","description":"Stop an ongoing time entry (running timer) by setting its end. Implemented as PATCH /{orgId}/time-entries/{entry_id}/stop. Returns the updated entry plus server_time_ms \\u2014 the millisecond-precision server timestamp captured from the X-Server-Time-Ms response header (TIMER-02). When the header is missing or unparseable, server_time_ms falls back to the local clock and a warning is logged to std","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_tasks","description":"Returns the list of tasks available for the selected organisation. If the tasks feature is disabled for the organisation, returns a human-readable note instead of an error. Not cached \\u2014 fresh per call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_timer_status","description":"Returns the most recent time entry for the authenticated user plus a derived `is_running` boolean indicating whether a Keeping timer is currently running. Read-only; no API mutation. Use this to decide whether `keeping_stop_timer` (running timer \\u2192 stop) or `keeping_resume_timer` (stopped entry \\u2192 resume) is the appropriate next call (both ship in Phase 3).","write_action":false,"price_micros":0,"input_schema":null},{"name":"keeping_update_entry","description":"Edit an existing time entry owned by the authenticated user. PATCH semantics \\u2014 only the fields you supply are updated. DRY-RUN BY DEFAULT \\u2014 call without confirm first to receive a would_post preview; call again with confirm: true ONLY after a human reviewed the preview. NOTE: date, purpose, and user_id are immutable in Keeping; this tool does not accept them.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-27T05:28:49.806Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T05:28:49.791Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":8,"max":15,"notes":["last push 104 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"keeping-mcp","version":"1.0.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-06-12T16:14:12.578Z","repositoryUrl":"git+https://github.com/Red-Square-Software/keeping-mcp.git","weeklyDownloads":43}],"repo":{"found":true,"owner":"red-square-software","repo":"keeping-mcp","archived":false,"pushedAt":"2026-06-15T07:46:04Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/190514996?v=4","ownerCreatedAt":"2024-12-03T15:51:27Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/190514996?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":43,"license":"MIT","lastPushAt":"2026-06-15T07:46:04.000Z","score":17}}}},"grade_history":[],"reviews":[]}