Cost-optimized MCP coding executor for Claude Code and Codex. Delegates bounded implementation, debugging, test, and repository-maintenance work through task lifecycle operations.
HermitAgent exposes 4 tools with basic schemas and descriptions. All tools have names starting with action verbs (run_, reply_, check_, cancel_) and descriptions present. However, descriptions are minimal (10-40 chars), parameter descriptions lack detail, and output schemas are not documented. No error recovery guidance, no parameter constraints (enums), and no indication of idempotency or side effects. Tool composition is reasonable (single responsibility), but descriptions do not meet the 50-200 char LLM-optimized baseline. Schemas are present but sparse, parameters lack type constraints and validation rules.
Cancel a running task.
Query task status and result.
Deliver a user reply to a task in waiting state.
Run a task in the background and return the task_id.
Descriptions are too short (10-40 chars) and lack context. LLMs cannot determine when to select each tool or what it returns. Baseline is 50-200 chars with WHAT, WHEN, and WHAT-IT-RETURNS.
Output schemas are not documented. LLMs cannot plan downstream calls or extract required fields (e.g., task_id from run_task response). All tools must declare return types.
Parameter descriptions are missing or trivial. 'task' in run_task has no description; 'strategy' defaults to 'single' with no explanation of valid values or when to use 'auto'. LLMs cannot infer parameter meaning from names alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
No error recovery guidance. Error responses (e.g., 'task not found', 'server busy') do not tell the LLM what to do next. Should include suggestions like 'Try check_task() with a valid task_id' or 'Retry in 30 seconds'.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry or have side effects. run_task and cancel_task are destructive; check_task is read-only.