C# diagnostics, navigation and refactoring in Codex via persistent Roslyn language server
Single tool 'lsp' has a detailed description (194 chars) and comprehensive input schema with 5 parameters, all typed and described. However, the schema lacks explicit output documentation, parameter constraints (enums, ranges), and error recovery guidance. The tool bundles multiple LSP operations (diagnostics, definitions, references, renames, code actions) under one 'action' parameter, violating single-responsibility principle. Parameter 'method' and 'parameters' are generic and underspecified for raw LSP requests. No pagination or result-limiting guidance despite MaximumResponseCharacters=32,000 cap. Error handling exists in code but is not surfaced in tool description.
Use the persistent Roslyn language server for C# diagnostics, definitions, implementations, references, hover, symbols, renames and code actions. Coordinates are one-based UTF-16. Changes preview by default. Apply a returned proposalId with apply=true. Files changed by Codex are synchronized before queries. Raw LSP results retain zero-based positions.
Tool 'lsp' bundles multiple unrelated LSP operations (diagnostics, definitions, references, renames, code actions) under a single 'action' enum parameter. This violates single-responsibility principle and forces LLMs to reason about which action to invoke rather than selecting a dedicated tool.
Input schema lacks enum constraints for 'action' parameter values and no documented range/limit for 'limit' parameter (stated as 1 to MaximumResultLimit but MaximumResultLimit value not exposed). LLMs cannot validate inputs without explicit enums.
Output schema is not documented. Tool description mentions 'proposalId' and 'Raw LSP results' but no structured output format is specified. LLMs cannot plan downstream operations without knowing response fields.
Error handling is implemented in code (TimeoutErrorCode, StaleEditErrorCode, LspErrorCode, etc.) but not documented in tool description. LLMs have no guidance on error recovery or retry strategies.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2025-06-18+ | v2 |
Parameters 'method' and 'parameters' for raw LSP requests are generic objects with minimal description. 'method' is described as 'LSP method name' but no guidance on valid values, format, or when to use raw requests vs. predefined actions.