Full text search server for ancient Hebrew Jewish texts (Torah and Talmud) using Tantivy search index
The server provides a single tool 'full_text_search' with a well-structured schema and comprehensive parameter documentation. However, the tool name lacks an action verb prefix (should be 'search_jewish_library' or 'search_texts'), and while the query parameter has extensive inline documentation embedded in the description, this violates best practices by mixing instructional content with parameter documentation. The description itself is clear and functional but overly long (2000+ chars), causing token waste. Output schema is not formally documented, the tool returns TextContent with unstructured plain-text results rather than structured JSON with typed fields. Error handling is minimal: the tool returns 'No results found' for empty results but provides no guidance for malformed queries or other failure modes. The tool is read-only and well-scoped, but the implementation lacks the clarity and structure expected of production-grade definitions.
Full text searching in the jewish library
Tool name 'full_text_search' lacks action verb prefix. Should start with 'search_' (e.g., 'search_jewish_library' or 'search_texts'). LLMs rely on verb_noun convention to parse intent.
Query parameter description is 2000+ characters and mixes instructional content (Boolean operators, field guide, examples) with parameter documentation. Should be 10-1024 chars per pattern:tool-description. Move tutorial content to separate documentation or prompts.
Output schema not formally documented. Tool returns unstructured TextContent with concatenated plain-text results. Should return structured JSON with typed fields (e.g., {results: [{reference: string, text: string, score: float}], total: int}).
Minimal error handling. Tool returns 'No results found' for empty results but provides no guidance for malformed queries (e.g., invalid Boolean syntax, missing quotes). Error responses should guide recovery (e.g., 'Invalid query syntax: unclosed phrase. Did you mean: "exact phrase"?').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Input validation deferred to TantivySearchAgent. No client-side validation for query format or num_results bounds in server.py. Validation fails silently or returns cryptic exceptions to LLM.
num_results parameter lacks minimum and maximum bounds in description. Should state '1 - 100' or similar. Unbounded integers invite LLMs to pass absurd values.