Skip to main content
Glama

Debug MCP - 智能调试 Agent

一个会"记住错误"的智能调试工具,自动排查问题并积累解决方案。

特点

  • 🔍 自动排查 - 智能分析错误,定位根因

  • 📚 错误记忆 - 自动保存排查记录,下次类似问题秒解

  • 🛡️ 主动预防 - 代码预检,提前发现风险

  • 📊 趋势分析 - 了解错误模式针对性学习

  • 质量评分 - 高评价方案优先推荐

  • 🧠 ReAct 推理 - 思考 → 行动 → 观察 → 反思

  • 🔌 MCP 协议 - 支持 Claude Desktop、Cursor

  • 🌐 多 LLM - DeepSeek / OpenAI / Anthropic

  • 📁 无需数据库 - 纯 JSON 文件存储案例


Related MCP server: Error Debugging MCP Server

新人使用步骤

1. 安装

git clone https://github.com/你的用户名/debug-mcp.git
cd debug-mcp
pip install -e .

2. 配置 API Key(二选一)

方式一:创建 .env 文件

cp .env.example .env
# 编辑 .env,填入你的 DEEPSEEK_API_KEY

方式二:直接传入

agent = DebugAgent(api_key="sk-your-key")

3. 使用(两种方式)

方式 A:Python 直接调用(推荐)

from src.agent import DebugAgent

agent = DebugAgent()

# 排查问题
result = agent.debug("TypeError: Cannot read property 'id' of undefined")

print(result)

方式 B:MCP Server(需要 Claude Desktop)

配置 claude_desktop_config.json

{
  "mcpServers": {
    "debug-mcp": {
      "command": "python",
      "args": ["-m", "src.server"]
    }
  }
}

重启 Claude Desktop,然后直接说:

  • "排查一下这个错误"

  • "看看这个 bug"


MCP 工具列表

工具

说明

debug

排查问题 - 输入错误信息,返回解决方案

search_case

搜索历史案例

list_cases

列出所有案例

get_case

查看案例详情

delete_case

删除案例

mark_effective

标记方案有效性(帮助改进匹配)

get_recommended_fixes

获取高评价解决方案

pre_check_code

代码风险预检(主动预防)

get_weekly_report

获取本周错误报告

get_error_trends

获取错误趋势分析

get_stats

统计信息

clear_memory

清空记忆

search_code

搜索代码文件

read_file

读取文件内容

grep

正则搜索

check_syntax

语法检查

list_files

列出文件

refresh_index

刷新索引


如何避免重复犯错?

使用以下 5 个最佳实践:

1️⃣ 描述错误要具体

# ❌ 太笼统
agent.debug("程序出错了")

# ✅ 具体描述
agent.debug("TypeError: Cannot read property 'id' of undefined")

2️⃣ 看到 found_in_history: True 直接用历史方案

result = agent.debug("Cannot read property 'id' of undefined")

# 如果 found_in_history: True
# 直接使用 result['solution'],无需重新排查

3️⃣ 定期查看高频错误

# 查看最常遇到的错误,针对性预防
agent.list_cases(limit=10)  # 高频错误排行
agent.get_stats()           # 统计信息
agent.get_weekly_report()   # 本周报告

4️⃣ 使用预检主动预防

# 在编码时主动检查风险
agent.pre_check(code="your_code_here")

# 或使用 MCP
# "检查一下这段代码有没有风险"

5️⃣ 标记方案有效性帮助改进

# 如果方案有效
agent.memory.mark_effective(case_id, effective=True)

# 如果方案无效
agent.memory.mark_effective(case_id, effective=False)

# 获取高评价方案
agent.memory.get_effective_cases(min_rating=0.5)

核心思想

这个 MCP 的价值在于积累

  • 用得越多,案例库越丰富

  • 标记有效性 → 匹配算法越精准

  • 定期查看错误趋势 → 针对性学习预防


示例

from src.agent import DebugAgent

agent = DebugAgent(api_key="sk-xxx")

# 第一次排查
result = agent.debug("TypeError: Cannot read property 'id' of undefined")
# 输出:
# {
#   "success": True,
#   "root_cause": "接口返回数据为null时未做空值检查",
#   "fix_solution": "使用 data?.id 或 data || {}",
#   "steps": [{"action": "...", "observation": "..."}],
#   "found_in_history": False
# }

# 第二次排查相同错误(自动匹配历史)
result = agent.debug("Cannot read property 'id' of undefined")
# 输出:
# {
#   "success": True,
#   "found_in_history": True,
#   "fix_solution": "使用 data?.id 或 data || {}",
#   "history_case": {...}
# }

项目结构

debug-mcp/
├── src/
│   ├── agent.py        # Debug Agent 核心
│   ├── memory.py       # 案例库(JSON 文件)
│   ├── tools.py        # 工具集
│   └── server.py       # MCP Server
├── cases/              # 案例存储目录(自动创建)
│   └── debug_cases.json
└── .env               # API Key 配置

案例库

  • 位置:cases/debug_cases.json

  • 无需数据库,纯文件存储

  • 每次排查自动保存

  • 下次遇到类似问题自动匹配


API

from src.agent import DebugAgent

agent = DebugAgent(api_key="sk-xxx")

# 排查问题
result = agent.debug("错误信息")

# 搜索历史案例
cases = agent.search_history(["关键词"])

# 获取统计
stats = agent.get_stats()

# 主动预防:检查代码风险
result = agent.pre_check(code="your code here")

# 获取高评价方案
effective_cases = agent.memory.get_effective_cases(min_rating=0.5)

# 标记方案是否有效
agent.memory.mark_effective(case_id, effective=True)

# 获取周报
weekly_report = agent.memory.get_weekly_report()

# 获取趋势分析
trends = agent.memory.get_error_trends(days=30)

# 清空记忆
agent.clear_memory()

配置选项

agent = DebugAgent(
    api_key="sk-xxx",           # API Key(必须)
    model="deepseek-chat",      # 模型,默认 deepseek-chat
    max_steps=5,                # 最大排查步骤
    case_file="cases/debug_cases.json"  # 案例库路径
)

支持的模型

模型

配置

DeepSeek(默认)

model="deepseek-chat"

OpenAI

model="gpt-4"

Anthropic

model="claude-3-opus"

Ollama

model="llama2"


给 Claude 的系统规则

如果你是用户,可以在对话中告诉 Claude 以下规则(让它帮你解决问题时更聪明):

你是一个调试助手。在解决问题时:
1. 每次尝试新方法前,先问用户确认
2. 如果一个方法失败,不要用相同方法重试
3. 可以调用 debug-mcp 预检工具检查风险
4. 避免重复尝试已经失败的方法
5. 遇到不确定的问题,先搜索历史案例

让 Claude 每次尝试前先用 pre_check_code 检查一下代码风险。


有问题?直接在项目中提 Issue!

Available Tools

18 tools
check_syntaxCheck SyntaxC

检查文件语法

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral context. It only says 'check file syntax', which implies a non-mutating validation but does not disclose output on success/failure, supported languages, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short and front-loaded, but it is under-specified rather than appropriately concise. It lacks essential behavioral and usage detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, one parameter, and only a two-word description, an agent has little context about expected inputs, return behavior, or when to invoke it. The presence of an output schema reduces the need to describe return values, but usage and behavioral context are still missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate. It does not mention filepath, path formats, or supported file types; only the parameter name suggests its meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '检查文件语法' (check file syntax) states a specific verb and resource: validate the syntax of a file. It is clear what the tool does, though it does not differentiate from siblings like pre_check_code or debug.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as pre_check_code or read_file. No conditions, exclusions, or context are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_memoryClear MemoryB

清空所有记忆

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden of disclosure. 'Clear all memories' implies a destructive, irreversible action, but it does not state scope, side effects, whether data is recoverable, or what 'memory' semantically covers. This is a meaningful gap for a mutating command.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient phrase with no filler or redundancy. Every word contributes to the meaning, making it highly scannable and appropriately sized for a parameterless tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an existing output schema, the basic invocation is adequately supported. However, the complete lack of context about the meaning and consequences of clearing memory leaves the agent without enough information for safe, confident use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing for the description to clarify. The baseline of 4 applies; the description coherently signals an action with no inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '清空所有记忆' (clear all memories) supplies a specific verb and resource, making the tool's action immediately understandable. It does not explicitly contrast with any sibling tool, but no sibling targets memory clearing, so the purpose is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to invoke clear_memory versus alternatives, nor any exclusions or prerequisites. The description is purely declarative and leaves the agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

debugDebugC

排查问题 - 输入错误信息,返回解决方案

ParametersJSON Schema
NameRequiredDescriptionDefault
errorYes
auto_saveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the input and output but does not disclose whether the tool is read-only, whether it performs any analysis or side effects, what the 'solution' format is, or any rate limits or prerequisites. For a debugging tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, which is appropriate in length and front-loads the purpose. However, it is under-specified; conciseness should not come at the cost of essential context. It could benefit from a brief note on when to use it or what the solution contains, but as is, it is not verbose and gets a middle score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are presumably covered, but the description fails to provide any behavioral context, usage conditions, or parameter details. For a debugging tool with two parameters and no annotations, the description is incomplete for an agent to decide when to invoke it and what to expect beyond a vague 'solution'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only mentions 'error information' for the error parameter. It does not explain the auto_save parameter at all, nor does it clarify the expected format of the error string. The description adds minimal meaning beyond the schema's parameter names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: troubleshoot problems by taking error information and returning a solution. It identifies the verb (排查/input) and resource (error→solution), which is specific enough. However, it does not differentiate from siblings like get_recommended_fixes or check_syntax, which might serve similar functions, so it loses a point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only says 'input error information, return solution' without mentioning scenarios where this is preferred over siblings like get_recommended_fixes, check_syntax, or search_code. There is no exclusion criteria or alternative reference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_caseDelete CaseD

删除指定案例

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it merely says 'delete'. It does not mention irreversibility, permissions, cascading effects, or what happens to associated data, which is critical for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but this is under-specification rather than conciseness. It does not earn its place because it repeats the title and omits necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations, the description is dangerously incomplete. It lacks any information about side effects, return values, error conditions, or safety considerations, leaving the agent unable to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required parameter, case_id, with no description, and schema description coverage is 0%. The description does not mention the parameter at all, so the agent must guess what case_id refers to and how it should be formatted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '删除指定案例' is a direct translation of the title 'Delete Case', adding only the word 'specified'. It states the verb and resource but does not differentiate from sibling tools like clear_memory or mark_effective beyond the name itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, conditions, or exclusions, leaving the agent to infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_caseGet CaseB

获取指定案例详情

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. '获取' implies a read-only operation, but the description says nothing about missing-case behavior, error handling, permissions, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, front-loaded with the core action and object, with no filler or redundant content. It is appropriately sized for a simple one-parameter getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity and the presence of an output schema, the core operation is adequately described. However, the absence of annotations and any sibling-tool differentiation leaves the definition incomplete for an agent choosing between get_case and related tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the only parameter is a plain string case_id with no schema description. The phrase '指定案例' links the parameter to a specific case, but adds no format, constraints, or examples beyond the self-explanatory parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('获取'/'retrieve') and resource ('指定案例详情'/'details of the specified case'), making it clear this is a single-case lookup. It doesn't explicitly contrast with siblings like search_case or list_cases, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus search_case, list_cases, or other siblings, and no exclusions or prerequisites. The name and required case_id imply usage, but the description itself offers no routing context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statsGet StatsB

获取记忆系统统计信息

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the full behavioral burden. It only states that the tool retrieves statistics; it does not disclose whether the call is read-only, whether it can be expensive, whether it triggers a refresh, or whether it depends on prior memory initialization. The 'get' verb implies no mutation, but that is implicit rather than explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler or redundancy, and the core action is front-loaded. It is concise, though too minimal to add much beyond the tool name and title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters and an output schema, the structural requirements are low keyboards and return values need not be explained. However, the description does not clarify what the statistics cover or when to choose this tool over the many sibling reporting/debug tools, leaving the contextual picture incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there are no parameter meanings for the description to clarify. The baseline 4 for parameterless tools applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('获取' / get) and resource ('记忆系统统计信息' / memory system statistics), so an agent can tell it retrieves statistics. It does not explicitly differentiate it from sibling reporting tools like get_weekly_report or get_error_trends, but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus the 17 sibling tools. It does not mention a scenario, prerequisite, or any alternative that might be more appropriate, leaving the agent to infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_weekly_reportGet Weekly ReportB

获取本周错误报告

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read operation but does not explain what 'this week' means (calendar week vs rolling 7 days), timezone handling, report scope, or whether any aggregation occurs. A no-parameter report tool needs at least a definition of its time window.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is appropriately concise and front-loaded for a no-parameter tool. It sacrifices some behavioral detail, but it is not padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema present, the description is mostly adequate for invoking the tool. However, it leaves the definition of 'weekly' ambiguous and provides no context for choosing it over related reporting/stats siblings, so an agent may mis-select it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there are no parameter semantics for the description to document. The baseline of 4 applies because the description does not need to compensate for undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('获取' / get) and a specific resource ('本周错误报告' / this week's error report). It is distinguishable from get_stats and get_error_trends by the weekly-report scope, though it does not explicitly contrast with any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus get_error_trends, get_stats, or get_case. The only implicit hint is the word 'weekly' in the title; there are no exclusions, preconditions, or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

grepGrepC

正则搜索代码

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
contextNo
patternYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'regex search code' and does not explain scope, default path, whether the search is recursive, how 'context' is used, or what gets returned. The behavior is implied but not disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short and front-loaded, with no wasted words. However, it is under-specified for a 3-parameter tool, so while concise, it is not fully 'appropriately sized' for the decision-making context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, minimal parameter semantics, and an output schema present but no explanatory description, an agent lacks key contextual information like default scope, usage boundaries, and sibling alternatives. The definition is adequate for recognizing a grep-like tool but not for robust tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds almost no parameter-level meaning beyond the schema's names. The word 'regex' clarifies that 'pattern' is a regex, but 'path' and 'context' are left unexplained, so the description fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: '搜索' (search) with '代码' (code) using regex, so the core action is clear. It does not differentiate from the sibling tool 'search_code', which could overlap, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool instead of alternatives like 'search_code' or 'read_file'. The description implies 'use this for regex code search' but provides no exclusions, prerequisites, or comparison to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_casesList CasesC

列出所有历史案例

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states that the tool lists cases, but does not mention pagination, default limiting behavior, sorting, read-only guarantees, or any side effects—especially since the schema includes a limit parameter with a default of 20.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is concise, though slightly too sparse to fully replace missing annotations and usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a simple list operation with one optional parameter and an output schema, the description is minimally adequate. However, it lacks usage context against siblings and does not clarify limit behavior, so it is not fully complete for an agent deciding between this and search_case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description does not explain the sole 'limit' parameter. The parameter is discoverable from the schema, but the description adds no semantics beyond what the schema already provides, so it fails to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and resource: '列出所有历史案例' (list all historical cases). It identifies the operation as a bulk listing, which helps distinguish it from siblings like search_case or get_case, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus search_case, get_case, or delete_case. The description only implies that it is for retrieving all historical cases; there are no exclusions or alternative routing cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filesList FilesC

列出匹配的文件

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo*
recursiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'list matching files' and does not mention recursion behavior, default recursion being true, possible large outputs, hidden files, permissions, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but under-specified rather than concise. It adds almost no information beyond the title and lacks any structural breakdown of behavior or parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters with defaults, no annotations, and overlapping sibling tools, this description is incomplete. The output schema may document return values, but the description fails to explain matching syntax, recursion semantics, or when this tool is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate. It gives no explanation of what 'pattern' means (glob vs regex), how 'recursive' affects traversal, or how the defaults behave. The only hint is the vague word 'matching'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: '列出匹配的文件' means 'list matching files'. It is not a tautology because it adds the 'matching' qualifier, but it does not differentiate from sibling tools like grep or read_file that also operate on files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as grep, search_code, or read_file. No exclusions, prerequisites, or recommended conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_effectiveMark EffectiveB

标记案例解决方案是否有效

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYes案例ID
effectiveNoTrue=有效, False=无效

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says what the tool does, not whether it overwrites an existing effectiveness value, whether the change is reversible, whether the case must already exist, or any permission requirements. For a state-changing tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with no filler, repetition, or unnecessary background. It is front-loaded with the action and target, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: two flat parameters, one required, a default value for effective, and an output schema exists, so return-value details are not needed. However, with no annotations and no usage guidance, the agent is left uninformed about side effects, prerequisites, or when this write should be performed relative to siblings. This is a clear gap, though not crippling for such a small tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so case_id and effective are already documented in the input schema. The description adds only marginal context by clarifying that the 'effective' flag applies to the case solution rather than the case itself. The schema does the heavy lifting, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('mark') and a specific resource ('case solution effectiveness'), making the core intent clear. It is distinguishable from siblings like get_case and search_case because no other tool claims to update effectiveness. However, 'mark whether effective' is slightly loose and does not explicitly say 'set/update the stored flag', though the title and schema resolve that ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied: an agent should call this when recording whether a case solution is effective. But the description gives no explicit when-to-use guidance, no prerequisites, and no mention of alternatives or exclusions among the many sibling tools. It is adequate only through inference from the name and verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pre_check_codePre Check CodeC

主动预防:检查代码中可能的风险模式

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo要检查的代码字符串
actionNo正在尝试的操作描述(如 "用 try-catch 包裹")
filepathNo要检查的文件路径

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'check' and does not state whether the tool is read-only, whether it has side effects, whether it requires permissions, or what it returns on failure. The read-only nature is implied but never explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded phrase with no filler or redundant content. It communicates the core intent immediately. However, its extreme brevity sacrifices useful detail, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with an output schema and 100% parameter coverage, the description leaves out what risk patterns are targeted, how 'action' and 'filepath' influence the check, and when this tool should be invoked instead of check_syntax or other siblings. For a proactive pre-check tool, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented in the schema. The description itself adds no extra meaning to 'action' or 'filepath' beyond their schema descriptions, but this is acceptable given the full coverage. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '检查代码中可能的风险模式' states a specific verb and resource: checking code for risk patterns. It is distinguishable from siblings like check_syntax (syntax checking) and search_code (searching), though it does not explicitly name those siblings. The purpose is clear but somewhat broad.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '主动预防' (proactive prevention) implies this tool is for pre-checking code before an operation, but no explicit when-to-use or when-not-to-use guidance is provided. It does not name alternatives or exclusions, so an agent must infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileRead FileD

读取文件内容

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
offsetNo
filepathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of disclosing behavior. It only restates that the tool reads a file and says nothing about encoding, binary content, file size limits, path resolution, errors, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but this is under-specification rather than conciseness. It states nothing that is not already obvious from the tool name and title, so it fails to earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, three parameters, and a rich set of sibling tools, the description is far too thin. It provides almost no context for correct selection or invocation, despite an output schema existing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate by explaining any of the three parameters. The meanings of filepath, lines, and offset, especially their defaults and interaction, are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description "读取文件内容" literally means "read file content", which merely restates the tool name and title without adding any distinguishing details. It does nothing to differentiate read_file from siblings like list_files, grep, or search_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as list_files, grep, or search_code. No context, prerequisites, or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_indexRefresh IndexB

刷新文件索引

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not explain whether the refresh is incremental or full, whether it affects search/grep results, how long it may take, or whether it requires special permissions or filesystem access.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded phrase with no filler or repetition. Every word earns its place, which is appropriate for a zero-parameter utility tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and an output schema that already covers return values, the description should at least state when the refresh is needed and what side effects it produces. It leaves out practical context like 'run after file changes to update search results', so an agent lacks enough information to decide when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so there is no parameter documentation burden. The description does not need to add parameter semantics because there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('refresh') and resource ('file index'), so an agent can tell what the tool operates on. It does not explicitly differentiate from siblings, but no sibling name overlaps with an index-refresh operation, so the intent is reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this tool, what conditions make a refresh necessary, or why an agent should choose it over alternatives. The only usage signal is inferred from the title and description, not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_caseSearch CaseC

搜索历史案例

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
keywordsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'search historical cases' and does not mention what the tool returns, whether it requires keywords, pagination behavior, or any side effects. This is a significant gap for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but this is under-specification rather than conciseness. It lacks essential information and does not front-load useful constraints or usage details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a required parameter (keywords) and an optional limit, but the description provides no explanation of either. There is an output schema but it is not described, so the agent cannot predict the return format. This is completely inadequate for a tool with a required parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the parameters. It does not mention keywords or limit at all. The agent has no idea what 'keywords' means or how 'limit' affects results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('search') and resource ('historical cases'), which distinguishes it from list_cases and get_case. However, it does not differentiate it from search_code or other search tools, and it is only in Chinese without an English equivalent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like list_cases, get_case, or search_code. The description merely states the action without any context on selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_codeSearch CodeC

搜索代码文件

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. 'Search code files' reveals nothing about matching semantics, case sensitivity, regex support, scope, indexing behavior, or result format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, but it is under-specified rather than appropriately concise. It sacrifices all useful context for brevity, so it does not earn its place as a helpful tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations, the description is far from complete. It lacks usage guidance, behavioral details, parameter explanations, and any information about the output, making it inadequate for correct tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the meaning or usage of 'keyword' or 'limit'. The agent must rely entirely on the schema names, which is insufficient for a search tool with behavioral nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('search') and resource ('code files'), so the basic purpose is understandable. However, it does not differentiate this tool from siblings like grep or read_file, which could also be used to search code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use search_code versus alternatives such as grep, search_case, or read_file. No context, prerequisites, or exclusions are provided, leaving the agent to guess which tool fits a given scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv0.1.0
    • First observedcheck_syntax
    • First observedclear_memory
    • First observeddebug
    • First observeddelete_case
    • First observedget_case
    • First observedget_error_trends
    • First observedget_recommended_fixes
    • First observedget_stats
    • First observedget_weekly_report
    • First observedgrep
    • First observedlist_cases
    • First observedlist_files
    • First observedmark_effective
    • First observedpre_check_code
    • First observedread_file
    • First observedrefresh_index
    • First observedsearch_case
    • First observedsearch_code

TDQS

C2.7/5.0

Scored across 18 tools

Disambiguation4/5

Most tools have clearly distinct purposes: case memory operations vs. code inspection vs. reporting. The main ambiguity is between search_code and grep (both search code) and between search_case and list_cases, though descriptions partially clarify the differences.

Naming Consistency4/5

The vast majority follow a consistent snake_case verb_noun pattern (search_case, list_cases, delete_case, read_file, check_syntax). The exceptions are 'grep' and 'debug', which are bare verbs and break the pattern, but the overall convention is strong.

Tool Count3/5

At 18 tools, the set sits in the borderline-heavy range. The count is justified somewhat by spanning case memory, code analysis, and reporting, but it still feels more expansive than a typical debug tool requires.

Completeness4/5

The case memory lifecycle is well covered (create via debug, read, search, list, delete, mark effectiveness) and code inspection is solid. Minor gaps exist, such as no way to manually add or edit a case, and no direct code modification, but these are workable for the stated debugging purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An intelligent debugging assistant that automates the debugging process by analyzing bugs, injecting HTTP-based debug logs into code across multiple environments (browser, Node.js, mobile, etc.), and iteratively fixing issues based on real-time feedback.
    8
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides intelligent error detection and debugging capabilities across multiple programming languages with real-time monitoring of build, lint, runtime, console, and test errors. Offers AI-enhanced error analysis with automated resolution suggestions and context-aware debugging.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query runtime debugging facts (stack traces, logs, function arguments) captured by Syncause, allowing them to fix root causes with evidence instead of guessing.
    9 npm
    1
    -