A C# MCP server that orchestrates GitHub-based software development workflows with resilience, checkpointing, and SDLC phase management
GSD Orchestrator exposes only 2 tools with minimal documentation. CallToolAsync has a generic description that does not explain WHEN to use it or what makes it different from direct MCP calls. ListToolsAsync lacks any description. Both tools have input schemas present but descriptions are far below the 50-200 char LLM-optimized baseline (10 and 0 chars respectively). No parameter descriptions beyond bare type info. No output schema documentation. No error handling guidance. No tool annotations. This server is a thin wrapper around MCP client operations, not a domain-specific tool suite.
Calls an MCP tool with resilience (Polly retry + circuit breaker), logging, and secondary rate limit special-casing
Lists all available MCP tools from the client
ListToolsAsync has no description. LLMs cannot determine when or why to select this tool.
CallToolAsync description (10 chars) is far below the 50-200 char LLM-optimized baseline. Does not explain WHEN to use it, what resilience features it provides, or how it differs from direct tool invocation.
No output schema documented for either tool. LLMs cannot plan downstream operations or extract required fields.
Parameter 'args' in CallToolAsync lacks description. LLMs cannot infer what structure this JSON object should contain.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
No error handling guidance. Tests show McpException with IsTransient and IsSecondaryRateLimit flags, but tool descriptions do not explain retry behavior or recovery steps to LLMs.