Production-grade, cross-platform 44-tool MCP bridge from ChatGPT to a local workstation over OpenAI Secure MCP Tunnel.
45 tools with highly inconsistent definition quality. Only 8 tools have visible descriptions in source (codex_run, git_diff, git_status, read_file, search_text, shell, system_info, web_fetch, workspace_list, write_file, replace_in_file). 37 tools have NO descriptions visible, only names in tool-contract.js. Most tools lack visible input schemas; only ~11 have documented parameters. Python reference implementation shows good patterns (ToolAnnotations, path validation, output truncation) but TypeScript server definition is opaque. Average tool description length for documented tools: ~120 chars (below 194-char baseline). No output schemas documented. Error handling present in Python reference but unclear in main server.
Delegate a task to the local Codex CLI (gpt-5.6-sol, full-access workspace).
37 of 45 tools (82%) have NO visible descriptions in source code. Only tool-contract.js lists names; actual definitions are opaque. Cannot verify LLM-facing descriptions exist.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
git diff (optionally --staged) for review.
git status --short --branch for a project in the workspace.
Read a file inside the workspace.
Exact-string replacement in an existing file (create/update, never delete).
Regex search across the workspace (uses git grep when available).
Run a shell command in the workspace (tests, builds, linters, dev scripts). Destructive commands are REFUSED by policy — ask a human to run those locally.
Report host platform, CPU count, and workspace root.
Fetch a URL from this machine's network (loopback/intranet reachable).
List a directory inside the workspace (top N entries).
Create or fully overwrite a file (parent dirs auto-created). Never deletes.
Input schemas not visible for 37 tools. Only 8 tools (codex_run, git_diff, git_status, read_file, search_text, shell, system_info, web_fetch, workspace_list, write_file, replace_in_file) show parameter definitions. Cannot verify type safety or LLM parameter guidance.
No output schemas documented for any tool. LLMs cannot infer what fields to expect or plan downstream tool chains. Python reference shows good patterns (path validation, output truncation) but main server definition is opaque.
Tool definitions inferred from tool-contract.js list only; actual registration code not visible. Per HARD SCORING RULE: if tool definitions are inferred rather than directly visible, cap per-tool scores at 50. This affects all 37 undocumented tools.
Destructive tools (apply_patch, edit_file, git_run, write_file, replace_in_file, shell, etc.) lack confirmation/dry-run patterns. Python reference shows good no-delete policy but main server does not expose confirmation mechanism to LLM.