MCP server for capturing, curating, and publishing reusable learnings from AI-assisted development
royo-learn demonstrates solid schema coverage and clear naming conventions across 10 tools. All tools have descriptions (avg 95 chars) and explicit JSON schemas with typed parameters. However, several critical gaps limit production readiness: (1) Output schemas are undocumented, no return type specifications visible for any tool, forcing LLMs to infer results; (2) Error handling lacks recovery guidance, no actionable error messages or classification (retryable vs fatal); (3) Enum constraints missing for many categorical parameters (e.g., 'decision' in curate_learning, 'kind' in evidence items); (4) Parameter descriptions are sparse, many lack format/range guidance (e.g., 'title' accepts 5-160 chars per schema but description doesn't state this); (5) No dry-run or confirmation pattern for irreversible operations (publish_learning marked IRREVERSIBLE but no safeguard). Naming is strong (verb-first, clear intent). Schemas are well-structured with proper types. Composition is sound, tools chain logically (capture → add_evidence → curate → preview → approve → publish).
Attach evidence records to an existing learning and optionally raise the declared evidence level
Approve a publication preview with human authorization, binding it to a specific preview hash
Capture a new learning with title, type, context, observation, reusable lesson, scope, confidence, evidence level, actor, and optional evidence records
Curate an existing learning with a decision, rationale, actor, and optional area/skill
Run system diagnostics to check royo-learn health and configuration
Retrieve a single learning by ID with full details
List all captured learnings with optional filtering and pagination
Output schemas completely undocumented. No return type specifications visible for any of the 10 tools. LLMs cannot plan downstream calls or extract required fields (e.g., learning_id from capture_learning, preview_hash from preview_publication). This forces agents to guess result structure.
Error handling lacks recovery guidance. No visible error classification (retryable vs user-fixable vs fatal) or actionable error messages. Agents cannot determine whether to retry, ask user, or abort. Example: if capture_learning fails due to invalid 'type' enum, the error should suggest valid options.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Preview publication of a learning to see what will be published
Publish a curated learning, optionally with approval authorization for sensitive destinations
Search captured learnings by query with optional limit, offset, and component score inclusion
Enum constraints missing for categorical parameters. 'decision' in curate_learning, 'kind' in evidence items, and 'proposed_destination' lack explicit enum definitions in schema. Free-form strings invite hallucinated values. Schema shows 'type: string' but should declare enum: [...].
Irreversible operation (publish_learning) lacks dry-run or confirmation safeguard. Tool is marked IRREVERSIBLE but no preview_hash validation or approval_id enforcement visible in schema. Agents can publish without explicit confirmation, risking unintended publication.
Parameter descriptions lack format/range guidance. 'title' parameter accepts 5-160 chars per schema but description does not state this constraint. 'rationale' in curate_learning requires 10-5000 chars but description omits range. LLMs cannot validate inputs without explicit constraints in description text.