Two tools present with explicit schema registration in src/index.ts. Tool names follow verb_noun convention (save_word, get_words_list). Descriptions exist but are generic and lack crucial implementation details (e.g., what constitutes 'success', what the API returns beyond a textual response, error conditions). Input schemas are properly typed JSON Schema with some parameter descriptions, but output schemas are NOT documented, LLMs cannot predict response structure. Error handling in the code returns generic strings without actionable guidance. Parameter constraints present (star 1-5, page_size 1-100, pagination), which is good. However, the descriptions average ~80 chars and lack LLM-optimized guidance on when to use each tool or what data dependencies exist. No mention of dependencies (e.g., 'requires Eudic auth token set in env'). Security: Auth token via environment variable is correct, but no documentation in tool descriptions.
Get a list of words from Eudic study list
Save a word to Eudic study list with optional context and categorization
Output schemas not documented. Tool responses are serialized to plain-text JSON.stringify() with no schema declaration. LLMs cannot predict the structure of returned data, forcing them to parse unstructured strings and losing ability to chain calls.
Tool descriptions are generic and tautological. 'Save a word to Eudic study list' repeats the tool name; 'Get a list of words' repeats the name. Descriptions lack WHEN to use each tool, WHAT data they return, prerequisites, or error recovery guidance. Below 50-200 char LLM-optimized baseline for average productivity.
Error handling is generic and non-actionable. Code catches errors and returns 'Error saving word to Eudic: ${error.message}' or 'Error getting words list from Eudic: ${error.message}'. No classification (retryable vs. fatal), no suggested recovery steps (e.g., 'Invalid token? Check EUDIC_AUTH_TOKEN env var'), no guidance for the LLM on what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Parameter relationships undocumented. save_word has category_ids (array) and star (1-5 number) but no description of whether they are independent, mutually exclusive, or hierarchical. LLMs may pass contradictory combinations with no guidance.
No documentation of Eudic authentication requirement. Tools use getConfig() to read EUDIC_AUTH_TOKEN from environment, but the tool descriptions do not mention this prerequisite. LLMs cannot reason about 'auth not set' failures without explicit guidance in descriptions.