Keepygaga demonstrates solid definition quality with all 8 tools having explicit names, descriptions, and input schemas. Tool names follow verb_noun convention (list, read, create, add, update, move, rename, delete). Descriptions are substantive (100-200 chars) and explain WHAT the tool does and WHEN to use it. Input schemas are properly typed with array/string types and descriptions. Tool annotations are correctly applied (READ_ONLY_ANNOTATIONS, ADDITIVE_ANNOTATIONS, MUTATING_ANNOTATIONS). However, output schemas are not documented, responses return dict[str, object] with no structured definition of fields. Parameter descriptions lack detail on constraints, formats, and error recovery. Error handling returns status/message dicts but lacks actionable guidance for LLM recovery.
Add independent Facts and optionally replace the page description using its latest Page Snapshot. Group Facts for one page in one operation. On applied, reuse returned Page Snapshots and receipts; do not verify with read or list.
Create new dynamic pages after full-batch validation. On applied, reuse returned Page Snapshots and receipts; do not call read or list solely to verify success.
Delete exact Facts with an optional page description, or delete dynamic pages, only after explicit current-turn user authorization. On applied, reuse surviving Page Snapshots and receipts; do not verify with read or list.
Return one complete live topics, areas, or people Route Catalog. No search, matching, pagination, Facts, or write versions.
Move exact Facts and optionally replace source or existing-destination descriptions, or atomically create a bounded new destination. Preserve Fact dates and leave at least one source Fact. On applied, reuse returned Page Snapshots and receipts; do not verify with read or list.
Output schemas not documented. Tools return dict[str, object] with no structured field definitions. LLMs cannot plan downstream calls or extract required data (e.g., page snapshots, receipts, capacity signals mentioned in descriptions).
Parameter descriptions lack constraint details. 'scope' param in list tool has no enum values or format guidance. 'paths' in read tool has no length limits or path format specification. LLMs cannot validate inputs before calling.
Error responses lack recovery guidance. Status codes like 'invalid_source', 'not_initialized' are returned with generic messages. No actionable next steps for LLM (e.g., 'Configure memory.root in config file' or 'Call list() first to discover available scopes').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Use before mutation unless current Page Snapshots are already available. Read unique canonical paths together; returned files contain Facts, opaque write versions, and capacity signals.
Rename dynamic pages using latest Page Snapshots, one operation per page. On applied, reuse returned Page Snapshots and receipts; do not verify with read or list.
Replace an exact Fact with an optional page description, update page metadata alone, or mechanically repair a repairable page using its latest version. On applied, reuse returned Page Snapshots and receipts; do not verify with read or list.
Destructive operations (delete) lack confirmation/dry-run support. Tool description says 'only after explicit current-turn user authorization' but no mechanism enforces this. LLM could invoke delete without user consent.
Tool descriptions reference domain concepts ('Page Snapshots', 'Facts', 'Route Catalog', 'write versions') without defining them. LLMs unfamiliar with Keepygaga's data model cannot understand when to use each tool or how to interpret responses.