MCP server supporting CDB (Windows), GDB (Linux), and LLDB (macOS) for automated crash dump analysis and triage
TriagePilot exhibits moderate definition quality with solid parameter schemas and descriptions for debugger/dump analysis tools, but critical gaps in composition, error handling guidance, and output documentation. 12 tools across three categories: dump analysis (analyze_dump, open_dump, run_debugger_cmd, close_dump, send_ctrl_break, list_dumps), repository PR creation (create_repo_pr, create_shared_patch), and persistent memory (recall_similar_crashes, save_triage_result, list_known_patterns, forget_pattern). Most tools have well-structured input schemas with type constraints, but lack documented output schemas and recovery guidance. Tool naming is clear and verb-forward, but composition challenges exist: dump session management requires manual state tracking across multiple calls (open_dump → run_debugger_cmd → close_dump), and the memory store tools lack transaction guarantees. Repository tools are feature-heavy but expose dangerous parameters (exclude_markdown_files, include_gitignored_files) with confusing semantics. Error handling responses are not visible in source.
One-shot crash dump analysis (opens session, analyzes, closes automatically)
Close a dump analysis session
Create a pull request from local repository changes with analysis results
Create a markdown patch summary for shared/gitignored changes
Delete a crash pattern from the persistent memory store
List available crash dumps in a directory
List known crash patterns from the persistent memory store
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., dump session IDs, PR URLs, memory entry IDs). Baseline: 100% of A+ tools have documented return types.
Dump session lifecycle requires manual state tracking across calls. No idempotency guarantees or session ID returns documented. Agents must track dump_path strings externally to coordinate open_dump → run_debugger_cmd → close_dump sequences. Patterns: tool-chain, idempotent-operation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Open a crash dump for interactive analysis (persistent session)
Query the persistent memory store for similar past crashes
Execute a debugger command against an open dump session
Save crash analysis results to the persistent memory store
Send a break/interrupt signal to a debugger session
create_repo_pr has confusing/contradictory parameters: include_gitignored_files marked 'Deprecated safety flag. Gitignored files are never force-added' but still exposed; exclude_markdown_files uses negative logic (exclude_ prefix); stage_all=true auto-stages all changes without fine-grained control. LLMs will misinterpret default behaviors.
Memory tools (recall_similar_crashes, save_triage_result, forget_pattern) lack transaction semantics and conflict resolution. Concurrent agent invocations could race on save/delete. No documented ID format for pattern_id in forget_pattern; no validation shown in handler stub.
Error handling responses not visible in source code. No documented recovery guidance (e.g., 'debugger command failed, try simpler command', 'PR creation blocked by uncommitted changes, run create_shared_patch first'). Pattern baseline: error responses must tell the LLM what to do next.
Destructive tools (forget_pattern, create_repo_pr with stage_all=true) lack confirmation step or dry-run support. Agents could delete memory patterns or commit wrong changes without user confirmation. Pattern: confirmation-request.
analyze_dump and open_dump descriptions do not clearly distinguish when to use each. 'One-shot' vs 'persistent session' is cryptic for LLMs unfamiliar with debugger semantics. Baseline: when multiple tools operate on same resource, names must make distinction obvious.
recall_similar_crashes allows mutually exclusive parameters (crash_signature vs analysis_text) but does not document this clearly. LLM could pass both and get unexpected behavior. Baseline: document mutually exclusive params in descriptions.
create_repo_pr has 23 parameters, exceeding baseline (p90=8). Complex parameter interactions (external_dependency_path_hints, shared_component_path_hints, handle_shared_component_changes) lack clear documentation of precedence/behavior. LLMs struggle with high-arity tools.
list_dumps and list_known_patterns use pagination (offset/limit) but do not document return cardinality (expected result count ranges, whether results are sorted). LLM cannot know if pagination is necessary or how to handle empty results.