FastAPI application to handle AI agent and MCP interactions workflows in a reusable and scalable manner. Exposes unit conversion tools over HTTP/SSE transports with resources and prompts.
This server has 11 tools with mixed quality. Most tools have basic descriptions (10-50 chars), which is below the 50-200 char baseline for LLM-optimized descriptions. Input schemas are present for all tools and properly typed, but descriptions lack actionable context. Task management tools (get_task_by_name, create_task, etc.) are reasonably named with verb_noun convention, but LLM generation tools (generate_sync, generate_async) have vague descriptions that don't explain when to use each variant. Error handling is not visible in the source. Output schemas are not documented. The server mixes domain concerns (task management + LLM generation + system health) without clear composition patterns.
Mark a task as complete
Create a new task
Delete a task by its name
Filter tasks by type
Enqueue content for background generation. Uses the LLMClient.models.enqueue_content pattern.
Generate content synchronously. Uses the LLMClient.models.generate_content pattern.
Check the status and result of a background job.
Descriptions are too short (10-50 chars) and lack actionable context. Baseline is 50-200 chars. Examples: 'Get a task by its name' (23 chars), 'Get the health status of the service' (36 chars). LLMs cannot determine when to select these tools or what they return.
Output schemas are not documented. Tools return data but LLMs cannot plan downstream calls or extract fields. Example: create_task returns a task object, but the response structure is not specified.
LLM generation tools (generate_sync, generate_async) have ambiguous names and descriptions. 'Generate content synchronously' does not explain when to use sync vs async, what 'provider' and 'model' mean, or what the output format is. Naming should clarify intent (e.g., generate_text_with_gemini).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Get a task by its ID
Get a task by its name
Get the health status of the service
Get the root endpoint with service information
Destructive tool (delete_task_by_name) lacks confirmation or dry-run support. Description does not warn that this is irreversible. No error handling guidance visible.
System tools (root, health) are generic and lack clear use cases. 'Get the root endpoint with service information' does not explain what an LLM should do with this data or when to call it.