A Flask-based server that uses a fine-tuned language model to process multi-step document and presentation manipulation tasks with reasoning capabilities
This server has severe definition quality issues. Tool names lack clear action verbs (e.g., 'modify_content_of_presentation' is vague about what content changes). Descriptions are minimal (10-50 chars) and lack context on WHEN to use each tool or WHAT they return. Input schemas are present but incomplete: parameters lack type information beyond basic string/integer declarations, and no output schemas are documented. No error handling guidance, no parameter constraints (enums, ranges), and no indication of which tools are idempotent or destructive. The server appears to be a Flask wrapper around a local LLM with hardcoded tool definitions in gen_data.py, but actual tool implementations are not visible in the provided code.
Locate a slide by topic in a presentation file
Insert a new slide into a presentation at a specified index
Update the content of a slide in a presentation by topic
Apply formatting changes to a document
Rewrite a specific section in a document by topic
Delete a slide from a presentation by index
Tool names lack clear action verbs. 'modify_content_of_presentation' and 'modify_text_of_doc' are ambiguous, does 'modify' mean replace, append, or reformat? Use specific verbs like 'update_slide_content', 'rewrite_section', 'replace_text'.
Descriptions are too short (10-50 chars) and lack context. None explain WHEN to use the tool, WHAT it returns, or whether it modifies state.
No output schemas documented. LLMs cannot plan downstream calls or extract required data (e.g., slide index from find_slide_tool). Every tool must declare its return type and fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | 2026-07-28+ | v2 |
Parameters lack constraints and validation guidance. 'filename' and 'topic' are free-form strings with no enum, pattern, or length limits. 'index' has no min/max bounds. LLMs will pass invalid values without guidance.
No error handling guidance. Destructive tools (remove_slide_tool) lack confirmation or dry-run support. No recovery hints (e.g., 'If slide not found, try find_slide_tool first'). Agents cannot self-correct on failures.