Three tools with complete JSON schemas and basic descriptions. All tools have input schemas with typed parameters and enums where appropriate (formality, gender). However, descriptions are generic and lack actionable context for LLM selection. Parameter descriptions are minimal (e.g., 'Text to translate' without format/length guidance). No output schema documentation. Error handling is present in code but not surfaced in tool definitions. Tool naming follows verb_noun pattern correctly (translate_text, translate_url, proofread). Missing guidance on when to use each tool vs. alternatives, dependency hints, and recovery paths.
Proofread text with Kagi Translate.
Translate text between languages using Kagi Translate.
Translate the content of a URL using Kagi Translate.
Tool descriptions lack actionable context. 'Translate text between languages using Kagi Translate' does not explain when to use translate_text vs translate_url, what formality/gender do, or what output to expect. LLMs cannot distinguish tools without explicit selection guidance.
Parameter descriptions are minimal and lack format/constraint guidance. 'Text to translate (minimum 1 character)' does not specify expected length, encoding, or language hints. 'Source language code' lacks examples or reference to ISO 639-1 standard. LLMs cannot infer valid inputs.
No output schema documentation in tool definitions. Callers cannot know what fields to expect (e.g., does translate_text return 'translation' or 'translations'? Does proofread return 'proofread' or 'corrected_text'?). Code shows multiple response field variants but tool definitions are silent.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
translate_text accepts both 'text' (string) and 'texts' (array) but neither is required, only source_lang and target_lang are required. This creates ambiguity: what happens if both are passed? If neither is passed? Parameter relationship is undocumented.
Error handling in KagiClient (KagiApiError, KagiNetworkError, KagiResponseError) is not surfaced in tool definitions. LLMs receive raw error messages without recovery guidance. No indication of retryable vs. fatal errors or what to do next.