MCP server for running OpenAI Codex as a subagent with stall detection and auto-recovery
Single tool 'run' has a clear action verb and acceptable description (89 chars), but critical gaps undermine quality. Input schema is present with three parameters (task, stallTimeoutMs, maxRecoveryAttempts), all with type and description. However, parameter descriptions lack actionable constraints: stallTimeoutMs and maxRecoveryAttempts state defaults but no min/max bounds, range validation, or format guidance. No output schema is documented, the tool returns EventProcessingResult with items, threadId, finalResponse, usage, stalled, error fields, but this structure is never exposed to the LLM. Error handling is internal (stall detection, recovery attempts) but not surfaced as tool-level error guidance. The tool performs a complex, stateful operation (Codex task execution with recovery) but the description does not clarify what 'stalled' means, when recovery triggers, or what the LLM should do if the tool fails. No idempotency guarantee stated. Risk marked WRITE but no confirmation/dry-run pattern offered for such a destructive operation.
Run a task with Codex with stall detection and auto-recovery
No output schema documented. Tool returns EventProcessingResult (items, threadId, finalResponse, usage, stalled, error) but LLM has no visibility into return structure, field types, or what to extract for downstream use.
Parameter constraints missing. stallTimeoutMs and maxRecoveryAttempts state defaults (300000ms, 2) but lack min/max bounds, valid ranges, or format guidance. LLM cannot validate inputs or understand constraints.
Error handling not surfaced to LLM. Tool detects stalls and attempts recovery internally, but error responses do not guide the LLM on what to do next (retry, ask user, abort). No recovery guidance in error messages.
Destructive operation (WRITE risk) lacks confirmation pattern. Tool executes arbitrary Codex tasks with side effects but offers no dry-run, preview, or confirmation step to prevent accidental execution.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Tool description does not explain when to use it vs alternatives, what 'stall detection' means operationally, or what the LLM should do if recovery fails. Incomplete docstring forces LLM to guess.