Rust MCP server for llms.txt documentation retrieval with BM25 full-text search
Server has 4 tools with explicit schemas and descriptions. Naming follows verb_noun pattern (list_, fetch_, search_). Descriptions are present but brief (10-60 chars), below the 50-200 char LLM-optimized baseline. Parameters have types and descriptions. No output schemas documented. Error handling is minimal, no recovery guidance or actionable error messages. Tool composition is reasonable (single responsibility), but descriptions lack WHEN/WHY context that LLMs need for selection.
Fetch documentation content from a URL or file path
List all available documentation source
List all pages from a documentation source
Search documentation using BM25 full-text search across all sources
Tool descriptions are too brief (10-60 chars vs 50-200 char baseline). Missing WHEN/WHY context. 'List all available documentation source' lacks guidance on when to call this vs search_docs or fetch_docs.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., search_docs returns results but structure is undocumented, does it include source name, URL, relevance score?
Error handling is absent. No recovery guidance. If fetch_docs fails on a URL, the LLM has no actionable next step. No categorization of retryable vs fatal errors.
list_pages accepts fuzzy source matching (case-insensitive substring). Description warns 'Matches multiple sources if ambiguous' but provides no guidance on how LLM should handle ambiguity or what the response structure is.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
search_docs limit parameter defaults to 10 but description says 'Defaults to 10', this is implicit, not explicit in schema. No min/max bounds documented. LLM could pass limit=1000 and blow context window.