Server provides 6 well-structured tools with complete JSON Schema input definitions and descriptions in Japanese. Tool names follow verb_noun convention (createEntries, setActiveEntry, etc.). All tools have documented input schemas with proper type constraints. However, the server has several notable gaps: (1) Output schemas are NOT documented, LLMs have no formal specification of return types, (2) Parameter descriptions are minimal and assume Japanese-literate LLMs, (3) No error recovery guidance is provided in descriptions despite UserError handling in code, (4) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared despite clear semantic intent, (5) Composition could be stronger, updateEntry requires at least one of 'note' or 'status', but this constraint is expressed via Zod refine, not accessible to the MCP schema consumer. The definitions are functional but lack LLM-optimized clarity for discovery and error recovery.
複数のやることエントリを一括登録する。 引数 entries は { title: string, note?: string } の配列で、title には1 行程度の要約、note には補足メモを指定する。 note を省略した場合は空文字で保存され、作成済みエントリの entryId を配列で返す。
やることエントリをまとめて削除する。 entryIds に文字列 ID を配列で指定する。 存在しない ID が含まれると UserError を返す。 アクティブな ID が含まれている場合は自動的にアクティブ状態を解除してビューを (none) に更新する。
アクティブなやることエントリを取得する。 返り値は { entryId, title, note, status, createdAt, updatedAt } 形式の JSON もしくは null。 アクティブ未設定の場合は null が返る。
登録済みエントリの軽量サマリーを取得する。 includeDone を true にすると完了済みも含める。 既定では todo / doing のみを返す。 返り値は { entryId, title, status, updatedAt } の配列。
現在注目しているエントリ(アクティブエントリ)を切り替える。 entryId に既存の ID を渡すと active.json と表示用 Markdown を更新する。 null を渡すとアクティブ状態を解除して (none) 表示に戻す。
既存エントリの note と status を部分更新する。 note に文字列を渡すとメモが上書きされ、空文字を指定するとメモを消去できる。 status は todo / doing / done のいずれか。 更新後は updatedAt が再計算され、アクティブエントリの場合はビューも最新化される。
Output schemas are entirely undocumented. LLMs have no formal specification of return types, fields, or structure. Descriptions include inline type hints, but these are not machine-parseable. This violates the MCP contract and forces LLMs to infer structure.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are completely absent. The MCP spec supports these to signal mutation risk and idempotence, but the server declares none. deleteEntries is clearly destructive and should carry destructiveHint. getActiveEntry and listEntries are clearly read-only and should carry readOnlyHint.
updateEntry's Zod refine constraint (at least one of 'note' or 'status' required) is not reflected in the castSchema JSON Schema output. LLM sees both fields as optional and has no way to know that calling with neither will fail. This creates a contract violation: the declared schema does not match runtime behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Error descriptions are generic. UserError is thrown with brief Japanese messages ('指定したエントリが存在しません'), but the descriptions do not guide recovery. They should suggest calling listEntries to discover valid IDs or explain which tool to call next.
Parameter descriptions are minimal and assume Japanese fluency. Non-Japanese LLMs may struggle to understand the meaning of parameters. Example: createEntries 'note' description is '補足メモ' (supplementary note) in Japanese only. Descriptions should be clear and in English for broader LLM compatibility.
listEntries lacks pagination parameters (limit, offset, cursor). While the current result set may be small, the tool will not scale if many entries accumulate. Without pagination, agents cannot reliably fetch large lists.