Zovo Focus Timer
Server Details
Plan work sessions and run pomodoro timers right in the conversation.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools target different intentions: plan_focus_session fits pomodoros into a fixed time window (with .ics export), while show_focus_timer runs an immediate timer (pomodoro, countdown, or interval). The descriptions provide strong disambiguating cues and examples, though both mention returning a phase plan and live timer, creating some surface overlap.
Both names follow a clear verb_noun snake_case pattern (plan_focus_session, show_focus_timer), sharing the 'focus' domain noun. The convention is fully consistent across the set.
Two tools is on the thin side for a server with this much functional breadth, but each tool is extremely broad and covers multiple related use cases. It is borderline rather than clearly well-scoped because there is no smaller dedicated operation (e.g., a simple start/pause action) separate from the large multi-purpose tools.
The surface covers the core domain lifecycle: planning focus blocks into a schedule, exporting them, and running/configuring live timers with controls, time zones, and DST handling. Gaps are minor and explicitly scoped out (no multi-day plans, calendar reading, or background notifications).
Available Tools
2 toolsplan_focus_sessionPlan focus sessionARead-onlyIdempotentInspect
Use this when the user wants pomodoros fitted into a time window: "I have 3 hours to study until 5pm", "plan pomodoros from 9:00 to 12:30 with a lunch break", "how many 50/10 blocks fit before my 3pm meeting". Fits the most whole focus blocks between the start and end time around fixed breaks (if the standard long break would cost a block, it shortens or drops it and says so, unless the user gave long-break settings) and returns clock times for every block, total focus minutes, spare time, an .ics calendar file with one event per focus block, and a live timer for the plan. Limits: one window of up to 24 hours; it does not read or change the user's calendar and does not build multi-day study plans (e.g. finals week).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date of the session as YYYY-MM-DD, e.g. 2026-10-02. Defaults to today in time_zone. | |
| label | No | Topic used for calendar event titles, e.g. "Study: organic chemistry". Default "Focus". | |
| breaks | No | Fixed breaks the plan must avoid, e.g. [{"start":"12:00","end":"12:45","label":"Lunch"}]. | |
| rounds | No | Maximum number of pomodoros to schedule, e.g. 6. Without an end time the plan runs until this many are done. | |
| end_time | No | When the session must end, e.g. 17:00 or 5pm (for "until 5pm"). Earlier times mean the next day; equal start and end times are refused. A bare hour such as 5 after a 14:00 start is read as 5pm, with a note; use 05:00 for next-day 5am. | |
| time_zone | No | Time zone of the clock times: an IANA name (e.g. Europe/Warsaw), a city (e.g. New York), or an abbreviation (e.g. EST). With a zone, calendar events use absolute timestamps. With an explicit date and no zone, events use floating local time. If both date and zone are omitted, today's date and clock times use America/New_York, with a note. | |
| start_time | No | When the session starts, as HH:MM or 9:00 am, e.g. 09:00. Needed unless end_time is given with available_minutes or rounds. | |
| work_minutes | No | Focus block length in minutes, e.g. 25 (default) or 50. | |
| long_break_every | No | Long break after this many focus blocks, e.g. 4 (default). 0 = never. Leave unset unless the user asks. | |
| available_minutes | No | Total time available in minutes, e.g. 180 for "I have 3 hours". Used with start_time or end_time. Max 1440. | |
| long_break_minutes | No | Long break in minutes, e.g. 15. Leave unset unless the user asks for one: by default it is 15 and may be shortened when that fits an extra focus block. | |
| short_break_minutes | No | Break between focus blocks in minutes, e.g. 5 (default) or 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| label | Yes | |
| notes | Yes | |
| phases | Yes | |
| totals | Yes | |
| summary | Yes | |
| schedule | Yes | |
| settings | Yes | |
| downloads | Yes | |
| phase_count | No | |
| spare_minutes | Yes | |
| phases_truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description still adds substantial behavior: it shortens or drops the standard long break to fit a whole block and says so, resolves ambiguous bare hours (5 after 14:00 read as 5pm, with a note), and defaults to America/New_York when date and zone are absent. It also enumerates the artifacts produced (clock times per block, total focus minutes, spare time, .ics, live timer).
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 the invocation trigger front-loaded before the mechanics and the limits. Despite covering a dozen parameters and an output contract, nothing reads as filler or repetition of the schema.
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 12-parameter, all-optional planning tool with an output schema, the description still covers the invocation scenario, the scheduling algorithm's key trade-off, output artifacts, and hard limits. Nothing an agent needs in order to call it correctly 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?
Schema coverage is 100%, so the schema already documents the 12 parameters thoroughly and baseline would be 3. The description adds genuine meaning on top: the long-break shortening/dropping policy unless long-break settings were supplied, and the 24-hour cap tying to available_minutes' 1440 maximum.
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 and resource ('fits the most whole focus blocks between the start and end time') and grounds it in concrete user phrasings like "I have 3 hours to study until 5pm". It never names its sibling show_focus_timer, and since it also returns 'a live timer for the plan', the boundary between planning and the timer tool is left implicit.
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?
Opens with an explicit trigger ('Use this when the user wants pomodoros fitted into a time window') and follows with three realistic utterance examples, then states exclusions: one window up to 24 hours, no calendar read/write, no multi-day study plans such as finals week. An agent knows both when to call it and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_focus_timerShow focus timerARead-onlyIdempotentInspect
Use this when the user wants a timer now: a pomodoro timer (25/5, 50/10, pomodoro timer for studying), a countdown timer ("10-minute timer"), or an interval timer (work/rest repeats, e.g. 45 s on, 15 s off). Returns the full phase plan (focus blocks, short and long breaks, totals) and shows a live timer with a progress ring, play, pause, skip and reset controls, and an optional chime. With a clock time for the first block and a time zone (IANA name such as Europe/Warsaw, a city, or an abbreviation such as EST), each phase also gets wall-clock times that stay correct across daylight-saving changes. Limits: up to 24 hours and 96 rounds; no phone notifications, alarms when the chat is closed, or music. Do not use for reminders about future appointments, questions about how long something takes (e.g. boiling an egg), or unit conversions.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date of start_time as YYYY-MM-DD, e.g. 2026-10-02. Defaults to today in time_zone. | |
| mode | Yes | Timer type: "pomodoro" (focus blocks with short and long breaks, e.g. 25/5), "countdown" (one countdown, e.g. 10 minutes), or "interval" (repeating work/rest, e.g. 45 s on, 15 s off). | |
| label | No | What the user is focusing on, shown on the timer, e.g. "Biology chapter 3" or "Presentation practice". | |
| sound | No | Play a short chime when each phase ends. Default true. | |
| rounds | No | Number of focus blocks, e.g. 4 (pomodoro default). Ignored for countdown. | |
| time_zone | No | Optional time zone for start_time: an IANA name (e.g. Europe/Warsaw, America/New_York), a city (e.g. Warsaw), or an abbreviation (e.g. EST, CET). Makes the clock times correct across daylight-saving changes. | |
| start_time | No | Optional clock time the session starts, as HH:MM (24-hour) or 9:30 am, e.g. 14:00. When given, every phase gets wall-clock start and end times. | |
| auto_advance | No | Start the next phase automatically when one ends. Default true; false pauses after each phase until the user presses Start. | |
| work_minutes | No | Length of each focus or work block in minutes, e.g. 25 for a classic pomodoro or 50 for 50/10. For countdown this is the countdown length, e.g. 10. Decimals allowed: 0.5 = 30 seconds. Default 25 for pomodoro. | |
| long_break_every | No | Take the long break after this many blocks, e.g. 4 (pomodoro default). 0 = never. | |
| long_break_minutes | No | Longer break taken after every long_break_every blocks, in minutes, e.g. 15 (pomodoro default). | |
| short_break_minutes | No | Break between blocks in minutes, e.g. 5 (pomodoro default) or 10 for 50/10. For interval mode this is the rest, e.g. 0.25 = 15 seconds. 0 = no break. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| label | Yes | |
| notes | Yes | |
| phases | Yes | |
| totals | Yes | |
| summary | Yes | |
| schedule | Yes | |
| settings | Yes | |
| downloads | Yes | |
| phase_count | No | |
| spare_minutes | Yes | |
| phases_truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and non-destructive, so the safety profile is known. The description still adds real value beyond that: hard limits (24 hours, 96 rounds), what is NOT supported (phone notifications, alarms when chat is closed, music), and DST-correct wall-clock times when start_time and time_zone are supplied. It does not mention persistence of the timer between turns, which is the main remaining behavioral unknown for a live UI tool.
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?
Trigger is front-loaded in the first clause, followed by mode examples, then outputs, then limits and exclusions in a deliberate order. It is dense but each clause carries information; the parenthetical example stacks in the opening sentence slow scanning slightly.
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?
With annotations covering safety, a 12-parameter schema at full description coverage, and an output schema handling return shape, the description fills exactly the remaining gaps: when to call it, what the user sees, hard limits, unsupported capabilities, and time-zone behavior. Nothing an agent needs to invoke it correctly 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?
Schema description coverage is 100%, so every parameter is already documented in the schema, which sets the baseline at 3. The description adds behavioral meaning for the start_time/time_zone pairing (every phase gets wall-clock times that survive daylight-saving changes) but repeats the mode and break examples already present in 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?
States a specific verb and resource ('show a live timer' with progress ring, controls) and enumerates the three concrete timer modes, so an agent knows exactly what is produced. It does not name the sibling plan_focus_session, leaving differentiation to the implied 'timer now' framing.
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?
Opens with an explicit trigger ('when the user wants a timer now') and closes with three concrete exclusions: future appointment reminders, duration questions, and unit conversions. It never names plan_focus_session as the alternative for planning ahead, so sibling routing is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
plan_focus_session - First observed
show_focus_timer
Related MCP Connectors
Pomodoro work sessions from your AI chat: timed focus blocks, session logs.
Meeting agenda timer for AI assistants: build agendas in chat, share a live synced countdown.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Schedule and manage Google Calendar events directly from your workspace. Check availability, view…
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to start and log pomodoro and deep work sessions, manage tasks, and query a permanent per-skill ledger of focus hours via MCP.14MIT
- AlicenseAqualityDmaintenanceIntegrates task management with the Pomodoro Technique, enabling AI assistants to manage productivity workflows through timed work sessions, task tracking, and comprehensive productivity statistics.96 npm2MIT
- AlicenseNot gradedqualityDmaintenanceTurns Notion task databases into an intelligent task management system with automated daily standups, overdue alerts, session summaries, and bulk task operations.MIT

Pyunto Time Managementofficial
AlicenseNot gradedqualityBmaintenanceRead your Pyunto Time Management schedule and log time from an AI assistant. E2EE project planning.10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.