Protocol-first MCP reference: TS server + client, all 3 capabilities, both transports, wire-level logging.
Four tools with complete schemas and descriptions. Naming follows verb_noun convention (create, update, delete, search). Descriptions are concise (20-80 chars) but lack actionable context for LLM selection. Parameter descriptions present but minimal. No output schema documentation. Error handling absent, tools return success text only, no guidance for failure cases. Missing idempotency hints for write operations. No pagination for search results despite accepting a limit parameter.
Create a new markdown note.
Delete a note by id.
Full-text search across notes (title + body, case-insensitive).
Update an existing note (any subset of fields).
No output schema documentation. LLMs cannot predict response structure (fields, types, pagination). Forces guessing about what data is available for downstream tool calls.
Error handling missing. Tools return success text only. No guidance for LLM on failure modes (note not found, invalid ID, permission denied). Agents cannot self-correct.
Destructive operations (notes.delete) lack confirmation or dry-run support. Agents cannot preview consequences before irreversible deletion.
Parameter descriptions are minimal (5-20 chars). 'Array of tags' does not explain format, constraints, or use case. LLMs cannot infer whether tags are comma-separated, space-separated, or structured objects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
notes.search accepts 'limit' parameter but no pagination cursor/offset. Returning all results up to limit wastes tokens if result set is large. No 'total' or 'next_cursor' in response.