Look up English words and expressions, save the meanings you want to learn, and build lasting vocabulary with personalized spaced-repetition reviews and contextual practice.
Strong foundation with 11 well-named tools following verb_noun convention (dictionary_lookup, vocabulary_save, learning_review). All tools have descriptions (avg ~180 chars, within 10-1024 baseline). Input schemas present with type definitions and parameter descriptions. However, output schemas are not documented in the provided code, critical for LLM planning. Some parameter descriptions are verbose but lack actionable constraints (e.g., usefulness/personalInterest lack numeric ranges). Error handling and recovery guidance not visible in tool definitions. Tool composition is sound (single responsibility, clear chaining via IDs), but descriptions could be more concise for LLM efficiency.
Return a permanently cached Cambridge lookup. Cambridge is contacted only when no entry is cached or refresh is true.
Get the next vocabulary item for learning review
Submit a learning review for a vocabulary item
Update a previously submitted learning review
Get the next vocabulary item for reinforcement review
Submit a reinforcement review for a vocabulary item
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what does learning_next return? Does it include itemId, term, definition?). This forces agents to guess structure and risks failed chaining.
vocabulary_list description is verbose (>300 chars) and mixes multiple concerns (filtering, sorting, pagination, exercise selection). Breaks the 10-1024 guideline spirit, should be concise for LLM scanning. Separate concerns into parameter descriptions.
Numeric parameters (usefulness, personalInterest) lack min/max constraints in descriptions. LLMs may pass unbounded values. Should specify range (e.g., '0-10 scale, where 10 is highest usefulness').
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
Delete a saved vocabulary item
Retrieve one saved meaning with its complete linked dictionary lookup. Use itemId when a term has multiple saved meanings.
List saved vocabulary with complete linked dictionary lookups, or select words and phrases for free-form sentence-writing, conversation, and word-list exercises. This read-only tool creates no review token or presentation, requires no feedback submission, and does not start, consume, record, or change learning or reinforcement reviews or state. Different filters combine with AND; statuses and partsOfSpeech match any supplied value, while tags must all match. Each saved sense remains a separate item. Use statuses learning and learned for exercises; omitted statuses include archived items. Sort random returns a fresh sample from the full filtered result without pagination or a cursor; use excludeItemIds to avoid session repetition. Other sorts use opaque cursor pagination.
Save one learnable meaning. Pass the exact definition from dictionary_lookup to learn homonyms and polysemous terms separately; all meanings share the cached lookup. General usefulness combines offline word frequencies, idiom/collocation evidence, and an optional double-weighted hint. Conservative expression-variant and typo matching affects usefulness only, never the saved term.
Partially update an item's status, personalInterest, usefulness hint, context, tags, description source, notes, or examples. Set personalInterest high for interesting/learn sooner, low for less important without exclusion, or normal to reset. Personal interest is independent of general usefulness; do not change usefulness to express preferences. A usefulness hint is combined with offline evidence, not a forced override. Omitted fields are preserved.
vocabulary_delete lacks confirmation or dry-run pattern. Destructive operations should support a confirmation step to prevent accidental data loss by agents.
Error handling and recovery guidance not visible in tool definitions. Tools should return actionable error messages (e.g., 'Term not found. Try dictionary_lookup first.' or 'Invalid status: must be learning|learned|archived').