咕嘟咕嘟——专治上班族不喝水的小课 (A hydration reminder application for office workers)
GokuGoku is an Electron desktop app with 11 tools exposed via preload.js/main.js. Critical issues: (1) Transport unknown, cannot verify MCP protocol compliance. (2) Most tools lack proper verb-noun naming (e.g., 'drink', 'undoDrink', 'winMin', 'winHide', 'setExpand' are imperative but not verb_noun style). (3) Input schemas present but minimal, most tools have empty {} or single-field objects with no validation constraints. (4) Descriptions exist but are brief (avg ~80 chars) and lack WHEN/WHY guidance. (5) No output schemas documented. (6) No error handling guidance. (7) Tool composition issues: winMin/winHide are UI state tools mixed with hydration logic; reminderAction/reminderDone are tightly coupled. (8) No pagination, no batch operations. Baseline: 549 production tools average 18-char names and 194-char descriptions; GokuGoku averages 12-char names and 80-char descriptions.
Record a drink consumption event and update hydration metrics
Retrieve the current application state including hydration metrics, settings, and reminder status
Respond to a reminder with an action: 'drink', 'snooze', or 'dismiss'
Signal that the reminder dialog has completed and should be hidden
Reset today's hydration metrics to zero
Save user profile settings including weight, cup size, interval, work hours, and do-not-disturb ranges
Toggle the expanded/collapsed state of the settings panel
Update a single application setting
Transport unknown, cannot verify MCP protocol compliance or remote accessibility. Code shows Electron preload.js/main.js but no MCP server registration visible.
Input schemas are minimal or empty. Most tools have {} or single-field objects with no type constraints, ranges, or validation rules. E.g., drink, resetToday, reminderDone, winMin, winHide have empty input schemas.
Naming convention inconsistent. Tools use imperative verbs (drink, resetToday, winMin) rather than verb_noun pattern (record_drink, reset_hydration_today, minimize_window). LLMs struggle to parse intent from non-standard names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 30 | 2026-07-28+ | v2 |
Undo a previously recorded drink within the undo window (10 seconds)
Hide the main application window to system tray
Minimize the main application window
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., getState returns 'current application state' but structure is unknown.
Descriptions lack WHEN/WHY guidance and are under 100 chars on average. E.g., 'Minimize the main application window' (40 chars) does not explain when to call it or what happens next. Baseline: 194 chars average for A+ tools.