deepworktimer-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@deepworktimer-mcpStart a 50 minute deep work session on #rust and log it when done."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Deep Work Timer MCP server
Pomodoro and deep work time tracking for AI coding agents, with a permanent per-skill ledger.
This is the Model Context Protocol server for Deep Work Timer. It lets Claude Code, Claude Desktop, Cursor, Windsurf, or any MCP client start and log focus sessions, manage tasks, and read how many hours you have put into each skill. Every session lands in your ledger at deepworktimer.com: today, this week, a 12-week heatmap, and lifetime hours per #skill. Free, no subscription, no session limit.
Typical use: you tell your agent "track this as #python for the next hour". It creates the task, starts a 60 minute session, switches tasks as the work moves, and logs the block when you are done. Six months later you can ask "how many hours have I put into Python?" and get a number.
Install
You need a free account at deepworktimer.com and an API token (Settings > API tokens). If you already use the dwt CLI, the server reads its token from ~/.deepworktimer/token and no extra setup is needed.
Claude Code
claude mcp add deepworktimer -e DWT_TOKEN=your_token -- npx -y deepworktimer-mcpClaude Desktop, Cursor, Windsurf and other clients
Add to the client's MCP config:
{
"mcpServers": {
"deepworktimer": {
"command": "npx",
"args": ["-y", "deepworktimer-mcp"],
"env": { "DWT_TOKEN": "your_token" }
}
}
}Related MCP server: Timesheet MCP Server
Tools
Tool | What it does |
| Active session (task, time left, which device owns it) and today's total |
| Focus time today / 7d / 30d / 365d / all time, best day, daily average |
| The 10,000-hour ledger: lifetime hours per |
| Today's completed sessions, itemized |
| Projects group tasks (a repo, a course, a certification) |
| Tasks; |
| Start a server-side session (1 to 240 min; default is your pomodoro length) |
| Move the running session to another task; time is split honestly |
| Complete the running session and write it to the ledger |
| Discard the running session |
| Record N minutes on a task after the fact |
Sessions are account-wide: one active session, visible from your phone, laptop and agent. Starting a new one takes over any running session, so the tool descriptions steer agents to dwt_status first and dwt_switch_task when something is already running. Logging refuses if another device owns the open segment (you might be working there) unless you explicitly ask.
Configuration
Variable | Default | Purpose |
|
| API token |
|
| Point at a self-hosted instance |
|
| Device label shown on sessions started here |
Why a ledger and not a streak
Most timers count down and forget. Deep Work Timer keeps the count: hours per day, per week, per skill, for as long as you keep the account. There is no premium tier and nothing is deleted when you stop paying, because there is nothing to pay. The number only goes up.
Development
npm install
npm test # builds, then runs node:test against dist/
node dist/index.js # stdio server; talk to it with an MCP inspectorThe REST API this wraps is the same one the web app and the dwt CLI use. Two API quirks are handled for you: POST /api/tasks does not attach #skills (a follow-up PATCH does), and estimates are patched separately in minutes.
License
MIT
Available Tools
14 toolsdwt_abandon_sessionAbandon the running sessionA
Discard the active session without logging any time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It accurately states the core side effect (discard without logging), but does not clarify reversibility, whether the session is permanently deleted, or any confirmation behavior. That is a moderate gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. The key action and its consequence are stated directly, making it easily parsed and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description fully covers what the agent needs to know: what it acts on and what it does. The absence of extra details is not a deficiency given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document. The description correctly focuses on the action rather than parameter details, which justifies the baseline score of 4 for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Discard') with a clear resource ('active session') and adds a distinguishing qualifier ('without logging any time'). This clearly separates it from session-logging siblings like dwt_log_session and dwt_log_pomodoro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than explicit: the tool is for when you want to discard an active session instead of logging it. However, it does not explicitly name alternatives or state when not to use it, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_complete_taskComplete a taskD
Mark a task as completed.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description discloses no behavioral traits: no mention of side effects, whether the task must exist, whether sessions are affected, or reversibility. For a mutating operation, this is a significant omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded, but it is under-specified rather than appropriately concise. A single sentence provides almost no useful information beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description is minimal but still incomplete: there is no output schema, so the agent does not know what the tool returns, and no error or edge-case behavior is mentioned. Given the lack of annotations, the description carries the full burden and fails to cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, task_id, has zero schema description coverage (0%). The description does not mention it or clarify its meaning beyond the name. The agent must infer that task_id identifies the task to complete, leaving no added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Mark a task as completed' states a clear verb and resource, and it is distinguishable from siblings like dwt_create_task or dwt_list_tasks. However, it essentially restates the tool name and title, adding little new information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as dwt_switch_task or dwt_start_session. The intended use case is only implied by the name, and no exclusions or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_create_projectCreate a projectB
Create a project to group tasks (e.g. a repo, a course, a certification).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It only states 'Create a project' without mentioning permissions, uniqueness constraints, side effects, or what the response contains. For a mutable operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous words. It front-loads the core action and purpose, and the examples add useful context without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 params, no output schema, no annotations), the description still leaves critical gaps: no parameter details, no mention of return behavior, and no guidance on prerequisites. It is enough to understand the basic action but not enough to invoke correctly with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explicitly define the 'name' or 'description' parameters. The examples ('a repo, a course, a certification') loosely hint at what a project name might be, but they do not clarify the parameters' roles or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Create a project to group tasks.' It also provides concrete examples ('a repo, a course, a certification') that illustrate the intended use. This unambiguously distinguishes the tool from siblings like dwt_create_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context by stating that projects group tasks and offering examples, but it does not explicitly say when to use this tool over alternatives such as dwt_create_task or dwt_list_projects. There is no when-not or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_create_taskCreate a taskA
Create a task. Put skills in the description as #tags (e.g. 'Fix auth bug #python #django @1h'); an @Nh/@Nm marker sets the estimate. #tags only attach to skills that already exist on the account. Returns the created task with its attached skills.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | ||
| description | Yes | Task text, optionally with #skill tags and an @1h30m estimate | |
| estimate_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does so well by stating nontrivial behavior: '#tags only attach to skills that already exist on the account' and 'Returns the created task with its attached skills.' The @Nh/@Nm estimate format is also explained. It does not discuss permission requirements or how unknown tags are handled, but the core side effects and return value are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and every sentence earns its place: a clear statement of the action, a concrete encoding example, and a constraint/return note. It is front-loaded with the core purpose and adds detail only where it prevents misuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small create-task tool with no output schema and no annotations, the description is reasonably complete: it gives the tag syntax, the estimate marker, the existing-skill constraint, and the return value. It falls short of a 5 because it does not clarify the role of `project_id`, and it could more explicitly explain when to choose this over the sibling project and task-management tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate for the undocumented parameters. It does a good job explaining the `description` parameter via the #tag/@marker syntax, and indirectly connects that syntax to the estimate value. However, `project_id` is given no semantic meaning beyond its name, and the description does not say whether it is required for routing the task to a project or what happens if it is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the concrete action 'Create a task' and adds precise semantics: a task can carry #skill tags and an @Nh/@Nm estimate marker. This clearly differentiates it from sibling tools such as dwt_create_project and dwt_list_tasks, since the resource being acted on is unambiguous and the tag/estimate rules are specific to creating a task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated explicitly. The description shows how to create a task with #tags and estimates, so an agent can infer that this is the right tool for new task creation. However, it never names alternatives or says when not to use the tool, such as 'use dwt_create_project for project creation' or 'use dwt_create_task only when the target project is already known.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_deposits_todayToday's depositsB
Today's ledger statement: each completed focus session with its tasks and minutes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states what is included (completed focus sessions, tasks, minutes) but does not disclose if this is a read-only operation, how recent the data is, whether it includes incomplete sessions, or any side effects. As a query-like tool, more context about filtering or time boundaries is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the core purpose. It is concise and free of fluff, though it could add a bit more detail about the output or usage without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description gives the essential idea but remains thin. It does not explain what 'deposits' means beyond sessions, nor does it note how this differs from dwt_stats or dwt_status. Given the sibling context, an agent would benefit from a sentence clarifying when this is the right choice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to clarify. The description's reference to 'today's' provides context that a date parameter is not needed, making the lack of parameters self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's output as 'today's ledger statement' listing completed focus sessions with their tasks and minutes. It distinguishes the tool by focusing on today's deposits specifically, which sets it apart from sibling tools like dwt_stats or dwt_status, though it lacks an explicit verb like 'get' or 'list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any conditions for use, exclusions, or reference sibling tools, leaving the agent to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_lifetime_skillsLifetime hours per skill (the ledger)A
The 10,000-hour ledger: lifetime focus hours for every #skill the user has tagged, sorted by hours, with the next milestone. Use to answer 'how many hours have I put into X'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only query via language like "ledger" and "Use to answer," effectively indicating no side effects. It also reveals output structure: sorted hours and next milestone. This is solid but not exhaustively explicit about auth or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It front-loads the core concept (10,000-hour ledger), then specifies the content and provides an example query. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no parameters, no output schema, and no annotations, the description must stand alone. It sufficiently explains what the tool returns (lifetime hours per skill, sorted, with the next milestone) and when to use it (answering a question about hours). No necessary information is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially 100% covered. The description doesn't need to explain any parameters. Per the rule, 0 params yields a baseline of 4. The description's mention of "every #skill the user has tagged" clarifies the implicit scope of the query without needing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's resource (skills) and metric (lifetime focus hours). It specifies the exact purpose: to provide a ledger of hours per tagged skill, sorted by hours, with the next milestone. This is distinct from sibling tools like dwt_status or dwt_stats, which focus on different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a use case: "Use to answer 'how many hours have I put into X'." This gives clear practical guidance on when to invoke this tool. However, it does not mention alternatives or exclusions, so it doesn't fully meet the 5-level bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_list_projectsList projectsA
List the user's projects (id, name). Tasks live in projects or unassigned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. 'List' clearly implies a read-only operation, and the output fields are disclosed. However, it does not mention ordering, pagination, or whether the list includes archived projects, leaving some behavioral aspects unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and resource, followed by a brief clarification about tasks. There is no redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless list operation, the description is largely complete: it states what is returned and adds relevant context about where tasks live. It does not describe a return envelope or any complications, but given the simplicity and lack of output schema, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially 100% covered. The description correctly focuses on the output rather than parameter details. No additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('the user's projects'), and specifies the output fields (id, name). This distinguishes it from sibling tools like dwt_create_project and dwt_list_tasks by naming a distinct resource and operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Tasks live in projects or unassigned' provides contextual hint that listing projects is relevant for finding tasks, but it does not explicitly state when to use this tool versus alternatives such as dwt_list_tasks. No exclusions or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_list_tasksList tasksA
List open tasks. Without project_id returns unassigned tasks; with it, that project's tasks. Set snoozed=true to see snoozed tasks instead.
| Name | Required | Description | Default |
|---|---|---|---|
| snoozed | No | ||
| project_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does reveal that the tool returns open tasks and how project_id and snoozed affect results, but it omits details like return format, ordering, or potential errors. More transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and every clause adds value. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two optional params, no output schema), the description covers the essential behavior fully. It could mention return format or that it's read-only, but the current level is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameters. It does so clearly: project_id toggles between unassigned and project-specific tasks, snoozed toggles to view snoozed tasks instead. This gives full semantic meaning to both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists tasks, and distinguishes between behavior with and without project_id. This differentiates it from sibling tools like dwt_list_projects, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool and how parameters change behavior, but it does not explicitly mention alternatives or cases to avoid. For a simple list tool this is adequate, though not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_log_pomodoroLog a finished block manuallyC
Record focus time that already happened (no running session): N minutes on one task, written to the ledger now.
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | Yes | ||
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the time is written to the ledger, but does not mention authentication, side effects (e.g., whether the task is marked complete), reversibility, or rate limits. The description is sparse and does not add substantial context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at one sentence, with no wasted words. However, the brevity comes at the expense of completeness; it is structured well but lacks necessary detail. The word count is appropriate, but the content is thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with no schema coverage, no output schema, and a sibling group that includes dwt_log_session and dwt_start_session, the description is minimal and likely insufficient for an agent to distinguish and correctly invoke the tool. It lacks information about prerequisites, input validity expectations, and return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate for parameter meaning. The description mentions "N minutes on one task" which provides minimal context for minutes and task_id, but does not clarify that task_id must reference an existing task or the specific constraints (e.g., minutes range). It adds little value over the field names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb "Record" and the resource "focus time" with a specific scope: time that already happened with no running session, written to the ledger. However, it does not explicitly differentiate from sibling tools like dwt_log_session, which likely handles similar logging. The purpose is clear but not distinctly positioned against alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when there is no running session ("no running session"), providing some contextual guidance. However, it does not explicitly state when to use this tool versus dwt_log_session or dwt_start_session, nor does it mention any exclusions or prerequisites. Usage is implied rather than explicitly explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_log_sessionLog (complete) the running sessionA
Complete the active session and write it to the ledger as one pomodoro, split across the tasks it touched. Refuses if another device currently owns the open segment (the user may be working there) unless force=true and the user explicitly asked.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the refusal behavior when another device owns the open segment and the force escape hatch, which is valuable beyond a simple 'complete session' statement. It also notes the splitting across touched tasks, adding detail about the side effect. It does not mention irreversibility or prerequisites, but the key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: the first states the core function, the second the key exception. No redundant phrasing or filler, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single optional parameter and no output schema, the description covers the main action, the split-across-tasks behavior, and the force condition. It leaves some details implicit (e.g., behavior when no session is active), but these are minor given the low complexity and clear sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the only parameter, force, but the description explains its semantics: 'force=true and the user explicitly asked' overrides the device-ownership refusal. This gives the agent enough meaning to use the parameter correctly, even though the schema only says boolean.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb phrases 'Complete the active session' and 'write it to the ledger as one pomodoro, split across the tasks it touched,' clearly identifying the resource and outcome. It distinguishes this tool from siblings like dwt_log_pomodoro (individual pomodoro logging) and dwt_abandon_session (discarding) by focusing on session completion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when there is an active session to complete and log. It also specifies the conditional for the force parameter – 'unless force=true and the user explicitly asked' – giving guidance on the exception. It does not explicitly reference alternative tools, but the context is sufficient to infer the primary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_start_sessionStart a focus sessionA
Start a server-side focus session (default length: the account's pomodoro setting, usually 25 min; 1 to 240 minutes). There is ONE active session per account: starting takes over any session running on another device, so call dwt_status first and prefer dwt_switch_task when a session is already running.
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | No | ||
| task_id | No | Task to attribute the time to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the cross-device takeover behavior, the one-active-session rule, and the default length. It does not state what happens to the preempted session or describe the response shape, but the most consequential behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The default behavior is front-loaded, and the warning about existing sessions earns its place because it directly affects invocation strategy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers defaults, constraints, preconditions, and the correct sibling alternative. It does not describe the return value, which would be useful with no output schema, but this omission does not prevent correct selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes task_id but leaves minutes undocumented. The description compensates by explaining the default pomodoro length and the 1-to-240 minute range, which clarifies behavior when minutes is omitted. Task_id is already well covered by the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Start') and resource ('server-side focus session'), and immediately clarifies the one-active-session-per-account constraint. This clearly distinguishes it from siblings like dwt_switch_task and dwt_log_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs the agent to call dwt_status first and prefer dwt_switch_task when a session is already running. It also provides the default duration context, giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_statsFocus time totalsA
Total focus time for today, last 7 days, last 30 days, last 365 days and all time, plus best day and 30-day daily average.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits itself. It lists the output metrics but does not explicitly confirm that the operation is read-only, whether it includes the current ongoing session, or whether the data is scoped to the authenticated user. The absence of side effects is strongly implied, but not explicitly stated, leaving moderate gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficiently worded sentence that front-loads the core purpose and lists every distinct metric. There is no filler, redundancy, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter stats tool, this description covers all the important output values in a compact way. However, since no output schema is provided, the agent must infer the exact response structure (key names, units, formatting) from wording, which creates minor ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts no parameters and the empty schema fully documents that. Per the rule, zero parameters yields a baseline score of 4. The description adds no parameter-level meaning because no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool reports total focus time across several periods and includes additional summary metrics (best day, 30-day daily average). This enumerates the resource and fields precisely, but it lacks an explicit verb like 'get' or 'report', so it doesn't fully meet the 5-level bar for verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: call this when you need focus time totals over any listed period (today, 7/30/365 days, all time) or derived averages. It doesn't name alternatives or exclusions, but the scope is specific enough that an agent can identify when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_statusCurrent focus session and today's totalA
Show the active Deep Work Timer session (if any: task, time remaining, which device owns it) and today's total focus time. Call this first before starting or logging anything.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses what is returned (active session details if any, and today's total), including the conditional 'if any' and the device ownership detail. It implicitly signals a read-only operation via 'Show', which is useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The main output is stated first, followed by a clear directive on when to call it. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool, the description fully covers what an agent needs to know: what it returns, the conditional nature of the active session, and the recommendation to call it first. No output schema exists, but the described return values are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter details. The description appropriately focuses on behavior rather than parameters, matching the baseline for parameter-less tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool shows the active Deep Work Timer session (with task, time remaining, device) and today's total focus time. It uses a specific verb ('Show') and resource, distinguishing it from sibling tools like dwt_stats or dwt_log_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this tool first before starting or logging anything, providing clear usage context. However, it does not explicitly mention when not to use it or name alternative tools for other scenarios, though the instruction is sufficient for primary use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dwt_switch_taskSwitch the running session to another taskA
Move the active session's open segment to a different task. Time is split honestly between tasks; total is conserved. Use this instead of dwt_start_session when a session is already running.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important behavioral traits: time is split 'honestly' between tasks and total time is conserved, which helps the agent understand the impact of the switch. However, it does not mention side effects or prerequisites beyond the session being active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the core action, the second adds behavioral context and usage guidance. No superfluous content, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool without an output schema, this description covers the essential information: what it does, when to use it, and the behavioral implication of time conservation. It falls short only in not explicitly clarifying the parameter semantics, but overall it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description coverage (0%), and the tool description does not elaborate on the 'task_id' parameter. While the action implies task_id is the destination task, the description fails to explicitly state which task the ID refers to, leaving room for ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'move' and the resource 'the active session's open segment', explicitly stating that it moves to a different task. This distinguishes it well from the sibling dwt_start_session, which starts a new session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use this instead of dwt_start_session when a session is already running.' This provides a clear condition and names the alternative, leaving no ambiguity about the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action/resource: session lifecycle (start, switch, log, abandon), task/project management, and reporting views are clearly separated. Even closely related tools like dwt_log_session and dwt_log_pomodoro are disambiguated by the descriptions (active session vs. past time).
All tools share the 'dwt_' prefix and mostly follow a verb_noun pattern (list_projects, create_task, start_session, complete_task). A few names are noun-like (dwt_status, dwt_stats, dwt_lifetime_skills, dwt_deposits_today) but they are still predictable and consistent in style.
14 tools is well-scoped for a deep work timer with projects, tasks, sessions, and reporting. Each tool has a clear purpose, and the number is large enough to cover key workflows without feeling bloated.
The core domain is well covered: session management, task creation/completion, manual logging, and multiple reporting views are present. Minor gaps like task/project update or delete operations exist, but they are not essential to the primary focus-tracking workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
Manage tasks, Focus Zone, notes, projects, and task history from compatible AI assistants.
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
The back-office workspace for your team's AIs: tasks, knowledge and context shared over MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceIntegrates task management with the Pomodoro Technique, enabling AI assistants to manage productivity workflows through timed work sessions, task tracking, and comprehensive productivity statistics.9132MIT

Timesheet MCP Serverofficial
AlicenseBqualityBmaintenanceEnables natural language control of the Timesheet API for timer management, task tracking, and project management through MCP tools.50541MIT- AlicenseAqualityBmaintenanceEnables MCP-compatible clients to manage Reclaim.ai tasks, including listing, creating, updating, completing, deleting, and timer operations through natural language.134619MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage TickTick tasks, projects, habits, and focus sessions through the MCP server.141MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stirredo/deepworktimer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server