WigiDash LLM integration suite with router-based model management, GPU VRAM monitoring, and widget-based control panels for llama.cpp multi-model orchestration
Critical failures across naming, descriptions, and schemas. Tool names lack consistent verb prefixes (GetStatusAsync, LoadModelAsync vs list_models, load_model). Descriptions are present but generic (10-50 chars for many tools). Input schemas visible only for 6 of 22 tools; most lack explicit parameter type definitions. No output schemas documented. Duplicate tools (GetStatusAsync, LoadModelAsync appear 3 times across files). No error handling guidance. Tool definitions appear inferred from shell scripts and C# code rather than explicit MCP registration.
Get router status asynchronously. Queries /v1/models endpoint and parses model list with load status.
Get router status asynchronously. Queries /v1/models endpoint and parses model list with load status.
Load a model asynchronously via router API. Sends POST to /models/load endpoint.
Load a model asynchronously via router API. Sends POST to /models/load endpoint.
Unload a model asynchronously via router API. Sends POST to /models/unload endpoint.
Unload a model asynchronously via router API. Sends POST to /models/unload endpoint.
Estimate VRAM required for a model preset in megabytes. Pattern-matches preset name against known models.
Get current router status including PID, port, health, and loaded models.
Inconsistent naming conventions: shell scripts use snake_case (load_model, get_vram) while C# code uses PascalCase (GetStatusAsync, LoadModelAsync). LLMs cannot reliably select between GetStatusAsync and get_router_status when both exist.
No input schemas visible for 16 of 22 tools. Only load_model, unload_model, switch_model, estimate_model_vram_mb, LoadModelAsync, and UnloadModelAsync show parameter definitions. Remaining tools (get_vram, health, list_models, start_router, stop_router, etc.) have no documented input structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
Query GPU VRAM usage via nvidia-smi. Returns vram_used_mb and vram_total_mb.
Get free GPU VRAM in megabytes via nvidia-smi.
Get total GPU VRAM in megabytes via nvidia-smi.
Get current GPU VRAM usage in megabytes via nvidia-smi.
Health check endpoint returning server status.
Stop all LLM services (router and any straggler llama-server processes) and free VRAM. Force-kills remaining processes and verifies port release.
List available models from the router. Queries /models endpoint and returns model IDs.
Load a model preset via router API. Sends POST request to /models/load with model name. Includes VRAM-aware orchestrator switching and visual progress tracking.
Print VRAM usage summary (used/total/free) for debugging.
Restart the llama.cpp router server (stop then start).
Start the llama.cpp router server with model preset configuration. Manages lifecycle, health checks, and model loading.
Stop the llama.cpp router server gracefully with timeout, then force-kill if needed.
Switch from one loaded model to another. Unloads current model and loads new preset with VRAM management.
Unload a model preset via router API. Sends POST request to /models/unload with model name and polls for verification.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., model_id, vram_required) without knowing response structure.
Duplicate tools across files: GetStatusAsync and LoadModelAsync/UnloadModelAsync appear in both LLMControlCenterWidget and LLMModelSelectorWidget. No clear distinction between them; LLMs will waste reasoning cycles deciding which to call.
Destructive tool (kill_all_llm) lacks confirmation/dry-run pattern. No error guidance for recovery. Description does not explain prerequisites or consequences.