Pyunto Time Management
OfficialThis server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Pyunto Time Management — integrations
Open-source client libraries for Pyunto Time Management, a time-management and project-planning service with end-to-end encryption.
Package | What it is |
TypeScript client for the public REST API (v1), with client-side E2EE decryption | |
MCP (Model Context Protocol) server — connects Claude Code, Claude Desktop, Codex CLI, Cursor and other AI clients to an account |
The service itself is not open source. This repository contains only the client side: HTTP calls against the documented public API, plus the crypto needed to decrypt your own data locally. There is nothing here that talks to the database, handles billing, or holds a key.
Why this part is public
The MCP server can be given your account password so it can decrypt project and task names. That is a lot to ask of a program you cannot read, so this is the part we publish: you can verify for yourself that the password is used only to unwrap the private key in your own process, and is never transmitted.
See sdk/src/crypto.ts for the primitives and
mcp/src/index.ts for how they're used.
Related MCP server: tyme-mcp
Quick start (MCP)
No clone needed — the published package runs straight from npm:
claude mcp add pyunto-tm \
--env PYUNTO_TM_API_KEY=ptm_your_key \
-- npx -y @pyunto/tm-mcpFull setup instructions, including Claude Desktop, Codex CLI and Cursor: https://tm.pyunto.com/docs/mcp.en.md (日本語: https://tm.pyunto.com/docs/mcp.ja.md).
Get an API key from Settings → Account → API keys in the app. Scopes decide what an integration may read or write, and a key can be revoked at any time.
Quick start (SDK)
npm install @pyunto/tm-sdkimport { PyuntoTM } from "@pyunto/tm-sdk";
const tm = new PyuntoTM({ apiKey: process.env.PTM_KEY! });
// Dates, durations and aggregates need no key material at all
const record = await tm.serviceRecord("2026-08-01", "2026-08-31");
// Names and memos are encrypted; unlock decrypts them locally
await tm.unlock(process.env.PTM_PASSWORD!);
const projects = await tm.projects({ decrypt: true });Development
npm workspaces; Node 18+.
npm install
npm run build # both packages
npm test # sdk crypto round-trips + mcp tools against a stub APImcp depends on @pyunto/tm-sdk by version, so the published package resolves
it from the registry while local development links the workspace copy.
Security
Found a problem in this code, or in the service? Please report it privately rather than opening a public issue: support@pyunto.com.
Licence
MIT — see LICENSE.
Available Tools
10 toolsdelete_time_blockA
Permanently delete ONE recorded time block, along with any files attached to it. Before calling it you MUST show the user the block you are about to delete (date, start and end time, project, task and memo, from list_time_blocks) and get an explicit yes for that specific block. Never infer the block from a vague instruction, and never delete several blocks because the user described a range — confirm and delete them one at a time. A deleted block can be put back with restore_time_block for 14 days, after which it and its attachments are purged for good and cannot be recovered; say so when you report the deletion, and do not tell the user the deletion is irreversible. Requires the blocks:delete scope, which is separate from blocks:write and has to be granted deliberately.
Inputs: block_id (required).
list_deleted_time_blocksA
Time blocks that were deleted but can still be restored, newest first, each with the date it was deleted and the deadline for putting it back. Use it to find the block_id for restore_time_block when the user says they deleted something by mistake. Requires the blocks:read scope.
Inputs: no named parameters.
list_projectsA
List every project the account can see, with id, name, colour and role (owner/editor/viewer). Use it to resolve a project name the user typed into the project_id other tools need. Requires the projects:read scope.
Inputs: no named parameters.
list_tasksA
List Gantt tasks (and subtasks) with their id, project, name and date range. Filter to one project with project_id. Use it to resolve a task name into the task_id that log_time takes. Requires the projects:read scope.
Inputs: active_on, project_id.
list_time_blocksA
The individual time blocks logged between two dates (inclusive, max 92 days), with start/end times, duration, project, task and memo. This is the detailed schedule; use time_summary when you only need totals. Requires blocks:read.
Inputs: date_to (required), date_from (required).
log_timeA
Record a block of worked time on the calendar. Writes to the user's real schedule, so confirm the project, date and times with them before calling it. Requires the blocks:write scope; for an end-to-end-encrypted project a memo additionally needs PYUNTO_TM_PASSWORD so it can be encrypted locally.
Inputs: end (required), date (required), start (required), project_id (required), +2 more.
restore_time_blockA
Put a deleted time block back on the calendar, along with any files that were attached to it. Get block_id from list_deleted_time_blocks. Works only within the 14-day recovery window; after that the block is gone for good. Requires the blocks:write scope.
Inputs: block_id (required).
time_summaryA
Total hours logged between two dates (inclusive, max 92 days), grouped by project, by task, or by day. This is the tool to answer 'how much time did I spend on X' and to write a work log or diary entry. Requires record:read.
Inputs: date_to (required), date_from (required), group_by.
update_time_blockA
Change an already-recorded time block: its date, start/end times, memo, or the task it counts towards. Get block_id from list_time_blocks. Only the fields you pass change. Tell the user what the block currently says and what it will say before calling this. Requires the blocks:write scope; changing a memo on an end-to-end-encrypted project also needs PYUNTO_TM_PASSWORD, and project_id so the memo is encrypted under the right key.
Inputs: block_id (required), end, date, memo, +3 more.
whoamiA
Who this MCP server is connected as: account email, API key name, granted scopes, server URL, and whether end-to-end-encrypted names can be decrypted. Call this first when a tool fails, to see which scopes are missing.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
TDQS
Scored across 10 tools
Each tool targets a clearly distinct resource or action: projects, tasks, active time blocks, summaries, deleted blocks, logging, updating, deleting, restoring, and identity. Descriptions explicitly resolve potential overlaps, such as list_time_blocks versus time_summary and list_deleted_time_blocks versus list_time_blocks.
The set is mostly consistent snake_case with verb_noun or list_noun patterns, such as list_tasks, log_time, delete_time_block, and restore_time_block. Minor deviations are whoami (single word) and time_summary (noun phrase rather than verb_noun), but readability remains high.
10 tools is well-scoped for a time-tracking server, and each tool has a clear role without obvious redundancy. The count sits comfortably in the ideal range and does not feel thin or heavy.
The time-block lifecycle is fully covered: log, list, update, delete, restore, and list deleted blocks. Minor gaps include read-only projects and tasks (no create/update/delete for those resources) and no direct get_time_block_by_id, but the core time-management workflows are present.
Maintenance
Related MCP Connectors
Read your tracked time and projects, pause tracking or add a note, from Claude or ChatGPT.
Time tracking you talk to: log, check and fix your work hours from your AI assistant.
Log hours and invoice clients from your AI chat. Time tracking and invoicing for freelancers.
Connects AI assistants to TrackingTime for querying time entries, projects, tasks, customers, and team data using natural language.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Rytnow project management platform, supporting task management, time tracking, plan creation, and team collaboration through natural language commands.-
- AlicenseNot gradedqualityFmaintenanceConnects AI assistants to the Tyme macOS app to manage time tracking, projects, and tasks via natural language. It uses native AppleScript and JXA to control timers and generate reports without requiring cloud dependencies or API keys.14 npm4MIT

TrackingTime MCPofficial
AlicenseNot gradedqualityCmaintenanceConnects AI assistants to TrackingTime for querying time entries, projects, tasks, customers, and team data using natural language.16 npmMIT- AlicenseNot gradedqualityDmaintenanceEnables natural language time tracking through AI assistants, integrating with Azure DevOps to log, view, and report work hours without context switching.44 npmMIT