Skip to content

MCP tool reference

All tools scope to the project the bearer token belongs to. Cross-project access is rejected at the store layer, not just the tool layer.

list_errors

Triage view: most-recent issues first, with status / type / counts but without stack traces or full payloads.

ParameterTypeDefaultNotes
statusstring?(any)open / resolved / ignored. Omit for all.
sincestring? (ISO)(no lower bound)Absolute ISO-8601 timestamp.
limitnumber?501–200.
cursorstring?From the previous call's nextCursor.

Returns a slim list ({id, title, type, status, eventCount, lastSeen, ...}) plus a nextCursor for paging.

get_error

Full picture for one issue: every field, the most recent N events, and (if a release is set and a sourcemap is uploaded) the resolved stack with original source positions.

ParameterTypeDefaultNotes
issue_idnumberRequired.
event_limitnumber?51–50. Most recent events first.

LLMs generally only need the last 1–3 events to triage. Bumping event_limit is for "this issue has been intermittent for a week, show me a wider sample."

mark_resolved

Close an issue and record the commit that fixed it.

ParameterTypeDefaultNotes
issue_idnumberRequired.
commit_shastringRequired. Min 7 chars (a usable abbreviated SHA).
notestring?Free-form context for the human reviewer (what was wrong, what now).

The commit SHA isn't validated against any actual repo — Kestrel doesn't have your git history. Treat it as documentation that survives in kestrel get_error forever.

mark_ignored

For issues that aren't bugs (third-party SDK noise, browser extension errors, etc.). Silences the issue without claiming it was fixed.

ParameterTypeDefaultNotes
issue_idnumberRequired.
reasonstring?Why we don't care about it.

Reopening an ignored issue is just mark_resolved (with commit_sha if you actually fixed it) or another PATCH /issues/{id} setting status back to open from the web UI.

get_trend

Hourly event counts for one fingerprint over a configurable window. Used to answer "is this getting worse?" without dumping every event into the agent's context.

ParameterTypeDefaultNotes
fingerprintstringRequired. From a previous get_error.
window_hoursnumber?241–168 (one week).

Returns sparse buckets [{hourUnix, count}, ...] plus a total. Empty hours are not represented — the LLM (or chart code) can densify if it cares.

What you won't find here

  • No create_issue / delete_issue / set_priority / assign_to — Kestrel doesn't have those concepts. Issues exist because events arrived; they go away because retention expires their last event.
  • No searchlist_errors plus filters covers ~all real queries; full-text search would be expensive on the raw payload column and isn't worth the index.
  • No comment — the note field in mark_resolved / mark_ignored is the closest thing, and it's a one-shot post, not a thread.

Released under the MIT License.