MCP 工具参考
所有工具都按 bearer token 所属项目隔离。跨项目访问在 store 层就被拒绝,不仅仅是工具层。
list_errors
triage 视图:按 last_seen 倒序的 issue 列表,带 status / type / 计数,但不含堆栈或完整 payload。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
status | string? | (任意) | open / resolved / ignored。省略 = 全部。 |
since | string? (ISO) | (无下限) | 绝对 ISO-8601 时间戳。 |
limit | number? | 50 | 1–200。 |
cursor | string? | — | 来自上一次调用返回的 nextCursor。 |
返回精简列表({id, title, type, status, eventCount, lastSeen, ...})和 nextCursor 用于翻页。
get_error
一条 issue 的全貌:所有字段、最近 N 条事件,以及(如果 release 设置了且对应 sourcemap 已上传)解析后带原始源码位置的堆栈。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
issue_id | number | — | 必填。 |
event_limit | number? | 5 | 1–50,最近的事件优先。 |
LLM 一般 1–3 条事件就足够定位。event_limit 调高是为了"这个问题断断续续一周了,给我看更宽的样本"这种场景。
mark_resolved
关闭一条 issue 并记录修复它的 commit。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
issue_id | number | — | 必填。 |
commit_sha | string | — | 必填,至少 7 位(可用的简写 SHA)。 |
note | string? | — | 给人类审阅者看的自由文本(哪里错了、现在怎么回事)。 |
commit SHA 不会被对照真实 git 历史校验 —— Kestrel 不知道你的 git。把它当作"永远活在 kestrel get_error 里的文档"就行。
mark_ignored
不是 bug 的 issue(第三方 SDK 噪声、浏览器扩展抛的错等等)。把 issue 静默掉,不声称它被"修复"。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
issue_id | number | — | 必填。 |
reason | string? | — | 为什么不在乎它。 |
重开一条已忽略的 issue:要么 mark_resolved(如果你确实修了,带 commit_sha),要么去 web UI 把状态改回 open。
get_trend
某个 fingerprint 在指定时间窗口里的小时级事件计数。用来回答"这个错误是不是越来越严重",而不必把每条事件都塞进 agent 上下文。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
fingerprint | string | — | 必填,从前一次 get_error 取。 |
window_hours | number? | 24 | 1–168(一周)。 |
返回稀疏 bucket [{hourUnix, count}, ...] 加总数。空小时不在数据里 —— LLM(或图表代码)需要的话自己稠化。
你不会找到的工具
- 没有
create_issue/delete_issue/set_priority/assign_to—— Kestrel 没有这些概念。Issue 因为事件进来而存在,因为 retention 让最后一条事件过期而消失。 - 没有
search——list_errors+ 过滤覆盖了几乎所有真实查询;对 raw payload 列做全文索引代价高,不值得。 - 没有
comment——mark_resolved/mark_ignored里的note字段是最接近的东西,是一次性发布,不是评论线程。