Four tools with complete schemas and basic descriptions, but significant gaps in parameter documentation and error guidance. Tool names follow verb_noun convention (anki_add_note, anki_create_deck, anki_get_decks). Descriptions are present but minimal (10-40 chars), below the 50-200 char LLM-optimized baseline. Parameters lack descriptions in anki_add_notes (cards array items have no descriptions). No output schema documentation. Error handling returns text responses but lacks recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint). Composition is reasonable: separate tools for single/batch operations, though batch variant (anki_add_notes) could be better integrated.
Add a flashcard to an Anki deck
Add multiple flashcards to an Anki deck
Create a new Anki deck
Get the names of all decks
Parameter descriptions missing or incomplete. anki_add_notes.cards array items (front, back) have no descriptions. anki_get_decks has empty properties object with no documentation of return structure.
Tool descriptions are too brief (10-40 chars). LLM-optimized descriptions should be 50-200 chars and explain WHAT the tool does, WHEN to use it, and any prerequisites. Current descriptions lack context for tool selection.
No output schema documentation. Tool handlers return text responses but LLMs cannot infer the structure of json.result from getDecks(). Document what fields are returned and their types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. Handlers return 'Failed to create deck: {error}' but do not tell the LLM what to do next or categorize the error as retryable vs user-fixable.
No tool annotations. Destructive tools (anki_add_note, anki_add_notes, anki_create_deck) lack destructiveHint=true. Read-only tool (anki_get_decks) lacks readOnlyHint=true. Annotations help agents reason about side effects.