A dead-simple tree wiki. Cloudflare Worker + D1, managed over MCP, read on the web.
Binnacle has 10 tools with clear verb-noun naming (list_tree, get_page, create_page, etc.) and consistent descriptions. All tools have input schemas with typed parameters and descriptions. However, descriptions are terse (10-50 chars), lacking context on WHEN to use each tool or what downstream actions they enable. Output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling is minimal; no recovery guidance. Parameter descriptions lack constraints (e.g., no max length for title, no HTML validation rules). Missing tool annotations (readOnlyHint, destructiveHint) despite clear risk levels in metadata.
new page (title, optional parent/slug/HTML)
delete (recursive for subtrees)
timestamped events (state changes) for a page
one page by id or path
a page's saved versions
the page tree (compact JSON)
reparent/reorder; the subtree moves with it
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining. E.g., does list_tree return {tree: [...]} or {pages: [...], total: N}? Does get_page include revision history or only current content?
Descriptions are terse (10 - 50 chars) and lack context. 'the page tree (compact JSON)' does not explain WHEN to call list_tree vs get_page, what 'compact' means, or what structure is returned. LLMs cannot disambiguate similar tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Metadata lists risk levels (READ_ONLY, WRITE, DESTRUCTIVE, REVERSIBLE) but these are not exposed in tool definitions. LLMs cannot infer safety properties and may retry destructive operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
roll a page back to a version
full-text search across titles + bodies
edit title/content; snapshots the prior version
Parameter descriptions lack constraints. 'page title (required)' does not specify max length, character restrictions, or HTML handling. 'URL slug (optional, auto-generated from title if omitted)' does not define slug format (alphanumeric + hyphens?). LLMs will pass invalid values.
No error recovery guidance. If delete_page fails (e.g., page has children), the response does not suggest alternatives (move children first, then delete). If search returns no results, no guidance on refining the query.