Route requests, preserve run state, enforce hooks, and record reviewable evidence
Citadel's MCP servers have severe definition gaps. Tool descriptions are present but minimal (10-50 chars, well below the 50-200 char baseline for LLM-optimized descriptions). No input schemas are visible in the provided source code, only tool names and brief descriptions appear in .mcp.json config. The actual tool implementations in index.js files are not shown, so parameter types, constraints, and output schemas cannot be verified. Without visible schemas, all tools score 0 on schema dimension. Naming is reasonable (verb_noun pattern: citadel_status, get_architecture, who_imports, dependencies_of, trace_path, impact_of_change), but descriptions lack context on WHEN to use each tool, what prerequisites exist, and what the output structure is. Error handling, recovery guidance, and parameter validation are not documented.
Orient on campaign, fleet, telemetry, and artifact state
List dependencies of a module
Orient on a cold/large repo structure
Analyze impact of changes on codebase structure
Trace import paths between modules
Identify which modules import a given module
No input schemas visible in source code. Tool definitions in mcp-servers/citadel-state/index.js and mcp-servers/codebase-memory/index.js are not provided, so parameter types, constraints, and validation cannot be verified. All tools score 0 on schema dimension.
Descriptions are too brief (10-50 chars vs. 50-200 char baseline). 'Orient on campaign, fleet, telemetry, and artifact state' lacks WHEN to call, prerequisites, and output structure. LLMs cannot determine tool selection from these minimal descriptions.
No parameter descriptions documented. Tools like trace_path and impact_of_change likely accept parameters (module names, change scope) but no descriptions explain what each parameter controls, valid formats, or constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No output schema documentation. Agents cannot plan downstream calls or extract required fields (e.g., does get_architecture return module_id, dependencies array, or a tree structure?). Lack of chaining IDs forces extra discovery calls.
No error handling or recovery guidance documented. If a module is not found or a trace fails, agents have no guidance on what to do next (retry, search, ask user). Error responses must tell LLMs what to do.