MCP server that provides access to documentation through tools, prompts, and resources. Serves documentation from SQLite databases with support for listing, retrieving, and reloading documentation with tag-based filtering.
The Hyaline MCP server exposes 3 tools with basic parameter schemas but suffers from significant definition quality gaps. Tool names follow verb conventions (list_, get_, reload_), but descriptions lack specificity about when to use each tool versus another. Parameters have minimal type information visible in the test files, and output schemas are entirely undocumented. Error handling and recovery guidance are absent. The test files show tool invocation but do not reveal complete JSON Schema definitions with constraints, format specifications, or proper typing for all parameters. The 'document_uri' parameter in list_documents and get_documents is described as accepting 'optional' input with vague examples, but the actual schema constraints (regex, max length, allowed prefixes) are not visible in the provided code. Without full schema visibility, parameter scoring is conservative.
Retrieve the full content of documents from the documentation database, optionally filtered by document URI and tags
List documents from the documentation database, optionally filtered by document URI and tags
Reload documentation from the configured source (local file or GitHub artifacts)
Output schemas undocumented. Tests reference golden files but tool response structure is not visible in source code. LLMs cannot plan downstream operations without knowing what fields are returned.
Parameter descriptions lack actionable constraints. 'document_uri' is described as 'optional' with vague examples (e.g., 'document://mcp-test/docs or document://mcp-test?category=overview,tutorial&audience=developer') but actual format, allowed prefixes, max length, and character restrictions are not documented. LLMs cannot validate input without explicit constraints.
Ambiguous parameter naming and semantics. 'list_documents' and 'get_documents' both accept 'document_uri' with identical descriptions. The distinction between listing (metadata only?) vs getting (full content) is stated in tool descriptions but not in parameter semantics. LLMs may conflate the two tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Tool descriptions are brief (45 - 50 chars on average) and lack WHEN/WHY context. 'List documents from the documentation database' does not explain when to call list_documents vs get_documents, or what data structure is returned.
reload_documentation accepts an empty input schema ({}). While this is technically correct for a no-argument operation, the tool description does not state side effects (modifies state, reload source, etc.). Pattern recommends explicit acknowledgment of irreversible operations.
No error handling or recovery guidance documented. Test files do not show error cases or what LLMs should do if a document_uri is invalid, no documents match, or reload_documentation fails. Per pattern, errors must guide the LLM on next steps: 'Document not found. Try list_documents() first to see available URIs.'
Parameter type definitions incomplete in visible code. Input schema shows 'document_uri' as type 'string' with a description, but no enum, pattern, minLength, maxLength, or format constraint is visible. Full JSON Schema likely exists in mark3labs/mcp-go registration but is not shown in the provided test/code excerpts.