MCP server for TermLoop: a personal dictionary of professional terms with spaced repetition, integrated with Telegram bot. Records terms directly from LLM conversations into a shared SQLite database.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. Tool names follow verb_noun convention (add_term, list_terms, list_terms_topics). Descriptions exist but are minimal (10-50 chars) and lack actionable context for LLM selection. Parameters have types but lack detailed constraints, ranges, or format guidance. No documented output schemas. Error handling returns plain strings without recovery guidance. Validation occurs server-side but errors are not structured for LLM self-correction.
Добавить карточку «термин — определение» в словарь TermLoop. term — сам термин (до 200 символов), definition — краткое определение (до 2000), topic — необязательная тема, например Architecture или Security.
Показать карточки словаря TermLoop, опционально по теме.
Показать список тем словаря TermLoop с количеством карточек.
Descriptions are too brief (10-50 chars) and lack actionable context. 'Показать карточки словаря TermLoop, опционально по теме' does not explain WHEN to call this vs list_terms_topics, what structure is returned, or how to use results downstream.
Output schemas are undocumented. Tools return plain strings (e.g., 'Добавлено в TermLoop: №{word.number}...') instead of structured JSON. LLMs cannot extract card IDs, topics, or priorities for downstream chaining without parsing unstructured text.
Parameter 'topic' lacks constraints. No enum, pattern, or length limit documented. Description says 'необязательная тема, например Architecture или Security', examples in descriptions invite LLMs to treat them as the only valid options.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Error messages are plain strings without recovery guidance. 'Не сохранено: {error}' tells the LLM nothing about whether to retry, ask the user, or call a different tool. No error classification (retryable vs user-fixable vs fatal).
list_terms returns up to 200 items with no pagination support. Large result sets blow context windows. No limit parameter, no next_cursor, no total count in response. LIST_LIMIT=200 is hardcoded and undocumented in tool schema.