Agent-facing Codex session and MCP lifecycle manager with callable validation.
26 tools with consistent naming (verb_noun pattern: codex_<resource>_<action>), comprehensive descriptions (avg 150-200 chars), and explicit JSON Schema with typed parameters. Tool annotations present (readOnlyHint, destructiveHint, idempotentHint). Strengths: all tools have descriptions, all parameters typed, clear risk classifications (READ_ONLY, WRITE, DESTRUCTIVE). Weaknesses: output schemas not documented in source; error handling guidance minimal; some parameter descriptions lack constraint details (e.g., timeoutMs lacks min/max bounds); no batch variants despite many sequential operations.
Start or reuse the managed App Server. Requires confirm:true for real starts.
Read redacted workspace App Server launcher state and report which loopback URL source session tools would use. Does not start, stop, or probe MCP callability.
Report the managed App Server process status and readiness. Does not start or stop the App Server.
Stop the managed App Server process tree. Requires confirm:true for real stops.
Add an npm MCP to the global Codex MCP registry without installing to workspace. Requires confirm:true for real adds.
Remove an npm MCP from the global Codex MCP registry. Requires confirm:true for real removes.
Output schemas not documented in source code. Tool descriptions state what is returned (e.g., 'List loaded Codex App Server thread ids') but no explicit schema definitions visible for response payloads. LLMs cannot plan downstream tool calls without knowing response structure.
Numeric parameters lack min/max bounds. timeoutMs, limit, storedLimit, readyTimeoutMs, delayMs appear in multiple tools without documented constraints (e.g., 'timeoutMs: 1000-60000'). Unbounded numbers let LLMs pass absurd values.
Error handling guidance absent. Tools return error payloads via safeToolCall() but descriptions do not explain recovery paths (e.g., 'If timeout occurs, retry with longer timeoutMs' or 'If thread not found, call codex_threads_list first'). Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Add an npm MCP to the workspace .codex/mcp.json config without installing. Requires confirm:true for real adds.
Remove an npm MCP from the workspace .codex/mcp.json config. Requires confirm:true for real removes.
Report stale or orphaned MCP entries in workspace .codex/mcp.json config without modifying them.
Install an npm MCP package into the workspace .codex/mcp.json config and validate it is callable. Requires confirm:true for real installs.
Inspect npm package metadata/README before installing a third-party MCP. Extracts likely credential env var names and auth hints generically; does not use package-specific hardcoding and never returns secret values.
Refresh the App Server MCP catalog without restarting the session. Use after installing/removing MCPs to make them callable.
Reload the App Server MCP catalog and restart the session. Use when refresh is insufficient or MCPs need full restart.
Read App Server MCP status for a thread as diagnostic evidence only. This can show server/tool registration after reload, but final proof still requires a real model-callable tool call.
Read a session-manager operation by id. Use from a later turn or different thread; do not use it to keep the same target thread active while waiting for its continuation.
Wait for a session-manager operation to complete or fail. Do not use this from the same active thread after scheduling a continuation for that thread; finish the turn first so the continuation can observe an idle boundary.
Report which MCP secrets are configured and which are missing. Does not return secret values.
Close a Codex session and optionally stop its App Server. Requires confirm:true for real closes.
Continue a Codex session in a new turn without restarting the App Server or MCPs.
Hard relaunch a Codex session by stopping and restarting the App Server and MCPs.
Launch a new Codex session with optional App Server start and MCP configuration.
Return concise operational guidance for this MCP server. Use this when unsure which session, reload, refresh, npm MCP install, or safety workflow to follow.
Return a stable marker proving this MCP server is callable.
Replace a Codex session with a new one, optionally restarting the App Server and MCPs.
Summarize loaded-thread evidence and recommend a target thread without exposing raw thread payloads. Prefer this over guessing when multiple threads or stale windows exist.
List loaded Codex App Server thread ids, with optional redacted stored-thread summaries. Use before mutating session operations when the target thread id is unknown.
No batch variants for sequential operations. Tools like codex_local_mcp_add_npm, codex_local_mcp_remove, codex_global_mcp_add_npm operate on single packages. Agents installing/removing multiple MCPs must call these tools N times, wasting tokens and latency.
Confirmation pattern relies on dryRun + confirm flags. Tools like codex_mcp_install_npm, codex_session_launch, codex_app_server_start require dryRun=false AND confirm=true. This two-step pattern is verbose; consider a single 'confirm' parameter with enum ['dry_run', 'execute'].