First-party MCP server for Notebooklab - a long-context-first workbench for structured insight, auditable markdown, and notebook outcomes
Critical gaps across all dimensions. 24 tools with minimal descriptions (most 10-50 chars, well below 194-char baseline). Input schemas present but severely underspecified: most use generic 'action'+'data' pattern with no enum constraints, no field-level descriptions, no output schemas documented. No error handling guidance. No tool annotations. Naming uses verb_noun pattern (list/mutate) but 'mutate' is vague, does not convey specific action. No pagination, no result limits, no chaining IDs visible. Security concerns: 'data' parameter accepts arbitrary objects with no validation hints. This server prioritizes breadth (24 tools) over depth; each tool is skeletal.
List auditable runs, optionally filtered by notebook.
Mutate auditable run resources via action+data schema.
Run a chat interaction with the AI model.
Control computer use session via action+data schema.
Get computer use session details.
Start a computer use session.
List drafts, optionally filtered by notebook.
Vague 'mutate' naming with action+data pattern. 12 tools use 'mutate' (notebook.mutate, source.mutate, note.mutate, draft.mutate, auditable_run.mutate, research_thread.mutate, settings.mutate, model.inspect, computer_use.control, ui_test.control) without specifying what actions are valid. LLMs cannot infer whether to pass 'create', 'update', 'delete', or custom actions. Violates verb_noun clarity pattern.
No output schemas documented. Tools return results but LLMs have no visibility into response structure, field names, or types. Prevents downstream tool chaining and forces LLMs to guess field names. Violates response-shaper and tool-chain patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Mutate draft resources via action+data schema.
Returns the current timestamp in the format YYYYMMDDHHmmss.
Search knowledge base.
Inspect model capabilities via action+data schema.
List available AI models.
List notes, optionally filtered by notebook.
Mutate note resources via action+data schema.
List notebooks.
Mutate notebook resources via action+data schema.
List research threads, optionally filtered by notebook.
Mutate research thread resources via action+data schema.
Mutate settings via action+data schema.
List sources, optionally filtered by notebook.
Mutate source resources via action+data schema.
Control UI test execution via action+data schema.
Run UI tests.
Look up UI test run results.
Generic 'data' parameter accepts arbitrary objects with no field-level descriptions or constraints. No enum values for 'action' parameter. LLMs cannot validate input before calling. Violates constrained-input and param-validation patterns.
Descriptions too short (10-50 chars, well below 194-char baseline). Most lack WHAT/WHEN/WHY context. E.g., 'List notebooks.' does not explain when to call it vs other discovery tools, what fields are returned, or prerequisites. Violates tool-description pattern.
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'If notebook not found, call notebook.list() first'). Violates recovery-guide and error-classification patterns.