Search and retrieve articles from offline Kiwix ZIM archives using full-text and suggestion-based search strategies.
Two tools with clear verb-noun naming (search_wikipedia, get_article) and detailed descriptions. search_wikipedia has excellent guidance on query format (10 - 120 chars, specific keywords vs questions). Both tools have input schemas with types and descriptions. However, output schemas are not documented, LLMs cannot predict what fields to expect. Parameter descriptions are good but lack explicit constraints (e.g., num_results max=10 is in description but not enforced in schema). No error handling guidance; no recovery paths for missing articles or empty results. No tool annotations (readOnlyHint present conceptually but not declared in schema).
Retrieve the full text of an article by title, searching across all loaded archives.
Search all loaded offline Kiwix archives and return matching article titles. Always call this first to discover article titles, then use get_article() to read the full content of the one you want. This two-step flow avoids filling your context window unnecessarily. Results show which archive each article came from in square brackets, e.g.: "Black hole [wikipedia_en_wp1-0.8_nopic_2026-04]" IMPORTANT — query format: Queries must be specific topic keywords or proper nouns, like a Wikipedia article title. Do NOT use questions, sentences, or vague descriptive phrases. GOOD: "black hole", "octopus", "French Revolution", "Marie Curie", "photosynthesis" BAD: "tell me facts", "interesting animals", "what is a black hole?", "things in space"
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). search_wikipedia returns a list of strings with archive labels; get_article returns plain text. Neither is formally specified.
No error handling guidance. If search_wikipedia returns 0 results or get_article fails to find an article, LLM has no recovery path. Missing 'Try search_wikipedia() with a different query' or 'Article not found in loaded archives' messages.
get_article description is minimal (47 chars). Does not explain when to call it, what it returns, or how it relates to search_wikipedia. Lacks dependency hint: 'Always call search_wikipedia() first to discover titles.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
No result limits or pagination documented. search_wikipedia returns up to num_results per archive, but if 10 archives are loaded, LLM could receive 50+ results. No guidance on truncation, total count, or next_cursor.
Tool annotations missing. Both tools are read-only (no state modification), but readOnlyHint is not declared in schema. Agents cannot infer safety without explicit annotation.