MCP server implementation for AI Task Orchestrator that exposes the orchestrator and individual tools (summarizer, code_helper, extractor) as MCP Tools over HTTP
Four tools with minimal descriptions (20-60 chars) and single-parameter schemas. Tool names lack action verbs (orchestrate, summarizer, code_helper, extractor are nouns/adjectives). Descriptions are generic and do not explain WHEN to use each tool or what distinguishes them. No parameter descriptions beyond the input field itself. Output schemas are documented in code but not formally declared in tool registration. No error handling guidance, no enum constraints, no pagination support. Naming violates verb_noun convention, 'orchestrate' and 'summarizer' are vague; 'run_summarizer' or 'summarize_text' would be clearer. Single-string input design is overly simplistic for a task orchestrator.
Run the Code Helper tool directly (deterministic tool call).
Run the Extractor tool directly (deterministic tool call).
Route a task to the best tool and return result + trace.
Run the Summarizer tool directly (deterministic tool call).
Tool names lack action verbs. 'orchestrate', 'summarizer', 'code_helper', 'extractor' are nouns/adjectives, not verb_noun patterns. LLMs infer intent from names, 'summarize_text', 'help_with_code', 'extract_data' would be clearer.
Descriptions are too short (20-60 chars) and lack context. No explanation of WHEN to use each tool, what distinguishes them, or what they return. Baseline for A+ tools is 50-200 chars with WHAT/WHEN/RETURN guidance.
Input parameter 'task_text' has no description in schema. Parameter descriptions are mandatory, LLMs cannot infer meaning from names alone. All four tools suffer this gap.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Output schemas are not formally declared in tool registration. Code shows return dicts with fields like 'tool_used', 'result_summary', 'trace', but FastMCP tool decorators do not document return types. LLMs cannot plan downstream calls without knowing output structure.
No error handling guidance. Tools return dicts but do not document error cases, recovery steps, or how LLMs should respond to failures. No enum constraints, no validation rules, no actionable error messages.